lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamInspectionOrder.java
@@ -143,4 +143,7 @@ @ApiModelProperty(value = "安装位置") @TableField(exist = false) private String installationPosition; @ApiModelProperty(value = "使用部门") @TableField(exist = false) private java.lang.String orgId; } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamWeekMaintenanceOrder.java
@@ -155,4 +155,7 @@ @ApiModelProperty(value = "安装位置") @TableField(exist = false) private String installationPosition; @ApiModelProperty(value = "使用部门") @TableField(exist = false) private java.lang.String orgId; } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamDashboardController.java
@@ -4,10 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.parser.Feature; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; @@ -15,10 +18,10 @@ import org.jeecg.common.util.DateUtils; import org.jeecg.common.util.TranslateDictTextUtils; import org.jeecg.modules.eam.constant.*; import org.jeecg.modules.eam.entity.EamEquipment; import org.jeecg.modules.eam.entity.EamInspectionOrder; import org.jeecg.modules.eam.entity.EamRepairOrder; import org.jeecg.modules.eam.entity.EamWeekMaintenanceOrder; import org.jeecg.modules.eam.entity.*; import org.jeecg.modules.eam.request.EamInspectionOrderQuery; import org.jeecg.modules.eam.request.EamReportRepairQuery; import org.jeecg.modules.eam.request.EamWeekMaintenanceQuery; import org.jeecg.modules.eam.service.*; import org.jeecg.modules.eam.vo.*; import org.springframework.beans.factory.annotation.Autowired; @@ -257,30 +260,36 @@ @GetMapping(value = "/pendingExecOrderCountBySelf") public Result<?> pendingExecOrderCountBySelf() { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String post = user.getPost(); Map<String, Integer> countMap = CollectionUtil.newHashMap(); if (user == null) { return Result.ok(countMap); } String post = user.getPost(); if (BusinessCodeConst.PCR0001.equals(post)) { //是操作工,查询待点检工单、待周保工单 List<EamInspectionOrder> unExecInspectionOrderList = inspectionOrderService.list(new LambdaQueryWrapper<EamInspectionOrder>() .eq(EamInspectionOrder::getOperator, user.getUsername()) .eq(EamInspectionOrder::getInspectionStatus, InspectionStatus.UNDER_INSPECTION.name()) .eq(EamInspectionOrder::getDelFlag, CommonConstant.DEL_FLAG_0)); List<EamWeekMaintenanceOrder> unExecMaintenanceOrderList = weekMaintenanceOrderService.list(new LambdaQueryWrapper<EamWeekMaintenanceOrder>() .eq(EamWeekMaintenanceOrder::getOperator, user.getUsername()) .eq(EamWeekMaintenanceOrder::getMaintenanceStatus, WeekMaintenanceStatusEnum.UNDER_MAINTENANCE.name()) .eq(EamWeekMaintenanceOrder::getDelFlag, CommonConstant.DEL_FLAG_0)); countMap.put("unExecInspectionOrderCount", unExecInspectionOrderList.size()); countMap.put("unExecMaintenanceOrderCount", unExecMaintenanceOrderList.size()); //是操作工,查询可领取的点检、周保工单 Page<EamInspectionOrder> inspectionOrderPage = new Page<>(1, 99999999); EamInspectionOrderQuery inspectionOrderQuery = new EamInspectionOrderQuery(); inspectionOrderQuery.setInspectionStatus(InspectionStatus.WAIT_INSPECTION.name()); List<EamInspectionOrder> unReceivedInspectionOrderList = inspectionOrderService.queryPageList(inspectionOrderPage, inspectionOrderQuery).getRecords(); Page<EamWeekMaintenanceOrder> maintenanceOrderPage = new Page<>(1, 99999999); EamWeekMaintenanceQuery weekMaintenanceQuery = new EamWeekMaintenanceQuery(); weekMaintenanceQuery.setMaintenanceStatus(WeekMaintenanceStatusEnum.WAIT_MAINTENANCE.name()); List<EamWeekMaintenanceOrder> unReceivedMaintenanceOrderList = weekMaintenanceOrderService.queryPageList(maintenanceOrderPage, weekMaintenanceQuery).getRecords(); countMap.put("unExecInspectionOrderCount", unReceivedInspectionOrderList.size()); countMap.put("unExecMaintenanceOrderCount", unReceivedMaintenanceOrderList.size()); countMap.put("unExecRepairOrderCount", 0); } else if (BusinessCodeConst.PCR0002.equals(post)) { //是维修工,查询待维修工单 List<EamRepairOrder> unExecRepairOrderList = repairOrderService.list(new LambdaQueryWrapper<EamRepairOrder>() .eq(EamRepairOrder::getRepairer, user.getUsername()) .eq(EamRepairOrder::getRepairStatus, EquipmentRepairStatus.UNDER_REPAIR.name()) .eq(EamRepairOrder::getDelFlag, CommonConstant.DEL_FLAG_0)); //是维修工,查询可领取的报修单 Page<EamReportRepair> maintenanceOrderPage = new Page<>(1, 99999999); EamReportRepairQuery reportRepairQuery = new EamReportRepairQuery(); reportRepairQuery.setReportStatus(EquipmentRepairStatus.WAIT_REPAIR.name()); List<EamReportRepair> unReceivedOrderList = reportRepairService.pageList(maintenanceOrderPage, reportRepairQuery).getRecords(); countMap.put("unExecInspectionOrderCount", 0); countMap.put("unExecMaintenanceOrderCount", 0); countMap.put("unExecRepairOrderCount", unExecRepairOrderList.size()); countMap.put("unExecRepairOrderCount", unReceivedOrderList.size()); } else { countMap.put("unExecInspectionOrderCount", 0); countMap.put("unExecMaintenanceOrderCount", 0); lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/InspectionOrderWxMessageSendJob.java
@@ -9,6 +9,7 @@ import org.jeecg.modules.eam.constant.InspectionStatus; import org.jeecg.modules.eam.entity.EamInspectionOrder; import org.jeecg.modules.eam.service.IEamInspectionOrderService; import org.jeecg.modules.mdc.service.IMdcProductionEquipmentService; import org.jeecg.modules.mdc.util.ThrowableUtil; import org.jeecg.modules.quartz.entity.QuartzJob; import org.jeecg.modules.quartz.entity.SysQuartzLog; @@ -16,9 +17,11 @@ 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.MdcProductionEquipment; import org.jeecg.modules.system.entity.SysUser; 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; @@ -28,6 +31,8 @@ import java.util.Date; import java.util.List; import java.util.Map; import java.util.UUID; import java.util.stream.Collectors; /** @@ -63,49 +68,49 @@ } long startTime = System.currentTimeMillis(); try { //查询所有待点检的工单 List<EamInspectionOrder> waitOrderList = eamInspectionOrderService.list(new LambdaQueryWrapper<EamInspectionOrder>() .eq(EamInspectionOrder::getInspectionStatus, InspectionStatus.WAIT_INSPECTION.name()) .eq(EamInspectionOrder::getDelFlag, CommonConstant.DEL_FLAG_0)); if (!waitOrderList.isEmpty()) { //查询所有未领取待点检的工单 List<EamInspectionOrder> unReceivedOrderList = eamInspectionOrderService.selectUnReceivedInspectionOrder(); 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<EamInspectionOrder>> unReceivedOrderMap = unReceivedOrderList.stream() .collect(Collectors.groupingBy(EamInspectionOrder::getOrgId)); StringBuilder message = new StringBuilder(); for (String orgId : unReceivedOrderMap.keySet()) { //查询该产线下的所有操作工 List<UserSelector> userSelectorList = sysUserService.selectOperatorList(null, orgId, BusinessCodeConst.PCR0001); if (userSelectorList.isEmpty()) { log.error("系统未设置操作工用户,无法推送工单领取提醒消息"); message.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); lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/WeekMaintenanceOrderWxMessageSendJob.java
@@ -19,6 +19,7 @@ import org.jeecg.modules.system.entity.SysUser; 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; @@ -28,6 +29,8 @@ import java.util.Date; import java.util.List; import java.util.Map; import java.util.UUID; import java.util.stream.Collectors; /** @@ -67,45 +70,48 @@ 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)); StringBuilder message = new StringBuilder(); for (String orgId : unReceivedOrderMap.keySet()) { //查询该产线下的所有操作工 List<UserSelector> userSelectorList = sysUserService.selectOperatorList(null, orgId, BusinessCodeConst.PCR0001); if (userSelectorList.isEmpty()) { log.error("系统未设置操作工用户,无法推送工单领取提醒消息"); message.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); lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamInspectionOrderMapper.java
@@ -36,4 +36,6 @@ * @return */ List<EquipmentInspectionStatistics> equipmentInspectionStatistics(@Param("productionIds") List<String> productionIds, @Param("start") String start, @Param("end") String end); List<EamInspectionOrder> selectUnReceivedInspectionOrder(); } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamWeekMaintenanceOrderMapper.java
@@ -34,4 +34,6 @@ * @return */ List<EquipmentMaintenanceStatistics> equipmentMaintenanceStatistics(@Param("productionIds") List<String> productionIds, @Param("start") String start, @Param("end") String end); List<EamWeekMaintenanceOrder> selectUnReceivedMaintenanceOrder(); } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamInspectionOrderMapper.xml
@@ -29,4 +29,10 @@ and err.inspection_date < #{end} group by FORMAT(err.inspection_date, 'yyyy-MM') </select> <select id="selectUnReceivedInspectionOrder" resultType="org.jeecg.modules.eam.entity.EamInspectionOrder"> select eio.*,ee.org_id from eam_inspection_order eio left join eam_equipment ee on eio.equipment_id = ee.id where eio.inspection_status = 'WAIT_INSPECTION' and eio.del_flag = 0 </select> </mapper> lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamWeekMaintenanceOrderMapper.xml
@@ -29,4 +29,11 @@ and err.maintenance_date < #{end} group by FORMAT(err.maintenance_date, 'yyyy-MM') </select> <select id="selectUnReceivedMaintenanceOrder" resultType="org.jeecg.modules.eam.entity.EamWeekMaintenanceOrder"> select ewm.*,ee.org_id from eam_week_maintenance_order ewm left join eam_equipment ee on ewm.equipment_id = ee.id where ewm.maintenance_status = 'WAIT_MAINTENANCE' and ewm.del_flag = 0 </select> </mapper> lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamInspectionOrderService.java
@@ -93,4 +93,7 @@ * @return */ List<EquipmentInspectionStatistics> equipmentInspectionStatistics(String productionId, LocalDate firstOfMonth, LocalDate today); /** 查询所有未领取(待点检状态)的工单(关联查询设备所属产线) */ List<EamInspectionOrder> selectUnReceivedInspectionOrder(); } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamWeekMaintenanceOrderService.java
@@ -70,4 +70,6 @@ * @return */ List<EquipmentMaintenanceStatistics> equipmentMaintenanceStatistics(String productionId, LocalDate firstOfMonth, LocalDate today); List<EamWeekMaintenanceOrder> selectUnReceivedMaintenanceOrder(); } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java
@@ -195,6 +195,11 @@ } @Override public List<EamInspectionOrder> selectUnReceivedInspectionOrder() { return this.baseMapper.selectUnReceivedInspectionOrder(); } @Override @Transactional(rollbackFor = Exception.class) public boolean addInspectionOrder(EamInspectionOrderRequest eamInspectionOrderRequest) { EamInspectionOrder eamInspectionOrder = new EamInspectionOrder(); lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamWeekMaintenanceOrderServiceImpl.java
@@ -711,6 +711,11 @@ return list; } @Override public List<EamWeekMaintenanceOrder> selectUnReceivedMaintenanceOrder() { return this.baseMapper.selectUnReceivedMaintenanceOrder(); } private boolean isUserAuthorized(FlowMyBusiness flowMyBusiness, LoginUser user) { List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class); return todoUsers != null && todoUsers.contains(user.getUsername());