wuxw лет назад: 2
Родитель
Сommit
e42df6bfd9

+ 4 - 0
java110-bean/src/main/java/com/java110/dto/data/DatabusDataDto.java

@@ -26,6 +26,10 @@ public class DatabusDataDto extends PageDto implements Serializable {
     //todo 房屋批量创建费用
     public static final String BUSINESS_TYPE_ROOM_CREATE_PAY_FEE = "roomCreatePayFee";
 
+    //todo 工作单通知适配器
+    public static final String BUSINESS_TYPE_OA_WORK_TASK = "oaWorkTaskToStaff";
+
+
     private String businessTypeCd;
 
     private JSONObject data;

+ 3 - 0
java110-bean/src/main/java/com/java110/dto/workType/WorkTypeDto.java

@@ -15,6 +15,9 @@ import java.util.Date;
  **/
 public class WorkTypeDto extends PageDto implements Serializable {
 
+    public static final String SMS_WAY_WECHAT = "WECHAT";
+    public static final String SMS_WAY_ALI = "ALI_SMS";
+
     private String typeName;
     private String remark;
     private String communityId;

+ 130 - 0
service-job/src/main/java/com/java110/job/adapt/oa/OaWorkTaskToStaffAdapt.java

@@ -0,0 +1,130 @@
+package com.java110.job.adapt.oa;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.log.LoggerFactory;
+import com.java110.dto.system.Business;
+import com.java110.dto.workPool.WorkPoolDto;
+import com.java110.dto.workTask.WorkTaskDto;
+import com.java110.dto.workType.WorkTypeDto;
+import com.java110.intf.oa.IWorkPoolV1InnerServiceSMO;
+import com.java110.intf.oa.IWorkTaskV1InnerServiceSMO;
+import com.java110.intf.oa.IWorkTypeV1InnerServiceSMO;
+import com.java110.job.adapt.DatabusAdaptImpl;
+import com.java110.job.msgNotify.IMsgNotify;
+import com.java110.job.msgNotify.MsgNotifyFactory;
+import com.java110.utils.cache.MappingCache;
+import com.java110.utils.constant.MappingConstant;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.ListUtil;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.List;
+
+@Component("oaWorkTaskToStaffAdapt")
+public class OaWorkTaskToStaffAdapt extends DatabusAdaptImpl {
+    private static Logger logger = LoggerFactory.getLogger(OaWorkTaskToStaffAdapt.class);
+
+    @Autowired
+    private IWorkTaskV1InnerServiceSMO workTaskV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IWorkPoolV1InnerServiceSMO workPoolV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IWorkTypeV1InnerServiceSMO workTypeV1InnerServiceSMOImpl;
+
+    @Override
+    public void execute(Business business, List<Business> businesses) throws ParseException {
+        JSONObject data = business.getData();
+
+        Assert.hasKeyAndValue(data, "taskId", "未包含任务ID");
+
+        WorkTaskDto workTaskDto = new WorkTaskDto();
+        workTaskDto.setTaskId(data.getString("taskId"));
+        List<WorkTaskDto> workTaskDtos = workTaskV1InnerServiceSMOImpl.queryWorkTasks(workTaskDto);
+
+        if (ListUtil.isNull(workTaskDtos)) {
+            return;
+        }
+        workTaskDto = workTaskDtos.get(0);
+
+        WorkPoolDto workPoolDto = new WorkPoolDto();
+        workPoolDto.setWorkId(workTaskDto.getWorkId());
+        List<WorkPoolDto> workPoolDtos = workPoolV1InnerServiceSMOImpl.queryWorkPools(workPoolDto);
+
+        if (ListUtil.isNull(workPoolDtos)) {
+            return;
+        }
+
+        WorkTypeDto workTypeDto = new WorkTypeDto();
+        workTypeDto.setWtId(workPoolDtos.get(0).getWtId());
+        List<WorkTypeDto> workTypeDtos = workTypeV1InnerServiceSMOImpl.queryWorkTypes(workTypeDto);
+        if (ListUtil.isNull(workTypeDtos)) {
+            return;
+        }
+
+        if (WorkTaskDto.STATE_WAIT.equals(workTaskDto)) {
+            todoStaff(workTaskDto, workPoolDtos.get(0), workTypeDtos.get(0));
+        } else if (WorkTaskDto.STATE_COMPLETE.equals(workTaskDto)) {
+            todoStartStaff(workTaskDto, workPoolDtos.get(0), workTypeDtos.get(0));
+        }
+    }
+
+    /**
+     * 通知
+     *
+     * @param workTaskDto
+     * @param workPoolDto
+     * @param workTypeDto
+     */
+    private void todoStartStaff(WorkTaskDto workTaskDto, WorkPoolDto workPoolDto, WorkTypeDto workTypeDto) {
+
+        //todo 给申请人发消息
+        JSONObject content = new JSONObject();
+        content.put("flowName", workPoolDto.getWorkName());
+        content.put("staffName", "处理完成("+workTaskDto.getStaffName()+")");
+        content.put("orderId", workPoolDto.getWorkId());
+        String wechatUrl = MappingCache.getValue(MappingConstant.URL_DOMAIN, "STAFF_WECHAT_URL");
+        content.put("url", wechatUrl);
+
+        if(WorkTypeDto.SMS_WAY_WECHAT.equals(workTypeDto.getSmsWay())){
+            IMsgNotify msgNotify = MsgNotifyFactory.getMsgNotify(MsgNotifyFactory.NOTIFY_WAY_WECHAT);
+            msgNotify.sendOaCreateStaffMsg(workTypeDto.getCommunityId(), workTaskDto.getCreateUserId(), content);
+        }else if(WorkTypeDto.SMS_WAY_ALI.equals(workTypeDto.getSmsWay())){
+            IMsgNotify msgNotify = MsgNotifyFactory.getMsgNotify(MsgNotifyFactory.NOTIFY_WAY_ALI);
+            msgNotify.sendOaCreateStaffMsg(workTypeDto.getCommunityId(), workTaskDto.getCreateUserId(), content);
+        }
+    }
+
+    /**
+     * 派单或转单
+     *
+     * @param workTaskDto
+     * @param workPoolDto
+     * @param workTypeDto
+     */
+    private void todoStaff(WorkTaskDto workTaskDto, WorkPoolDto workPoolDto, WorkTypeDto workTypeDto) {
+
+        JSONObject content = new JSONObject();
+        content.put("flowName", workPoolDto.getWorkName());
+        content.put("create_user_name", workTaskDto.getStaffName());
+        content.put("create_time", workTaskDto.getCreateTime());
+        content.put("date", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_B));
+        content.put("orderId", workPoolDto.getWorkId());
+
+        String wechatUrl = MappingCache.getValue(MappingConstant.URL_DOMAIN, "STAFF_WECHAT_URL");
+        content.put("url", wechatUrl);
+        if(WorkTypeDto.SMS_WAY_WECHAT.equals(workTypeDto.getSmsWay())){
+            IMsgNotify msgNotify = MsgNotifyFactory.getMsgNotify(MsgNotifyFactory.NOTIFY_WAY_WECHAT);
+            msgNotify.sendOaDistributeMsg(workTypeDto.getCommunityId(), workTaskDto.getStaffId(), content);
+        }else if(WorkTypeDto.SMS_WAY_ALI.equals(workTypeDto.getSmsWay())){
+            IMsgNotify msgNotify = MsgNotifyFactory.getMsgNotify(MsgNotifyFactory.NOTIFY_WAY_ALI);
+            msgNotify.sendOaDistributeMsg(workTypeDto.getCommunityId(), workTaskDto.getStaffId(), content);
+        }
+    }
+}

+ 3 - 0
service-job/src/main/java/com/java110/job/adapt/oa/OaWorkflowDistributeOrder.java

@@ -154,6 +154,8 @@ public class OaWorkflowDistributeOrder extends DatabusAdaptImpl {
         content.put("create_user_name", formDatas.get(0).get("create_user_name").toString());
         content.put("create_time", formDatas.get(0).get("create_time").toString());
         content.put("date", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_B));
+        content.put("orderId", oaWorkflowDataPo.getBusinessKey());
+
         String wechatUrl = MappingCache.getValue(MappingConstant.URL_DOMAIN,"STAFF_WECHAT_URL");
         content.put("url", wechatUrl);
         MsgNotifyFactory.sendOaDistributeMsg(communityMemberDto.getCommunityId(), oaWorkflowDataPo.getStaffId(), content);
@@ -167,6 +169,7 @@ public class OaWorkflowDistributeOrder extends DatabusAdaptImpl {
         content = new JSONObject();
         content.put("flowName", oaWorkflowDtos.get(0).getFlowName());
         content.put("staffName", oaWorkflowDataPo.getStaffName());
+        content.put("orderId", oaWorkflowDataPo.getBusinessKey());
         wechatUrl = MappingCache.getValue(MappingConstant.URL_DOMAIN,"STAFF_WECHAT_URL");
         content.put("url", wechatUrl);
         MsgNotifyFactory.sendOaCreateStaffMsg(communityMemberDto.getCommunityId(), createUserId, content);

+ 1 - 1
service-job/src/main/java/com/java110/job/msgNotify/MsgNotifyFactory.java

@@ -331,7 +331,7 @@ public class MsgNotifyFactory {
      * @param notifyWay
      * @return
      */
-    private static IMsgNotify getMsgNotify(String notifyWay) {
+    public static IMsgNotify getMsgNotify(String notifyWay) {
         IMsgNotify notify = null;
         if (StringUtil.isEmpty(notifyWay)) {
             notifyWay = MappingCache.getValue(MappingConstant.ENV_DOMAIN, DEFAULT_MSG_NOTIFY_WAY);

+ 115 - 3
service-job/src/main/java/com/java110/job/msgNotify/ali/AliMsgNotifyImpl.java

@@ -323,7 +323,6 @@ public class AliMsgNotifyImpl implements IMsgNotify {
             throw new IllegalArgumentException("员工不存在,userId = " + userId);
         }
 
-
         UserDto userDto = new UserDto();
         userDto.setUserId(userId);
         List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
@@ -372,13 +371,126 @@ public class AliMsgNotifyImpl implements IMsgNotify {
         return new ResultVo(ResultVo.CODE_OK, "成功");
     }
 
+    /**
+     * 待处理
+     * @param communityId 小区
+     * @param userId      用户
+     * @param content     {
+     *                    flowName,
+     *                    create_user_name,
+     *                    create_time,
+     *                    url
+     *                    }
+     * @return
+     */
     @Override
     public ResultVo sendOaDistributeMsg(String communityId, String userId, JSONObject content) {
-        return null;
+        if (StringUtil.isEmpty(userId) || userId.startsWith("-")) {
+            throw new IllegalArgumentException("员工不存在,userId = " + userId);
+        }
+
+
+        UserDto userDto = new UserDto();
+        userDto.setUserId(userId);
+        List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
+        if (userDtos == null || userDtos.size() < 1) {
+            throw new IllegalArgumentException("员工不存在");
+        }
+
+
+        String accessKeyId = CommunitySettingFactory.getValue(communityId, "ALI_ACCESS_KEY_ID");
+        String accessSecret = CommunitySettingFactory.getValue(communityId, "ALI_ACCESS_SECRET");
+        String region = CommunitySettingFactory.getValue(communityId, "ALI_REGION");
+        String signName = CommunitySettingFactory.getValue(communityId, "ALI_SIGN_NAME");
+        String templateCode = CommunitySettingFactory.getValue(communityId, "ALI_OA_UNDO_TEMPLATE_CODE");
+        DefaultProfile profile = DefaultProfile.getProfile(region,
+                accessKeyId,
+                accessSecret);
+        IAcsClient client = new DefaultAcsClient(profile);
+
+        CommonRequest request = new CommonRequest();
+        request.setSysMethod(MethodType.POST);
+        request.setSysDomain("dysmsapi.aliyuncs.com");
+        request.setSysVersion("2017-05-25");
+        request.setSysAction("SendSms");
+        request.putQueryParameter("RegionId", region);
+        request.putQueryParameter("PhoneNumbers", userDtos.get(0).getTel());
+        request.putQueryParameter("SignName", signName);
+        request.putQueryParameter("TemplateCode", templateCode);
+
+
+        JSONObject param = new JSONObject();
+        param.put("orderId", content.getString("orderId"));
+        request.putQueryParameter("TemplateParam", param.toString());
+
+        String resParam = "";
+        try {
+            CommonResponse response = client.getCommonResponse(request);
+            logger.debug("发送验证码信息:{}", response.getData());
+            resParam = response.getData();
+        } catch (Exception e) {
+            e.printStackTrace();
+            resParam = e.getMessage();
+            throw new IllegalArgumentException("短信工单失败" + e.getMessage());
+        } finally {
+            LogFactory.saveOutLog("SMS", param.toString(), new ResponseEntity(resParam, HttpStatus.OK));
+        }
+        return new ResultVo(ResultVo.CODE_OK, "成功");
     }
 
     @Override
     public ResultVo sendOaCreateStaffMsg(String communityId, String userId, JSONObject content) {
-        return null;
+
+        if (StringUtil.isEmpty(userId) || userId.startsWith("-")) {
+            throw new IllegalArgumentException("员工不存在,userId = " + userId);
+        }
+
+
+        UserDto userDto = new UserDto();
+        userDto.setUserId(userId);
+        List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
+        if (userDtos == null || userDtos.size() < 1) {
+            throw new IllegalArgumentException("员工不存在");
+        }
+
+
+        String accessKeyId = CommunitySettingFactory.getValue(communityId, "ALI_ACCESS_KEY_ID");
+        String accessSecret = CommunitySettingFactory.getValue(communityId, "ALI_ACCESS_SECRET");
+        String region = CommunitySettingFactory.getValue(communityId, "ALI_REGION");
+        String signName = CommunitySettingFactory.getValue(communityId, "ALI_SIGN_NAME");
+        String templateCode = CommunitySettingFactory.getValue(communityId, "ALI_OA_FINISH_TEMPLATE_CODE");
+        DefaultProfile profile = DefaultProfile.getProfile(region,
+                accessKeyId,
+                accessSecret);
+        IAcsClient client = new DefaultAcsClient(profile);
+
+        CommonRequest request = new CommonRequest();
+        request.setSysMethod(MethodType.POST);
+        request.setSysDomain("dysmsapi.aliyuncs.com");
+        request.setSysVersion("2017-05-25");
+        request.setSysAction("SendSms");
+        request.putQueryParameter("RegionId", region);
+        request.putQueryParameter("PhoneNumbers", userDtos.get(0).getTel());
+        request.putQueryParameter("SignName", signName);
+        request.putQueryParameter("TemplateCode", templateCode);
+
+
+        JSONObject param = new JSONObject();
+        param.put("orderId", content.getString("orderId"));
+        request.putQueryParameter("TemplateParam", param.toString());
+
+        String resParam = "";
+        try {
+            CommonResponse response = client.getCommonResponse(request);
+            logger.debug("发送验证码信息:{}", response.getData());
+            resParam = response.getData();
+        } catch (Exception e) {
+            e.printStackTrace();
+            resParam = e.getMessage();
+            throw new IllegalArgumentException("短信工单失败" + e.getMessage());
+        } finally {
+            LogFactory.saveOutLog("SMS", param.toString(), new ResponseEntity(resParam, HttpStatus.OK));
+        }
+        return new ResultVo(ResultVo.CODE_OK, "成功");
     }
 }

+ 5 - 0
service-oa/src/main/java/com/java110/oa/cmd/work/SaveWorkPoolCmd.java

@@ -24,12 +24,14 @@ import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
 import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.data.DatabusDataDto;
 import com.java110.dto.user.UserDto;
 import com.java110.dto.workCopy.WorkCopyDto;
 import com.java110.dto.workCycle.WorkCycleDto;
 import com.java110.dto.workPool.WorkPoolDto;
 import com.java110.dto.workPoolFile.WorkPoolFileDto;
 import com.java110.dto.workTask.WorkTaskDto;
+import com.java110.intf.job.IDataBusInnerServiceSMO;
 import com.java110.intf.oa.*;
 import com.java110.intf.user.IUserV1InnerServiceSMO;
 import com.java110.po.workCopy.WorkCopyPo;
@@ -86,6 +88,8 @@ public class SaveWorkPoolCmd extends Cmd {
     @Autowired
     private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
 
+
+
     /**
      * {"workName":"关于扫雪任务","workTypes":[],"wtId":"102023122586210045",
      * "workCycle":"1001","startTime":"2023-12-26 14:20:17","endTime":"2023-12-27 14:20:17",
@@ -180,6 +184,7 @@ public class SaveWorkPoolCmd extends Cmd {
         saveWorkTask(workPoolPo, reqJson, userDtos.get(0));
 
 
+
         cmdDataFlowContext.setResponseEntity(ResultVo.success());
     }
 

+ 13 - 1
service-oa/src/main/java/com/java110/oa/smo/impl/WorkTaskV1InnerServiceSMOImpl.java

@@ -16,6 +16,9 @@
 package com.java110.oa.smo.impl;
 
 
+import com.alibaba.fastjson.JSONObject;
+import com.java110.dto.data.DatabusDataDto;
+import com.java110.intf.job.IDataBusInnerServiceSMO;
 import com.java110.oa.dao.IWorkTaskV1ServiceDao;
 import com.java110.intf.oa.IWorkTaskV1InnerServiceSMO;
 import com.java110.dto.workTask.WorkTaskDto;
@@ -45,17 +48,26 @@ public class WorkTaskV1InnerServiceSMOImpl extends BaseServiceSMO implements IWo
     @Autowired
     private IWorkTaskV1ServiceDao workTaskV1ServiceDaoImpl;
 
+    @Autowired
+    private IDataBusInnerServiceSMO dataBusInnerServiceSMOImpl;
+
 
     @Override
     public int saveWorkTask(@RequestBody  WorkTaskPo workTaskPo) {
         int saveFlag = workTaskV1ServiceDaoImpl.saveWorkTaskInfo(BeanConvertUtil.beanCovertMap(workTaskPo));
+        JSONObject reqJson = BeanConvertUtil.beanCovertJson(workTaskPo);
+        dataBusInnerServiceSMOImpl.databusData(new DatabusDataDto(DatabusDataDto.BUSINESS_TYPE_OA_WORK_TASK, reqJson));
+
         return saveFlag;
     }
 
      @Override
     public int updateWorkTask(@RequestBody  WorkTaskPo workTaskPo) {
         int saveFlag = workTaskV1ServiceDaoImpl.updateWorkTaskInfo(BeanConvertUtil.beanCovertMap(workTaskPo));
-        return saveFlag;
+         JSONObject reqJson = BeanConvertUtil.beanCovertJson(workTaskPo);
+         dataBusInnerServiceSMOImpl.databusData(new DatabusDataDto(DatabusDataDto.BUSINESS_TYPE_OA_WORK_TASK, reqJson));
+
+         return saveFlag;
     }
 
      @Override