فهرست منبع

MES集成后台代码代办处理

oyq28 2 ماه پیش
والد
کامیت
ed7d2d5417

+ 1 - 1
imcs-admin-boot/imcs-authority-server/src/main/java/com/github/zuihou/authority/config/AuthorityWebConfiguration.java

@@ -83,7 +83,7 @@ public class AuthorityWebConfiguration extends BaseConfig implements WebMvcConfi
                 "/v2/api-docs-ext",
                 "/swagger-resources/**",
                 "/webjars/**",
-
+                "/mesNotice/**",
                 "/",
                 "/csrf",
                 "/agv/agvCallbackService/agvCallback",

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

@@ -34,6 +34,7 @@ import com.github.zuihou.business.productionResourceCenter.service.ZZoneService;
 import com.github.zuihou.business.util.MsgUtil;
 import com.github.zuihou.common.util.DateUtil;
 import com.github.zuihou.common.util.StringUtil;
+import com.github.zuihou.context.BaseContextHandler;
 import com.github.zuihou.database.mybatis.conditions.Wraps;
 import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
 import com.github.zuihou.database.mybatis.conditions.query.QueryWrap;
@@ -47,6 +48,7 @@ import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.compress.utils.Lists;
 import org.apache.commons.io.FileUtils;
+import org.joda.time.LocalDate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.validation.annotation.Validated;
@@ -308,6 +310,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
     @ApiOperation(value = "更新状态", notes = "更新状态")
     @PostMapping("/updateStatus")
     public R<MesNotice> updateStatus(@RequestBody MesNoticeUpdateDTO model) {
+        BaseContextHandler.setTenant("0000");
         MesNotice mesNotice = baseService.updateStatus(model);
         JSONObject ret = null;
         if (StringUtil.isNotEmpty(mesNotice.getApiAddress())) {
@@ -699,7 +702,8 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
         JSONObject queryCutterTask = new JSONObject();
 
         for (MesNotice item : mesNoticeList) {
-            String returnData = msgUtil.httpForPost(item.getApiAddress(), jsonParam.toJSONString());
+            //String returnData = msgUtil.httpForPost(item.getApiAddress(), jsonParam.toJSONString());
+            String returnData = item.getAcceptPar();
             switch (item.getApiType()) {
                 case "QUERYWORKORDER":
                     queryWorkOrder = (JSONObject) JSONObject.parseObject(returnData);
@@ -732,111 +736,160 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
         JSONObject workOrder = queryWorkOrder.getJSONArray("respBody") != null ? (JSONObject) queryWorkOrder.getJSONArray("respBody").get(0) : null;
         JSONObject workFiles = queryWorkSources.getJSONArray("respBody") != null && queryWorkSources.getJSONArray("respBody").size() > 0 ? (JSONObject) queryWorkSources.getJSONArray("respBody").get(0) : null;
         JSONObject consumMaterial = queryConsumMaterial.getJSONArray("respBody") != null ? (JSONObject) queryConsumMaterial.getJSONArray("respBody").get(0) : null;
+        JSONObject qualityInfo = queryQualityTask.getObject("TaskCode", String.class)!=null ? queryQualityTask : null;
+        JSONObject cutterInfo = queryCutterTask.getObject("AUFNR", String.class)!=null ? queryQualityTask : null;
 
         MMeterial mMeterial = null;
-
-        if (null != material) {
-            //处理物料信息
-        }
-        if (null != consumMaterial) {
-            //处理原材料信息
-            //判断原材料是否存在
-            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("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("");
-                if (zone != null) {
-                    instance.setZoneId(zone.getId());
-                }
-                materialService.save(instance);
-                mMeterial = instance;
-                MMeterialReceiveLog mMeterialReceiveLog = MMeterialReceiveLog.builder().meterialId(mMeterial.getId()).meterialBatchNo(consumMaterial.getString("furnaceBatchNo")).bomBatchNo(consumMaterial.getString("batchNo")).furnaceBatchNo(consumMaterial.getString("furnaceBatchNo")).factoryDate(new Date()).batchStand(100).usedNum(0).build();
-                meterialReceiveLogService.save(mMeterialReceiveLog);
-            } else {
-                Integer num = consumMaterial.getInteger("quantity");
-                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");
+        String processNo  = null;
+        String materialName = null;
+        String materialCode = null;
+        String workOrderNo = null;
+        String version = null;
+        List<Object> taskList = null;
+        List<Object> workPieceList = null;
+
+        if (null != qualityInfo || null!= cutterInfo) {
+            //处理质检任务信息
+            if(qualityInfo!=null){
+                processNo = qualityInfo.getString("ProcessCode");
+                workOrderNo = qualityInfo.getString("TaskCode");
+                String batchNo = qualityInfo.getString("BatchNo");
+                String serialNo = qualityInfo.getString("PartOrder");
+                String drawingNo = qualityInfo.getString("DrawNumber");
+
+                //获取默认虚拟原材料
+                mMeterial = materialService.getById(1L);
+                MMeterialReceiveLog mMeterialReceiveLog = meterialReceiveLogService.getById(1L);
+                materialCode = mMeterial.getMeterialCode();
+                BBom bom = bBomService.getOne(new LambdaQueryWrapper<BBom>().eq(BBom::getDrawingNo, drawingNo).eq(BBom::getSynFlag, "1"));
+                if(bom==null){
+                    materialName = mMeterial.getTradeMark();
+                    bom = BBom.builder().synFlag("1").name(materialName+"V"+processNo).batchNo(batchNo).partsNo(mMeterial.getMeterialCode()).partsAlias(mMeterial.getMeterialCode()).no(workOrderNo).brand(processNo).status("1").importantFlag("1").keyFlag("1").zoneId(zone.getId()).drawingNo(drawingNo).build();
+                    bom.setMeterialId(1L);
+                    bBomService.save(bom);
+                }else {
+                    materialName = bom.getName();
                 }
+                version = "V" + processNo;
+
+                //初始化业务订单数据
+                workOrder = new JSONObject();
+                workOrder.put("workOrderNo",  workOrderNo);
+                workOrder.put("materialCode", materialCode);
+                workOrder.put("planSecretLevel", "FM");
+                workOrder.put("processRouteVersion", version);
+                workOrder.put("batchNo",  batchNo);
+                List<Object> orderProductSeqList = Lists.newArrayList();
+                JSONObject data = new JSONObject();
+                data.put("serialNo", serialNo);
+                orderProductSeqList.add(data);
+                workOrder.put("orderProductSeqList",  orderProductSeqList);
+                workPieceList = orderProductSeqList;
             }
+            if(null!= cutterInfo){
 
-        }
-        //处理附件信息
-        if (null != workFiles) {
-            //图片
-            List<Object> workOrderFileList = workFiles.getJSONArray("wrkOrderFileList");
-            //加工设备
-            List<Object> workOrderDeviceList = workFiles.getJSONArray("workOrderDeviceList");
-            //加工程序
-            List<Object> workOrderDNCList = workFiles.getJSONArray("workOrderDNCList");
-            //刀具信息
-            List<Object> workOrderToolList = workFiles.getJSONArray("workOrderToolList");
-            //工装工具信息
-            List<Object> workOrderToolingDtoList = workFiles.getJSONArray("workOrderToolingDtoList");
-
-            List<MesAttachment> dataList = Lists.newArrayList();
-            //本地保存附件
-            if (workOrderFileList.size() > 0) {
-                workOrderFileList.stream().forEach(item -> {
-                    JSONObject jsonObject = (JSONObject) item;
-                    if (null != jsonObject.getString("attachmentAddress") && jsonObject.getString("attachmentAddress") != "null") {
-                        MesAttachment mesAttachment = MesAttachment.builder().build();
-                        mesAttachment.setOrderNo(jsonObject.getString("orderNo")).setProcedureNo(jsonObject.getString("workOrderNo")).setVersion(jsonObject.getString("version")).setType(jsonObject.getString("refType"))
-                                .setUrl(jsonObject.getString("attachmentAddress")).setName(jsonObject.getString("attachmentName")).setStatus(1);
-                        dataList.add(mesAttachment);
-                    }
-                });
             }
-            if (workOrderDNCList.size() > 0) {
-                workOrderDNCList.stream().forEach(item -> {
-                    JSONObject jsonObject = (JSONObject) item;
-                    if (null != jsonObject.getString("programAddress") && jsonObject.getString("programAddress") != "null") {
-                        MesAttachment mesAttachment = MesAttachment.builder().build();
-                        mesAttachment.setOrderNo(jsonObject.getString("orderNo")).setProcedureNo(jsonObject.getString("workOrderNo")).setVersion(jsonObject.getString("version")).setType(jsonObject.getString("refType"))
-                                .setUrl(jsonObject.getString("programAddress")).setName(jsonObject.getString("attachmentName")).setStatus(1);
-                        dataList.add(mesAttachment);
+        }else {
+            if (null != consumMaterial) {
+                //处理原材料信息
+                //判断原材料是否存在
+                materialCode = consumMaterial.containsKey("materialCode") && consumMaterial.getString("materialCode") != "null" ? consumMaterial.getString("materialCode") : consumMaterial.getString("proMaterialCode");
+                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("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("");
+                    if (zone != null) {
+                        instance.setZoneId(zone.getId());
                     }
-                });
-            }
-            //工装托盘资源处理
-            if (workOrderToolingDtoList.size() > 0) {
+                    materialService.save(instance);
+                    mMeterial = instance;
+                    MMeterialReceiveLog mMeterialReceiveLog = MMeterialReceiveLog.builder().meterialId(mMeterial.getId()).meterialBatchNo(consumMaterial.getString("furnaceBatchNo")).bomBatchNo(consumMaterial.getString("batchNo")).furnaceBatchNo(consumMaterial.getString("furnaceBatchNo")).factoryDate(new Date()).batchStand(100).usedNum(0).build();
+                    meterialReceiveLogService.save(mMeterialReceiveLog);
+                } else {
+                    Integer num = consumMaterial.getInteger("quantity");
+                    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");
+                    }
+                }
 
             }
-            //刀具和设备资源处理
-            if (workOrderToolList.size() > 0 && workOrderDeviceList.size() > 0) {
+            //处理附件信息
+            if (null != workFiles) {
+                //图片
+                List<Object> workOrderFileList = workFiles.getJSONArray("wrkOrderFileList");
+                //加工设备
+                List<Object> workOrderDeviceList = workFiles.getJSONArray("workOrderDeviceList");
+                //加工程序
+                List<Object> workOrderDNCList = workFiles.getJSONArray("workOrderDNCList");
+                //刀具信息
+                List<Object> workOrderToolList = workFiles.getJSONArray("workOrderToolList");
+                //工装工具信息
+                List<Object> workOrderToolingDtoList = workFiles.getJSONArray("workOrderToolingDtoList");
+
+                List<MesAttachment> dataList = Lists.newArrayList();
+                //本地保存附件
+                if (workOrderFileList.size() > 0) {
+                    workOrderFileList.stream().forEach(item -> {
+                        JSONObject jsonObject = (JSONObject) item;
+                        if (null != jsonObject.getString("attachmentAddress") && jsonObject.getString("attachmentAddress") != "null") {
+                            MesAttachment mesAttachment = MesAttachment.builder().build();
+                            mesAttachment.setOrderNo(jsonObject.getString("orderNo")).setProcedureNo(jsonObject.getString("workOrderNo")).setVersion(jsonObject.getString("version")).setType(jsonObject.getString("refType"))
+                                    .setUrl(jsonObject.getString("attachmentAddress")).setName(jsonObject.getString("attachmentName")).setStatus(1);
+                            dataList.add(mesAttachment);
+                        }
+                    });
+                }
+                if (workOrderDNCList.size() > 0) {
+                    workOrderDNCList.stream().forEach(item -> {
+                        JSONObject jsonObject = (JSONObject) item;
+                        if (null != jsonObject.getString("programAddress") && jsonObject.getString("programAddress") != "null") {
+                            MesAttachment mesAttachment = MesAttachment.builder().build();
+                            mesAttachment.setOrderNo(jsonObject.getString("orderNo")).setProcedureNo(jsonObject.getString("workOrderNo")).setVersion(jsonObject.getString("version")).setType(jsonObject.getString("refType"))
+                                    .setUrl(jsonObject.getString("programAddress")).setName(jsonObject.getString("attachmentName")).setStatus(1);
+                            dataList.add(mesAttachment);
+                        }
+                    });
+                }
+                //工装托盘资源处理
+                if (workOrderToolingDtoList.size() > 0) {
 
+                }
+                //刀具和设备资源处理
+                if (workOrderToolList.size() > 0 && workOrderDeviceList.size() > 0) {
+
+                }
+                if (dataList.size() > 0) {
+                    mesAttachmentService.saveBatch(dataList);
+                }
             }
-            if (dataList.size() > 0) {
-                mesAttachmentService.saveBatch(dataList);
+            if (workProcess == null || workOrder == null) {
+                msgUtil.createWarnLog("产线" + lineCode + "推送工单" + orderNo + "数据推送有误", "MesNoticeWarn");
+                return;
             }
-        }
-        if (workProcess == null || workOrder == null) {
-            msgUtil.createWarnLog("产线" + lineCode + "推送工单" + orderNo + "数据推送有误", "MesNoticeWarn");
-            return;
-        }
 
-        List<Object> taskList = workProcess.getJSONArray("workOrderProcessStepList");
-        List<Object> workPieceList = workOrder.getJSONArray("orderProductSeqList");
+            taskList = workProcess.getJSONArray("workOrderProcessStepList");
+            workPieceList = workOrder.getJSONArray("orderProductSeqList");
 
-        //处理工艺信息
-        String version = workProcess.getString("version");
-        String productCode = workProcess.getString("productCode");
-        String workOrderNo = workProcess.getString("workOrderNo");
-        String processNo = workProcess.getString("processNo");
+            //处理工艺信息
+            version = workProcess.getString("version");
+            String productCode = workProcess.getString("productCode");
+            workOrderNo = workProcess.getString("workOrderNo");
+            processNo = workProcess.getString("processNo");
 
-        String materialName = workOrder.getString("materialName");
-        String materialCode = workOrder.getString("materialCode");
+            materialName = workOrder.getString("materialName");
+            materialCode = workOrder.getString("materialCode");
 
-        if (!materialCode.equals(productCode)) {
-            msgUtil.createWarnLog("产线" + lineCode + "推送工单" + orderNo + "零件与工艺数据不匹配", "MesNoticeWarn");
-            return;
-        }
-        if (mMeterial == null) {
-            msgUtil.createWarnLog("产线" + lineCode + "推送工单" + orderNo + "原材料信息数据为空", "MesNoticeWarn");
-            return;
+            if (!materialCode.equals(productCode)) {
+                msgUtil.createWarnLog("产线" + lineCode + "推送工单" + orderNo + "零件与工艺数据不匹配", "MesNoticeWarn");
+                return;
+            }
+            if (mMeterial == null) {
+                msgUtil.createWarnLog("产线" + lineCode + "推送工单" + orderNo + "原材料信息数据为空", "MesNoticeWarn");
+                return;
+            }
         }
 
         String bomName = materialName + "V" + processNo;
@@ -862,7 +915,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
         if (null == mesVersionInfo) {
             BomVersionInfo bomVersionInfo = BomVersionInfo.builder().build();
             bomVersionInfo.setVersion(version).setUseStatus("0").setAuditStatus("2");
-            bomVersionInfo.setNo(workOrderNo).setSource("2");
+            bomVersionInfo.setNo(workOrderNo).setSource("2").setModelNo("331");
             if (zone != null) {
                 bomVersionInfo.setZoneId(zone.getId());
             }
@@ -904,8 +957,8 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
         Order order = Order.builder().build();
         order.setOrderNo(workOrder.getString("workOrderNo")).setOrderTime(StringUtil.isNotEmpty(workOrder.getString("plannedStartTime")) ? DateUtil.stringToDate3(workOrder.getString("plannedStartTime")) : new Date()).setDeliveryTime(StringUtil.isNotEmpty(workOrder.getString("plannedEndTime")) ? DateUtil.stringToDate3(workOrder.getString("plannedEndTime")) : new Date()).setSource("2").setProductNum(workPieceList.size())
                 .setStatus("1").setSingleTaskFlag(0).setOrderStatus("1").setBatchNo(workOrder.getString("batchNo"));
-        //产品编码+生产类型编码(P/B P:按序列生产 B:按批次生产)+ 密级编码 + 批次号 + 工艺版本
-        String orderName = "MES_" + workOrder.getString("materialCode") + "_" + workOrder.getString("productPhase").toUpperCase() + "_" + workOrder.getString("planSecretLevel").toUpperCase() + "_" + workOrder.getString("batchNo") + "_" + workOrder.getString("processRouteVersion");
+        //产品编码+ 密级编码 + 批次号 + 工艺版本
+        String orderName = "MES_" + workOrder.getString("materialCode") + "_" + workOrder.getString("planSecretLevel").toUpperCase() + "_" + workOrder.getString("batchNo") + "_" + workOrder.getString("processRouteVersion");
         order.setCustId(0L).setOrderName(orderName).setZoneId(zone.getId());
         orderService.save(order);
 

+ 11 - 8
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/productionReadyCenter/entity/BBom.java

@@ -275,14 +275,9 @@ public class BBom extends Entity<Long> {
     private String classType;
 
     @Builder
-    public BBom(Long id, LocalDateTime createTime, Long createUser, LocalDateTime updateTime, Long updateUser, 
-                    String auditStatus, Long parentId, String name, String no, String status, 
-                    String model, String brand, String specification, Long moduleId, int synFlag,String groupNo,String furnaceBatchNo,String batchStand) {
-        this.id = id;
-        this.createTime = createTime;
-        this.createUser = createUser;
-        this.updateTime = updateTime;
-        this.updateUser = updateUser;
+    public BBom(String batchNo,String importantFlag, String keyFlag,
+                    String auditStatus, Long parentId, String name, String no, String status, String drawingNo, String partsNo, String partsAlias, Long zoneId,
+                    String model, String brand, String specification, Long moduleId, String synFlag,String groupNo,String furnaceBatchNo,String batchStand) {
         this.auditStatus = auditStatus;
         this.parentId = parentId;
         this.name = name;
@@ -295,6 +290,14 @@ public class BBom extends Entity<Long> {
         this.groupNo = groupNo;
         this.batchStand = batchStand;
         this.furnaceBatchNo = furnaceBatchNo;
+        this.synFlag = synFlag;
+        this.partsAlias = partsAlias;
+        this.partsNo = partsNo;
+        this.drawingNo = drawingNo;
+        this.importantFlag = importantFlag;
+        this.keyFlag = keyFlag;
+        this.zoneId = zoneId;
+        this.batchNo = batchNo;
     }
 
 }

+ 2 - 1
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/productionReadyCenter/entity/MMeterial.java

@@ -117,7 +117,7 @@ public class MMeterial extends Entity<Long> {
     @Builder
     public MMeterial(Long id, LocalDateTime createTime, Long createUser, LocalDateTime updateTime, Long updateUser, 
                     String meterialCode, String equipmentName, String tradeMark, String specification, String handleStatus, 
-                    String status, Integer num) {
+                    String status, Integer num, Long zoneId) {
         this.id = id;
         this.createTime = createTime;
         this.createUser = createUser;
@@ -130,6 +130,7 @@ public class MMeterial extends Entity<Long> {
         this.handleStatus = handleStatus;
         this.status = status;
         this.num = num;
+        this.zoneId = zoneId;
     }
 
 }