ソースを参照

Merge remote-tracking branch 'origin/mode-min-unit' into mode-min-unit

xiahan 11 ヶ月 前
コミット
ba129adfee

+ 68 - 14
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsBlankOrderServiceImpl.java

@@ -26,7 +26,6 @@ import com.rongwei.safecommon.utils.CXCommonUtils;
 import com.rongwei.safecommon.utils.SaveConstans;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.slf4j.MDC;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -43,7 +42,6 @@ import static com.rongwei.bscommon.sys.service.impl.ApsProductionOrderServiceImp
 import static com.rongwei.bscommon.sys.utils.ApsUtils.addNewConflictsDesc;
 import static com.rongwei.safecommon.utils.SaveConstans.DatePattern.DATE_PATTERN_YMDHMS;
 import static com.rongwei.safecommon.utils.SaveConstans.ForcedConflictsDescription.EXCEEDING_THE_PROMISED_DELIVERY_DEADLINE;
-import static com.rongwei.safecommon.utils.SaveConstans.JobStatus.JOBSTATUS_TO_BE_START;
 import static com.rongwei.safecommon.utils.SaveConstans.LockmarkType.LOCKMARK_N;
 import static com.rongwei.safecommon.utils.SaveConstans.LockmarkType.LOCKMARK_Y;
 import static com.rongwei.safecommon.utils.SaveConstans.ProductionStatus.*;
@@ -352,17 +350,12 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                 .set(ApsBlankOrderDo::getLockmark, LOCKMARK_N));
 
         // 解锁该坯料计划所有作业明细,设置是否锁定=否
-        boolean bool2 = apsProcessOperationProcessEquService.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
-                .eq(ApsProcessOperationProcessEquDo::getBlankid, blankOrderId)
-                .set(ApsProcessOperationProcessEquDo::getLockmark, LOCKMARK_N));
+        boolean bool2 = apsProcessOperationService.update(new LambdaUpdateWrapper<ApsProcessOperationDo>()
+                .eq(ApsProcessOperationDo::getBlankid, blankOrderId)
+                .set(ApsProcessOperationDo::getLockmark, LOCKMARK_N));
 
         if (bool1 && bool2) {
-            //重新排程
-            this.apsReScheduling();
-            R r = new R();
-            r.setCode("200");
-            r.setMsg("正在插单重排,并已自动备份排程结果,如果重排结果不满意,可以恢复排程结果");
-            return r;
+            return R.ok();
         } else {
             return R.error();
         }
@@ -1900,7 +1893,9 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
             apsProcessOutputProductDo.setBlankid(apsBlankOrderDo.getId());
             apsProcessOutputProductDo.setTenantid(tenantId);
         }
-        apsProcessOutputProductService.saveOrUpdateBatch(apsProcessOutputProductDoList);
+        if (ObjectUtil.isNotEmpty(apsProcessOutputProductDoList)) {
+            apsProcessOutputProductService.saveOrUpdateBatch(apsProcessOutputProductDoList);
+        }
 
         //如果在制品不为空,并且为新增备料
         if (ObjectUtil.isNotEmpty(req.getProgressId()) && apsBlankOrderDo.getPreparematerial().equals("是")) {
@@ -1981,6 +1976,13 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
     }
 
     public R checkBlankOrder(CheckAndSaveOrUpdateBlankReq req, int j) {
+
+        //校验坯料计划的必填项
+        R checkRes = checkBlankMustWrite(req);
+        if (!checkRes.getCode().equals("200")) {
+            return R.error("第" + j + "个坯料计划 " + checkRes.getMsg());
+        }
+
         //获取校验等级
         Integer checkLevel = req.getCheckLevel();
         //获取坯料计划内容
@@ -2265,6 +2267,58 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         return R.ok();
     }
 
+    private R checkBlankMustWrite(CheckAndSaveOrUpdateBlankReq req) {
+        ApsBlankOrderDo apsBlankOrderDo = req.getApsBlankOrderDo();
+        List<ApsProcessOutputProductDo> apsProcessOutputProductDoList = req.getApsProcessOutputProductDoList();
+
+        if (ObjectUtil.isEmpty(apsBlankOrderDo.getBlanknumber())) {
+            return R.error("坯料计划编号不能为空");
+        }
+        if (ObjectUtil.isEmpty(apsBlankOrderDo.getMaterialname())) {
+            return R.error("物料名称不能为空");
+        }
+        if (ObjectUtil.isEmpty(apsBlankOrderDo.getBlanktype())) {
+            return R.error("坯料类型不能为空");
+        }
+        if (ObjectUtil.isEmpty(apsBlankOrderDo.getProducttype())) {
+            return R.error("产品类型不能为空");
+        }
+        if (ObjectUtil.isEmpty(apsBlankOrderDo.getAlloy())) {
+            return R.error("合金不能为空");
+        }
+        if (ObjectUtil.isEmpty(apsBlankOrderDo.getThickness())) {
+            return R.error("厚度不能为空");
+        }
+        if (ObjectUtil.isEmpty(apsBlankOrderDo.getProwidth())) {
+            return R.error("宽度不能为空");
+        }
+        if (ObjectUtil.isEmpty(apsBlankOrderDo.getSinglerollweight())) {
+            return R.error("单卷重不能为空");
+        }
+        if (ObjectUtil.isEmpty(apsBlankOrderDo.getNumberunit())) {
+            return R.error("数量单位不能为空");
+        }
+        if (ObjectUtil.isEmpty(apsBlankOrderDo.getRollnum())) {
+            return R.error("卷数不能为空");
+        }
+        if (ObjectUtil.isEmpty(apsBlankOrderDo.getBlankappearance())) {
+            return R.error("坯料外观类型不能为空");
+        }
+        if (ObjectUtil.isNotEmpty(apsProcessOutputProductDoList)) {
+            for (ApsProcessOutputProductDo apsProcessOutputProductDo : apsProcessOutputProductDoList) {
+                if (ObjectUtil.isEmpty(apsProcessOutputProductDo.getProducttype())
+                        || ObjectUtil.isEmpty(apsProcessOutputProductDo.getOutputonerollweigth())
+                        || ObjectUtil.isEmpty(apsProcessOutputProductDo.getPlanoutputorderroll())
+                        || ObjectUtil.isEmpty(apsProcessOutputProductDo.getHadrollcount())) {
+                    return R.error("输出成品的必填项未填");
+                }
+            }
+        } else {
+            return R.error("输出成品必填");
+        }
+        return R.ok();
+    }
+
     @Override
     @Transactional
     public R removeBlankOrder(ApsBlankOrderDo req) {
@@ -2576,8 +2630,8 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         // 更新数据
         this.update(new LambdaUpdateWrapper<ApsBlankOrderDo>().eq(ApsBlankOrderDo::getId, apsBlankOrderDo.getId())
                 .set(BaseDo::getDeleted, 0)
-                .set(ApsBlankOrderDo::getScheduledatestart,startDate)
-                .set(ApsBlankOrderDo::getScheduledateend,startDate)
+                .set(ApsBlankOrderDo::getScheduledatestart, startDate)
+                .set(ApsBlankOrderDo::getScheduledateend, startDate)
                 .set(apsBlankOrderDo.getPromisedatestart() == null, ApsBlankOrderDo::getPromisedatestart, timeAddHour(startDate, 48))
                 .set(apsBlankOrderDo.getPromisedateend() == null, ApsBlankOrderDo::getPromisedateend, timeAddHour(endDate, 48)));
         apsBlankOrderDo.setPromisedatestart(timeAddHour(startDate, 48));

+ 47 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationServiceImpl.java

@@ -334,6 +334,11 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                             String outputMeter = getOutMeterInfo(outProducttype, outMeter, outMetalstate, tval, wval, lval, apsProcessOperationOutMaterDo.getThickoffset(), apsProcessOperationOutMaterDo.getWidthoffset(), apsProcessOperationOutMaterDo.getLengthoffset()) + singlerollweight + UNIT_MAP.getOrDefault(blanckdata.getStr("NUMBERUNIT"), "");
                             apsProcessOperationOutMaterDo.setOutputmaterial(outputMeter + "*" + blanckdata.getInt("ROLLNUM") + "卷");
                             apsProcessOperationDo.setPlanoutput("[1]" + outputMeter + "*" + blanckdata.getInt("ROLLNUM") + "卷");
+                            if (apsProcessOperationOutMaterDo.getPlanrollnum() > 1) {
+                                apsProcessOperationDo.setIssubsection("是");
+                            } else {
+                                apsProcessOperationDo.setIssubsection("否");
+                            }
                             //输出成品
                             /*
                             如果没有后道工序作业,则成品卷数=计划输出卷数 - 计划备料卷数,
@@ -491,6 +496,11 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         String outputMeter = getOutMeterInfo(outProducttype, outMeter, outMetalstate, tval, wval, lval, apsProcessOperationOutMaterDo.getThickoffset(), apsProcessOperationOutMaterDo.getWidthoffset(), apsProcessOperationOutMaterDo.getLengthoffset()) + singlerollweight + UNIT_MAP.getOrDefault(blanckdata.getStr("NUMBERUNIT"), "");
                         apsProcessOperationOutMaterDo.setOutputmaterial(outputMeter + "*" + blanckdata.getInt("ROLLNUM") + "卷");
                         apsProcessOperationDo.setPlanoutput("[1]" + outputMeter + "*" + blanckdata.getInt("ROLLNUM") + "卷");
+                        if (blanckdata.getInt("ROLLNUM") > 1) {
+                            apsProcessOperationDo.setIssubsection("是");
+                        } else {
+                            apsProcessOperationDo.setIssubsection("否");
+                        }
                         //输出成品
                         /*
                         如果没有后道工序作业,则成品卷数=计划输出卷数 - 计划备料卷数,
@@ -748,6 +758,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                             return R.error("工艺步骤" + apsProcessOperationDo1.getProcessname() + "没输出");
                         }
                         List<String> planoutputList = new ArrayList<>();
+                        Integer planrollnum = 0;
                         for (ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo : apsProcessOperationOutMaterDos1) {
                             ApsProcessOperationOutMaterDo processOperationOutMaterDo = BeanUtil.toBean(apsProcessOperationOutMaterDo, ApsProcessOperationOutMaterDo.class);
                             processOperationOutMaterDo.setRoption(apsProcessOperationOutMaterDo.getId());
@@ -824,6 +835,8 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                             processOperationOutMaterDo.setProdleaveoutroll(processOperationOutMaterDo.getPlanprodrollnum() - processOperationOutMaterDo.getProdoutroll() - processOperationOutMaterDo.getProdcancelroll());
                             processOperationOutMaterDo.setMoveleaveoutroll(processOperationOutMaterDo.getPlanmoverollnum() - processOperationOutMaterDo.getMoveoutroll() - processOperationOutMaterDo.getMovecancelroll());
                             processOperationOutMaterDo.setStockleaveoutroll(processOperationOutMaterDo.getPlanstockrollnum() - processOperationOutMaterDo.getStockoutroll() - processOperationOutMaterDo.getStockcancelroll());
+
+                            planrollnum += processOperationOutMaterDo.getPlanrollnum();
                             apsProcessOperationOutMaterDoList.add(processOperationOutMaterDo);
                         }
                         previousProcessVo.setApsProcessOperationOutMaterDos(apsProcessOperationOutMaterDoList);
@@ -864,6 +877,11 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                             }
                         }
                         processOperationDo.setPlanoutput(planoutsb.toString());
+                        if (planrollnum > 1) {
+                            apsProcessOperationDo.setIssubsection("是");
+                        } else {
+                            apsProcessOperationDo.setIssubsection("否");
+                        }
                         apsProcessOperationDoList.add(processOperationDo);
 
                         overProcessIds.add(apsProcessOperationDo1.getId());
@@ -928,6 +946,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         return R.error("工艺步骤" + apsProcessOperationDo.getProcessname() + "没输出");
                     }
                     List<String> planoutputList = new ArrayList<>();
+                    Integer planrollnum = 0;
                     for (ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo : apsProcessOperationOutMaterDos1) {
                         ApsProcessOperationOutMaterDo processOperationOutMaterDo = BeanUtil.toBean(apsProcessOperationOutMaterDo, ApsProcessOperationOutMaterDo.class);
                         processOperationOutMaterDo.setId(SecurityUtil.getUUID());
@@ -983,6 +1002,8 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         processOperationOutMaterDo.setProdleaveoutroll(processOperationOutMaterDo.getPlanprodrollnum() - processOperationOutMaterDo.getProdoutroll() - processOperationOutMaterDo.getProdcancelroll());
                         processOperationOutMaterDo.setMoveleaveoutroll(processOperationOutMaterDo.getPlanmoverollnum() - processOperationOutMaterDo.getMoveoutroll() - processOperationOutMaterDo.getMovecancelroll());
                         processOperationOutMaterDo.setStockleaveoutroll(processOperationOutMaterDo.getPlanstockrollnum() - processOperationOutMaterDo.getStockoutroll() - processOperationOutMaterDo.getStockcancelroll());
+
+                        planrollnum += processOperationOutMaterDo.getPlanrollnum();
                         apsProcessOperationOutMaterDoList.add(processOperationOutMaterDo);
                     }
                     previousProcessVo.setApsProcessOperationOutMaterDos(apsProcessOperationOutMaterDoList);
@@ -1023,6 +1044,11 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         }
                     }
                     processOperationDo.setPlanoutput(planoutsb.toString());
+                    if (planrollnum > 1) {
+                        apsProcessOperationDo.setIssubsection("是");
+                    } else {
+                        apsProcessOperationDo.setIssubsection("否");
+                    }
                     apsProcessOperationDoList.add(processOperationDo);
                 }
             }
@@ -1330,6 +1356,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                     //输出
                     List<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterDoList1 = processOperationOutMaterDoList.stream().filter(apoom -> apsProcessOperationDo.getId().equals(apoom.getMainid())).collect(Collectors.toList());
                     List<String> planoutputList = new ArrayList<>();
+                    Integer planrollnum = 0;
                     for (ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo1 : apsProcessOperationOutMaterDoList1) {
                         String outProducttype = apsProcessOperationOutMaterDo1.getProducttype();
                         if (apsProcessOperationOutMaterDo1.getProducttyperule().equals("不变")) {
@@ -1388,6 +1415,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         apsProcessOperationOutMaterDo1.setMoveleaveoutroll(apsProcessOperationOutMaterDo1.getPlanmoverollnum() - apsProcessOperationOutMaterDo1.getMoveoutroll() - apsProcessOperationOutMaterDo1.getMovecancelroll());
                         apsProcessOperationOutMaterDo1.setStockleaveoutroll(apsProcessOperationOutMaterDo1.getPlanstockrollnum() - apsProcessOperationOutMaterDo1.getStockoutroll() - apsProcessOperationOutMaterDo1.getStockcancelroll());
 
+                        planrollnum += apsProcessOperationOutMaterDo1.getPlanrollnum();
                         apsProcessOperationOutMaterDoNewList.add(apsProcessOperationOutMaterDo1);
                         if (StringUtils.isNotBlank(apsProcessOperationDo.getNextprocessid())) {
                             operationOutMaterDos.add(apsProcessOperationOutMaterDo1);
@@ -1406,6 +1434,11 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         }
                     }
                     apsProcessOperationDo.setPlanoutput(planoutsb.toString());
+                    if (planrollnum > 1) {
+                        apsProcessOperationDo.setIssubsection("是");
+                    } else {
+                        apsProcessOperationDo.setIssubsection("否");
+                    }
 
                     apsProcessOperationDoList.add(apsProcessOperationDo);
                 }
@@ -1653,6 +1686,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         //更新工序输出
         List<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterDoNewList = new ArrayList<>();
         List<String> planoutputList = new ArrayList<>();
+        Integer planrollnum = 0;
         for (ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo : apsProcessOperationOutMaterDos) {
             String outProducttype = apsProcessOperationOutMaterDo.getProducttype();
             if (apsProcessOperationOutMaterDo.getProducttyperule().equals("不变")) {
@@ -1706,6 +1740,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             apsProcessOperationOutMaterDo.setMoveleaveoutroll(apsProcessOperationOutMaterDo.getPlanmoverollnum() - apsProcessOperationOutMaterDo.getMoveoutroll() - apsProcessOperationOutMaterDo.getMovecancelroll());
             apsProcessOperationOutMaterDo.setStockleaveoutroll(apsProcessOperationOutMaterDo.getPlanstockrollnum() - apsProcessOperationOutMaterDo.getStockoutroll() - apsProcessOperationOutMaterDo.getStockcancelroll());
 
+            planrollnum += apsProcessOperationOutMaterDo.getPlanrollnum();
             apsProcessOperationOutMaterDoNewList.add(apsProcessOperationOutMaterDo);
             if (StringUtils.isNotBlank(apsProcessOperationDo.getNextprocessid())) {
                 operationOutMaterDos.add(apsProcessOperationOutMaterDo);
@@ -1724,6 +1759,11 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             }
         }
         apsProcessOperationDo.setPlanoutput(planoutsb.toString());
+        if (planrollnum > 1) {
+            apsProcessOperationDo.setIssubsection("是");
+        } else {
+            apsProcessOperationDo.setIssubsection("否");
+        }
 
         boolean bool1 = apsProcessOperationService.saveOrUpdate(apsProcessOperationDo);
         boolean bool2 = apsProcessOperationOutMaterService.saveOrUpdateBatch(apsProcessOperationOutMaterDoNewList);
@@ -1913,6 +1953,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             Map<String, Object> map = new HashMap<>();
             map.put("MAINID", apsProcessOperationDo.getId());
             List<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterDos = apsProcessOperationOutMaterService.listByMap(map).stream().collect(Collectors.toList());
+            Integer planrollnum = 0;
             for (ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo : apsProcessOperationOutMaterDos) {
                 Integer curOutMaterCancelRoll = curcancelroll;//输出物料本次取消卷数
                 if (cancelProcessOperationVo.getUpdatecuropration()) {
@@ -1971,6 +2012,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         curMoveCancelRoll = curMoveCancelRoll - cancelroll;
                     }
                 }
+                planrollnum += apsProcessOperationOutMaterDo.getPlanrollnum();
                 apsProcessOperationOutMaterDoList.add(apsProcessOperationOutMaterDo);
             }
 
@@ -2031,6 +2073,11 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             Optional<Date> maxDate = apsProcessOperationProcessEquDos.stream()
                     .map(ApsProcessOperationProcessEquDo::getPlanenddate).max(Comparator.naturalOrder());
             apsProcessOperationDo.setPlanenddate(new Date(maxDate.get().getTime()));
+            if (planrollnum > 1) {
+                apsProcessOperationDo.setIssubsection("是");
+            } else {
+                apsProcessOperationDo.setIssubsection("否");
+            }
 
             boolean bool1 = apsProcessOperationService.saveOrUpdate(apsProcessOperationDo);
             boolean bool2 = apsProcessOperationOutMaterService.saveOrUpdateBatch(apsProcessOperationOutMaterDoList);

+ 8 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsServiceImpl.java

@@ -233,6 +233,7 @@ public class ApsServiceImpl implements ApsService {
                         // APS平台排程接口调用
                         ProductionScheduleRetVo productionScheduleRetVo = rwApsServer.productionSchedule(productionScheduleVo);
                         if (!"200".equals(productionScheduleRetVo.getCode())) {
+                            logger.info("排程异常,坯料计划ID:" + bo.getId());
                             /*processOperationProcessEquService.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>().set(ApsProcessOperationProcessEquDo::getLockmark,"y")
                                     .in(ApsProcessOperationProcessEquDo::getBlankid,blankOrderIds));*/
                             throw new CustomException(productionScheduleRetVo.getMsg());
@@ -643,6 +644,13 @@ public class ApsServiceImpl implements ApsService {
                 }*/
             } catch (Exception e) {
                 e.printStackTrace();
+                logger.info("排程异常" + e);
+                String msg = "排程服务异常";
+                if(e instanceof CustomException){
+                    msg = e.getMessage();
+                }
+                currentUser.setRoption(msg);
+                redisService.redisCatchInit("apsUser-"+tenantId,currentUser,3600*24);
                 throw e;
             } finally {
                 rLock.forceUnlock();

+ 4 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsProcessOperationBackupDo.java

@@ -450,6 +450,10 @@ public class ApsProcessOperationBackupDo extends BaseDo implements Serializable
      * 剩余待开工卷数
      */
     private Integer leavewaitworkroll;
+    /**
+     * 是否已分卷
+     */
+    private String issubsection;
 
 
     /**

+ 5 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsProcessOperationDo.java

@@ -466,6 +466,11 @@ public class ApsProcessOperationDo extends BaseDo {
      */
     @TableField("LEAVEWAITWORKROLL")
     private Integer leavewaitworkroll;
+    /**
+     * 是否已分卷
+     */
+    @TableField("ISSUBSECTION")
+    private String issubsection;
 
 
 }

+ 14 - 1
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsBlankOrderController.java

@@ -9,6 +9,7 @@ import com.rongwei.bsentity.vo.CheckAndSaveOrUpdateBlankReq;
 import com.rongwei.bsentity.vo.CheckScheduleReq;
 import com.rongwei.bsentity.vo.OrderLockVo;
 import com.rongwei.rwcommon.base.R;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -128,7 +129,19 @@ public class ApsBlankOrderController {
         try {
             log.info("插单;参数为:{}", params);
             R resData = apsBlankOrderService.insertOrder(params);
-            return resData;
+            if (resData.getCode().equals("200")) {
+                //重新排程
+                Thread thread = new Thread(new Runnable() {
+                    @SneakyThrows
+                    public void run() {
+                        apsBlankOrderService.apsReScheduling();
+                    }
+                });
+                thread.start(); // 启动线程
+                return resData;
+            } else {
+                return R.error();
+            }
         } catch (Exception e) {
             e.printStackTrace();
             log.info("插单异常:" + e.getMessage());

+ 13 - 4
cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspSafeAttachmentsServiceImpl.java

@@ -122,7 +122,10 @@ public class AspSafeAttachmentsServiceImpl extends ServiceImpl<AspSafeAttachment
                     sendNotifyMap.put(data, alertUser);
                     for (String userId : alertUser) {
                         if (sendMailMap.containsKey(userId)) {
-                            sendMailMap.get(userId).add(data);
+                            List<String> dataIdList = sendMailMap.get(userId).stream().map(AspSafeAttachmentsDo::getId).collect(Collectors.toList());
+                            if (!dataIdList.contains(data.getId())) {
+                                sendMailMap.get(userId).add(data);
+                            }
                         }
                     }
                 } else if (daysBetween <= 90) {
@@ -131,7 +134,10 @@ public class AspSafeAttachmentsServiceImpl extends ServiceImpl<AspSafeAttachment
                     data.setReminderstate(MIDDLE);
                     for (String userId : alertUser) {
                         if (sendMailMap.containsKey(userId)) {
-                            sendMailMap.get(userId).add(data);
+                            List<String> dataIdList = sendMailMap.get(userId).stream().map(AspSafeAttachmentsDo::getId).collect(Collectors.toList());
+                            if (!dataIdList.contains(data.getId())) {
+                                sendMailMap.get(userId).add(data);
+                            }
                         }
                     }
                 } else {
@@ -167,7 +173,7 @@ public class AspSafeAttachmentsServiceImpl extends ServiceImpl<AspSafeAttachment
                 //附件类型
                 String attachmenttype = ObjectUtil.isNotEmpty(attachmentsDo.getAttachmenttype()) ? attachmentsDo.getAttachmenttype() : "";
                 //证书/报告编号
-                String number = ObjectUtil.isNotEmpty(attachmentsDo.getNumber()) ? attachmentsDo.getNumber() : "";
+                String number = ObjectUtil.isNotEmpty(attachmentsDo.getCertificatenumber()) ? attachmentsDo.getCertificatenumber() : "";
                 //名称
                 String name = ObjectUtil.isNotEmpty(attachmentsDo.getName()) ? attachmentsDo.getName() : "";
                 //检验日期
@@ -186,7 +192,10 @@ public class AspSafeAttachmentsServiceImpl extends ServiceImpl<AspSafeAttachment
             mailDo.setReceiveEmail(new String[]{userMap.get(key).getEmail()});
             mailDo.setNeedTransReceive(false);
             mailDo.setContent(mailContent.toString());
-            sysConfigFeignService.sendTextMail(mailDo);
+            try {
+                sysConfigFeignService.sendTextMail(mailDo);
+            } catch (Exception ignored) {
+            }
         });
 
     }

+ 13 - 3
cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspSpecialEquipmentCertificateServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwe.scentity.domian.AspSafeAttachmentsDo;
 import com.rongwe.scentity.domian.AspSpecialEquipmentCertificateDo;
+import com.rongwe.scentity.domian.CheckItemsDo;
 import com.rongwe.scentity.vo.UserMailOrgVo;
 import com.rongwei.rwadmincommon.system.domain.SysDictDo;
 import com.rongwei.rwadmincommon.system.service.SysConfigFeignService;
@@ -99,7 +100,10 @@ public class AspSpecialEquipmentCertificateServiceImpl extends ServiceImpl<AspSp
                     sendNotifyMap.put(data, alertUser);
                     for (String userId : alertUser) {
                         if (sendMailMap.containsKey(userId)) {
-                            sendMailMap.get(userId).add(data);
+                            List<String> dataIdList = sendMailMap.get(userId).stream().map(AspSpecialEquipmentCertificateDo::getId).collect(Collectors.toList());
+                            if (!dataIdList.contains(data.getId())) {
+                                sendMailMap.get(userId).add(data);
+                            }
                         }
                     }
                 } else if (daysBetween <= 90) {
@@ -108,7 +112,10 @@ public class AspSpecialEquipmentCertificateServiceImpl extends ServiceImpl<AspSp
                     data.setReminderstate(MIDDLE);
                     for (String userId : alertUser) {
                         if (sendMailMap.containsKey(userId)) {
-                            sendMailMap.get(userId).add(data);
+                            List<String> dataIdList = sendMailMap.get(userId).stream().map(AspSpecialEquipmentCertificateDo::getId).collect(Collectors.toList());
+                            if (!dataIdList.contains(data.getId())) {
+                                sendMailMap.get(userId).add(data);
+                            }
                         }
                     }
                 } else {
@@ -170,7 +177,10 @@ public class AspSpecialEquipmentCertificateServiceImpl extends ServiceImpl<AspSp
             mailDo.setReceiveEmail(new String[]{userMap.get(key).getEmail()});
             mailDo.setNeedTransReceive(false);
             mailDo.setContent(mailContent.toString());
-            sysConfigFeignService.sendTextMail(mailDo);
+            try {
+                sysConfigFeignService.sendTextMail(mailDo);
+            } catch (Exception ignored) {
+            }
         });
 
     }

+ 14 - 5
cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/CheckItemsServiceImpl.java

@@ -189,7 +189,7 @@ public class CheckItemsServiceImpl extends ServiceImpl<CheckItemsDao, CheckItems
     @Override
     public R stateUpdateScheduledTasks() {
         // 获取所有的特种设备
-        List<CheckItemsDo> safeAttachmentsDos = this.list(new LambdaQueryWrapper<CheckItemsDo>().eq(CheckItemsDo::getSource, 1));
+        List<CheckItemsDo> safeAttachmentsDos = this.list(new LambdaQueryWrapper<CheckItemsDo>().eq(CheckItemsDo::getSource, 1).eq(CheckItemsDo::getDeleted, "0"));
         if (safeAttachmentsDos.isEmpty()) {
             return R.ok("暂无设备需要检验");
         }
@@ -226,7 +226,10 @@ public class CheckItemsServiceImpl extends ServiceImpl<CheckItemsDao, CheckItems
                     sendNotifyMap.put(data, alertUser);
                     for (String userId : alertUser) {
                         if (sendMailMap.containsKey(userId)) {
-                            sendMailMap.get(userId).add(data);
+                            List<String> dataIdList = sendMailMap.get(userId).stream().map(CheckItemsDo::getId).collect(Collectors.toList());
+                            if (!dataIdList.contains(data.getId())) {
+                                sendMailMap.get(userId).add(data);
+                            }
                         }
                     }
                 } else if (daysBetween <= 90) {
@@ -235,7 +238,10 @@ public class CheckItemsServiceImpl extends ServiceImpl<CheckItemsDao, CheckItems
                     data.setReminderstate(MIDDLE);
                     for (String userId : alertUser) {
                         if (sendMailMap.containsKey(userId)) {
-                            sendMailMap.get(userId).add(data);
+                            List<String> dataIdList = sendMailMap.get(userId).stream().map(CheckItemsDo::getId).collect(Collectors.toList());
+                            if (!dataIdList.contains(data.getId())) {
+                                sendMailMap.get(userId).add(data);
+                            }
                         }
                     }
                 } else {
@@ -278,7 +284,7 @@ public class CheckItemsServiceImpl extends ServiceImpl<CheckItemsDao, CheckItems
                 String deviceoutcode = ObjectUtil.isNotEmpty(checkItemsDo.getDeviceoutcode()) ? checkItemsDo.getDeviceoutcode() : "";
                 //设备名称
                 String checkitemname = ObjectUtil.isNotEmpty(checkItemsDo.getCheckitemname()) ? checkItemsDo.getCheckitemname() : "";
-                //检验日期
+                //下次检验日期
                 Date devicecheckdate = checkItemsDo.getDevicecheckdate();
                 String checkDate = "";
                 if (ObjectUtil.isNotEmpty(devicecheckdate)) {
@@ -294,7 +300,10 @@ public class CheckItemsServiceImpl extends ServiceImpl<CheckItemsDao, CheckItems
             mailDo.setReceiveEmail(new String[]{userMap.get(key).getEmail()});
             mailDo.setNeedTransReceive(false);
             mailDo.setContent(mailContent.toString());
-            sysConfigFeignService.sendTextMail(mailDo);
+            try {
+                sysConfigFeignService.sendTextMail(mailDo);
+            } catch (Exception ignored) {
+            }
         });
 
     }