Explorar o código

提交坯料时校验作业的厚度、宽度、卷重

DLC hai 6 meses
pai
achega
a322103f29

+ 10 - 1
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProductionOrderDao.java

@@ -25,7 +25,7 @@ public interface ApsProductionOrderDao extends BaseMapper<ApsProductionOrderDo>
 
     List<String> getStartWorkByBlankId(@Param("ids") List<String> ids);
 
-    List<ApsProductionOrderDo> getDataByBlankId(@Param("blankIds")List<String> blankids);
+    List<ApsProductionOrderDo> getDataByBlankId(@Param("blankIds") List<String> blankids);
 
     @Select("select apd.ID AS 'productDetailId',SUM(apop.PLANOUTPUTROLLCOUNT) AS 'PLANOUTPUTROLLCOUNTALL' from aps_product_detail apd LEFT JOIN aps_process_output_product apop ON apd.ID = apop.PRODUCTID AND apop.DELETED = 0 where apd.DELETED = 0 AND apd.MAINID = #{mainid} GROUP BY apd.ID")
     List<ProductDetailIdAndPlanOutPutRollCountAllVo> getProductDetailIdAndPlanOutPutRollCountAll(@Param("mainid") String mainid);
@@ -56,6 +56,15 @@ public interface ApsProductionOrderDao extends BaseMapper<ApsProductionOrderDo>
             "\t\tor (e.WORKSTATUS='待开工' and TIMESTAMPDIFF(DAY,DATE_FORMAT(NOW(),'%Y-%m-%d'),DATE_FORMAT(e.PLANSTARTDATE,'%Y-%m-%d'))<0)))")
     List<ApsProductionOrderDo> getProcessDelay();
 
+    @Select("SELECT SUBSTRING_INDEX(so.TREECODE, '.', 1) as ORDERNO,GROUP_CONCAT(su.ID) AS TENANTID,GROUP_CONCAT(su.EMAIL) AS ROPTION\n" +
+            "FROM sys_role sr LEFT JOIN sys_user_role sur ON sr.ID = sur.ROLEID and sur.DELETED = 0 \n" +
+            "LEFT JOIN sys_user su ON sur.USERID = su.ID and su.DELETED = 0 \n" +
+            "LEFT JOIN sys_user_org suo ON suo.USERID = su.ID AND suo.DELETED = 0 \n" +
+            "LEFT JOIN sys_organization so ON suo.ORGID = so.ID AND so.DELETED = 0 \n" +
+            "WHERE sr.CODE='role071' AND ((so.FULLPID like ',0001651000000015EFDD%' or so.ID='0001651000000015EFDD') or (so.FULLPID like ',0001651000000017DRZ1%' or so.ID='0001651000000017DRZ1')\n" +
+            "\tor (so.FULLPID like ',0001S31000000000J0TR%' or so.ID='0001S31000000000J0TR')) group by ORDERNO")
+    List<ApsProductionOrderDo> getScjhzr();
+
     @Select("select po.ID,po.ORDERNO,po.CUSTOMNAME,po.ORDERDATE,b.ID as CUSTOMID,o.OUTPUTNUMBER as CUSTOMWAREHOUSE,p.PROCESS as CUSTOMORDERNO,o.INSEPCTIONLEVEL as CUSTOMORDERTYPE,\n" +
             "\to.MAJOR as REMARK,o.MINOR as ROPTION,po.CREATEUSERID,u.ACCOUNT as CREATEUSERNAME,u.EMAIL as MODIFYUSERNAME\n" +
             "from aps_report_output o\n" +

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

@@ -750,7 +750,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         processOperationDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_START);
                         processOperationDo.setProcessstatus(SaveConstans.ProductionStatus.TO_BE_SCHEDULED);
                         //存储日志
-                        apsConflictLogService.recordLog("","更新工序作业的生产状态为待排程,工序作业ID为:"+processOperationDo.getId(),"",2,null);
+                        apsConflictLogService.recordLog("", "更新工序作业的生产状态为待排程,工序作业ID为:" + processOperationDo.getId(), "", 2, null);
 
                         processOperationDo.setClosestatus(SaveConstans.CloseStatus.UNFINISHED);
                         processOperationDo.setLockmark(LOCKMARK_N);
@@ -943,7 +943,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                     processOperationDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_START);
                     processOperationDo.setProcessstatus(SaveConstans.ProductionStatus.TO_BE_SCHEDULED);
                     //存储日志
-                    apsConflictLogService.recordLog("","更新工序作业的生产状态为待排程,工序作业ID为:"+processOperationDo.getId(),"",2,null);
+                    apsConflictLogService.recordLog("", "更新工序作业的生产状态为待排程,工序作业ID为:" + processOperationDo.getId(), "", 2, null);
 
                     processOperationDo.setClosestatus(SaveConstans.CloseStatus.UNFINISHED);
                     processOperationDo.setLockmark(LOCKMARK_N);
@@ -1248,7 +1248,28 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             List<ApsProcessOperationOutMaterDo> myOutMaterList = apsProcessOperationOutMaterList.stream().filter(item -> item.getMainid().equals(apsProcessOperationDo.getId())).collect(Collectors.toList());
             //检查该工序作业所有输出物料,如果(计划输出卷数-计划备料卷数-计划成品卷数)不等于所有后道工序作业计划加工卷数合计;错误提示:{工序}{工序显示名}的{输出物料} 计划输出卷数-计划备料卷数-计划成品卷数必须等于所有后道工序作业计划加工卷数合计
             //遍历输出物料
+            BigDecimal alloutrollweight = BigDecimal.ZERO;
             for (ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo : myOutMaterList) {
+                if (apsProcessOperationDo.getThickness() == null || apsProcessOperationDo.getThickness().equals(BigDecimal.valueOf(0)) || apsProcessOperationOutMaterDo.getThickness() == null || apsProcessOperationOutMaterDo.getThickness().equals(BigDecimal.valueOf(0))) {
+                    return R.error(apsProcessOperationDo.getProcess() + apsProcessOperationDo.getProcessname() + "的输入或输出的厚度必须大于零");
+                } else {
+                    if (apsProcessOperationDo.getThickness().compareTo(apsProcessOperationOutMaterDo.getThickness()) < 0) {
+                        return R.error(apsProcessOperationDo.getProcess() + apsProcessOperationDo.getProcessname() + "的输出的厚度不能大于输入物料的厚度");
+                    }
+                }
+                if (apsProcessOperationDo.getProwidth() == null || apsProcessOperationDo.getProwidth().equals(BigDecimal.valueOf(0)) || apsProcessOperationOutMaterDo.getProwidth() == null || apsProcessOperationOutMaterDo.getProwidth().equals(BigDecimal.valueOf(0))) {
+                    return R.error(apsProcessOperationDo.getProcess() + apsProcessOperationDo.getProcessname() + "的输入或输出的宽度必须大于零");
+                } else {
+                    if (apsProcessOperationDo.getProwidth().compareTo(apsProcessOperationOutMaterDo.getProwidth()) < 0) {
+                        return R.error(apsProcessOperationDo.getProcess() + apsProcessOperationDo.getProcessname() + "的输出的宽度不能大于输入物料的宽度");
+                    }
+                }
+                if (apsProcessOperationOutMaterDo.getOutval() == null || apsProcessOperationOutMaterDo.getOutval().equals(BigDecimal.valueOf(0)) || apsProcessOperationOutMaterDo.getSinglerollweight() == null || apsProcessOperationOutMaterDo.getSinglerollweight().equals(BigDecimal.valueOf(0))) {
+                    return R.error(apsProcessOperationDo.getProcess() + apsProcessOperationDo.getProcessname() + "的输出单卷重或单卷分卷数量必须大于零");
+                } else {
+                    alloutrollweight = alloutrollweight.add(new BigDecimal(df.format(BigDecimal.valueOf(apsProcessOperationOutMaterDo.getOutval()).multiply(apsProcessOperationOutMaterDo.getSinglerollweight()))));
+                }
+
                 //遍历工序作业,计算 计划加工卷数合计
 //                int planProcessRollAll = apsProcessOperationDo.getPlanprocessrall();
                 //计算输出物料的 (计划输出卷数-计划备料卷数-计划成品卷数)值
@@ -1286,13 +1307,20 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                 }
 
             }
+            if (apsProcessOperationDo.getSinglerollweight() == null || apsProcessOperationDo.getSinglerollweight().equals(BigDecimal.valueOf(0))) {
+                return R.error(apsProcessOperationDo.getProcess() + apsProcessOperationDo.getProcessname() + "的输入单卷重必须大于零");
+            } else {
+                if (alloutrollweight.compareTo(apsProcessOperationDo.getSinglerollweight()) > 0) {
+                    return R.error(apsProcessOperationDo.getProcess() + apsProcessOperationDo.getProcessname() + "的所有输出物料的(输出单卷重*单卷分卷数量)合计不能大于输入单卷重");
+                }
+            }
 
             //轧机作业的可选设备必须选择辊类型
             if (apsProcessOperationDo.getIszj().equals("1")) {
                 List<ApsProcessOperationEquDo> zjequs = apsProcessOperationEquDoList.stream().filter(equ -> equ.getMainid().equals(apsProcessOperationDo.getId())).collect(Collectors.toList());
                 for (ApsProcessOperationEquDo processOperationEquDo : zjequs) {
                     if (ObjectUtil.isEmpty(processOperationEquDo.getRollerid())) {
-                        return R.error("轧机作业的可选设备必须选择辊类型");
+                        return R.error(apsProcessOperationDo.getProcess() + apsProcessOperationDo.getProcessname() + "轧机作业的可选设备必须选择辊类型");
                     }
                 }
             }

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

@@ -670,6 +670,10 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
     @Override
     public void processDelay() {
         List<ApsProductionOrderDo> apsProductionOrderDos = this.baseMapper.getProcessDelay();
+        List<ApsProductionOrderDo> scjhzrs = new ArrayList<>();//获取各工厂生产计划主任
+        if (apsProductionOrderDos.size() > 0) {
+            scjhzrs = this.baseMapper.getScjhzr();
+        }
         for (ApsProductionOrderDo apsProductionOrderDo : apsProductionOrderDos) {
             //系统通知(移动端和PC端个人工作台)
             CXCommonUtils.sendNotify(PROCESSDELAY_TITLE, String.format(PROCESSDELAY_CONTENT, apsProductionOrderDo.getOrderno()), null, Arrays.asList(apsProductionOrderDo.getCreateuserid().split(",")), apsProductionOrderDo.getId(), PROCESSDELAY_REMIND, false);