diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/AbnormalBillService.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/AbnormalBillService.java index 469d1bd2..20f596bc 100644 --- a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/AbnormalBillService.java +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/AbnormalBillService.java @@ -7,6 +7,7 @@ import com.foreverwin.mesnac.anomaly.dto.AbnormalBillDto; import com.foreverwin.mesnac.anomaly.model.AbnormalBill; import com.foreverwin.mesnac.anomaly.model.AbnormalBillDispose; import com.foreverwin.mesnac.anomaly.model.UploadPictures; +import com.foreverwin.mesnac.meapi.dto.SfcDto; import com.foreverwin.modular.core.util.FrontPage; import java.util.HashMap; @@ -142,4 +143,13 @@ public interface AbnormalBillService extends IService { IPage getAbnormalByConditionalPage(IPage page,Map paramMap,String keyword); + /** + * @param sfcDto 以下是传递的参数 + * sfc + * abnormalNo + * qty + * stepId + * */ + void batchRepair(SfcDto sfcDto); + } \ No newline at end of file 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 890134ee..d21320b5 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 @@ -18,6 +18,7 @@ import com.foreverwin.mesnac.common.dto.ScrapDto; import com.foreverwin.mesnac.common.dto.SfcDispatchDto; import com.foreverwin.mesnac.common.dto.UsrDto; import com.foreverwin.mesnac.common.enums.AnomalyConstant; +import com.foreverwin.mesnac.common.enums.DispatchStatusEnum; import com.foreverwin.mesnac.common.enums.HandleEnum; import com.foreverwin.mesnac.common.helper.NextNumberHelper; import com.foreverwin.mesnac.common.mapper.MessageMapper; @@ -26,26 +27,36 @@ import com.foreverwin.mesnac.common.model.Message; import com.foreverwin.mesnac.common.service.*; import com.foreverwin.mesnac.common.util.ActiveMQUtil; import com.foreverwin.mesnac.common.util.DateUtil; +import com.foreverwin.mesnac.common.util.ExceptionUtil; import com.foreverwin.mesnac.common.util.StringUtil; import com.foreverwin.mesnac.listener.mapper.UsrMapper; import com.foreverwin.mesnac.meapi.dto.NcCodeDto; +import com.foreverwin.mesnac.meapi.dto.RouterStepDto; +import com.foreverwin.mesnac.meapi.dto.SfcDto; import com.foreverwin.mesnac.meapi.mapper.*; import com.foreverwin.mesnac.meapi.model.*; import com.foreverwin.mesnac.meapi.service.*; import com.foreverwin.mesnac.meapi.util.StringUtils; +import com.foreverwin.mesnac.production.dto.SplitSfcDto; +import com.foreverwin.mesnac.production.mapper.SplitSfcMapper; import com.foreverwin.mesnac.production.model.SplitSfc; import com.foreverwin.mesnac.production.service.SplitSfcService; import com.foreverwin.mesnac.quality.service.SelfReportService; import com.foreverwin.modular.core.exception.BaseException; import com.foreverwin.modular.core.exception.BusinessException; +import com.foreverwin.modular.core.meext.MEServices; import com.foreverwin.modular.core.util.CommonMethods; import com.foreverwin.modular.core.util.FrontPage; +import com.sap.me.nonconformance.*; +import com.sap.me.production.SplitSerializeServiceInterface; +import com.sap.me.production.SplitSfcRequest; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.*; @@ -159,6 +170,15 @@ public class AbnormalBillServiceImpl extends ServiceImpl selectPage(FrontPage frontPage, AbnormalBill abnormalBill) { @@ -199,8 +219,17 @@ public class AbnormalBillServiceImpl extends ServiceImpl ncCode = new ArrayList<>(); List ncGroup = new ArrayList<>(); @@ -301,7 +330,6 @@ public class AbnormalBillServiceImpl extends ServiceImpl workCenterList = workCenterService.selectList(workCenter); hashMap.put("workCenter",workCenterList); - /** * 发现环节 */ @@ -434,7 +461,6 @@ public class AbnormalBillServiceImpl extends ServiceImpl Double.parseDouble(abnormalBill2.getNcQty())){ + //跳过啥都不做 + }else if(sfc.getQty() == Double.parseDouble(abnormalBill2.getNcQty())){ + //整批返修、批量返修 + SfcDto sfcDto = new SfcDto(); + sfcDto.setSfc(sfc.getSfc()); + sfcDto.setAbnormalNo(abnormalBill2.getAbnormalNo()); + sfcDto.setQty(sfc.getQty()); + Map map = sfcMapper.findOperationBySfc(site, sfc.getSfc()); + if(StringUtils.isBlank((String)map.get("STEP_ID"))){ + throw new BaseException("整批返修失败,根据该产品条码找不到STEP_ID"); + } + sfcDto.setStepId((String) map.get("STEP_ID")); + this.batchRepair(sfcDto); + + } + } + this.anomalyCreatedAndSendMessage(abnormalBill2,abnormalBillDispose); } @@ -586,7 +642,6 @@ public class AbnormalBillServiceImpl extends ServiceImpl ncCodes = Arrays.asList(abnormalBill.getNcCode().split(",")); @@ -636,7 +690,6 @@ public class AbnormalBillServiceImpl extends ServiceImpl= 1) { throw BusinessException.build(abnormalType + "有未处理完成的产品条码(SFC)"); } - //根据sfc找出STEP_ID + //判断不良品数量是否大于SFC的数量 + Sfc sfc = sfcMapper.selectById(HandleEnum.SFC.getHandle(site, abnormalBill.getSfc())); + if(Integer.parseInt(abnormalBill.getNcQty()) > sfc.getQty()){ + throw BusinessException.build("质量异常提报的不良品数量不能大于SFC的数量,SFC的数量为:"+sfc.getQty()); + } } @@ -1195,6 +1252,83 @@ public class AbnormalBillServiceImpl extends ServiceImpl sfcs=new ArrayList<>(); + sfcs.add(HandleEnum.SFC.getHandle(site,sfc)); + dispositionSfcsRequest.setSfcs(sfcs); + dispositionSfcsRequest.setBypassStepValidation(true); + DispositionSelection dispositionSelection=new DispositionSelection(); + Router maxRevisionRouter = routerService.getMaxRevisionRouter(site, StringUtil.trimHandle(routerBo)); + dispositionSelection.setRouterRef(maxRevisionRouter.getHandle()); + dispositionSfcsRequest.setDispositionSelection(dispositionSelection); + dispositionSfcsRequest.setProdCtx(new ProductionContext()); + ncProductionService.dispositionMultipleSfcs(dispositionSfcsRequest); + List routerOperationByRouterBo = routerStepService.findRouterOperationByRouterBo(site, maxRevisionRouter.getHandle()); + if (routerOperationByRouterBo.isEmpty()){ + throw new BaseException("处置工艺路线没有步骤"); + } + sfcDispatchCommonService.saveSplitSfcDispatch(site, CommonMethods.getUser(),"A", sfcData.getShopOrder(), sfc, operation, sfcDispatchBySfc.getStepId(),sfc, maxRevisionRouter.getHandle(), sfcData.getStepSequence()); + }catch (Exception e){ + ExceptionUtil.throwException(e); + } + } + @Override public Map jgProductionIsScrap(String abnormalNo, String site, String sfc) { //查询该sfc在质量异常异常方案是否是报废,如果是,则大于1 @@ -1279,7 +1413,6 @@ public class AbnormalBillServiceImpl extends ServiceImpl SELECT CF.VALUE ITEM_NUMBER,ZSD.SHOP_ORDER SHOP_ORDER,I.ITEM ITEM,IT.DESCRIPTION ITEM_DESCRIPTION, SO.QTY_TO_BUILD SHOP_ORDER_QTY , ZSD.OPERATION ,OT.DESCRIPTION OPERATION_DESCRIPTION, - ZNU.FULL_NAME OPERATION_USER,ZSD.SFC SFC,ZSD.DISPATCH_STATUS , + ZNU.FULL_NAME OPERATION_USER,ZSD.SFC SFC, + CASE WHEN S2.STATUS = '405' THEN '是' ELSE '否' END DISPATCH_STATUS, ZSD.EARLIEST_START_DATE EARLIEST_START_DATE,ZSD.LATEST_END_DATE LATEST_END_DATE, ZSD.ACTUAL_START_DATE ACTUAL_START_DATE,ZSD.ACTUAL_COMPLETE_DATE ACTUAL_COMPLETE_DATE FROM SFC S @@ -49,13 +50,13 @@ INNER JOIN ITEM I ON I.HANDLE = SO.ITEM_BO LEFT JOIN ITEM_T IT ON IT.ITEM_BO = I.HANDLE AND IT.LOCALE = #{locale} INNER JOIN Z_SFC_DISPATCH ZSD ON S.SFC = ZSD.SFC AND S.SITE = ZSD.SITE - AND ZSD.DISPATCH_SEQ = ( - SELECT MAX(ZSD2.DISPATCH_SEQ) FROM Z_SFC_DISPATCH ZSD2 WHERE S.SFC = ZSD2.SFC AND S.SITE = ZSD2.SITE - ) INNER JOIN OPERATION O ON O.OPERATION = ZSD.OPERATION AND O.SITE = S.SITE AND O.CURRENT_REVISION = 'true' INNER JOIN OPERATION_T OT ON OT.OPERATION_BO = O.HANDLE AND OT.LOCALE = #{locale} - INNER JOIN Z_NWA_USER ZNU ON ZNU.USER_NAME = ZSD.EMPLOYEE + LEFT JOIN Z_NWA_USER ZNU ON ZNU.USER_NAME = ZSD.EMPLOYEE AND ZSD.DISPATCH_SEQ = ( + SELECT MAX(ZSD2.DISPATCH_SEQ) FROM Z_SFC_DISPATCH ZSD2 WHERE S.SFC = ZSD2.SFC AND S.SITE = ZSD2.SITE + ) LEFT JOIN CUSTOM_FIELDS CF ON CF.HANDLE = S.SHOP_ORDER_BO AND CF."ATTRIBUTE" = 'ITEM_NUMBER' + INNER JOIN STATUS S2 ON S2.HANDLE = S.STATUS_BO S.SITE = #{site} @@ -75,6 +76,12 @@ AND ZSD.ACTUAL_START_DATE >= TO_DATE(#{param.startDateTime}, 'YYYY-MM-DD HH24:MI:SS') + AND ZSD.ACTUAL_START_DATE <= TO_DATE(#{param.endDateTime}, 'YYYY-MM-DD HH24:MI:SS') + + + AND ZSD.ACTUAL_COMPLETE_DATE >= TO_DATE(#{param.completeStartDateTime}, 'YYYY-MM-DD HH24:MI:SS') + + AND ZSD.ACTUAL_COMPLETE_DATE <= TO_DATE(#{param.endDateTime}, 'YYYY-MM-DD HH24:MI:SS') diff --git a/dispatch/src/main/resources/mapper/SfcDispatchMapper.xml b/dispatch/src/main/resources/mapper/SfcDispatchMapper.xml index 366be1ed..cf87c2a9 100644 --- a/dispatch/src/main/resources/mapper/SfcDispatchMapper.xml +++ b/dispatch/src/main/resources/mapper/SfcDispatchMapper.xml @@ -799,7 +799,7 @@ SELECT zab.NC_QTY,zsbd.ROUTER_BO,zab.NC_CODE,zab.ABNORMAL_NO,zsbd.ABNORMAL_METHOD,zab.STEP_ID FROM Z_ABNORMAL_BILL zab JOIN Z_ABNORMAL_BILL_DISPOSE zsbd ON zab.HANDLE=ZSBD.ABNORMAL_BILL_BO - WHERE ZAB.SFC=#{sfc} AND zab.ABNORMAL_NO=#{abnormalNo} AND zab.SITE=#{site} AND ZAB.OPERATION=#{operation} AND zab.STATUS='G' AND zab."TYPE"='Z' AND (zsbd.ABNORMAL_METHOD='F' OR zsbd.ABNORMAL_METHOD='C') + WHERE ZAB.SFC=#{sfc} AND zab.ABNORMAL_NO=#{abnormalNo} AND zab.SITE=#{site} AND ZAB.OPERATION=#{operation} AND (zab.STATUS='G' OR zab.STATUS='F') AND zab."TYPE"='Z' AND (zsbd.ABNORMAL_METHOD='F' OR zsbd.ABNORMAL_METHOD='C')