| | |
| | | import org.jeecg.modules.quartz.service.ISysQuartzLogService; |
| | | import org.jeecg.modules.qywx.message.vo.TemplateCard; |
| | | import org.jeecg.modules.qywx.message.vo.TemplateCardEntity; |
| | | import org.jeecg.modules.system.entity.MdcProduction; |
| | | import org.jeecg.modules.system.entity.SysUser; |
| | | import org.jeecg.modules.system.service.IMdcProductionService; |
| | | import org.jeecg.modules.system.service.ISysUserService; |
| | | import org.jeecg.modules.system.service.impl.ThirdAppWechatEnterpriseServiceImpl; |
| | | import org.jeecg.modules.system.vo.UserSelector; |
| | | import org.quartz.Job; |
| | | import org.quartz.JobExecutionContext; |
| | | import org.quartz.JobExecutionException; |
| | |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | private ISysQuartzLogService sysQuartzLogService; |
| | | @Autowired |
| | | private IQuartzJobService quartzJobService; |
| | | @Autowired |
| | | private IMdcProductionService mdcProductionService; |
| | | |
| | | @Value("${wechatEnterprise.cardActionUrl}") |
| | | private String cardActionUrl; |
| | |
| | | long startTime = System.currentTimeMillis(); |
| | | try { |
| | | //查询所有待保养的周保工单 |
| | | List<EamWeekMaintenanceOrder> waitOrderList = eamWeekMaintenanceOrderService.list(new LambdaQueryWrapper<EamWeekMaintenanceOrder>() |
| | | .eq(EamWeekMaintenanceOrder::getMaintenanceStatus, WeekMaintenanceStatusEnum.WAIT_MAINTENANCE.name()) |
| | | .eq(EamWeekMaintenanceOrder::getDelFlag, CommonConstant.DEL_FLAG_0)); |
| | | if (!waitOrderList.isEmpty()) { |
| | | List<EamWeekMaintenanceOrder> unReceivedOrderList = eamWeekMaintenanceOrderService.selectUnReceivedMaintenanceOrder(); |
| | | if (!unReceivedOrderList.isEmpty()) { |
| | | //有待保养的工单,推送企业微信消息 |
| | | //查询所有操作工 |
| | | List<SysUser> userList = sysUserService.list(new LambdaQueryWrapper<SysUser>() |
| | | .eq(SysUser::getPost, BusinessCodeConst.PCR0001) |
| | | .eq(SysUser::getDelFlag, CommonConstant.DEL_FLAG_0) |
| | | .eq(SysUser::getStatus, CommonConstant.USER_UNFREEZE)); |
| | | if (userList.isEmpty()) { |
| | | log.error("系统未设置操作工用户,无法推送工单领取提醒消息"); |
| | | quartzLog.setIsSuccess(0); |
| | | quartzLog.setParams("系统未设置操作工用户,无法推送工单领取提醒消息"); |
| | | } else { |
| | | TemplateCard templateCard = new TemplateCard(); |
| | | String toUsers = userList.stream().map(SysUser::getUsername).collect(Collectors.joining(",")); |
| | | String touser = wechatEnterpriseService.getTouser(toUsers, false); |
| | | templateCard.setTouser(touser); |
| | | TemplateCardEntity templateCardEntity = new TemplateCardEntity(); |
| | | templateCard.setTemplate_card(templateCardEntity); |
| | | templateCardEntity.setTask_id(waitOrderList.get(0).getId()); |
| | | TemplateCardEntity.MainTitle mainTitle = new TemplateCardEntity.MainTitle(); |
| | | mainTitle.setTitle("设备周保"); |
| | | templateCardEntity.setMain_title(mainTitle); |
| | | templateCardEntity.setSub_title_text("您有待领取周保工单,请进入系统领取"); |
| | | TemplateCardEntity.CardAction cardAction = new TemplateCardEntity.CardAction(); |
| | | cardAction.setType(1); |
| | | cardAction.setUrl(cardActionUrl); |
| | | templateCardEntity.setCard_action(cardAction); |
| | | JSONObject jsonObject = wechatEnterpriseService.sendTemplateCardMsg(templateCard, true); |
| | | Integer errcode = (Integer) jsonObject.get("errcode"); |
| | | if (errcode == 0) { |
| | | log.info("推送待领取周保工单企业微信消息成功,{}", jsonObject.toJSONString()); |
| | | quartzLog.setIsSuccess(0); |
| | | quartzLog.setParams(jsonObject.toJSONString()); |
| | | Map<String, List<EamWeekMaintenanceOrder>> unReceivedOrderMap = unReceivedOrderList.stream() |
| | | .collect(Collectors.groupingBy(EamWeekMaintenanceOrder::getOrgId)); |
| | | Set<String> productionIds = selectTwoLevelProductionIds(unReceivedOrderMap.keySet()); |
| | | StringBuilder message = new StringBuilder(); |
| | | for (String orgId : productionIds) { |
| | | //查询该产线下的所有操作工 |
| | | List<UserSelector> userSelectorList = sysUserService.selectOperatorList(null, orgId, BusinessCodeConst.PCR0001); |
| | | if (userSelectorList.isEmpty()) { |
| | | log.error("id为:{},的产线未配置操作工用户,无法推送周保工单领取提醒消息", orgId); |
| | | message.append("id为: ").append(orgId).append(" 的产线未配置操作工用户,无法推送周保工单领取提醒消息").append("\n"); |
| | | } else { |
| | | log.error("推送待领取周保工单企业微信消息失败,{}", jsonObject.toJSONString()); |
| | | quartzLog.setIsSuccess(-1); |
| | | quartzLog.setExceptionDetail(jsonObject.toJSONString()); |
| | | String toUsers = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.joining(",")); |
| | | String touser = wechatEnterpriseService.getTouser(toUsers, false); |
| | | //构造消息体内容 |
| | | TemplateCard templateCard = new TemplateCard(); |
| | | templateCard.setTouser(touser); |
| | | TemplateCardEntity templateCardEntity = new TemplateCardEntity(); |
| | | templateCard.setTemplate_card(templateCardEntity); |
| | | templateCardEntity.setTask_id(UUID.randomUUID().toString().replaceAll("-", "")); |
| | | TemplateCardEntity.MainTitle mainTitle = new TemplateCardEntity.MainTitle(); |
| | | mainTitle.setTitle("设备周保"); |
| | | templateCardEntity.setMain_title(mainTitle); |
| | | templateCardEntity.setSub_title_text("您有待领取周保工单,请进入系统领取"); |
| | | TemplateCardEntity.CardAction cardAction = new TemplateCardEntity.CardAction(); |
| | | cardAction.setType(1); |
| | | cardAction.setUrl(cardActionUrl); |
| | | templateCardEntity.setCard_action(cardAction); |
| | | JSONObject jsonObject = wechatEnterpriseService.sendTemplateCardMsg(templateCard, true); |
| | | Integer errcode = (Integer) jsonObject.get("errcode"); |
| | | if (errcode == 0) { |
| | | log.info("推送待领取周保工单企业微信消息成功,{}", jsonObject.toJSONString()); |
| | | message.append("推送待领取周保工单企业微信消息成功,").append(jsonObject.toJSONString()).append("\n"); |
| | | } else { |
| | | log.error("推送待领取周保工单企业微信消息失败,{}", jsonObject.toJSONString()); |
| | | message.append("推送待领取周保工单企业微信消息失败,").append(jsonObject.toJSONString()).append("\n"); |
| | | } |
| | | } |
| | | } |
| | | quartzLog.setIsSuccess(0); |
| | | quartzLog.setExceptionDetail(message.toString()); |
| | | } else { |
| | | log.info("无待领取周保工单,无需推送工单领取提醒消息"); |
| | | quartzLog.setIsSuccess(0); |
| | |
| | | quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); |
| | | sysQuartzLogService.save(quartzLog); |
| | | } |
| | | |
| | | //如果当前产线是三级,查询对应二级产线,如果不是不做处理 |
| | | private Set<String> selectTwoLevelProductionIds(Set<String> productionIds) { |
| | | Set<String> result = new HashSet<>(); |
| | | List<MdcProduction> mdcProductionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().in(MdcProduction::getId, productionIds)); |
| | | for (MdcProduction production : mdcProductionList) { |
| | | //如果是三级产线,查找对应的二级产线,添加进结果集 |
| | | if ("3".equals(production.getOrgType())) { |
| | | mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>() |
| | | .eq(MdcProduction::getId, production.getParentId()) |
| | | .eq(MdcProduction::getOrgType, "2")) |
| | | .stream().findFirst().ifPresent(mdcProduction -> result.add(mdcProduction.getId())); |
| | | } |
| | | //如果是二级产线,添加进结果集 |
| | | if ("2".equals(production.getOrgType())) { |
| | | result.add(production.getId()); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | } |