Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/externalApi/MesController.java
wang.sq@aliyun.com 3 nedēļas atpakaļ
vecāks
revīzija
d3abc17861

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

@@ -24,10 +24,7 @@ import com.github.zuihou.business.operationManagementCenter.entity.OrderProduct;
 import com.github.zuihou.business.operationManagementCenter.service.OrderProductService;
 import com.github.zuihou.business.operationManagementCenter.service.OrderService;
 import com.github.zuihou.business.operationManagementCenter.service.PlanService;
-import com.github.zuihou.business.productionReadyCenter.entity.BBom;
-import com.github.zuihou.business.productionReadyCenter.entity.BomVersionInfo;
-import com.github.zuihou.business.productionReadyCenter.entity.MMeterial;
-import com.github.zuihou.business.productionReadyCenter.entity.MMeterialReceiveLog;
+import com.github.zuihou.business.productionReadyCenter.entity.*;
 import com.github.zuihou.business.productionReadyCenter.service.*;
 import com.github.zuihou.business.productionResourceCenter.entity.ZZone;
 import com.github.zuihou.business.productionResourceCenter.service.ZZoneService;
@@ -59,6 +56,9 @@ import java.io.File;
 import java.io.IOException;
 import java.net.URL;
 import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+import java.util.stream.Stream;
 
 @Slf4j
 @Validated
@@ -144,11 +144,11 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
         log.info("==============接受质检任务下发通知接口开始================={}", data);
         ThreeCoordinateDto threeCoordinateDto = JSONObject.parseObject(data, ThreeCoordinateDto.class);
 
-        MesNotice mesNotice = MesNotice.builder().orderNo(threeCoordinateDto.getOrderNumber()).
+        MesNotice mesNotice = MesNotice.builder().orderNo(threeCoordinateDto.getAuidnr()).
                 buType("TASKDISTRIBUTE").
                 apiType("QUALITYTASK").
-                lineCode("11111").
-                status("0").
+                lineCode("407109").
+                status("1").
                 source("数字化检测系统").
                 targetSource("产线管控单元").
                 acceptPar(data).build();
@@ -227,8 +227,8 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
 //            JSONObject jsonObject = JSONObject.parseObject(data);
 
             MesNotice mesNotice = MesNotice.builder().orderNo(System.currentTimeMillis()+"").
-                    buType("TASKDISTRIBUTE").lineCode("11111").status("1").source("QUALITY").apiType("TASKDISTRIBUTE")
-                    .targetSource("PRODUCTION_LINE").acceptPar(data).build();
+                    buType("TASKDISTRIBUTE").lineCode("407109").status("1").source("智能总控系统").apiType("MESTASK")
+                    .targetSource("产线管控单元").acceptPar(data).build();
             boolean b = baseService.addNotice(mesNotice);
         } catch (Exception e) {
             e.printStackTrace();
@@ -705,7 +705,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
         JSONObject queryWorkSources = new JSONObject();
         JSONObject queryConsumMaterial = new JSONObject();
         JSONObject queryQualityTask = new JSONObject();
-        JSONObject queryCutterTask = new JSONObject();
+        JSONObject queryMesTask = new JSONObject();
 
         for (MesNotice item : mesNoticeList) {
             //String returnData = msgUtil.httpForPost(item.getApiAddress(), jsonParam.toJSONString());
@@ -729,8 +729,8 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
                 case "QUALITYTASK":
                     queryQualityTask = (JSONObject) JSONObject.parseObject(returnData);
                     break;
-                case "CUTTERNEED":
-                    queryCutterTask = (JSONObject) JSONObject.parseObject(returnData);
+                case "MESTASK":
+                    queryMesTask = (JSONObject) JSONObject.parseObject(returnData);
                     break;
             }
         }
@@ -742,8 +742,8 @@ 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;
+        JSONObject qualityInfo = queryQualityTask.getObject("auidnr", String.class)!=null ? queryQualityTask : null;
+        JSONObject mesInfo = queryMesTask.getObject("auidnr", String.class)!=null ? queryMesTask : null;
 
         MMeterial mMeterial = null;
         String processNo  = null;
@@ -756,57 +756,67 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
         List<Object> taskList = null;
         List<Object> workPieceList = null;
 
-        if (null != qualityInfo || null!= cutterInfo) {
+        if (null != qualityInfo || null!=mesInfo) {
             //处理质检任务信息
-            if(qualityInfo!=null){
-                processNo = qualityInfo.getString("ProcessCode");
-                workOrderNo = qualityInfo.getString("TaskCode");
-                drawingNo = qualityInfo.getString("DrawNumber");
-                String batchNo = qualityInfo.getString("BatchNo");
-                String serialNo = qualityInfo.getString("PartOrder");
-                String userCode = qualityInfo.getString("UserCode");
-                partsNo = drawingNo+ "_" + processNo;
-
-                //获取默认虚拟原材料
-                mMeterial = materialService.getById(1L);
-                if(mMeterial==null){
-                    throw new BizException("没有获取到原材料,或虚拟原材料");
-                }
-                MMeterialReceiveLog mMeterialReceiveLog = meterialReceiveLogService.getById(1L);
-                materialCode = mMeterial.getMeterialCode();
-                BBom bom = bBomService.getOne(new LambdaQueryWrapper<BBom>().eq(BBom::getDrawingNo, drawingNo).eq(BBom::getNo, processNo).eq(BBom::getSynFlag, "1"));
-                if(bom==null){
-                    if(zone==null){
-                        throw new BizException("产线信息为空");
-                    }
-                    bom = BBom.builder().synFlag("1").name(mMeterial.getTradeMark()+"V"+processNo).batchNo(batchNo).
-                            partsNo(partsNo).partsAlias(partsNo).no(workOrderNo).brand(processNo).status("1").importantFlag("1").keyFlag("1").zoneId(zone.getId()).drawingNo(drawingNo).build();
-                    bom.setMeterialId(1L);
-                    bom.setBomAlias(partsNo);
-                    bBomService.save(bom);
-                }
+            JSONObject dataInfo = (qualityInfo!=null)? qualityInfo : mesInfo;
+            processNo = dataInfo.getString("afonr");
+            workOrderNo = dataInfo.getString("auidnr");
+            String batchNo = dataInfo.getString("batchno");
+            String serialNo = dataInfo.getString("sno");
+            String drawingNo = dataInfo.getString("graphno");
+            String idnr = dataInfo.getString("idnr");
+
+
+            //获取默认虚拟原材料
+             mMeterial = materialService.getById(1L);
+             MMeterialReceiveLog mMeterialReceiveLog = meterialReceiveLogService.getById(1L);
+             materialCode = StringUtil.isNotEmpty(idnr)? idnr: 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(materialCode).partsAlias(materialCode).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();
+            }
+            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();
+            if(null != qualityInfo) {
                 JSONObject data = new JSONObject();
                 data.put("serialNo", serialNo);
                 orderProductSeqList.add(data);
-                workOrder.put("orderProductSeqList",  orderProductSeqList);
-                workPieceList = orderProductSeqList;
-            }
-            if(null!= cutterInfo){
+            }else{
+                 String plmenge = dataInfo.getString("plmenge");
+                 if(StringUtil.isEmpty(plmenge)) {
+                     msgUtil.createWarnLog("Mes订单加工零件个数不允许为空","MESException");
+                     return;
+                 }
+                List<JSONObject> dataList = IntStream.range(0, (int)Float.parseFloat(plmenge)).mapToObj(i-> {
+                    JSONObject obj = new JSONObject();
+                    obj.put("serialNo", String.valueOf(i));
+                    return obj;
+                }).collect(Collectors.toList());
+                orderProductSeqList.addAll(dataList);
+                String pstart = dataInfo.getString("pstart");
+                String pend =  dataInfo.getString("pend");
+                String bez = dataInfo.getString("bez");
+                workOrder.put("plannedStartTime", pstart);
+                workOrder.put("plannedEndTime", pend);
+                workOrder.put("bez", bez);
 
             }
-        }
-        else {
+            workOrder.put("orderProductSeqList", orderProductSeqList);
+            workPieceList = orderProductSeqList;
+        }else {
             if (null != consumMaterial) {
                 //处理原材料信息
                 //判断原材料是否存在
@@ -909,21 +919,18 @@ 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, partsNo).eq(BBom::getSynFlag, "1"));
+        String bomName = materialName.contains("V")? materialName : 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::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(processNo);
+            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);
             bom.setMeterialId(mMeterial.getId()).setBrand(processNo);
             if (zone != null) {
                 bom.setZoneId(zone.getId());
             }
             bBomService.save(bom);
         } else {
-            bom.setNo(processNo);
+            bom.setNo(workOrderNo);
             bBomService.updateById(bom);
         }
         if (StringUtil.isEmpty(version)) {
@@ -945,46 +952,34 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
         } else {
             versionId = mesVersionInfo.getId();
         }
-            /*
+        List<BomProcedure> bomProcedureList = bomProcedureService.list(new LbqWrapper<BomProcedure>().eq(BomProcedure::getVersionId,  versionId).eq(BomProcedure::getBomId, bom.getId()));
+
             //节点处理
-            if (taskList.size() >= 4) {
-                String[] noArr = new String[] {"OP05","OP10", "OP11", "OP15"};
-                String[] typeArr = new String[] {"上料","设备序", "设备序","下料"};
+            if (bomProcedureList.size()== 0  && workOrder.containsKey("bez")) {
+                List<String> noArr = Stream.of("OP05","OP10", "OP11", "OP15").collect(Collectors.toList());
+                List<String> nameArr = Stream.of("上料", workOrder.getString("bez"), "清洗","下料").collect(Collectors.toList());
+                List<String> typeArr = Stream.of("上料","设备序", "设备序","下料").collect(Collectors.toList());
 
                 List<BomProcedureVersion> bomProcedureVersionsList = Lists.newArrayList();
-                List<BomProcedure> bomProcedureList = Lists.newArrayList();
-                Long finalVersionId = versionId;
-                BBom finalBom = bom;
-                taskList.stream().forEach(item -> {
-                    JSONObject jsonObject = (JSONObject) item;
-                    BomProcedureVersion bomProcedureVersion = BomProcedureVersion.builder().build();
-                    int stepNo = Integer.parseInt(jsonObject.getString("stepNo")) - 1;
-                    bomProcedureVersion.setVersionId(finalVersionId).setBomId(finalBom.getId()).setAuditStatus("0")
-                            .setName(jsonObject.getString("stepName")).setRemark(jsonObject.getString("stepDesc")!="null"?jsonObject.getString("stepDesc"):"").setSort(99-stepNo).setRatedWorkhours(10f);
-                    int index = stepNo < 4 ? stepNo : stepNo % 4;
-                    bomProcedureVersion.setNo(noArr[index]).setType(typeArr[index]);
+                for(int i=0; i<noArr.size();i++){
+                    BomProcedureVersion bomProcedureVersion = BomProcedureVersion.builder().versionId(versionId).bomId(bom.getId()).auditStatus("0").name(nameArr.get(i)).type(typeArr.get(i)).content(nameArr.get(i)).sort(100-i).ratedWorkhours(10f).no(noArr.get(i))
+                            .build();
                     bomProcedureVersionsList.add(bomProcedureVersion);
                     BomProcedure bomProcedure = BeanUtil.toBean(bomProcedureVersion, BomProcedure.class);
                     bomProcedure.setRatedWorkhours(10f);
                     bomProcedureList.add(bomProcedure);
-                });
+                }
                 bomProcedureVersionService.saveBatch(bomProcedureVersionsList);
                 bomProcedureService.saveBatch(bomProcedureList);
             }
-            */
 
         //处理工单信息
         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").setAuditStatus("0").setBatchNo(workOrder.getString("batchNo"));
+                .setStatus("1").setSingleTaskFlag(0).setOrderStatus("1").setBatchNo(workOrder.getString("batchNo"));
         //产品编码+ 密级编码 + 批次号 + 工艺版本
         String orderName = "MES_" + workOrder.getString("materialCode") + "_" + workOrder.getString("planSecretLevel").toUpperCase() + "_" + workOrder.getString("batchNo") + "_" + workOrder.getString("processRouteVersion");
         order.setCustId(0L).setOrderName(orderName).setZoneId(zone.getId());
-        // 检查订单是否已经创建
-        int count = orderService.count(Wraps.<Order>lbQ().eq(Order::getBatchNo, order.getBatchNo()).eq(Order::getSource, "2"));
-        if(count>0){
-            throw new BizException("订单已存在,相同批次号已经存在");
-        }
         orderService.save(order);
 
         OrderProduct orderProduct = OrderProduct.builder().build();

+ 3 - 0
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/externalApi/dto/ThreeCoordinateDto.java

@@ -60,4 +60,7 @@ public class ThreeCoordinateDto implements Serializable {
     @ApiModelProperty(value = "检测结果集合")
     private List resultList;
 
+    @ApiModelProperty(value = "订单编号")
+    private String auidnr;
+
 }