From fdc8f9edada33dc1407fc054b648b18c6e378224 Mon Sep 17 00:00:00 2001
From: A0010407 <KHD@202305>
Date: Fri, 24 May 2024 10:48:37 +0800
Subject: [PATCH] =?UTF-8?q?2024-5-24=20=E8=AE=BE=E5=A4=87-=E6=8A=A5?=
 =?UTF-8?q?=E4=BF=AE-=E6=8A=A5=E4=BF=AE=E5=AE=A1=E6=A0=B8=E5=90=8E?=
 =?UTF-8?q?=E5=8F=91=E9=80=81=E5=BE=AE=E4=BF=A1=E7=BB=B4=E4=BF=AE=E9=80=9A?=
 =?UTF-8?q?=E7=9F=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../impl/EquRepairOrderServiceImpl.java       | 255 ++++++++++++------
 1 file changed, 167 insertions(+), 88 deletions(-)

diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairOrderServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairOrderServiceImpl.java
index 3add5def..86cc4afb 100644
--- a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairOrderServiceImpl.java
+++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairOrderServiceImpl.java
@@ -249,13 +249,10 @@ public class EquRepairOrderServiceImpl implements IEquRepairOrderService {
     @Override
     @DS("#header.poolName")
     public int checkEquRepairOrder(EquRepairOrder equRepairOrder) {
-        //不生成流水号,从报修单号第十位开始切割、拼接
-        String code = equRepairOrder.getOrderCode().substring(10);
+        String code = equRepairOrder.getOrderCode().substring(10);                                                      //不生成流水号,从报修单号第十位开始切割、拼接
         String workCode = DateUtils.dateTimeNow(DateUtils.YYYYMMDD) + code;
-        //判断是否是点检、巡检过来的
-        if (equRepairOrder.getOrderSource().equals("点检") || equRepairOrder.getOrderSource().equals("巡检")) {
-            //更新检查项信息
-            EquOrder equOrder = new EquOrder();
+        if (equRepairOrder.getOrderSource().equals("点检") || equRepairOrder.getOrderSource().equals("巡检")) {          //判断是否是点检、巡检过来的
+            EquOrder equOrder = new EquOrder();                                                                         //更新检查项信息
             List<String> ids = equOrderMapper.getIdsByOrderCode(equRepairOrder.getOrderCode());
             for (String id : ids) {
                 EquOrder one = new EquOrder();
@@ -269,148 +266,230 @@ public class EquRepairOrderServiceImpl implements IEquRepairOrderService {
 
         if (equRepairOrder.getRepairDestination().equals("计划性维修")) {
             EquRepairWorkOrder equRepairWorkOrder = new EquRepairWorkOrder();
-            //报修单号
-            equRepairWorkOrder.setOrderCode(equRepairOrder.getOrderCode());
-            //维修单号
-            equRepairWorkOrder.setWorkCode("WX" + workCode);
-            //报修id
-            equRepairWorkOrder.setOrderId(equRepairOrder.getOrderId());
-            //设备编号
-            equRepairWorkOrder.setEquipmentCode(equRepairOrder.getEquipmentCode());
-            //维修组
-            equRepairWorkOrder.setWorkTeam(equRepairOrder.getWorkTeam());
-            //不委外
-            equRepairWorkOrder.setWorkOutsource("0");
-            //无委外单号
-            equRepairWorkOrder.setOutWorkCode("无");
-            //是否立即维修 1是 0 否
-            equRepairWorkOrder.setWorkHandle("0");
-            //计划维修时间
-            equRepairWorkOrder.setWorkPlanTime(equRepairOrder.getWorkPlanTime());
-            //是否停机维修 停机维修时间
-            if (equRepairOrder.getWorkPlanDownTime() != null) {
+            equRepairWorkOrder.setOrderCode(equRepairOrder.getOrderCode());                                             //报修单号
+            equRepairWorkOrder.setWorkCode("WX" + workCode);                                                            //维修单号
+            equRepairWorkOrder.setWorkId(IdUtils.fastSimpleUUID());
+            equRepairWorkOrder.setOrderId(equRepairOrder.getOrderId());                                                 //报修id
+            equRepairWorkOrder.setEquipmentCode(equRepairOrder.getEquipmentCode());                                     //设备编号
+            equRepairWorkOrder.setWorkTeam(equRepairOrder.getWorkTeam());                                               //维修组
+            equRepairWorkOrder.setWorkOutsource("0");                                                                   //不委外
+            equRepairWorkOrder.setOutWorkCode("无");                                                                    //无委外单号
+            equRepairWorkOrder.setWorkHandle("0");                                                                      //是否立即维修 1是 0 否
+            equRepairWorkOrder.setWorkPlanTime(equRepairOrder.getWorkPlanTime());                                       //计划维修时间
+            if (equRepairOrder.getWorkPlanDownTime() != null) {                                                         //是否停机维修 停机维修时间
                 equRepairWorkOrder.setWorkDownMachine("1");
                 equRepairWorkOrder.setWorkPlanDownTime(equRepairOrder.getWorkPlanDownTime());
             } else {
                 equRepairWorkOrder.setWorkDownMachine("0");
             }
-            //故障描述????
-            equRepairWorkOrder.setWorkFaultDesc(equRepairOrder.getOrderDesc());
-            //维修状态 待维修
-            equRepairWorkOrder.setWorkStatus("0");
-            equRepairWorkOrder.setWorkId(IdUtils.fastSimpleUUID());
+            equRepairWorkOrder.setWorkFaultDesc(equRepairOrder.getOrderDesc());                                         //故障描述
+            equRepairWorkOrder.setWorkStatus("0");                                                                      //维修状态 待维修
             equRepairWorkOrder.setCreateTime(DateUtils.getNowDate());
             equRepairWorkOrder.setCreateBy(SecurityUtils.getUsername());
-            //工厂
             HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
             String key = "#header.poolName";
             equRepairWorkOrder.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_", ""));
+
+            ////更新维修单
             equRepairWorkOrderMapper.insertEquRepairWorkOrder(equRepairWorkOrder);
-            equRepairOrder.setOrderStatus("审核通过");
 
             ////更新设备状态
             EquEquipment equEquipment = new EquEquipment();
             equEquipment.setEquipmentCode(equRepairOrder.getEquipmentCode());
-            //0 故障
-            equEquipment.setEquipmentStatus("0");
+            equEquipment.setEquipmentStatus("0");                                                                       //0 故障
             equRepairWorkOrderMapper.updateEquipmentStatus(equEquipment);
 
+            ////审核结果
+            equRepairOrder.setOrderStatus("审核通过");
+
+            ////发送微信通知
+            AjaxResult repairSendWeChatResult = repairSendWeChat(equRepairWorkOrder);
         } else if (equRepairOrder.getRepairDestination().equals("不维修")) {
             equRepairOrder.setOrderStatus("驳回");
-
         } else if (equRepairOrder.getRepairDestination().equals("委外维修")) {
             EquOutsourceWork equOutsourceWork = new EquOutsourceWork();
-            //id
-            equOutsourceWork.setWorkId(IdUtils.fastSimpleUUID());
-            //报修单号
-            equOutsourceWork.setOrderCode(equRepairOrder.getOrderCode());
-            //设备编码
-            equOutsourceWork.setEquipmentCode(equRepairOrder.getEquipmentCode());
-            //委外工单号
-            equOutsourceWork.setWorkCode("WW" + workCode);
-            //维修工单号
-            equOutsourceWork.setRepairCode("无");
-            //委外联系方式
-            equOutsourceWork.setWorkConnection(equRepairOrder.getWorkConnection());
-            //委外单位
-            equOutsourceWork.setWorkOutsourcingUnit(equRepairOrder.getWorkOutsourcingUnit());
-            //委外人员
-            equOutsourceWork.setWorkPerson(equRepairOrder.getOutSourcePerson());
-            //委外原因
-            equOutsourceWork.setWorkReason(equRepairOrder.getOutSourceReason());
-            //委外类型 维修委外
-            equOutsourceWork.setWorkType("0");
+            equOutsourceWork.setWorkId(IdUtils.fastSimpleUUID());                                                       //id
+            equOutsourceWork.setOrderCode(equRepairOrder.getOrderCode());                                               //报修单号
+            equOutsourceWork.setEquipmentCode(equRepairOrder.getEquipmentCode());                                       //设备编码
+            equOutsourceWork.setWorkCode("WW" + workCode);                                                              //委外工单号
+            equOutsourceWork.setRepairCode("无");                                                                       //维修工单号
+            equOutsourceWork.setWorkConnection(equRepairOrder.getWorkConnection());                                     //委外联系方式
+            equOutsourceWork.setWorkOutsourcingUnit(equRepairOrder.getWorkOutsourcingUnit());                           //委外单位
+            equOutsourceWork.setWorkPerson(equRepairOrder.getOutSourcePerson());                                        //委外人员
+            equOutsourceWork.setWorkReason(equRepairOrder.getOutSourceReason());                                        //委外原因
+            equOutsourceWork.setWorkType("0");                                                                          //委外类型 维修委外
             equOutsourceWork.setCreateBy(SecurityUtils.getUsername());
             equOutsourceWork.setCreateTime(DateUtils.getNowDate());
             HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
             String key = "#header.poolName";
-            //工厂号
             equOutsourceWork.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_", ""));
+            ////更新委外列表
             equOutsourceWorkMapper.insertEquOutsourceWork(equOutsourceWork);
-            equRepairOrder.setOrderStatus("审核通过");
 
             ////更新设备状态
             EquEquipment equEquipment = new EquEquipment();
             equEquipment.setEquipmentCode(equRepairOrder.getEquipmentCode());
-            //0 故障
-            equEquipment.setEquipmentStatus("0");
+            equEquipment.setEquipmentStatus("0");                                                                       //0 故障
             equRepairWorkOrderMapper.updateEquipmentStatus(equEquipment);
 
+            equRepairOrder.setOrderStatus("审核通过");
         } else if (equRepairOrder.getRepairDestination().equals("立即维修")) {
             EquRepairWorkOrder equRepairWorkOrder = new EquRepairWorkOrder();
-            //维修工单id
-            equRepairWorkOrder.setWorkId(IdUtils.fastSimpleUUID());
-            //报修单号
-            equRepairWorkOrder.setOrderCode(equRepairOrder.getOrderCode());
-            //维修单号
-            equRepairWorkOrder.setWorkCode("WX" + workCode);
-            //orderId
-            equRepairWorkOrder.setOrderId(equRepairOrder.getOrderId());
-            //设备编码
-            equRepairWorkOrder.setEquipmentCode(equRepairOrder.getEquipmentCode());
-            //维修组
-            equRepairWorkOrder.setWorkTeam(equRepairOrder.getWorkTeam());
-            //不委外
-            equRepairWorkOrder.setWorkOutsource("0");
-            //无委外工单号
-            equRepairWorkOrder.setOutWorkCode("无");
-            //是否立即维修 1是 0 否
-            equRepairWorkOrder.setWorkHandle("0");
-            //计划维修时间
-            equRepairWorkOrder.setWorkPlanTime(equRepairOrder.getWorkPlanTime());
-            //是否停机维修 停机维修时间
-            if (equRepairOrder.getWorkPlanDownTime() != null) {
+            equRepairWorkOrder.setWorkId(IdUtils.fastSimpleUUID());                                                     //维修工单id
+            equRepairWorkOrder.setOrderId(equRepairOrder.getOrderId());                                                 //报修Id
+            equRepairWorkOrder.setOrderCode(equRepairOrder.getOrderCode());                                             //报修单号
+            equRepairWorkOrder.setWorkCode("WX" + workCode);                                                            //维修单号
+            equRepairWorkOrder.setEquipmentCode(equRepairOrder.getEquipmentCode());                                     //设备编码
+            equRepairWorkOrder.setWorkTeam(equRepairOrder.getWorkTeam());                                               //维修组
+            equRepairWorkOrder.setWorkOutsource("0");                                                                   //不委外
+            equRepairWorkOrder.setOutWorkCode("无");                                                                    //无委外工单号
+            equRepairWorkOrder.setWorkHandle("1");                                                                      //是否立即维修 1是 0 否
+            equRepairWorkOrder.setWorkPlanTime(equRepairOrder.getWorkPlanTime());                                       //计划维修时间
+            if (equRepairOrder.getWorkPlanDownTime() != null) {                                                         //是否停机维修 停机维修时间
                 equRepairWorkOrder.setWorkDownMachine("1");
                 equRepairWorkOrder.setWorkPlanDownTime(equRepairOrder.getWorkPlanDownTime());
             } else {
                 equRepairWorkOrder.setWorkDownMachine("0");
             }
-            //故障描述
+
             equRepairWorkOrder.setWorkFaultDesc(equRepairOrder.getOrderDesc());
-            //工单状态 待维修
-            equRepairWorkOrder.setWorkStatus("0");
+            equRepairWorkOrder.setWorkStatus("0");                                                                      //工单状态 待维修
             equRepairWorkOrder.setCreateTime(DateUtils.getNowDate());
             equRepairWorkOrder.setCreateBy(SecurityUtils.getUsername());
-            //工厂
             HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
             String key = "#header.poolName";
             equRepairWorkOrder.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_", ""));
             equRepairWorkOrderMapper.insertEquRepairWorkOrder(equRepairWorkOrder);
+
+            ////审核结果
             equRepairOrder.setOrderStatus("审核通过");
 
             ////更新设备状态
             EquEquipment equEquipment = new EquEquipment();
             equEquipment.setEquipmentCode(equRepairOrder.getEquipmentCode());
-            //0 故障
-            equEquipment.setEquipmentStatus("0");
+            equEquipment.setEquipmentStatus("0");                                                                       //0故障
             equRepairWorkOrderMapper.updateEquipmentStatus(equEquipment);
 
+            AjaxResult repairSendWeChatResult = repairSendWeChat(equRepairWorkOrder);
         }
         equRepairOrder.setUpdateTime(DateUtils.getNowDate());
         equRepairOrder.setUpdateBy(SecurityUtils.getUsername());
         return equRepairOrderMapper.updateEquRepairOrder(equRepairOrder);
     }
 
+    /**
+     * 维修时发送企业微信
+     */
+    public AjaxResult repairSendWeChat(EquRepairWorkOrder equRepairWorkOrder) {
+        ////企业微信维修提醒
+        //发企业微信--------------------开始(跟班组有关)
+        SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");                              //规范时间格式
+        SysNoticeGroup noticeQo = new SysNoticeGroup();
+        noticeQo.setNoticeId(11L);                                                                                      //id写死了?
+        List<SysNoticeGroup> notices = equRepairOrderMapper.getNoticesGroup(noticeQo);
+        if(!CollectionUtils.isEmpty(notices)) {
+            List<WechartDTO> wecharts = new ArrayList<>();
+            List<String> userCodes = notices.stream()
+                    .map(SysNoticeGroup::getUserCode)
+                    .collect(Collectors.toList());
+            for (SysNoticeGroup noticeDto : notices) {
+                WechartDTO wechart0 = new WechartDTO();
+                wechart0.setUserId(noticeDto.getWxId());
+                String contentInfo = noticeDto.getNoticeContent();
+                ////判断是立即维修还是计划性维修
+                String workHandle = "";
+                if(equRepairWorkOrder.getWorkHandle().equals("1")){
+                    workHandle = "立即维修";
+                }else{
+                    workHandle = "计划性维修";
+                }
+                ////判断是否需要停机维修
+                String workDownMachine = "";
+                if(equRepairWorkOrder.getWorkDownMachine().equals("1")){
+                    workDownMachine = "停机";
+                }else{
+                    workDownMachine = "不停机";
+                }
+                //在前端填的时候,需要判空!!!!!!
+                contentInfo = contentInfo
+                        .replace("${message}", "\n")
+                        .replace("${equipmentCode}", equRepairWorkOrder.getEquipmentCode()+"\n")
+                        .replace("${workCode}", equRepairWorkOrder.getWorkCode()+"\n")
+                        .replace("${workHandle}", workHandle+"\n");
+                //故障描述
+                if(StringUtils.isNotEmpty(equRepairWorkOrder.getWorkFaultDesc())){
+                    contentInfo = contentInfo.replace("${workFaultDesc}", equRepairWorkOrder.getWorkFaultDesc()+"\n");
+                }else{
+                    contentInfo = contentInfo.replace("${workFaultDesc}", "无"+"\n");
+                }
+
+                //维修组
+                if(StringUtils.isNotEmpty(equRepairWorkOrder.getWorkTeam())){
+                    contentInfo = contentInfo.replace("${workTeam}", equRepairWorkOrder.getWorkTeam()+"\n");
+                }else{
+                    contentInfo = contentInfo.replace("${workTeam}", "无"+"\n");
+                }
+
+                //计划停机维修时间
+                if(equRepairWorkOrder.getWorkPlanTime() != null){
+                    contentInfo = contentInfo.replace("${workPlanTime}", myFmt.format(equRepairWorkOrder.getWorkPlanTime())+"\n");
+                }else{
+                    contentInfo = contentInfo.replace("${workPlanTime}", "无"+"\n");
+                }
+
+                //计划停机维修时间
+                if(equRepairWorkOrder.getWorkPlanDownTime() != null){
+                    contentInfo = contentInfo.replace("${workPlanDownTime}", myFmt.format(equRepairWorkOrder.getWorkPlanDownTime())+"\n");
+                }else{
+                    contentInfo = contentInfo.replace("${workPlanDownTime}", "无"+"\n");
+                }
+
+                //是否停机
+                if(StringUtils.isNotEmpty(workDownMachine)){
+                    contentInfo = contentInfo.replace("${workDownMachine}", workDownMachine+"\n");
+                }else{
+                    contentInfo = contentInfo.replace("${workDownMachine}", "无"+"\n");
+                }
+
+                //查询设备相关信息
+                //设备名称
+                EquEquipment equ = equEquipmentMapper.selectEquEquipmentByEquEquipmentCode(equRepairWorkOrder.getEquipmentCode());
+                if(StringUtils.isNotEmpty(equ.getEquipmentName())){
+                    contentInfo = contentInfo.replace("${equipmentName}", equ.getEquipmentName()+"\n");
+                }else{
+                    contentInfo = contentInfo.replace("${equipmentName}", "无"+"\n");
+                }
+
+                //设备位置
+                if(StringUtils.isNotEmpty(equ.getEquipmentLocation())){
+                    contentInfo = contentInfo.replace("${equipmentLocation}", equ.getEquipmentLocation()+"\n");
+                }else{
+                    contentInfo = contentInfo.replace("${equipmentLocation}", "无"+"\n");
+                }
+
+                //替换标签
+                Pattern p= Pattern.compile("<[^>]+>");
+                Matcher m = p.matcher(contentInfo);
+                contentInfo = m.replaceAll("");
+                System.out.println(contentInfo);
+
+                wechart0.setText(contentInfo);
+                wecharts.add(wechart0);
+            }
+            logger.info("报修审核后企业微信提醒维修请求:" + JSONObject.toJSONString(wecharts));
+            if (!CollectionUtils.isEmpty(wecharts)) {
+                new Thread(() -> {
+                    AjaxResult wxresult = remoteOpenService.sendWeChartMessage(wecharts);
+                    logger.info("报修审核后企业微信提醒结果(下一步开始维修):" + JSONObject.toJSONString(wxresult));
+                }).start();
+
+            }
+            //发企业微信--------------------结束
+        }
+        return success("报修审核后,企业微信发送维修信息成功!");
+    }
+
+
     /**
      * 修改故障报修
      *