Pārlūkot izejas kodu

fix:优化上有任务接受

wang.sq@aliyun.com 3 nedēļas atpakaļ
vecāks
revīzija
adc3bc1c77

+ 14 - 16
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/externalApi/service/impl/MesNoticeServiceImpl.java

@@ -370,8 +370,12 @@ public class MesNoticeServiceImpl extends SuperServiceImpl<MesNoticeMapper, MesN
         List<MesNotice> needAddMesNotices = new ArrayList<>();
         // 需要先增加日志
         List<Order> list = orderService.list(Wraps.<Order>lbQ().in(Order::getId, orderIds));
-        // 完工数量
+        //总需要报工的数量
+        double sumReport = 0;
+        // 完工总数量
         double gutmenge = 0;
+        // 需要报工的数量
+        double needReportNumber = 0;
 
         for (Order order : list) {
             if (order.getNoticeId() == null) {
@@ -400,30 +404,24 @@ public class MesNoticeServiceImpl extends SuperServiceImpl<MesNoticeMapper, MesN
 
             // 计算完成度
             if (tTask != null) {
-                List<TWorkpiece> tWorkpieces = workpieceService.list(Wraps.<TWorkpiece>lbQ().eq(TWorkpiece::getOrderId, order.getId()).eq(TWorkpiece::getCompleteBatchNo, tTask.getCompleteBatchNo()));
-                if (!tWorkpieces.isEmpty()) {
-                    //计算完工数量
-                    String number = this.orderWorkStatistics(order.getNoticeId());
+                String number = this.orderWorkStatistics(order.getNoticeId());
+                gutmenge = Double.parseDouble(number);
 
-                    BigDecimal newCompletionDegree = new BigDecimal(number);
-                    BigDecimal oldCompletionDegree = new BigDecimal(tWorkpieces.get(0).getCompleteProgress() == null ? "0" : tWorkpieces.get(0).getCompleteProgress());
-                    BigDecimal latestCompletionDegree = new BigDecimal(mesNotice.getOrderInfo() == null ? "0" : mesNotice.getOrderInfo());
-                    BigDecimal xzCompletionDegree = latestCompletionDegree.subtract(oldCompletionDegree).add(newCompletionDegree);
+                BigDecimal wrkReport = new BigDecimal(gutmenge).subtract(new BigDecimal(mesNotice.getOrderInfo() == null ? "0" : mesNotice.getOrderInfo()));
+                needReportNumber = wrkReport.doubleValue();
 
-                    gutmenge = xzCompletionDegree.doubleValue();
-                }
             }
 
             // 是否进行中
             boolean inProgress = true;
 
-            BigDecimal sumReport = new BigDecimal(mesNotice.getSumReport() == null ? "0" : mesNotice.getSumReport());
-            BigDecimal wrkReport = new BigDecimal(gutmenge).add(new BigDecimal(mesNotice.getOrderInfo() == null ? "0" : mesNotice.getOrderInfo()));
-            if (sumReport.compareTo(wrkReport) <= 0) {
+            sumReport = Double.parseDouble(mesNotice.getSumReport());
+            if (sumReport==gutmenge) {
                 inProgress = false;
                 mesNotice.setStatus("5");
                 if (autoPostEnable) {
                     mesNotice.setStatus("3");
+
                 }
                 //把 来源的任务也给改成完成
                 mesNoticeSource.setStatus("3");
@@ -431,7 +429,7 @@ public class MesNoticeServiceImpl extends SuperServiceImpl<MesNoticeMapper, MesN
             } else {
                 mesNotice.setStatus(onWork ? "0" : "4");// 0进行中,4暂停
             }
-            mesNotice.setWorkReport(gutmenge + "");
+            mesNotice.setWorkReport(needReportNumber + "");
             mesNotice.setOrderInfo(mesNotice.getOrderInfo() == null ? "0" : mesNotice.getOrderInfo());
 
             String url = null;
@@ -451,7 +449,7 @@ public class MesNoticeServiceImpl extends SuperServiceImpl<MesNoticeMapper, MesN
                 dataInfo.put("kpos", acceptPar.getString("kpos"));
                 dataInfo.put("kapaz", resourceByConditions.isEmpty() ? "0" : resourceByConditions.get(0).getProductionNo());
                 dataInfo.put("plmenge", acceptPar.getString("plmenge"));
-                dataInfo.put("gutmenge", gutmenge);
+                dataInfo.put("gutmenge", needReportNumber);
                 dataInfo.put("ausschuss", 0);
                 dataInfo.put("aussfinish", 0);
                 dataInfo.put("pnr", mesNotice.getUserCode());

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

@@ -44,7 +44,7 @@
 
     <select id="orderWorkStatistics" resultType="map" parameterType="map">
         SELECT
-        sum( case when s.type=0 then 0.2 when s.executorSort>s.currentSort then 0.2 when s.executorSort = s.currentSort then 0.5 when s.procedure_name like '%下料%' and s.status='3' then 1.0 when s.procedure_name like '%下料%' and s.status='2' then 1.0 else 0.9 end) as total
+        sum( case when s.type=0 then 0.0 when s.executorSort>s.currentSort then 0.2 when s.executorSort = s.currentSort then 0.5 when s.procedure_name like '%下料%' and s.status='3' then 1.0 when s.procedure_name like '%下料%' and s.status='2' then 1.0 else 0.9 end) as total
         FROM
         (
         SELECT

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

@@ -578,6 +578,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
                 mesNotices.add(mesNotice);
                 baseService.addNoticeMore(mesNotices, false);
             }catch (Exception ex){
+                ex.printStackTrace();
                 throw new BizException("处理失败:"+ex.getMessage());
             }
         } else {
@@ -1024,6 +1025,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
         String workOrderNo = null;
         String version = null;
         String partsNo = null;
+        String drawingNo = null;
         String batchNo = null;
         String partName = null; // 零件名称
         String processName = null;
@@ -1043,7 +1045,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
             partName = (qualityInfo != null) ? dataInfo.getString("teilebez") : dataInfo.getString("teilebez");
             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");
+            drawingNo = (qualityInfo != null) ? dataInfo.getString("DrawNumber") : dataInfo.getString("graphno");
             String idnr = (qualityInfo != null) ? null : dataInfo.getString("idnr");
 
             // 图号通过物料号与对照表进行更换
@@ -1076,13 +1078,29 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
             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::getPartsNo, drawingNo + "_V" + processNo).eq(BBom::getDrawingNo, drawingNo).eq(BBom::getSynFlag, "1"));
+
+            BBom checkBom = bBomService.getOne(new LambdaQueryWrapper<BBom>().eq(BBom::getDrawingNo, drawingNo).eq(BBom::getNo, processNo).eq(BBom::getSynFlag, "1").last("limit 1"));
+
+            partsNo =  (qualityInfo != null) ? (drawingNo + "_V" + processNo+"_SQ") : drawingNo + "_V" + processNo;
+            BBom bom = bBomService.getOne(new LambdaQueryWrapper<BBom>().eq(BBom::getPartsNo, partsNo).eq(BBom::getDrawingNo, drawingNo).eq(BBom::getNo, processNo).eq(BBom::getSynFlag, "1").last("limit 1"));
             if (bom == null) {
-                materialName = partName==null ? (processName==null ? mMeterial.getTradeMark() :processName) : partName;
-                partsNo = drawingNo + "_V" + processNo;
-                bom = BBom.builder().synFlag("1").name(materialName + "V" + processNo).batchNo(batchNo).partsNo(partsNo).partsAlias(materialCode).no(processNo).brand(workOrderNo).status("1").importantFlag("0").keyFlag("0").zoneId(zone.getId()).drawingNo(drawingNo).build();
-                bom.setMeterialId(1L);
-                bom.setBomAlias(partsNo);
+                if(checkBom!=null){
+                    bom = new BBom();
+                    BeanUtil.copyProperties(checkBom,bom);
+                    bom.setId(null).setName(checkBom.getName()+"_质检");
+                    bom.setPartsNo(checkBom.getPartsNo()+"_SQ");
+                    bom.setAuditStatus("0");
+                    bom.setTrayId(null);
+                    bom.setTrayName(null);
+                    materialName = bom.getName();
+                    partsNo = bom.getPartsNo();
+                }else {
+                    materialName = partName==null ? (processName==null ? mMeterial.getTradeMark() :processName) : partName;
+                    partsNo = drawingNo + "_V" + processNo+"_SQ";
+                    bom = BBom.builder().synFlag("1").name(materialName + "V" + processNo).batchNo(batchNo).partsNo(partsNo).partsAlias(materialCode).no(processNo).brand(workOrderNo).status("1").importantFlag("0").keyFlag("0").zoneId(zone.getId()).drawingNo(drawingNo).build();
+                    bom.setMeterialId(1L);
+                    bom.setBomAlias(partsNo);
+                }
                 bBomService.save(bom);
             } else {
                 materialName = bom.getName();
@@ -1230,10 +1248,10 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
 
         String bomName = materialName.contains("V") ? materialName : materialName + "V" + processNo;
 
-        BBom bom = bBomService.getOne(new LambdaQueryWrapper<BBom>().eq(BBom::getPartsNo, partsNo).eq(BBom::getPartsAlias, materialCode).eq(BBom::getSynFlag, "1"));
+        BBom bom = bBomService.getOne(new LambdaQueryWrapper<BBom>().eq(BBom::getPartsNo, partsNo).eq(BBom::getDrawingNo, drawingNo).eq(BBom::getNo, processNo).eq(BBom::getSynFlag, "1"));
         if (bom == null) {
             bom = BBom.builder().build();
-            bom.setPartsNo(partsNo).setBomAlias(partsNo).setPartsAlias(materialCode).setBatchNo(batchNo).setName(bomName).setStatus("1").setSynFlag("1").setImportantFlag("1").setKeyFlag("1").setNo(processNo);
+            bom.setPartsNo(partsNo).setBomAlias(partsNo).setPartsAlias(materialCode).setBatchNo(batchNo).setName(bomName).setStatus("1").setSynFlag("1").setImportantFlag("1").setKeyFlag("1").setNo(processNo).setDrawingNo(drawingNo);
             bom.setMeterialId(mMeterial.getId()).setBrand(workOrderNo);
             if (zone != null) {
                 bom.setZoneId(zone.getId());