diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/AbnormalBillController.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/AbnormalBillController.java index 83ccdbc6..ce4ac105 100644 --- a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/AbnormalBillController.java +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/AbnormalBillController.java @@ -220,7 +220,7 @@ public class AbnormalBillController { try{ return R.ok(abnormalBillService.anomalyReport(abnormalBill, abnormalBillDispose,ncGroupAndNcCodes,dutyCauseType,dutyType)); }catch(Exception e){ - return R.failed("质量异常提报失败,"+e.getMessage()); + return R.failed("质量异常提报失败:"+e.getMessage()); } } @@ -234,7 +234,7 @@ public class AbnormalBillController { try{ return R.ok(abnormalBillService.anomalyReportDevice(abnormalBill,abnormalBillDispose)); }catch (Exception e){ - return R.failed("设备异常提报失败,"+e.getMessage()); + return R.failed("设备异常提报失败:"+e.getMessage()); } } @@ -251,7 +251,7 @@ public class AbnormalBillController { try{ return R.ok( abnormalBillService.cancelBrowse(handle,cancelBrowse,code,cancelSendUserGroup)); }catch(Exception e){ - return R.failed("取消失败,"+e.getMessage()); + return R.failed("取消失败:"+e.getMessage()); } } @@ -260,7 +260,7 @@ public class AbnormalBillController { try{ return R.ok(abnormalBillService.backLog(abnormalBillDto)); }catch(Exception e){ - return R.failed("检索失败,"+e.getMessage()); + return R.failed("检索失败:"+e.getMessage()); } } @@ -275,7 +275,7 @@ public class AbnormalBillController { try{ return R.ok(abnormalBillService.findAllByAbnormalNo(abnormalBill)); }catch (Exception e){ - return R.failed("检索失败,"+e.getMessage()); + return R.failed("检索失败:"+e.getMessage()); } } @@ -288,7 +288,7 @@ public class AbnormalBillController { try{ return R.ok(abnormalBillService.findAllByAbnormalNoDevice(abnormalBill)); }catch (Exception e){ - return R.failed("设备异常响应检索失败,"+e.getMessage()); + return R.failed("设备异常响应检索失败:"+e.getMessage()); } } @@ -304,7 +304,7 @@ public class AbnormalBillController { abnormalBillService.resProcessing(abnormalBill); return R.ok(); }catch(Exception e){ - return R.failed("响应处理失败,"+e.getMessage()); + return R.failed("响应处理失败:"+e.getMessage()); } } @@ -320,7 +320,7 @@ public class AbnormalBillController { abnormalBillService.programConfirm(abnormalBill,abnormalBillDispose); return R.ok(); }catch (Exception e){ - return R.failed("方案确认失败,"+e.getMessage()); + return R.failed("方案确认失败:"+e.getMessage()); } } @@ -338,7 +338,7 @@ public class AbnormalBillController { abnormalBillService.dutyConfirm(abnormalBill,abnormalBillDispose,dutyCauseType,dutyType); return R.ok(); }catch(Exception e){ - return R.failed("判责提交失败,"+e.getMessage()); + return R.failed("判责提交失败:"+e.getMessage()); } } @@ -354,7 +354,7 @@ public class AbnormalBillController { abnormalBillService.anomalyShutDown(abnormalBill,abnormalBillDispose); return R.ok(); }catch (Exception e){ - return R.failed("闭环关闭失败,"+e.getMessage()); + return R.failed("闭环关闭失败:"+e.getMessage()); } } @@ -364,7 +364,7 @@ public class AbnormalBillController { try{ return R.ok(sfcDispatchCommonService.findResrceBySfc(sfcDispatch)); }catch (Exception e){ - return R.failed("根据sfc查找设备失败,"+e.getMessage()); + return R.failed("根据sfc查找设备失败:"+e.getMessage()); } } @@ -373,7 +373,7 @@ public class AbnormalBillController { try{ return R.ok(fileUploadedService.showFile(request,response)); }catch (Exception e){ - return R.failed("显示图片失败,"+e.getMessage()); + return R.failed("显示图片失败:"+e.getMessage()); } } @@ -384,7 +384,7 @@ public class AbnormalBillController { fileUploadedService.deleteFile(ftpPath,fileName); return R.ok(); }catch (Exception e){ - return R.failed("图片删除失败,"+e.getMessage()); + return R.failed("图片删除失败:"+e.getMessage()); } } 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 3d214d2b..0bea61db 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 @@ -46,6 +46,8 @@ public class AbnormalBillDto extends AbnormalBill { private String workOrder; + private String productionCategory; + public String getSeq() { return seq; } @@ -143,4 +145,12 @@ public class AbnormalBillDto extends AbnormalBill { public void setWorkOrder(String workOrder) { this.workOrder = workOrder; } + + public String getProductionCategory() { + return productionCategory; + } + + public void setProductionCategory(String productionCategory) { + this.productionCategory = productionCategory; + } } diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/AbnormalBillMapper.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/AbnormalBillMapper.java index a13d38a5..3e02f6b1 100644 --- a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/AbnormalBillMapper.java +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/AbnormalBillMapper.java @@ -5,10 +5,12 @@ import com.foreverwin.mesnac.anomaly.dto.AbnormalBillDto; import com.foreverwin.mesnac.anomaly.model.AbnormalBill; import com.foreverwin.mesnac.common.dto.ScrapDto; import com.foreverwin.mesnac.meapi.model.UserGroup; +import com.foreverwin.mesnac.production.model.SplitSfc; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Map; /** *

@@ -35,9 +37,9 @@ public interface AbnormalBillMapper extends BaseMapper { List findCountBySfc(@Param("site")String site, @Param("type")String type, @Param("sfc")String sfc, @Param("status")List status); - Integer findAbnormalMethodBySFC(@Param("site")String site,@Param("sfc")String sfc); + Map findAbnormalMethodBySFC(@Param("site")String site, @Param("abnormalBo")String abnormalBo, @Param("sfc")String sfc); - List findScrapDtoBySfc(@Param("site")String site, @Param("sfc")String sfc); + List findScrapDtoBySfc(@Param("site")String site, @Param("mainSfc")String mainSfc,@Param("splitSfc")List splitSfc); List getQCAbnormalList(@Param("site") String site); 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 f2596b46..1aa56928 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 @@ -29,6 +29,8 @@ 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.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; @@ -140,7 +142,10 @@ public class AbnormalBillServiceImpl extends ServiceImpl jgProductionIsScrap(String abnormalNo, String site, String sfc) { //查询该sfc在质量异常异常方案是否是报废,如果是,则大于1 - Integer num = abnormalBillMapper.findAbnormalMethodBySFC(site, sfc); - return num <= 0; + String abnormalBo = null; + if(!StringUtils.isBlank(abnormalNo)){ + abnormalBo = HandleEnum.ABNORMAL_BILL.getHandle(site,abnormalNo); + } + return abnormalBillMapper.findAbnormalMethodBySFC(site,abnormalBo, sfc); } @Override - public List getScrapDtoBysfc(String site, String sfc) { - //判断该产品条码是否已经报废 - if(this.jgProductionIsScrap(site,sfc)){ + public List getScrapDtoBysfc(String abnormalNo, String site, String sfc) { + if(StringUtil.isBlank(site)){ + site = CommonMethods.getSite(); + } + //根据用户提报上来的sfc和异常单查找主SFC + Map map = this.jgProductionIsScrap(abnormalNo, site, sfc); + String mainSfc = null; + String abnormalBo = null; + if(map != null){ + mainSfc = map.get("SFC"); + abnormalBo = map.get("HANDLE"); + } + + List splitSfcs = null; + SplitSfc splitSfc = new SplitSfc(); + splitSfc.setSite(site); + + //判断能否找到该主sfc。 + if(StringUtil.isBlank(mainSfc)){ + //判断该用户提报上来的sfc是否为空 + if(StringUtil.isBlank(sfc)){ + throw new BaseException("该异常单下没有报废的产品条码"); + } + + //如果不为空,则判断根据这个sfc能从Z_SPLIT_SFC表中查找到主SFC吗,然后在判断主SFC是否已经报废 + splitSfc.setSplitSfc(sfc); + splitSfcs = splitSfcService.selectList(splitSfc); + if(splitSfcs.size()>0){ + Map map1 = this.jgProductionIsScrap(abnormalNo, site, splitSfcs.get(0).getSfc()); + mainSfc = map1.get("SFC"); + abnormalBo = map1.get("HANDLE"); + }else{ + if(!StringUtil.isBlank(sfc) && !StringUtil.isBlank(abnormalNo)){ + throw new BaseException("该异常单下的产品条码不是报废"); + } + throw new BaseException("该产品条码的异常方案不是报废"); + } + }else if(StringUtil.isBlank(sfc)){ + //根据异常单找到了主sfc,并且sfc参数为空,找到异常单主sfc下拆分的次sfc + splitSfc.setSfc(mainSfc); + splitSfcs = splitSfcService.selectList(splitSfc); + } + List scrapDtoBySfc = abnormalBillMapper.findScrapDtoBySfc(site, mainSfc,splitSfcs); + + + + //如果用户提报上来的sfc不为空,并且不是主sfc,则把主sfc从scrapDtoBySfc去掉 + if(!StringUtil.isBlank(sfc) && !sfc.equals(mainSfc)){ + for (int i = 0; i < scrapDtoBySfc.size(); i++) { + if(scrapDtoBySfc.get(i).getSfc().equals(mainSfc)){ + scrapDtoBySfc.remove(scrapDtoBySfc.get(i)); + continue; + } + } + } + if(scrapDtoBySfc.size() <= 0){ throw new BaseException("该产品条码的异常方案不是报废"); } - List scrapDtoBySfc = abnormalBillMapper.findScrapDtoBySfc(site, sfc); + + //查找到责任人,放到表里 + AbnormalBillDispose abnormalBillDispose = new AbnormalBillDispose(); + abnormalBillDispose.setAbnormalBillBo(abnormalBo); + List abnormalBillDisposes = abnormalBillDisposeService.selectList(abnormalBillDispose); + if(abnormalBillDisposes.size() > 0){ + for (int i = 0; i < scrapDtoBySfc.size(); i++) { + scrapDtoBySfc.get(i).setDutyUser(abnormalBillDisposes.get(0).getPrincipalUser()); + } + } return scrapDtoBySfc; } diff --git a/anomaly/src/main/resources/mapper/AbnormalBillMapper.xml b/anomaly/src/main/resources/mapper/AbnormalBillMapper.xml index 110d9dc5..7d304651 100644 --- a/anomaly/src/main/resources/mapper/AbnormalBillMapper.xml +++ b/anomaly/src/main/resources/mapper/AbnormalBillMapper.xml @@ -925,6 +925,7 @@ LEFT JOIN Z_NWA_USER ZNU ON ZNU.USER_NAME = ZAB.CREATED_USER AND ZNU.SITE = ZAB.SITE LEFT JOIN SHOP_ORDER SO ON SO.SHOP_ORDER = ZAB.SHOP_ORDER AND SO.SITE = ZAB.SITE LEFT JOIN CUSTOM_FIELDS CF ON CF.HANDLE = SO.HANDLE AND CF."ATTRIBUTE" = 'WORK_ORDER' + LEFT JOIN CUSTOM_FIELDS CF2 ON CF2.HANDLE = SO.HANDLE AND CF2."ATTRIBUTE" = 'PRODUCT_CATEGORY' LEFT JOIN Z_ABNORMAL_NC_CODE ZANC ON ZANC.ABNORMAL_BILL_BO = ZAB.HANDLE LEFT JOIN NC_CODE_T NCT ON NCT.NC_CODE_BO = 'NCCodeBO:'|| ZAB.SITE || ',' || ZANC.NC_CODE AND NCT.LOCALE = #{language} @@ -962,6 +963,9 @@ AND CF.VALUE LIKE '%${abnormalBill.workOrder}%' + + AND CF2.VALUE LIKE '%${abnormalBill.productionCategory}' + AND ZAB.REPORT_SEND_USER_GROUP IN @@ -1081,17 +1085,34 @@ - + SELECT zabv.SFC SFC,zabv.HANDLE HANDLE FROM Z_ABNORMAL_BILL_VIEW zabv - WHERE SITE = #{site} AND SFC = #{sfc} AND ABNORMAL_METHOD = 'C' + INNER JOIN (SELECT MAX(ZAB.HANDLE) HANDLE FROM Z_ABNORMAL_BILL_VIEW ZAB WHERE + ZAB.SITE = #{site} + + AND ZAB.SFC = #{sfc} + + + AND ZAB.HANDLE = #{abnormalBo} + + ) ZAB ON ZAB.HANDLE = zabv.HANDLE + WHERE zabv.SITE = #{site} + + AND zabv.SFC = #{sfc} + + + AND zabv.HANDLE = #{abnormalBo} + + AND ABNORMAL_METHOD = 'C' + 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 0d3c933b..912e55ba 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 @@ -26,6 +26,8 @@ public class ScrapDto { private String type; + private String dutyUser; + public String getSfc() { return sfc; } @@ -105,4 +107,12 @@ public class ScrapDto { public void setType(String type) { this.type = type; } + + public String getDutyUser() { + return dutyUser; + } + + public void setDutyUser(String dutyUser) { + this.dutyUser = dutyUser; + } } diff --git a/common/src/main/java/com/foreverwin/mesnac/common/dto/SfcDispatchDto.java b/common/src/main/java/com/foreverwin/mesnac/common/dto/SfcDispatchDto.java index b3481371..c4775c15 100644 --- a/common/src/main/java/com/foreverwin/mesnac/common/dto/SfcDispatchDto.java +++ b/common/src/main/java/com/foreverwin/mesnac/common/dto/SfcDispatchDto.java @@ -182,6 +182,8 @@ public class SfcDispatchDto implements Serializable{ */ private String component; private String componentDescription; + private String texture; + private String matSpec; private String isCompleted; private BigDecimal completedQty; private String resourceWorkCenter; @@ -604,6 +606,22 @@ public class SfcDispatchDto implements Serializable{ this.componentDescription = componentDescription; } + public String getTexture() { + return texture; + } + + public void setTexture(String texture) { + this.texture = texture; + } + + public String getMatSpec() { + return matSpec; + } + + public void setMatSpec(String matSpec) { + this.matSpec = matSpec; + } + public String getIsCompleted() { return isCompleted; } diff --git a/common/src/main/java/com/foreverwin/mesnac/common/service/AnomalyService.java b/common/src/main/java/com/foreverwin/mesnac/common/service/AnomalyService.java index f3a65186..c8a7a193 100644 --- a/common/src/main/java/com/foreverwin/mesnac/common/service/AnomalyService.java +++ b/common/src/main/java/com/foreverwin/mesnac/common/service/AnomalyService.java @@ -3,6 +3,7 @@ package com.foreverwin.mesnac.common.service; import com.foreverwin.mesnac.common.dto.ScrapDto; import java.util.List; +import java.util.Map; /** * @Description TODO @@ -27,15 +28,16 @@ public interface AnomalyService { /** * 判断产品条码在质量异常中是否为报废 + * @Param abnormalNo * @param sfc * @return */ - boolean jgProductionIsScrap(String site,String sfc); + Map jgProductionIsScrap(String abnormalNo, String site, String sfc); /** * 检索 */ - List getScrapDtoBysfc(String site, String sfc); + List getScrapDtoBysfc(String abnormalNo,String site, String sfc); void anomalyReveseRepairShutDown(String abnormalNo); diff --git a/common/src/main/java/com/foreverwin/mesnac/common/service/SfcDispatchCommonService.java b/common/src/main/java/com/foreverwin/mesnac/common/service/SfcDispatchCommonService.java index da3078b0..12d95b2c 100644 --- a/common/src/main/java/com/foreverwin/mesnac/common/service/SfcDispatchCommonService.java +++ b/common/src/main/java/com/foreverwin/mesnac/common/service/SfcDispatchCommonService.java @@ -2,6 +2,8 @@ package com.foreverwin.mesnac.common.service; import com.foreverwin.mesnac.common.dto.SfcDispatchDto; +import java.math.BigDecimal; + /** * 派工公用接口 * @@ -34,7 +36,7 @@ public interface SfcDispatchCommonService { * @param dispatchNo * @param dispatchStatus */ - void updateSfcDispatchStatus(String site, String user, String dispatchNo, String dispatchStatus); + void updateSfcDispatchStatus(String site, String user, String dispatchNo, String dispatchStatus, BigDecimal workHour); /** * 根据sfc查询设备 diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/CallItemController.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/CallItemController.java index 875a5288..29cc8a78 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/CallItemController.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/CallItemController.java @@ -39,18 +39,13 @@ public class CallItemController { * @return */ @ResponseBody - @PostMapping("/findCallItemList") - public R findCallItemList(@RequestBody CallItem callItem){ + @GetMapping("/findCallItemList") + public R findCallItemList(@RequestParam(required = false) Map paramMap){ List result; try { - callItem.setSite(CommonMethods.getSite()); - if (callItem.getStartFromDate_S() != null) { - callItem.setStartFromDate(DateUtil.parse(callItem.getStartFromDate_S())); - } - if (callItem.getStartToDate_S() != null) { - callItem.setStartToDate(DateUtil.parse(callItem.getStartToDate_S())); - } - result = callItemService.findCallItemList(callItem); + String site = CommonMethods.getSite(); + paramMap.put("site", site); + result = callItemService.findCallItemList(paramMap); } catch (Exception e) { return R.failed(e.getMessage()); } diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/SfcDispatchController.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/SfcDispatchController.java index 08615a77..ed4f73be 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/SfcDispatchController.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/SfcDispatchController.java @@ -1,14 +1,11 @@ package com.foreverwin.mesnac.dispatch.controller; -import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.foreverwin.mesnac.common.dto.SfcDispatchDto; import com.foreverwin.mesnac.common.enums.DispatchStatusEnum; -import com.foreverwin.mesnac.common.util.StringUtil; import com.foreverwin.mesnac.dispatch.model.SfcDispatch; import com.foreverwin.mesnac.dispatch.service.SfcDispatchService; -import com.foreverwin.modular.core.exception.BusinessException; import com.foreverwin.modular.core.util.CommonMethods; import com.foreverwin.modular.core.util.FrontPage; import com.foreverwin.modular.core.util.R; diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/CallItemMapper.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/CallItemMapper.java index b4a844e5..d406e03d 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/CallItemMapper.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/CallItemMapper.java @@ -4,12 +4,12 @@ import com.foreverwin.mesnac.common.dto.SfcDispatchDto; import com.foreverwin.mesnac.dispatch.dto.IssueItemDto; import com.foreverwin.mesnac.dispatch.model.CallItem; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.foreverwin.mesnac.dispatch.model.SfcDispatch; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.time.LocalDateTime; import java.util.List; +import java.util.Map; /** *

@@ -30,7 +30,7 @@ public interface CallItemMapper extends BaseMapper { List selectCallItemAndType(@Param("sfcDispatchBo") String sfcDispatchBo); - List findCallItemList(CallItem callItem); + List findCallItemList(Map paramMap); List findCallItemDetailList(CallItem callItem); @@ -51,6 +51,8 @@ public interface CallItemMapper extends BaseMapper { List findRefreshCallItemPda(@Param("list") List list); + void updateCallItemStatusByHandle(@Param("status") String status, @Param("user") String user, @Param("dateTime") LocalDateTime dateTime, @Param("list") List list); + void updateCallItemStatusByCallItemNo(@Param("status") String status, @Param("user") String user, @Param("dateTime") LocalDateTime dateTime, @Param("list") List list); void refreshRequiredTime(@Param("user") String user, @Param("dateTime") LocalDateTime dateTime, @Param("list") List list); diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/SfcDispatchMapper.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/SfcDispatchMapper.java index 7fded5a0..fd7366f3 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/SfcDispatchMapper.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/SfcDispatchMapper.java @@ -6,6 +6,7 @@ import com.foreverwin.mesnac.dispatch.model.SfcDispatch; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; import java.util.Map; @@ -33,20 +34,26 @@ public interface SfcDispatchMapper extends BaseMapper { /** * 修改派工单状态 - * - * @param site + * @param site * @param dispatchNo * @param dispatchStatus * @param modifyUser * @param modifiedDateTime + * @param workHour */ void updateSfcDispatchStatus(@Param("site") String site, @Param("dispatchNo") String dispatchNo, @Param("dispatchStatus") String dispatchStatus, @Param("modifyUser") String modifyUser, - @Param("modifiedDateTime") LocalDateTime modifiedDateTime); + @Param("modifiedDateTime") LocalDateTime modifiedDateTime, @Param("workHour")BigDecimal workHour); - SfcDispatchDto findResrceBySfc(@Param("sfcDispatch")SfcDispatchDto sfcDispatch, @Param("site") String site, @Param("array") String[] array); + /** + * + * @param sfcDispatch + * @param site + * @return + */ + SfcDispatchDto findResrceBySfc(@Param("sfcDispatch")SfcDispatchDto sfcDispatch, @Param("site") String site); SfcDispatchDto findSfcDispatchBySfc(@Param("site")String site, @Param("dto")SfcDispatchDto sfcDispatch); diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/CallItemService.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/CallItemService.java index 3b833d2d..ee2f12b2 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/CallItemService.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/CallItemService.java @@ -37,9 +37,9 @@ public interface CallItemService extends IService { /** * 生产叫料查询 * - * @param callItem + * @param paramMap */ - List findCallItemList(CallItem callItem); + List findCallItemList(Map paramMap); /** * 叫料明细查询 diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/CallItemServiceImpl.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/CallItemServiceImpl.java index 66b09858..c0b16de0 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/CallItemServiceImpl.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/CallItemServiceImpl.java @@ -137,8 +137,8 @@ public class CallItemServiceImpl extends ServiceImpl i } @Override - public List findCallItemList(CallItem callItem) { - return callItemMapper.findCallItemList(callItem); + public List findCallItemList(Map paramMap) { + return callItemMapper.findCallItemList(paramMap); } @Override @@ -174,13 +174,8 @@ public class CallItemServiceImpl extends ServiceImpl i return; } - //派工单号集合 - List dispatchBoList = new ArrayList<>(); - for (CallItem callItem : callItemList) { - dispatchBoList.add(callItem.getSfcDispatchBo()); - } - - this.updateCallItemStatusByDispatchBo(Constants.CALL_ITEM_STATUS_CALLED, user, dispatchBoList); + LocalDateTime nowDate = LocalDateTime.now(); + callItemMapper.updateCallItemStatusByHandle(Constants.CALL_ITEM_STATUS_CALLED, user, nowDate, callItemList); } @Override diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/SfcDispatchServiceImpl.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/SfcDispatchServiceImpl.java index 3f657297..493b80f6 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/SfcDispatchServiceImpl.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/SfcDispatchServiceImpl.java @@ -37,6 +37,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.io.InputStream; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -684,16 +685,16 @@ public class SfcDispatchServiceImpl extends ServiceImpl + + + + @@ -640,14 +644,14 @@ + + UPDATE Z_CALL_ITEM SET STATUS = #{status}, MODIFY_USER = #{user}, MODIFIED_DATE_TIME = #{dateTime} + WHERE STATUS != '804' AND HANDLE IN + + #{item.handle} + + + UPDATE Z_CALL_ITEM SET STATUS = #{status}, MODIFY_USER = #{user}, MODIFIED_DATE_TIME = #{dateTime} WHERE STATUS != '804' AND SFC_DISPATCH_BO IN diff --git a/dispatch/src/main/resources/mapper/SfcDispatchMapper.xml b/dispatch/src/main/resources/mapper/SfcDispatchMapper.xml index a6339028..07647c16 100644 --- a/dispatch/src/main/resources/mapper/SfcDispatchMapper.xml +++ b/dispatch/src/main/resources/mapper/SfcDispatchMapper.xml @@ -65,6 +65,9 @@ + + + @@ -676,12 +679,12 @@ WHEN WIP.DISPATCH_STATUS = 'PAUSE' THEN N'暂停' WHEN WIP.DISPATCH_STATUS = 'RELEASE' THEN N'发布' END AS STATUS_NAME, 'ADMINISTRATOR' AS ROLE FROM ( - SELECT DISTINCT SD.HANDLE, SD.SITE, SD.SHOP_ORDER, SD.DISPATCH_NO, C2.VALUE ITEM_NUMBER, C1.VALUE WORK_ORDER, IM.HANDLE ITEM_BO, IM.ITEM, IT.DESCRIPTION ITEM_DESCRIPTION, SD.SFC, SD.DISPATCH_STATUS, + SELECT SD.HANDLE, SD.SITE, SD.SHOP_ORDER, SD.DISPATCH_NO, C2.VALUE ITEM_NUMBER, C1.VALUE WORK_ORDER, IM.HANDLE ITEM_BO, IM.ITEM, IT.DESCRIPTION ITEM_DESCRIPTION, SD.SFC, SD.DISPATCH_STATUS, SD.STEP_ID, SD.OPERATION, OT.DESCRIPTION OPERATION_DESCRIPTION, SD.RESOURCE_TYPE, SD.RESRCE, SD.EMPLOYEE, SD.EMPLOYEE USER_NAME, SD.DISPATCH_QTY, SD.PROD_HOURS, RS.DESCRIPTION RESOURCE_DESCRIPTION, CASE WHEN SD.DISPATCH_STATUS = 'COMPLETE' THEN SD.DISPATCH_QTY ELSE 0 END COMPLETED_QTY, SD.PLANNED_START_DATE, SD.PLANNED_COMP_DATE, SD.WORK_CENTER, SD.IS_DISPATCH, SD.EMPLOYEE_DESCRIPTION, SD.ACTUAL_START_DATE, SD.ACTUAL_COMPLETE_DATE, SD.REMARK, SD.DISPATCH_SEQ, SD.DISPATCH_SEQ-1 BEFORE_SEQ, SD.DISPATCH_SEQ+1 AFTER_SEQ, SD.EARLIEST_START_DATE, SD.LATEST_END_DATE, - CASE WHEN IM.LOT_SIZE = 1 THEN N'是' ELSE N'否' END IS_MAJOR, CASE WHEN SD.TURN_OPERATION = 'true' THEN N'是' ELSE N'否' END TURN_OPERATION, SD.BLANKING_SIZE, - WR.WORK_CENTER RESOURCE_WORK_CENTER + CASE WHEN IM.LOT_SIZE = 1 THEN N'是' ELSE N'否' END IS_MAJOR, CASE WHEN SD.TURN_OPERATION = 'true' THEN N'是' ELSE N'否' END TURN_OPERATION, SD.BLANKING_SIZE, MAX(BC.COMPONENT_GBO) COMPONENT_BO, + WR.WORK_CENTER RESOURCE_WORK_CENTER, MAX(CP.ITEM) COMPONENT, MAX(CT.DESCRIPTION) COMPONENT_DESCRIPTION, MAX(C3.VALUE) TEXTURE, MAX(C4.VALUE) MAT_SPEC FROM Z_SFC_DISPATCH SD LEFT JOIN RESRCE RS ON SD.SITE = RS.SITE AND SD.RESRCE = RS.RESRCE INNER JOIN SHOP_ORDER SO ON SO.SITE = SD.SITE AND SO.SHOP_ORDER = SD.SHOP_ORDER @@ -692,8 +695,10 @@ INNER JOIN OPERATION O ON O.SITE = SD.SITE AND O.OPERATION = SD.OPERATION AND O.CURRENT_REVISION = 'true' LEFT JOIN OPERATION_T OT ON OT.OPERATION_BO = O.HANDLE AND OT.LOCALE = 'zh' INNER JOIN BOM_COMPONENT BC ON BC.BOM_BO = SO.BOM_BO - INNER JOIN ITEM CP ON CP.HANDLE = BC.COMPONENT_GBO - LEFT JOIN ITEM_T CPT ON CPT.ITEM_BO = CP.HANDLE AND CPT.LOCALE = 'zh' + LEFT JOIN ITEM CP ON CP.HANDLE = BC.COMPONENT_GBO + LEFT JOIN ITEM_T CT ON CT.ITEM_BO = CP.HANDLE AND CT.LOCALE = 'zh' + LEFT JOIN CUSTOM_FIELDS C3 ON C3.HANDLE = CP.HANDLE AND C3.ATTRIBUTE = 'TEXTTURE' + LEFT JOIN CUSTOM_FIELDS C4 ON C4.HANDLE = CP.HANDLE AND C4.ATTRIBUTE = 'MAT_SPEC' LEFT JOIN WORK_CENTER_MEMBER WCM ON WCM.WORK_CENTER_OR_RESOURCE_GBO = 'ResourceBO:' || SD.SITE || ',' || SD.RESRCE LEFT JOIN WORK_CENTER WR ON WR.HANDLE = WCM.WORK_CENTER_BO WHERE SD.SITE = #{site} @@ -733,17 +738,23 @@ AND SD.TURN_OPERATION = #{turnOperation} + + AND SD.IS_DISPATCH = #{isDispatch} + + + AND SD.BLANKING_SIZE LIKE '%'||#{blankingSize}||'%' + AND CP.ITEM = #{component} - AND CPT.DESCRIPTION LIKE '%' || #{componentDescription} || '%' + AND CT.DESCRIPTION LIKE '%' || #{componentDescription} || '%' - - AND SD.IS_DISPATCH = #{isDispatch} + + AND C3.VALUE LIKE '%'|| #{texture} ||'%' - - AND SD.BLANKING_SIZE LIKE '%'||#{blankingSize}||'%' + + AND C4.VALUE LIKE '%'|| #{matSpec}|| '%' AND SO.PLANNED_START_DATE >= TO_DATE(#{startFromDate}, 'YYYY-MM-DD') @@ -757,6 +768,11 @@ AND SO.PLANNED_COMP_DATE <= TO_DATE(#{completeToDate}|| '23:59:59', 'YYYY-MM-DD HH24:MI:SS') + GROUP BY SD.HANDLE, SD.SITE, SD.SHOP_ORDER, SD.DISPATCH_NO, C2.VALUE, C1.VALUE, IM.HANDLE, IM.ITEM, IT.DESCRIPTION, SD.SFC, SD.DISPATCH_STATUS, + SD.STEP_ID, SD.OPERATION, OT.DESCRIPTION, SD.RESOURCE_TYPE, SD.RESRCE, SD.EMPLOYEE, SD.EMPLOYEE, SD.DISPATCH_QTY, SD.PROD_HOURS, RS.DESCRIPTION, + SD.DISPATCH_STATUS, SD.DISPATCH_QTY, SD.PLANNED_START_DATE, SD.PLANNED_COMP_DATE, SD.WORK_CENTER, SD.IS_DISPATCH, SD.EMPLOYEE_DESCRIPTION, + SD.ACTUAL_START_DATE, SD.ACTUAL_COMPLETE_DATE, SD.REMARK, SD.DISPATCH_SEQ, SD.EARLIEST_START_DATE, SD.LATEST_END_DATE, + IM.LOT_SIZE, SD.TURN_OPERATION, SD.BLANKING_SIZE, WR.WORK_CENTER ) WIP LEFT JOIN Z_SFC_DISPATCH V1 ON V1.SITE = WIP.SITE AND V1.SFC = WIP.SFC AND V1.DISPATCH_SEQ = WIP.BEFORE_SEQ LEFT JOIN Z_SFC_DISPATCH V2 ON V2.SITE = WIP.SITE AND V2.SFC = WIP.SFC AND V2.DISPATCH_SEQ = WIP.AFTER_SEQ @@ -770,7 +786,7 @@ UPDATE Z_SFC_DISPATCH SET DISPATCH_STATUS = #{dispatchStatus}, MODIFY_USER = #{modifyUser}, MODIFIED_DATE_TIME = #{modifiedDateTime} - , ACTUAL_COMPLETE_DATE = #{modifiedDateTime} + , ACTUAL_COMPLETE_DATE = #{modifiedDateTime} , ACTUAL_PROD_HOURS = #{workHour} , ACTUAL_START_DATE = #{modifiedDateTime} @@ -783,17 +799,18 @@ FROM Z_SFC_DISPATCH zsd SITE = #{site} - - - AND SFC = #{sfcDispatch.sfc} - - - + AND RESRCE IS NOT NULL + AND SFC = #{sfcDispatch.sfc} + AND MODIFIED_DATE_TIME = ( + SELECT MAX(zsd2.MODIFIED_DATE_TIME) FROM Z_SFC_DISPATCH zsd2 + WHERE SFC=#{sfcDispatch.sfc} AND zsd2.RESRCE IS NOT NULL + ) + diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/NcCodeServiceImpl.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/NcCodeServiceImpl.java index 10d4c511..54885741 100644 --- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/NcCodeServiceImpl.java +++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/NcCodeServiceImpl.java @@ -84,6 +84,9 @@ public class NcCodeServiceImpl extends ServiceImpl impleme @Override public List findNcCodeDescriptionByNcCode(String ncCode) { String site = CommonMethods.getSite(); + if(StringUtils.isBlank(ncCode)){ + return null; + } String locale = LocaleContextHolder.getLocale().getLanguage(); String[] split = ncCode.split(","); diff --git a/production/src/main/java/com/foreverwin/mesnac/production/controller/SfcScrapController.java b/production/src/main/java/com/foreverwin/mesnac/production/controller/SfcScrapController.java index eb582857..4158f1a5 100644 --- a/production/src/main/java/com/foreverwin/mesnac/production/controller/SfcScrapController.java +++ b/production/src/main/java/com/foreverwin/mesnac/production/controller/SfcScrapController.java @@ -138,11 +138,11 @@ public class SfcScrapController { * @return */ @GetMapping("/getScrapDtoBysfc") - public R getScrapDtoBysfc(String site,String sfc){ + public R getScrapDtoBysfc(String site,String abnormalNo,String sfc){ try{ - return R.ok(anomalyService.getScrapDtoBysfc(site,sfc)); + return R.ok(anomalyService.getScrapDtoBysfc(abnormalNo,site,sfc)); }catch (Exception e){ - return R.failed("产品报废检索报错"+e.getMessage()); + return R.failed("产品报废检索报错:"+e.getMessage()); } } diff --git a/production/src/main/java/com/foreverwin/mesnac/production/mapper/SplitSfcMapper.java b/production/src/main/java/com/foreverwin/mesnac/production/mapper/SplitSfcMapper.java index 4ef0f0ca..4ca6d14e 100644 --- a/production/src/main/java/com/foreverwin/mesnac/production/mapper/SplitSfcMapper.java +++ b/production/src/main/java/com/foreverwin/mesnac/production/mapper/SplitSfcMapper.java @@ -21,4 +21,5 @@ public interface SplitSfcMapper extends BaseMapper { SfcDto getSfcData(@Param("handle") String handle); SplitSfcDto getAbnormalQty(@Param("site") String site, @Param("sfc") String sfc, @Param("operation") String operation,@Param("abnormalNo") String abnormalNo); + } \ No newline at end of file diff --git a/production/src/main/java/com/foreverwin/mesnac/production/model/SfcScrap.java b/production/src/main/java/com/foreverwin/mesnac/production/model/SfcScrap.java index be8fee96..d3cb4ee7 100644 --- a/production/src/main/java/com/foreverwin/mesnac/production/model/SfcScrap.java +++ b/production/src/main/java/com/foreverwin/mesnac/production/model/SfcScrap.java @@ -85,6 +85,11 @@ public class SfcScrap extends Model { @TableField("MODIFIED_DATE_TIME") private LocalDateTime modifiedDateTime; + @TableField("DUTY_USER") + private String dutyUser; + + + public String getHandle() { return handle; @@ -182,7 +187,15 @@ public class SfcScrap extends Model { this.modifiedDateTime = modifiedDateTime; } -public static final String HANDLE = "HANDLE"; + public String getDutyUser() { + return dutyUser; + } + + public void setDutyUser(String dutyUser) { + this.dutyUser = dutyUser; + } + + public static final String HANDLE = "HANDLE"; public static final String SITE = "SITE"; diff --git a/production/src/main/java/com/foreverwin/mesnac/production/service/SfcScrapService.java b/production/src/main/java/com/foreverwin/mesnac/production/service/SfcScrapService.java index 8903d827..46ac41b1 100644 --- a/production/src/main/java/com/foreverwin/mesnac/production/service/SfcScrapService.java +++ b/production/src/main/java/com/foreverwin/mesnac/production/service/SfcScrapService.java @@ -29,6 +29,11 @@ public interface SfcScrapService extends IService { List selectList(SfcScrap sfcScrap); + /** + * 报废sfc,报废SFC的全部数量 + * @param param + * @return + */ List scrap(HashMap param) ; public void generatorWord(String shopOrder, String sfc, HttpServletResponse response, HttpServletRequest request); diff --git a/production/src/main/java/com/foreverwin/mesnac/production/service/impl/PodTemplateServiceImpl.java b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/PodTemplateServiceImpl.java index bb6d89a6..3be420a2 100644 --- a/production/src/main/java/com/foreverwin/mesnac/production/service/impl/PodTemplateServiceImpl.java +++ b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/PodTemplateServiceImpl.java @@ -30,9 +30,11 @@ import com.foreverwin.mesnac.meapi.service.*; import com.foreverwin.mesnac.production.mapper.SfcCrossMapper; import com.foreverwin.mesnac.production.mapper.SfcDataAssembleMapper; import com.foreverwin.mesnac.production.model.LoadInventory; +import com.foreverwin.mesnac.production.model.SfcHoldLog; import com.foreverwin.mesnac.production.service.LoadInventoryService; import com.foreverwin.mesnac.production.service.PodTemplateService; import com.foreverwin.mesnac.production.service.SfcCrossService; +import com.foreverwin.mesnac.production.service.SfcHoldLogService; import com.foreverwin.modular.core.exception.BaseException; import com.foreverwin.modular.core.meext.MEServices; import com.foreverwin.modular.core.util.CommonMethods; @@ -88,6 +90,8 @@ public class PodTemplateServiceImpl implements PodTemplateService { private SfcDispatchCommonService sfcDispatchCommonService; @Autowired private LoadInventoryService loadInventoryService; + @Autowired + private SfcHoldLogService sfcHoldLogService; @Override public Map resrceEnter(WorkCenterDto workCenterDto) { @@ -235,7 +239,7 @@ public class PodTemplateServiceImpl implements PodTemplateService { ExceptionUtil.throwException(e); } //更改派工单状态 - sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dispatchNo, DispatchStatusEnum.START.getCode()); + sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dispatchNo, DispatchStatusEnum.START.getCode(),null); }); } @@ -309,9 +313,18 @@ public class PodTemplateServiceImpl implements PodTemplateService { LocalDateTime startTime = sfcService.getSfcStartTime(HandleEnum.SFC.getHandle(site, sfc)); long workHourSeconds = Duration.between(startTime, LocalDateTime.now()).getSeconds(); BigDecimal workHour = new BigDecimal(workHourSeconds).divide(BigDecimal.valueOf(3600), 2, RoundingMode.HALF_UP); + //减去暂停时间 + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq(SfcHoldLog.SFC,sfc); + queryWrapper.eq(SfcHoldLog.STEP_ID,stepId); + List list = sfcHoldLogService.list(queryWrapper); + if (!list.isEmpty()){ + BigDecimal holdTime = list.stream().map(SfcHoldLog::getHoldDuration).reduce(BigDecimal.ZERO, BigDecimal::add); + workHour=workHour.subtract(holdTime); + } sfcCrossService.completeAction(site, currentRevisionRef.getHandle(), resrce, sfcServiceById.getHandle(), qty); //更改派工单状态 - sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dispatchNo, DispatchStatusEnum.COMPLETE.getCode()); + sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dispatchNo, DispatchStatusEnum.COMPLETE.getCode(),workHour); //报工 sendErp(sfc, stepId, qty, BigDecimal.ZERO, workHour); } catch (Exception e) { diff --git a/production/src/main/java/com/foreverwin/mesnac/production/service/impl/SfcScrapServiceImpl.java b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/SfcScrapServiceImpl.java index d0124891..2d545a37 100644 --- a/production/src/main/java/com/foreverwin/mesnac/production/service/impl/SfcScrapServiceImpl.java +++ b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/SfcScrapServiceImpl.java @@ -12,6 +12,7 @@ import com.foreverwin.mesnac.common.util.StringUtil; import com.foreverwin.mesnac.meapi.mapper.SfcMapper; import com.foreverwin.mesnac.meapi.model.Sfc; import com.foreverwin.mesnac.production.mapper.SfcScrapMapper; +import com.foreverwin.mesnac.production.mapper.SplitSfcMapper; import com.foreverwin.mesnac.production.model.SfcScrap; import com.foreverwin.mesnac.production.service.PodTemplateService; import com.foreverwin.mesnac.production.service.SfcScrapService; @@ -77,6 +78,9 @@ public class SfcScrapServiceImpl extends ServiceImpl i @Autowired private UserService userService; + @Autowired + private SplitSfcMapper splitSfcMapper; + @Override public IPage selectPage(FrontPage frontPage, SfcScrap sfcScrap) { QueryWrapper queryWrapper = new QueryWrapper<>(); @@ -92,6 +96,7 @@ public class SfcScrapServiceImpl extends ServiceImpl i } + @Override public List scrap(HashMap param) { String user = CommonMethods.getUser(); @@ -110,7 +115,6 @@ public class SfcScrapServiceImpl extends ServiceImpl i } } - String str = JSONUtil.toJsonStr(param.get("sfcScrap")); List _sfcScrapList = JSONArray.parseArray(str, SfcScrap.class); List sfcScrapsList = new ArrayList<>(); @@ -136,7 +140,6 @@ public class SfcScrapServiceImpl extends ServiceImpl i throw new BaseException("该sfc不存在,不能报废"); } - if(!StringUtil.isBlank(sfcScraps.getOperation())){ String[] split = sfcScraps.getOperation().split("/"); sfcScrap.setOperation(split[0]); @@ -144,16 +147,19 @@ public class SfcScrapServiceImpl extends ServiceImpl i } sfcScrap.setType(type.toString()); sfcScrap.setReason(reason); + //判断该SFC的数量是否>=0; + if(sfc.getQty() <= 0){ + throw new BaseException("该sfc的数量为0,不能报废"); + } sfcScrap.setQty(sfc.getQty()); + sfcScrap.setDutyUser(sfcScraps.getDutyUser()); sfcScrap.setCreatedUser(user); sfcScrap.setCreatedDateTime(now); sfcScrap.setModifiedUser(user); sfcScrap.setModifiedDateTime(now); - - //向生产派工那边发送数据 - // podTemplateService.sendErp(sfcScrap.getSfc(),sfcScrap.getStepId(),BigDecimal.valueOf(0L),BigDecimal.valueOf(sfcScrap.getQty())); + podTemplateService.sendErp(sfcScrap.getSfc(),sfcScrap.getStepId(),BigDecimal.valueOf(0L),BigDecimal.valueOf(sfcScrap.getQty()),BigDecimal.valueOf(0L)); try{ //调用mes公共接口,报废 @@ -165,7 +171,6 @@ public class SfcScrapServiceImpl extends ServiceImpl i throw new BaseException("调用mes公共接口失败"+e.getMessage()); } - sfcScrapsList.add(sfcScrap); } //保存 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 890b58ec..a3a781c6 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 @@ -101,6 +101,9 @@ public class SplitSfcServiceImpl extends ServiceImpl i if (sfcDto==null){ throw new BaseException("未找到闭环关闭的质量异常"); } + if(StringUtil.isBlank(sfcDto.getNcQty())){ + throw new BaseException("质量异常提报不良品数量为空,不能拆分"); + } sfcData.setQty(Double.valueOf(sfcDto.getNcQty())); sfcData.setAbnormalNo(sfcDto.getAbnormalNo()); return sfcData; diff --git a/production/src/main/java/com/foreverwin/mesnac/production/service/impl/WorkShopTransferServiceImpl.java b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/WorkShopTransferServiceImpl.java index eee5765c..c3749a3d 100644 --- a/production/src/main/java/com/foreverwin/mesnac/production/service/impl/WorkShopTransferServiceImpl.java +++ b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/WorkShopTransferServiceImpl.java @@ -28,6 +28,7 @@ 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.ArrayList; @@ -152,7 +153,7 @@ public class WorkShopTransferServiceImpl extends ServiceImpl + diff --git a/quality/src/main/java/com/foreverwin/mesnac/quality/model/SelfReport.java b/quality/src/main/java/com/foreverwin/mesnac/quality/model/SelfReport.java index d26629f9..bf6b6302 100644 --- a/quality/src/main/java/com/foreverwin/mesnac/quality/model/SelfReport.java +++ b/quality/src/main/java/com/foreverwin/mesnac/quality/model/SelfReport.java @@ -145,7 +145,19 @@ public class SelfReport extends Model { @TableField(exist = false) private String description; + /** + * 产品类型 + */ + @TableField(exist = false) + private String productCategory; + public String getProductCategory() { + return productCategory; + } + + public void setProductCategory(String productCategory) { + this.productCategory = productCategory; + } public String getHandle() { return handle; diff --git a/quality/src/main/resources/mapper/SelfReportMapper.xml b/quality/src/main/resources/mapper/SelfReportMapper.xml index de56462e..11fdb2e8 100644 --- a/quality/src/main/resources/mapper/SelfReportMapper.xml +++ b/quality/src/main/resources/mapper/SelfReportMapper.xml @@ -563,6 +563,8 @@ JOIN ITEM I ON I.ITEM = ZSR.ITEM AND I.CURRENT_REVISION='true' LEFT JOIN ITEM_T IT ON I.HANDLE = IT.ITEM_BO AND IT.LOCALE = #{locale} LEFT JOIN Z_NWA_USER B ON ZSR.SITE = B.SITE AND ZSR.CREATE_USER = B.USER_NAME + JOIN SHOP_ORDER SO ON SO.shop_order=zsr.SHOP_order and so.site=zsr.site + LEFT JOIN CUSTOM_FIELDS PC ON PC.HANDLE = SO.HANDLE AND PC."ATTRIBUTE" = 'PRODUCT_CATEGORY' @@ -598,6 +600,7 @@ + AND PC.VALUE LIKE '%'|| #{ew.entity.productCategory}|| '%' AND ZSR.CREATED_DATE_TIME >=#{startTime} AND ZSR.CREATED_DATE_TIME <=#{endTime}