diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/dto/AbnormalBillDto.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/dto/AbnormalBillDto.java index 4fbfe94b..27df7b40 100644 --- a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/dto/AbnormalBillDto.java +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/dto/AbnormalBillDto.java @@ -42,6 +42,8 @@ public class AbnormalBillDto extends AbnormalBill { private String resolveRemark; + private String ncCodeDescription; + public String getSeq() { return seq; } @@ -123,4 +125,12 @@ public class AbnormalBillDto extends AbnormalBill { public void setReportUser(String reportUser) { this.reportUser = reportUser; } + + public String getNcCodeDescription() { + return ncCodeDescription; + } + + public void setNcCodeDescription(String ncCodeDescription) { + this.ncCodeDescription = ncCodeDescription; + } } diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/AbnormalBillServiceImpl.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/AbnormalBillServiceImpl.java index 77c72f39..8978e5da 100644 --- a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/AbnormalBillServiceImpl.java +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/AbnormalBillServiceImpl.java @@ -310,7 +310,6 @@ public class AbnormalBillServiceImpl extends ServiceImpl backLog(AbnormalBillDto abnormalBillDto) { String language = LocaleContextHolder.getLocale().getLanguage(); return abnormalBillMapper.backLog(abnormalBillDto, language); - } @Override @@ -767,7 +766,6 @@ public class AbnormalBillServiceImpl extends ServiceImpl + @@ -67,6 +68,7 @@ + @@ -874,13 +876,17 @@ SELECT S.SFC SFC, CASE WHEN S2.STATUS = '401' THEN '新建' - WHEN S2.STATUS = '402' THEN '排队' - WHEN S2.STATUS = '403' THEN '活动' - WHEN S2.STATUS = '407' THEN '报废' - END STATUS, - SUBSTR(SS.OPERATION_BO ,INSTR(SS.OPERATION_BO ,',',1)+1,(INSTR(SS.OPERATION_BO ,'#',1)-1)-(INSTR(SS.OPERATION_BO ,',',1)+1)) || '/' || SS.STEP_ID OPERATION, - ZSD.RESRCE RESRCE,ZSD.SHOP_ORDER SHOP_ORDER, - CASE WHEN I.ITEM != 'NULL' THEN I.ITEM || '/' || I.REVISION END ITEM, - CASE WHEN R.ROUTER != 'NULL' THEN R.ROUTER || '/' || R.REVISION END ROUTER , - CASE WHEN B.BOM != 'NULL' THEN B.BOM || '/' || B.REVISION END BOM + WHEN S2.STATUS = '402' THEN '排队' + WHEN S2.STATUS = '403' THEN '活动' + WHEN S2.STATUS = '407' THEN '报废' + END STATUS, + SUBSTR(SS.OPERATION_BO ,INSTR(SS.OPERATION_BO ,',',1)+1,(INSTR(SS.OPERATION_BO ,'#',1)-1)-(INSTR(SS.OPERATION_BO ,',',1)+1)) || '/' || SS.STEP_ID OPERATION, + ZSD.RESRCE RESRCE,ZSD.SHOP_ORDER SHOP_ORDER, + CASE WHEN I.ITEM != 'NULL' THEN I.ITEM || '/' || I.REVISION END ITEM, + CASE WHEN R.ROUTER != 'NULL' THEN R.ROUTER || '/' || R.REVISION END ROUTER , + CASE WHEN B.BOM != 'NULL' THEN B.BOM || '/' || B.REVISION END BOM, + CASE WHEN ZSS.HANDLE != 'NULL' THEN ZSS.REASON + ELSE ZABV.PB_DESCRIPTION + END REASON FROM SFC S - INNER JOIN SFC_ROUTING SR ON SR.SFC_BO = S.HANDLE - INNER JOIN SFC_ROUTER ST ON ST.SFC_ROUTING_BO = SR.HANDLE - INNER JOIN SFC_STEP SS ON SS.SFC_ROUTER_BO = ST.HANDLE AND (SS.QTY_IN_QUEUE > 0 OR SS.QTY_IN_WORK > 0) - INNER JOIN STATUS S2 ON S2.HANDLE = S.STATUS_BO - INNER JOIN Z_SFC_DISPATCH ZSD ON ZSD.DISPATCH_NO = S.SFC || '-' || SS.STEP_ID - LEFT JOIN SHOP_ORDER SO ON SO.SHOP_ORDER = ZSD.SHOP_ORDER AND SO.SITE = S.SITE - LEFT JOIN ITEM I ON I.HANDLE = SO.PLANNED_ITEM_BO - LEFT JOIN ROUTER R ON R.HANDLE = ZSD.ROUTER_BO - LEFT JOIN BOM B ON B.HANDLE = SO.PLANNED_BOM_BO + INNER JOIN SFC_ROUTING SR ON SR.SFC_BO = S.HANDLE + INNER JOIN SFC_ROUTER ST ON ST.SFC_ROUTING_BO = SR.HANDLE + INNER JOIN SFC_STEP SS ON SS.SFC_ROUTER_BO = ST.HANDLE AND (SS.QTY_IN_QUEUE > 0 OR SS.QTY_IN_WORK > 0) + INNER JOIN STATUS S2 ON S2.HANDLE = S.STATUS_BO + INNER JOIN Z_SFC_DISPATCH ZSD ON ZSD.DISPATCH_NO = S.SFC || '-' || SS.STEP_ID + LEFT JOIN SHOP_ORDER SO ON SO.SHOP_ORDER = ZSD.SHOP_ORDER AND SO.SITE = S.SITE + LEFT JOIN ITEM I ON I.HANDLE = SO.PLANNED_ITEM_BO + LEFT JOIN ROUTER R ON R.HANDLE = ZSD.ROUTER_BO + LEFT JOIN Z_SFC_SCRAP ZSS ON ZSS.SFC = S.SFC AND ZSS.SITE = S.SITE + LEFT JOIN BOM B ON B.HANDLE = SO.PLANNED_BOM_BO + INNER JOIN ( SELECT * FROM Z_ABNORMAL_BILL_VIEW ZABV WHERE ZABV.HANDLE = (SELECT MAX(HANDLE) FROM Z_ABNORMAL_BILL_VIEW) ) ZABV ON ZABV.SFC = S.SFC AND ZABV.SITE= S.SITE S.SITE = #{site} AND S.SFC = #{sfc} diff --git a/common/src/main/java/com/foreverwin/mesnac/common/dto/ScrapDto.java b/common/src/main/java/com/foreverwin/mesnac/common/dto/ScrapDto.java index 701ce0a9..4b15b007 100644 --- a/common/src/main/java/com/foreverwin/mesnac/common/dto/ScrapDto.java +++ b/common/src/main/java/com/foreverwin/mesnac/common/dto/ScrapDto.java @@ -22,6 +22,8 @@ public class ScrapDto { private String bom; + private String reason; + public String getSfc() { return sfc; } @@ -85,4 +87,12 @@ public class ScrapDto { public void setBom(String bom) { this.bom = bom; } + + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } } diff --git a/common/src/main/java/com/foreverwin/mesnac/common/service/impl/InspectionTaskServiceImpl.java b/common/src/main/java/com/foreverwin/mesnac/common/service/impl/InspectionTaskServiceImpl.java index 75ba2844..38c71ce0 100644 --- a/common/src/main/java/com/foreverwin/mesnac/common/service/impl/InspectionTaskServiceImpl.java +++ b/common/src/main/java/com/foreverwin/mesnac/common/service/impl/InspectionTaskServiceImpl.java @@ -85,8 +85,9 @@ public class InspectionTaskServiceImpl extends ServiceImpl @@ -65,7 +68,8 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl0){ + if (prodReadyTaskDetailList.size() > 0) { long count = prodReadyTaskDetailList.stream().filter(prodReadyTaskDetail -> prodReadyTaskDetail.getInspectionItem().equals(P01)).count(); - if (count>0){ + if (count > 0) { continue; } } @@ -164,9 +168,9 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl0){ + if (prodReadyTaskDetailList.size() > 0) { long count = prodReadyTaskDetailList.stream().filter(prodReadyTaskDetail -> prodReadyTaskDetail.getInspectionItem().equals(P02)).count(); - if (count>0){ + if (count > 0) { continue; } } @@ -268,7 +272,7 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl> getInspectionDetailList(Map param) { String type = param.get("type"); String dispatchNo = param.get("dispatchNo"); - List> returnMap = null; + List> returnMap = new ArrayList<>(); String site = CommonMethods.getSite(); if (type.equals(P01)) { //物料接收数据 @@ -278,6 +282,18 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl map=new HashMap<>(); + map.put("RESOURCE",sfcdispatch.getResrce()); + map.put("RESOURCE_TYPE",sfcdispatch.getResourceType()); + map.put("RESULT",jsonObject.get("RESULT")); + map.put("MESSAGE",jsonObject.get("MESSAGE")); + returnMap.add(map); } return returnMap; } @@ -289,7 +305,7 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl prodReadyTaskDetailList = prodReadyTask.getProdReadyTaskDetailList(); @@ -314,70 +330,70 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl printList=new ArrayList<>(); + List printList = new ArrayList<>(); List labelPrintDtoList = new ArrayList<>(); String printData = null; - PrintLog printTag=new PrintLog(); + PrintLog printTag = new PrintLog(); String resrce = sfcDispatchDto.getResrce(); String printName = customFieldsService.getCustomFieldsValue(HandleEnum.RESOURCE.getHandle(site, resrce), CustomFieldConstant.RESRCE_CUSTOM_FIELD_PRINT_NAME); - if (StringUtil.isBlank(printName)){ + if (StringUtil.isBlank(printName)) { throw new BaseException("资源维护的打印机不能为空"); } String item = prodReadyTask.getItem(); Item selectCurrent = itemService.selectCurrent(site, item); - QueryWrapper queryWrapper=new QueryWrapper(); - queryWrapper.eq(PrintLog.SFC,prodReadyTask.getSfc()); - queryWrapper.eq(PrintLog.STEP_ID,prodReadyTask.getStepId()); - queryWrapper.eq(PrintLog.RESRCE,prodReadyTask.getResrce()); - queryWrapper.eq(PrintLog.CATEGORY,Constants.PRINT_TYPE_SFC); - queryWrapper.eq(PrintLog.CATEGORY,Constants.PRINT_TYPE_SFC); + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq(PrintLog.SFC, prodReadyTask.getSfc()); + queryWrapper.eq(PrintLog.STEP_ID, prodReadyTask.getStepId()); + queryWrapper.eq(PrintLog.RESRCE, prodReadyTask.getResrce()); + queryWrapper.eq(PrintLog.CATEGORY, Constants.PRINT_TYPE_SFC); + queryWrapper.eq(PrintLog.CATEGORY, Constants.PRINT_TYPE_SFC); List printLogList = printLogService.list(queryWrapper); - if (printLogList.isEmpty()){ - //打印参数 - LabelPrintDto labelPrintDto = new LabelPrintDto(); - labelPrintDto.setPrinter(printName); - labelPrintDto.setPrintTemplate(Constants.PRINT_TYPE_SFC); - labelPrintDto.setItem(sfcDispatchDto.getItem()); - labelPrintDto.setItemDescription(selectCurrent.getDescription()); - labelPrintDto.setSfc(prodReadyTask.getSfc()); - Sfc sfcServiceById = sfcService.getById(HandleEnum.SFC.getHandle(site, prodReadyTask.getSfc())); - String drawingRevision = customFieldsService.getCustomFieldsValue(sfcServiceById.getItemBo(), CustomFieldConstant.ITEM_DRAWING_REVISION); - labelPrintDto.setDrawingVersion(drawingRevision); - labelPrintDto.setQty(new BigDecimal(sfcServiceById.getQty())); - String workOrder = customFieldsService.getCustomFieldsValue(sfcServiceById.getShopOrderBo(), "WORK_ORDER"); - labelPrintDto.setWorkOrder(workOrder); - labelPrintDto.setBlankingSize(sfcDispatchDto.getBlankingSize()); - labelPrintDto.setOperation(sfcDispatchDto.getOperation()); - labelPrintDtoList.add(labelPrintDto); - printData = JSON.toJSONString(labelPrintDtoList); - //打印记录 - printTag.setHandle(UUID.randomUUID().toString()); - printTag.setPrintName(printName); - printTag.setPrintTemplate(Constants.PRINT_TYPE_SFC); - printTag.setSite(site); - printTag.setCategory(Constants.PRINT_TYPE_SFC); - printTag.setPrintParam(JSON.toJSONString(labelPrintDtoList)); - printTag.setSfc(prodReadyTask.getSfc()); - printTag.setResrce(prodReadyTask.getResrce()); - printTag.setStepId(prodReadyTask.getStepId()); - printTag.setOperation(prodReadyTask.getOperation()); - printTag.setItemBo(selectCurrent.getHandle()); - printTag.setIsPrint("false"); - printTag.setPrintNum(0); - printTag.setItem(item); - printTag.setItemDescription(selectCurrent.getDescription()); + if (printLogList.isEmpty()) { + //打印参数 + LabelPrintDto labelPrintDto = new LabelPrintDto(); + labelPrintDto.setPrinter(printName); + labelPrintDto.setPrintTemplate(Constants.PRINT_TYPE_SFC); + labelPrintDto.setItem(sfcDispatchDto.getItem()); + labelPrintDto.setItemDescription(selectCurrent.getDescription()); + labelPrintDto.setSfc(prodReadyTask.getSfc()); + Sfc sfcServiceById = sfcService.getById(HandleEnum.SFC.getHandle(site, prodReadyTask.getSfc())); + String drawingRevision = customFieldsService.getCustomFieldsValue(sfcServiceById.getItemBo(), CustomFieldConstant.ITEM_DRAWING_REVISION); + labelPrintDto.setDrawingVersion(drawingRevision); + labelPrintDto.setQty(new BigDecimal(sfcServiceById.getQty())); + String workOrder = customFieldsService.getCustomFieldsValue(sfcServiceById.getShopOrderBo(), "WORK_ORDER"); + labelPrintDto.setWorkOrder(workOrder); + labelPrintDto.setBlankingSize(sfcDispatchDto.getBlankingSize()); + labelPrintDto.setOperation(sfcDispatchDto.getOperation()); + labelPrintDtoList.add(labelPrintDto); + printData = JSON.toJSONString(labelPrintDtoList); + //打印记录 + printTag.setHandle(UUID.randomUUID().toString()); + printTag.setPrintName(printName); + printTag.setPrintTemplate(Constants.PRINT_TYPE_SFC); + printTag.setSite(site); + printTag.setCategory(Constants.PRINT_TYPE_SFC); + printTag.setPrintParam(JSON.toJSONString(labelPrintDtoList)); + printTag.setSfc(prodReadyTask.getSfc()); + printTag.setResrce(prodReadyTask.getResrce()); + printTag.setStepId(prodReadyTask.getStepId()); + printTag.setOperation(prodReadyTask.getOperation()); + printTag.setItemBo(selectCurrent.getHandle()); + printTag.setIsPrint("false"); + printTag.setPrintNum(0); + printTag.setItem(item); + printTag.setItemDescription(selectCurrent.getDescription()); - printList.add(printTag); - printLogService.savePrintLog(site,user,printTag); + printList.add(printTag); + printLogService.savePrintLog(site, user, printTag); - }else { + } else { printData = printLogList.get(0).getPrintParam(); } - String post = HttpUtil.post(printServer,printData , 30000); + String post = HttpUtil.post(printServer, printData, 30000); /** * {"msg":"打印成功","code":0} * {"msg":"打印失败","code":500} @@ -385,20 +401,20 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl { SfcDto getSfcData(String sfc); + SfcDto getGoodSfcData(String sfc); + + SplitSfc goodSfcSplit(SfcDto sfcDto); + SplitSfc splitSfc(SfcDto sfcDto); } \ No newline at end of file diff --git a/production/src/main/java/com/foreverwin/mesnac/production/service/impl/SplitSfcServiceImpl.java b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/SplitSfcServiceImpl.java index 54b6ccee..a7d5f1f1 100644 --- a/production/src/main/java/com/foreverwin/mesnac/production/service/impl/SplitSfcServiceImpl.java +++ b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/SplitSfcServiceImpl.java @@ -83,6 +83,63 @@ public class SplitSfcServiceImpl extends ServiceImpl i return sfcData; } @Override + public SfcDto getGoodSfcData(String sfc) { + String site = CommonMethods.getSite(); + String handle = HandleEnum.SFC.getHandle(site, sfc); + //根据sfc找工单等信息 + SfcDto sfcData = splitSfcMapper.getSfcData(handle); + if (sfcData==null){ + throw new BaseException("未找到产品条码信息"); + } + if (!sfcData.getStatus().equals("401")&&!sfcData.getStatus().equals("402")){ + throw new BaseException("产品状态不可拆分"); + } + if (sfcData.getQty()==1){ + throw new BaseException("数量为1不可拆分"); + } + return sfcData; + } + @Override + public SplitSfc goodSfcSplit(SfcDto sfcDto){ + String site = CommonMethods.getSite(); + String sfc = sfcDto.getSfc(); + BigDecimal splitQty = new BigDecimal(sfcDto.getQty()); + + //根据sfc找工单等信息 + SfcDto sfcData =getGoodSfcData(sfc); + + SplitSfcRequest splitSfcRequest=new SplitSfcRequest(); + try { + SplitSerializeServiceInterface splitService = MEServices.create("com.sap.me.production", "SplitSerializeService",site); + //拆sfc + List newList=new ArrayList<>(); + SplitSfcDetail splitDetail=new SplitSfcDetail(); + splitDetail.setQuantity(splitQty); + newList.add(splitDetail); + splitSfcRequest.setNewSfcList(newList); + splitSfcRequest.setSfcRef(HandleEnum.SFC.getHandle(site,sfc)); + Collection splitSfcResponses = splitService.splitSfc(splitSfcRequest); + SplitSfcResponse splitSfcResponse = splitSfcResponses.iterator().next(); + String newSfcRef = splitSfcResponse.getNewSfcRef(); + + SplitSfc splitSfc=new SplitSfc(); + String newSfc = StringUtil.trimHandle(newSfcRef); + splitSfc.setHandle(HandleEnum.SPLIT_SFC.getHandle(site,newSfc)); + splitSfc.setSite(site); + splitSfc.setSfc(sfc); + splitSfc.setSplitSfc(newSfc); + splitSfc.setSplitQty(splitQty); + splitSfc.setCreateUser(CommonMethods.getUser()); + splitSfc.setCreatedDateTime(LocalDateTime.now()); + save(splitSfc); + String workCenterBo = shopOrderService.getById(HandleEnum.SHOP_ORDER.getHandle(site, sfcData.getShopOrder())).getPlannedWorkCenterBo(); + return splitSfc; + } catch (Exception e) { + ExceptionUtil.throwException(e); + } + return null; + } + @Override public SplitSfc splitSfc(SfcDto sfcDto){ String site = CommonMethods.getSite(); String sfc = sfcDto.getSfc(); diff --git a/production/src/main/resources/mapper/SplitSfcMapper.xml b/production/src/main/resources/mapper/SplitSfcMapper.xml index 10a68aa5..66587280 100644 --- a/production/src/main/resources/mapper/SplitSfcMapper.xml +++ b/production/src/main/resources/mapper/SplitSfcMapper.xml @@ -367,8 +367,9 @@