Przeglądaj źródła

MES功能更新处理

oyq28 1 miesiąc temu
rodzic
commit
ad60db113f

+ 1 - 1
imcs-admin-boot/imcs-business-biz/src/main/resources/mapper_business/base/externalApi/MesNoticeMapper.xml

@@ -44,7 +44,7 @@
         WHERE
         m.`status` in ('1','2')
         AND m.api_sort = n.msort and m.order_no = n.order_no
-        order by m.api_sort asc, m.status desc
+        group by m.order_no order by m.api_sort asc, m.status desc
         ) s ${ew.customSqlSegment}
     </select>
 

+ 11 - 6
imcs-admin-boot/imcs-business-biz/src/main/resources/mapper_business/base/statisticalAnalysis/ProductLinePerformanceMapper.xml

@@ -515,8 +515,8 @@
             <otherwise>'1' as daySpan, </otherwise>
         </choose>
         <choose>
-            <when test="params.code !=null and params.code !=''">TIMESTAMPDIFF(MINUTE, c.expect_start_time, c.expect_end_time) as expectTime,TIMESTAMPDIFF(MINUTE, n.start_time, IFNULL(n2.end_time, Now())) AS realTime,</when>
-            <otherwise>TIMESTAMPDIFF(MINUTE, c.expect_start_time, c.expect_end_time)* 0.8 AS expectTime,TIMESTAMPDIFF(MINUTE, n.start_time, IFNULL(n.end_time, Now())) AS realTime,</otherwise>
+            <when test="params.code !=null and params.code !=''">TIMESTAMPDIFF(MINUTE, c.expect_start_time, c.expect_end_time) as expectTime,TIMESTAMPDIFF(MINUTE, n.start_time, IFNULL(n2.end_time, IFNULL(c.end_time ,Now()))) AS realTime,</when>
+            <otherwise>TIMESTAMPDIFF(MINUTE, c.expect_start_time, c.expect_end_time)* 0.8 AS expectTime,TIMESTAMPDIFF(MINUTE, n.start_time, IFNULL(n.end_time, IFNULL(c.end_time ,Now()))) AS realTime,</otherwise>
         </choose>
         <if test="params.startDate !=null and params.startDate !='' and params.endDate !=null and params.endDate !=''">
             DATE_FORMAT(n.end_time, '%Y-%m-%d') AS time
@@ -547,6 +547,7 @@
         AND n.end_time IS NOT NULL
         AND n.exe_status = 3
         AND c.id = n.task_id
+        AND c.is_mask = 0
         <if test="params.code !=null and params.code !=''">
             AND LOCATE('取料', left(n.node_name, 7))
             AND n.complete_batch_no = n2.complete_batch_no
@@ -609,9 +610,9 @@
                 <choose>
                     <when test="params.code !=null and params.code !=''">
                         TIMESTAMPDIFF(MINUTE, c.expect_start_time, c.expect_end_time) AS expectTime,
-                        TIMESTAMPDIFF(MINUTE, n.start_time, IFNULL(n2.end_time, Now())) AS realTime,
+                        TIMESTAMPDIFF(MINUTE, n.start_time, IFNULL(n2.end_time, IFNULL(c.end_time ,Now()))) AS realTime,
                     </when>
-                    <otherwise>TIMESTAMPDIFF(MINUTE, c.expect_start_time, c.expect_end_time)* 0.8 AS expectTime,TIMESTAMPDIFF(MINUTE, n.start_time, IFNULL(n.end_time, Now())) AS realTime,
+                    <otherwise>TIMESTAMPDIFF(MINUTE, c.expect_start_time, c.expect_end_time)* 0.8 AS expectTime,TIMESTAMPDIFF(MINUTE, n.start_time, IFNULL(n.end_time, IFNULL(c.end_time ,Now()))) AS realTime,
                     </otherwise>
                 </choose>
             </when>
@@ -665,6 +666,7 @@
         </choose>
         AND b.resource_id = itp.id
         AND c.id = n.task_id
+        AND c.is_mask = 0
         <choose>
             <when test="params.taskType !=null and params.taskType !=''">
                 AND n.start_time IS NOT NULL
@@ -791,19 +793,22 @@
         zuihou_base_yj_0000.imcs_o_order o,
         zuihou_base_yj_0000.imcs_tenant_productionresource itp,
         <choose>
-            <when test="params.taskType !=null and params.taskType !=''"> zuihou_base_yj_0000.imcs_t_task_node n </when>
-            <otherwise>zuihou_base_yj_0000.imcs_t_task c </otherwise>
+            <when test="params.taskType !=null and params.taskType !=''"> zuihou_base_yj_0000.imcs_t_task_node n, </when>
         </choose>
+        zuihou_base_yj_0000.imcs_t_task c
         WHERE
          o.single_task_flag='0'
         <choose>
             <when test="params.taskType !=null and params.taskType !=''">
                 AND o.id = n.order_id
                 AND itp.id = n.resource_id
+                AND n.task_id = c.id
+                AND c.is_mask = 0
             </when>
             <otherwise>
                 AND o.id = c.order_id
                 AND itp.id = c.resource_id
+                AND c.is_mask = 0
            </otherwise>
         </choose>
 

+ 15 - 8
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/externalApi/MesController.java

@@ -328,7 +328,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
 
               OrderProduct orderProduct = OrderProduct.builder().build();
               orderProduct.setOrderId(order.getId()).setOrderNo(order.getOrderNo()).setBomId(bom.getId()).setBomName(bom.getName()).setBomNum(workPieceList.size()).setBomNo(bom.getNo()).setDeliveryTime(order.getDeliveryTime());
-              mMeterialReceiveLog = meterialReceiveLogService.getOne(new LambdaQueryWrapper<MMeterialReceiveLog>().eq(MMeterialReceiveLog::getMeterialId, bom.getMeterialId()));
+              mMeterialReceiveLog = meterialReceiveLogService.getOne(new LambdaQueryWrapper<MMeterialReceiveLog>().eq(MMeterialReceiveLog::getMeterialId, bom.getMeterialId()).last("limit 1"));
               if(null!= mMeterialReceiveLog) {
                   orderProduct.setMeterialReceiveId(mMeterialReceiveLog.getId());
               }else{
@@ -360,7 +360,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
                   }
                   else{
                       Integer num = material.getInteger("requiredQuantity");
-                      mMeterialReceiveLog = meterialReceiveLogService.getOne(new LambdaQueryWrapper<MMeterialReceiveLog>().eq(MMeterialReceiveLog::getMeterialId, mMeterial.getId()));
+                      mMeterialReceiveLog = meterialReceiveLogService.getOne(new LambdaQueryWrapper<MMeterialReceiveLog>().eq(MMeterialReceiveLog::getMeterialId, mMeterial.getId()).last("limit 1"));
                       Integer surplus = mMeterialReceiveLog.getUsedNum() ==null ? mMeterialReceiveLog.getBatchStand() : mMeterialReceiveLog.getBatchStand() - mMeterialReceiveLog.getUsedNum();
                       if(null!=surplus && surplus < num) {
                           msgUtil.createWarnLog(mMeterial.getTradeMark()+"毛坯不够", "MesSynDataWarn");
@@ -430,7 +430,8 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
                           versionId = mesVersionInfo.getId();
                       }
                       //节点处理
-                      if (taskList.size() > 0) {
+                      /*
+                      if (taskList.size() >= 4) {
                           String[] noArr = new String[] {"OP05","OP10", "OP11", "OP15"};
                           String[] typeArr = new String[] {"上料","设备序", "设备序","下料"};
 
@@ -454,6 +455,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
                           bomProcedureVersionService.saveBatch(bomProcedureVersionsList);
                           bomProcedureService.saveBatch(bomProcedureList);
                       }
+                       */
                   }
               }
               break;
@@ -632,7 +634,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
             //判断原材料是否存在
             String materialCode = consumMaterial.containsKey("materialCode") && consumMaterial.getString("materialCode")!="null" ? consumMaterial.getString("materialCode") : consumMaterial.getString("proMaterialCode");
             String materialName = consumMaterial.containsKey("materialName") && consumMaterial.getString("materialName")!="null" ? consumMaterial.getString("materialName") : consumMaterial.getString("proMaterialName");
-            mMeterial = materialService.getOne(new LbqWrapper<MMeterial>().eq(MMeterial::getTradeMark, consumMaterial.getString("materialGrade")).eq(MMeterial::getMeterialCode, materialCode).last("limit 1"));
+            mMeterial = materialService.getOne(new LbqWrapper<MMeterial>().eq(MMeterial::getTradeMark, consumMaterial.getString("materialName")).eq(MMeterial::getMeterialCode, materialCode).last("limit 1"));
             if(null == mMeterial){
                 MMeterial instance = MMeterial.builder().build();
                 instance.setStatus("1").setSpecification(materialCode).setMeterialCode(materialCode).setEquipmentName(materialName).setTradeMark(materialName).setHandleStatus("");
@@ -646,7 +648,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
             }
             else{
                 Integer num = consumMaterial.getInteger("quantity");
-                MMeterialReceiveLog mMeterialReceiveLog = meterialReceiveLogService.getOne(new LambdaQueryWrapper<MMeterialReceiveLog>().eq(MMeterialReceiveLog::getMeterialId, mMeterial.getId()));
+                MMeterialReceiveLog mMeterialReceiveLog = meterialReceiveLogService.getOne(new LambdaQueryWrapper<MMeterialReceiveLog>().eq(MMeterialReceiveLog::getMeterialId, mMeterial.getId()).last("limit 1"));
                 Integer surplus = mMeterialReceiveLog.getUsedNum() ==null ? mMeterialReceiveLog.getBatchStand() : mMeterialReceiveLog.getBatchStand() - mMeterialReceiveLog.getUsedNum();
                 if(null!=surplus && surplus < num) {
                     msgUtil.createWarnLog(mMeterial.getTradeMark()+"毛坯不够", "MesNoticeWarn");
@@ -730,7 +732,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
         }
 
         String bomName = materialName+ "V" + processNo;
-        BBom bom = bBomService.getOne(new LambdaQueryWrapper<BBom>().eq(BBom::getMeterialId, mMeterial.getId()).eq(BBom::getPartsNo, mMeterial.getMeterialCode()).eq(BBom::getName, bomName).eq(BBom::getNo, workOrderNo).eq(BBom::getSynFlag, "1"));
+        BBom bom = bBomService.getOne(new LambdaQueryWrapper<BBom>().eq(BBom::getMeterialId, mMeterial.getId()).eq(BBom::getPartsNo, mMeterial.getMeterialCode()).eq(BBom::getName, bomName).eq(BBom::getSynFlag, "1"));
         if(bom == null){
             bom = BBom.builder().build();
             bom.setPartsNo(mMeterial.getMeterialCode()).setBomAlias(mMeterial.getMeterialCode()).setPartsAlias(mMeterial.getMeterialCode()).setBatchNo(mMeterial.getMeterialCode()).setName(bomName).setStatus("1").setSynFlag("1").setImportantFlag("1").setKeyFlag("1").setNo(workOrderNo);
@@ -739,6 +741,9 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
                 bom.setZoneId(zone.getId());
             }
             bBomService.save(bom);
+        }else{
+            bom.setNo(workOrderNo);
+            bBomService.updateById(bom);
         }
         if(StringUtil.isEmpty(version)){
             msgUtil.createWarnLog("产线"+lineCode+"推送工单"+orderNo+"工艺版本数据为空","MesNoticeWarn");
@@ -759,8 +764,9 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
             } else {
                 versionId = mesVersionInfo.getId();
             }
+            /*
             //节点处理
-            if (taskList.size() > 0) {
+            if (taskList.size() >= 4) {
                 String[] noArr = new String[] {"OP05","OP10", "OP11", "OP15"};
                 String[] typeArr = new String[] {"上料","设备序", "设备序","下料"};
 
@@ -784,6 +790,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
                 bomProcedureVersionService.saveBatch(bomProcedureVersionsList);
                 bomProcedureService.saveBatch(bomProcedureList);
             }
+            */
 
         //处理工单信息
         Order order = Order.builder().build();
@@ -796,7 +803,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
 
         OrderProduct orderProduct = OrderProduct.builder().build();
         orderProduct.setOrderId(order.getId()).setOrderNo(order.getOrderNo()).setBomId(bom.getId()).setBomName(bom.getName()).setBomNum(workPieceList.size()).setBomNo(bom.getNo()).setDeliveryTime(order.getDeliveryTime());
-        MMeterialReceiveLog mMeterialReceiveLog = meterialReceiveLogService.getOne(new LambdaQueryWrapper<MMeterialReceiveLog>().eq(MMeterialReceiveLog::getMeterialId, bom.getMeterialId()));
+        MMeterialReceiveLog mMeterialReceiveLog = meterialReceiveLogService.getOne(new LambdaQueryWrapper<MMeterialReceiveLog>().eq(MMeterialReceiveLog::getMeterialId, bom.getMeterialId()).last("limit 1"));
         if(null!= mMeterialReceiveLog) {
             orderProduct.setMeterialReceiveId(mMeterialReceiveLog.getId());
         }else{

+ 9 - 7
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/externalApi/ProductionTasksController.java

@@ -400,9 +400,12 @@ public class ProductionTasksController {
             report.put("repConclusionCode", "1");
         }
         processReport.put("selfinspectionItems", itemList);
+        User user = userService.getById(tTask.getUpdateUser());
 
         report.put("batchNo", batchNo);
         report.put("quantity", "1");
+        report.put("operUserCode", user.getAccount());
+        report.put("operUserName", user.getName());
         report.put("serialNo", tWorkpiece.getSerialNo());
         workOrderReportItems.add(report);
 
@@ -435,13 +438,12 @@ public class ProductionTasksController {
         Plan plan = planService.getOne(new LbqWrapper<Plan>().eq(Plan::getOrderNo, workOrderNo).eq(Plan::getPlanStatus, "3").last("limit 1"));
         jsonParam.put("realityStartTime", plan.getStartTime()!=null?DateUtil.formatTime(plan.getStartTime()):DateUtil.formatTime(new Date()));
         jsonParam.put("realityEndTime", plan.getEndTime()!=null? DateUtil.formatTime(plan.getEndTime()):DateUtil.formatTime(new Date()));
-        if(plan.getPlanStatus().equals("3")) {
-            jsonParam.put("qualifiedQuantity", "1");
-            jsonParam.put("unqualifiedQuantity", "0");
-        }else{
-            jsonParam.put("qualifiedQuantity", "1");
-            jsonParam.put("unqualifiedQuantity", "1");
-        }
+
+        List<TWorkpiece> workpieceList = workpieceService.list(new LbqWrapper<TWorkpiece>().eq(TWorkpiece::getOrderNo, workOrderNo).eq(TWorkpiece::getIsEnd,"1"));
+        List<TWorkpiece> qualifiedList = workpieceList.stream().filter(item->item.getTestResult().equals("0")).collect(Collectors.toList());
+        jsonParam.put("qualifiedQuantity", (workpieceList.size()- qualifiedList.size()));
+        jsonParam.put("unqualifiedQuantity", qualifiedList.size());
+
         List<Map<String, Object>> itemList = new ArrayList<Map<String, Object>>();
         //替换属性
         JSONObject materialItem = new JSONObject();

+ 5 - 7
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/externalApi/SynProductionStatus.java

@@ -146,16 +146,14 @@ public class SynProductionStatus {
                 LbqWrapper<AAutoNodeLog> lbqWrapper = new LbqWrapper<AAutoNodeLog>();
 
                 lbqWrapper.eq(AAutoNodeLog::getMethod, "GlobalException")
-                        .eq(AAutoNodeLog::getFeedback, "["+ productionresource.getName() +"] "+content).orderByDesc(AAutoNodeLog::getExecuteTime).geHeader(AAutoNodeLog::getExecuteTime, LocalDateTime.now()).leFooter(AAutoNodeLog::getExecuteTime, LocalDateTime.now()).last("limit 1");
+                        .eq(AAutoNodeLog::getFeedback, "["+ productionresource.getName() +"] "+content).orderByDesc(AAutoNodeLog::getExecuteTime).last("limit 1");
 
                 AAutoNodeLog historyLog = autoNodeLogService.getOne(lbqWrapper);
                 if(null!=historyLog){
-                    // 同一天同一设备的相同报警记录弹框只处理一次
-                    if(historyLog.getStatus().equals("0")) {
-                        UpdateWrapper<AAutoNodeLog> updateWrapper = new UpdateWrapper<AAutoNodeLog>();
-                        updateWrapper.lambda().eq(AAutoNodeLog::getId, historyLog.getId()).set(AAutoNodeLog::getExecuteTime, new Date());
-                        autoNodeLogService.update(null, updateWrapper);
-                    }
+                    //更新节点 更新时间状态
+                    UpdateWrapper<AAutoNodeLog> updateWrapper = new UpdateWrapper<AAutoNodeLog>();
+                    updateWrapper.lambda().eq(AAutoNodeLog::getId, historyLog.getId()).set(AAutoNodeLog::getStatus, "0").set(AAutoNodeLog::getStartTime, new Date()).set(AAutoNodeLog::getEndTime, null).set(AAutoNodeLog::getExecuteTime, new Date());
+                    autoNodeLogService.update(null, updateWrapper);
                 }else{
                     autoNodeLogService.save(autoNodeLog);
                 }

+ 4 - 5
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/operationManagementCenter/ToolbarController.java

@@ -238,11 +238,10 @@ public class ToolbarController {
         TaskNode taskNode = taskNodeService.getById(taskNodeId);
         TaskNode nextNode = taskNodeService.getNextNTaskNode(taskNode, 1);
         if(task.getStatus().equals("3") || nextNode.getExeStatus().equals("3")) return R.fail("节点任务已经完成无须重发指令");
-        Map resultData = (Map) result.getData();
-        if(resultData.isEmpty() || !resultData.containsKey("data")) return R.fail("数据格式有误");
-        JSONArray jsonArray = (JSONArray) resultData.get("data");
-        if(jsonArray.size() == 0) return R.fail("回调数据不存在");
-        JSONObject jsonObject = (JSONObject) jsonArray.get(jsonArray.size() - 1);
+        JSONArray resultData = JSONArray.parseArray(result.getData().toString());
+
+        if(resultData.size() == 0) return R.fail("回调数据不存在");
+        JSONObject jsonObject = (JSONObject) resultData.get(resultData.size() - 1);
         if(jsonObject.containsKey("state") && jsonObject.getString("state").equals("true")){
             return R.fail("没有需复位解决的回调数据");
         }

+ 6 - 1
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/operationManagementCenter/entity/TTask.java

@@ -412,10 +412,16 @@ public class TTask extends Entity<Long> implements Serializable,Comparable<TTask
     @Excel(name = "是否加工设备调整")
     private Integer isReload;
 
+    @ApiModelProperty(value = "是否数据屏蔽")
+    @TableField("is_mask")
+    @Excel(name = "是否数据屏蔽")
+    private Integer isMask;
+
     @ApiModelProperty(value="可执行设备(位置)")
     @TableField(exist = false)
     private List<BomProcedureProductionresource> productionresourceList;
 
+
     @ApiModelProperty(value="工序原材料")
     @TableField(exist = false)
     private List<BomProcedureMeterial> meterialList;
@@ -432,7 +438,6 @@ public class TTask extends Entity<Long> implements Serializable,Comparable<TTask
     @TableField(exist = false)
     private List<BomProcedureTray> bomProcedureTrayList;
 
-
     // 排产所用字段
 
     /**