Prechádzať zdrojové kódy

fix:修改mes任务接受数据

wang.sq@aliyun.com 1 mesiac pred
rodič
commit
b80521fd53

+ 12 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/externalApi/service/impl/PlcServiceImpl.java

@@ -26,6 +26,7 @@ import com.github.zuihou.common.util.StringUtil;
 import com.github.zuihou.exception.BizException;
 import com.github.zuihou.tenant.service.CodeRuleService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -37,6 +38,10 @@ import static com.github.zuihou.exception.code.ExceptionCode.BASE_VALID_PARAM;
 @Service
 public class PlcServiceImpl implements PlcService {
 
+
+    @Value("${imcs-to-ccs.enabled:true}")
+    private Boolean imcsTOccsEnable;
+
     @Autowired
     private MsgUtil msgUtil;
 
@@ -161,7 +166,13 @@ public class PlcServiceImpl implements PlcService {
 
         cn.hutool.json.JSONObject  requestParamObj= JSONUtil.parseObj(requestParam);
         requestParamObj.put("resendFlag","1");
-        String result = msgUtil.httpForPost(requestUrl, requestParamObj.toString());
+        String result = "";
+        if(imcsTOccsEnable){
+            result = msgUtil.httpForPost(requestUrl, requestParamObj.toString());
+        }else {
+            result = "{\"result\": \"true\"}";
+        }
+
 //        String result = "{\"result\": \"true\"}";
 
         if(StringUtil.isNotEmpty(result)){

+ 27 - 16
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/productionResourceCenter/service/impl/MachineNodeServiceImpl.java

@@ -238,6 +238,7 @@ public class MachineNodeServiceImpl implements NodeOperationService {
 
         //获取设备指令集合
         List<ModuleInstruction> moduleInstructions = (List<ModuleInstruction>)dataMap.get("instructions");
+        Order order = orderMapper.selectById(task.getOrderId());
 
         switch (moduleName.toLowerCase()) {
             case "打标机":
@@ -254,7 +255,6 @@ public class MachineNodeServiceImpl implements NodeOperationService {
                     //获取打标唯一码
                     String unionCode = workpieceService.getUnionCode(task.getCompleteBatchNo());
 
-                    Order order = orderMapper.selectById(task.getOrderId());
                     TWorkpiece tWorkpiece = workpieceMapper.selectOne(Wraps.<TWorkpiece>lbQ().eq(TWorkpiece::getCompleteBatchNo, task.getCompleteBatchNo()));
 
                     JSONObject data = new JSONObject();
@@ -448,16 +448,21 @@ public class MachineNodeServiceImpl implements NodeOperationService {
                     List<Long> getGoodsIds = list.stream().map(StockInfo::getGoodsId).collect(Collectors.toList());
 
                     List<MToolClamp> mToolClamps = mToolClampService.listByIds(getGoodsIds);
-                    // 拼接上传给plc的参数, 图号+零件号+工序+是否成毛坯+程序名+任务号+人员编号+订单号+批次
+
+                    // 拼接上传给plc的参数,  图号+零件号+工序+是否成毛坯+程序名+订单号+任务号+批次+人员编号
+                    if(order.getExternalTaskCode()== null || order.getExternalTaskCode().isEmpty()){
+                        //此参数是外部的订单号与任务号的拼接
+                        order.setExternalTaskCode("null&null");
+                    }
                     String toPlcPar = bBom.getDrawingNo()+"&"
                             +tWorkpiece.getUniqueCode()+"&"
                             +bBom.getNo()+"&1&"
                             +mToolClamps.get(0).getDetectionProgram()+"&"
-                            +task.getTaskNo()+"&"
-                            +task.getExecutorId()+"&"
-                            +task.getOrderNo()+"&"
-                            +task.getBomBatchNo();
+                            +order.getExternalTaskCode()+"&"
+                            +order.getBatchNo()+"&"
+                            +order.getCustId();
 
+                    log.info("=================查询偏移量数据参数================={}", toPlcPar);
                     OrderQuality orderQuality = orderQualityMapper.selectOne(Wraps.<OrderQuality>lbQ().eq(OrderQuality::getDetectionCommand,toPlcPar));
 
                     if(null == orderQuality){
@@ -525,14 +530,17 @@ public class MachineNodeServiceImpl implements NodeOperationService {
                     if("1".equals(procedure.getThreeDimensionalConf())){
                         /*data.put("workId", task.getCompleteBatchNo() + "-" + task.getProcedureNo());*/
                         //data.put("workId", task.getCompleteBatchNo() + "_" + taskNode.getId());
-                        // 拼接上传给plc的参数, 图号-零件号-源工序号-是否毛坯件-使用的检测程序
+                        // 拼接上传给plc的参数,  图号+零件号+工序+是否成毛坯+程序名+订单号+任务号+批次+人员编号
+                        if(order.getExternalTaskCode()== null || order.getExternalTaskCode().isEmpty()){
+                            //此参数是外部的订单号与任务号的拼接
+                            order.setExternalTaskCode("null&null");
+                        }
                         String toPlcPar = bBom.getDrawingNo()+"&"
                                 +tWorkpiece.getUniqueCode()+"&"
                                 +bBom.getNo()+"&2&0&"
-                                +task.getTaskNo()+"&"
-                                +task.getExecutorId()+"&"
-                                +task.getOrderNo()+"&"
-                                +task.getBomBatchNo();
+                                +order.getExternalTaskCode()+"&"
+                                +order.getBatchNo()+"&"
+                                +order.getCustId();
 
                         data.put("workType", toPlcPar);
                         data.put("workId", taskNode.getCompleteBatchNo());
@@ -553,15 +561,18 @@ public class MachineNodeServiceImpl implements NodeOperationService {
                         List<Long> getGoodsIds = list.stream().map(StockInfo::getGoodsId).collect(Collectors.toList());
 
                         List<MToolClamp> mToolClamps = mToolClampService.listByIds(getGoodsIds);
-                        // 拼接上传给plc的参数, 图号-零件号-源工序号-是否毛坯件-使用的检测程序
+                        // 拼接上传给plc的参数,  图号+零件号+工序+是否成毛坯+程序名+订单号+任务号+批次+人员编号
+                        if(order.getExternalTaskCode()== null || order.getExternalTaskCode().isEmpty()){
+                            //此参数是外部的订单号与任务号的拼接
+                            order.setExternalTaskCode("null&null");
+                        }
                         String toPlcPar = bBom.getDrawingNo()+"&"
                                 +tWorkpiece.getUniqueCode()+"&"
                                 +bBom.getNo()+"&1&"
                                 +mToolClamps.get(0).getDetectionProgram()+"&"
-                                +task.getTaskNo()+"&"
-                                +task.getExecutorId()+"&"
-                                +task.getOrderNo()+"&"
-                                +task.getBomBatchNo();
+                                +order.getExternalTaskCode()+"&"
+                                +order.getBatchNo()+"&"
+                                +order.getCustId();
 
                         data.put("workType", toPlcPar);
                         data.put("workId", task.getCompleteBatchNo() + "-" + task.getProcedureNo());

+ 19 - 14
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/util/MsgUtil.java

@@ -338,16 +338,17 @@ public class MsgUtil implements ApplicationContextAware {
                     List<StockInfo> list = stockInfoService.list(Wraps.<StockInfo>lbQ().eq(StockInfo::getStorgeId, workpiece.getStorgeId()));
                     List<Long> getGoodsIds = list.stream().map(StockInfo::getGoodsId).collect(Collectors.toList());
 
-                    List<MToolClamp> mToolClamps = mToolClampService.listByIds(getGoodsIds);
-                    // 拼接上传给plc的参数, 图号-零件号-源工序号-是否毛坯件-使用的检测程序
+                    // 拼接上传给plc的参数,  图号+零件号+工序+是否成毛坯+程序名+订单号+任务号+批次+人员编号
+                    if(order.getExternalTaskCode()== null || order.getExternalTaskCode().isEmpty()){
+                        //此参数是外部的订单号与任务号的拼接
+                        order.setExternalTaskCode("null&null");
+                    }
                     String toPlcPar = bom.getDrawingNo()+"&"
                             +workpiece.getUniqueCode()+"&"
-                            +bom.getNo()+"&1&"
-                            +mToolClamps.get(0).getDetectionProgram()+"&"
-                            +task.getTaskNo()+"&"
-                            +task.getExecutorId()+"&"
-                            +task.getOrderNo()+"&"
-                            +task.getBomBatchNo();
+                            +bom.getNo()+"&2&0&"
+                            +order.getExternalTaskCode()+"&"
+                            +order.getBatchNo()+"&"
+                            +order.getCustId();
 
 
                     OrderQualityDetails qualityDetail = qualityDetailsMapper.selectOne(Wraps.<OrderQualityDetails>lbQ().eq(OrderQualityDetails::getDetectionCommand, toPlcPar));
@@ -356,6 +357,7 @@ public class MsgUtil implements ApplicationContextAware {
                     if(orderQuality ==null){
                         orderQuality = OrderQuality.builder().build();
                     }
+                    orderQuality.setDetectionCommand(toPlcPar);
 
                     int measuringResult = 1;
                     if(qualityDetail == null){
@@ -367,7 +369,7 @@ public class MsgUtil implements ApplicationContextAware {
                         // 判断质检结果是不是合格
 
                         orderQuality.setMeasuringReport(qualityDetail.getPushReport());
-                        if(qualityDetail.getOkFlag().equalsIgnoreCase("OK")){
+                        if("OK".equalsIgnoreCase(qualityDetail.getOkFlag())){
                             measuringResult = 0;
                             orderQuality.setOkFlag("OK");
                             workpiece.setTestResult("1");
@@ -443,15 +445,18 @@ public class MsgUtil implements ApplicationContextAware {
                     List<Long> getGoodsIds = list.stream().map(StockInfo::getGoodsId).collect(Collectors.toList());
 
                     List<MToolClamp> mToolClamps = mToolClampService.listByIds(getGoodsIds);
-                    // 拼接上传给plc的参数, 图号-零件号-源工序号-是否毛坯件-使用的检测程序
+                    // 拼接上传给plc的参数,  图号+零件号+工序+是否成毛坯+程序名+订单号+任务号+批次+人员编号
+                    if(order.getExternalTaskCode()== null || order.getExternalTaskCode().isEmpty()){
+                        //此参数是外部的订单号与任务号的拼接
+                        order.setExternalTaskCode("null&null");
+                    }
                     String toPlcPar = bBom.getDrawingNo()+"&"
                             +tWorkpiece.getUniqueCode()+"&"
                             +bBom.getNo()+"&1&"
                             +mToolClamps.get(0).getDetectionProgram()+"&"
-                            +task.getTaskNo()+"&"
-                            +task.getExecutorId()+"&"
-                            +task.getOrderNo()+"&"
-                            +task.getBomBatchNo();
+                            +order.getExternalTaskCode()+"&"
+                            +order.getBatchNo()+"&"
+                            +order.getCustId();
 
                     //获取偏差值数据
                     Map<String, List<String>> stringListMap = SmbShareFileUtil.processExcelFiles(threeDimensionalResultAddress, toPlcPar,"xlsx");

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

@@ -117,7 +117,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
         ThreeCoordinateDto threeCoordinateDto = JSONObject.parseObject(data, ThreeCoordinateDto.class);
 
 
-        MesNotice mesNotice = MesNotice.builder().orderNo(threeCoordinateDto.getTaskCode()).
+        MesNotice mesNotice = MesNotice.builder().orderNo(threeCoordinateDto.getTaskCode()+"&"+threeCoordinateDto.getProcessCode()+"&"+threeCoordinateDto.getPartOrder()).
                 buType("TASKDISTRIBUTE").
                 apiType("QUALITYTASK").
                 lineCode("407109").
@@ -987,6 +987,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
         String version = null;
         String partsNo = null;
         String batchNo = null;
+        String externalTaskCode = null;
         List<Object> taskList = null;
         List<Object> workPieceList = null;
 
@@ -994,12 +995,17 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
             //处理质检任务信息
             JSONObject dataInfo = (qualityInfo != null) ? qualityInfo : mesInfo;
             processNo = (qualityInfo != null) ? dataInfo.getString("ProcessCode") : dataInfo.getString("afonr");
-            workOrderNo = (qualityInfo != null) ? dataInfo.getString("TaskCode") : dataInfo.getString("auidnr");
+            workOrderNo = (qualityInfo != null) ? dataInfo.getString("OrderNumber") : dataInfo.getString("auidnr");
             batchNo = (qualityInfo != null) ? dataInfo.getString("BatchNo") : dataInfo.getString("batchno");
+            externalTaskCode = (qualityInfo != null) ? dataInfo.getString("TaskCode") : dataInfo.getString("auidnr");
             String serialNo = (qualityInfo != null) ? dataInfo.getString("PartOrder") : dataInfo.getString("sno");
             String drawingNo = (qualityInfo != null) ? dataInfo.getString("DrawNumber") : dataInfo.getString("graphno");
             String idnr = (qualityInfo != null) ? null : dataInfo.getString("idnr");
 
+            // 数字话检测系统点单号需要拼接,才能保证唯一
+            externalTaskCode = (qualityInfo != null) ? (workOrderNo +"&"+ externalTaskCode ) : workOrderNo;
+            workOrderNo = (qualityInfo != null) ? (workOrderNo +"&"+ processNo +"&"+serialNo) : workOrderNo;
+
             //获取默认虚拟原材料
             mMeterial = materialService.getById(1L);
             //MMeterialReceiveLog mMeterialReceiveLog = meterialReceiveLogService.getById(1L);
@@ -1025,6 +1031,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
             workOrder.put("planSecretLevel", "FM");
             workOrder.put("processRouteVersion", version);
             workOrder.put("batchNo", batchNo);
+            workOrder.put("externalTaskCode", externalTaskCode);
             List<Object> orderProductSeqList = Lists.newArrayList();
             if (null != qualityInfo) {
                 JSONObject data = new JSONObject();
@@ -1212,7 +1219,7 @@ 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"));
+                .setStatus("1").setSingleTaskFlag(0).setOrderStatus("1").setBatchNo(workOrder.getString("batchNo")).setExternalTaskCode(workOrder.getString("externalTaskCode"));
         //产品编码+ 密级编码 + 批次号 + 工艺版本
         String orderName = "MES_" + workOrder.getString("materialCode") + "_" + workOrder.getString("planSecretLevel").toUpperCase() + "_" + workOrder.getString("batchNo") + "_" + workOrder.getString("processRouteVersion");
         order.setCustId(0L).setOrderName(orderName).setZoneId(zone.getId()).setAuditStatus("0");

+ 7 - 2
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/productionResourceCenter/StationUserController.java

@@ -58,6 +58,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.client.RestTemplate;
@@ -413,10 +414,14 @@ public class StationUserController extends SuperController<StationUserService, L
 
     @ApiOperation(value = "新增刀具取放任务", notes = "新增刀具取放任务")
     @PostMapping("/addCutToolTask")
+    @Transactional(rollbackFor = Exception.class)
     public R addCutToolTask(@RequestBody Map<String, Object> model) {
         log.info("============新增刀具取放任务================={}", model);
         BaseContextHandler.setTenant("0000");
-        BBom bom = bBomService.getOne(new LbqWrapper<BBom>().eq(BBom::getStatus, "1").orderByDesc(BBom::getCreateTime).last("limit 1"));
+        BBom bom = bBomService.getOne(new LbqWrapper<BBom>().eq(BBom::getStatus, "1").eq(BBom::getAuditStatus,2 ).like(BBom::getPartsNo,"CUTTER").orderByDesc(BBom::getCreateTime).last("limit 1"));
+        if(bom ==null){
+            throw new BizException("缺少可用的零件信息,零件编号需要包含‘CUUTER’内容");
+        }
         Map<String, Object> params = new HashMap<String, Object>() {
             {
                 put("deliveryTime", DateUtil.dateToString(new Date()));
@@ -476,7 +481,7 @@ public class StationUserController extends SuperController<StationUserService, L
     @PostMapping("/addOrderTask")
     public R addOrderTask(@RequestBody Map<String, Object> model) {
         BaseContextHandler.setTenant("0000");
-        BBom bom = bBomService.getOne(new LbqWrapper<BBom>().eq(BBom::getStatus, "1").orderByDesc(BBom::getCreateTime).last("limit 1"));
+        BBom bom = bBomService.getOne(new LbqWrapper<BBom>().eq(BBom::getStatus, "1").eq(BBom::getAuditStatus,2 ).orderByDesc(BBom::getCreateTime).last("limit 1"));
         Map<String, Object> params = new HashMap<String, Object>() {
             {
                 put("deliveryTime", DateUtil.dateToString(new Date()));

+ 1 - 1
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/productionResourceCenter/ToolController.java

@@ -142,7 +142,7 @@ public class ToolController extends SuperController<ToolService, Long, Tool, Too
     private BBomService bBomService;
 
     //刀具定时任务处理
-//    @Scheduled(cron = "0 0/2 * * * *")
+    @Scheduled(cron = "0 0/2 * * * *")
     @ApiOperation(value = "同步刀具", notes = "同步刀具")
     @PostMapping("/synchronousTool")
     public R<Boolean> synchronousTool() throws Exception {

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

@@ -290,6 +290,12 @@ public class Order extends Entity<Long> {
     @Excel(name = "订单批次号")
     private String batchNo;
 
+    @ApiModelProperty(value = "外部任务号")
+    @Length(max = 255, message = "订单批次号长度不能超过255")
+    @TableField(value = "external_task_code")
+    @Excel(name = "外部任务号")
+    private String externalTaskCode;
+
 
     @Builder
     public Order(Long id, LocalDateTime createTime, LocalDateTime updateTime,