java110-bean/src/main/java/com/java110/dto/data/DatabusDataDto.java
@@ -26,6 +26,10 @@ //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; java110-bean/src/main/java/com/java110/dto/workType/WorkTypeDto.java
@@ -15,6 +15,9 @@ **/ 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; service-job/src/main/java/com/java110/job/adapt/oa/OaWorkTaskToStaffAdapt.java
New file @@ -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); } } } service-job/src/main/java/com/java110/job/adapt/oa/OaWorkflowDistributeOrder.java
@@ -154,6 +154,8 @@ 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 @@ 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); service-job/src/main/java/com/java110/job/msgNotify/MsgNotifyFactory.java
@@ -331,7 +331,7 @@ * @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); service-job/src/main/java/com/java110/job/msgNotify/ali/AliMsgNotifyImpl.java
@@ -323,7 +323,6 @@ throw new IllegalArgumentException("员工不存在,userId = " + userId); } UserDto userDto = new UserDto(); userDto.setUserId(userId); List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto); @@ -372,13 +371,126 @@ 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, "成功"); } } service-oa/src/main/java/com/java110/oa/cmd/work/SaveWorkPoolCmd.java
@@ -24,12 +24,14 @@ 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; @@ -85,6 +87,8 @@ @Autowired private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl; /** * {"workName":"关于扫雪任务","workTypes":[],"wtId":"102023122586210045", @@ -180,6 +184,7 @@ saveWorkTask(workPoolPo, reqJson, userDtos.get(0)); cmdDataFlowContext.setResponseEntity(ResultVo.success()); } 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 @@ @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