From 95759dd8763c2e9e014d24d7d788b4817285b9bd Mon Sep 17 00:00:00 2001 From: jun Date: Tue, 20 Aug 2024 19:00:43 +0800 Subject: [PATCH] =?UTF-8?q?42582=20=E7=BA=BF=E8=BE=B9=E5=BA=93=E5=AD=98?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...MesShippingOrderManagementDetailController.java | 6 ++- .../base/MesProductionRecordServiceImpl.java | 58 +++++++++++++++------- .../MesShippingOrderManagementDetailService.java | 4 +- 3 files changed, 47 insertions(+), 21 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java index a434b2d..f04f835 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base; import cn.estsh.i3plus.ext.mes.api.base.IMesShippingOrderManagementDetailService; +import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel; import cn.estsh.i3plus.pojo.base.common.Pager; @@ -15,7 +16,7 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.List; +import java.util.Objects; @Api("发运单管理明细") @RestController @@ -55,8 +56,9 @@ public class MesShippingOrderManagementDetailController extends BaseMesControlle @ApiOperation(value = "发运退回", notes = "发运退回") @PutMapping("/doShippingBack") - public ResultBean doShippingBack(Long[] idList) { + public ResultBean doShippingBack(@RequestBody Long[] idList) { try { + if(Objects.isNull(idList) || idList.length <= 0) MesException.throwMesBusiException("选择数据无效,请检查"); shippingOrderManagementDetailService.doShippingBack(idList,AuthUtil.getOrganizeCode(),AuthUtil.getSessionUser().getUserName()); return ResultBean.success("退回成功"); } catch (ImppBusiException e) { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java index 8014fe6..f21ff96 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java @@ -1,12 +1,9 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; -import cn.estsh.i3plus.ext.mes.api.base.IMesProdRuleNosortCfgService; import cn.estsh.i3plus.ext.mes.api.base.IMesProductionRecordService; import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesProdRuleNosortCfgDao; import cn.estsh.i3plus.ext.mes.apiservice.utils.BeanUtil; import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; -import cn.estsh.i3plus.ext.mes.pojo.util.OverwriteStringJoin; -import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; @@ -14,11 +11,11 @@ import cn.estsh.i3plus.pojo.base.common.PagerHelper; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.util.StringUtil; -import cn.estsh.i3plus.pojo.mes.bean.MesPart; import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg; +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel; -import cn.estsh.i3plus.pojo.mes.repository.MesProdRuleNoSortCfgRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import lombok.extern.slf4j.Slf4j; import org.hibernate.SQLQuery; @@ -33,6 +30,8 @@ import javax.persistence.Query; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * @Description : 设备加工记录表 @@ -50,6 +49,9 @@ public class MesProductionRecordServiceImpl extends BaseMesService findMesProductionRecord(String organizeCode, String sn) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); @@ -72,23 +74,45 @@ public class MesProductionRecordServiceImpl extends BaseMesService queryMesProductionOffLine(MesProductionRecordModel mesProductionRecordModel, Pager pager) { List mesProdRuleNosortCfgs = mesProdRuleNosortCfgDao.findMesProdRuleNosortCfgByWorkCellCode(mesProductionRecordModel.getOnLineWorkCellCode(), mesProductionRecordModel.getPartNo(), mesProductionRecordModel.getOrganizeCode()); if(CollectionUtils.isEmpty(mesProdRuleNosortCfgs) || StringUtil.isEmpty(mesProdRuleNosortCfgs.iterator().next().getOutPartNo())) return new ListPager<>(new ArrayList<>(),pager); + //筛选下线工位的当前零件的产成条码 + List mesProduceSnList = getMesProduceSnList(mesProductionRecordModel); + if(CollectionUtils.isEmpty(mesProduceSnList)) return new ListPager<>(new ArrayList<>(),pager); + //在上线工位消耗进料条码且没有报工 DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProductionRecordModel.getOrganizeCode()); - DdlPreparedPack.getInPackArray(new Object[]{mesProdRuleNosortCfgs.iterator().next().getOutPartNo(),mesProductionRecordModel.getPartNo()},"partNo",packBean); - DdlPreparedPack.getInPackArray(new Object[]{mesProductionRecordModel.getOffLineWorkCellCode(),mesProductionRecordModel.getOnLineWorkCellCode()},"workCellCode",packBean); - DdlPreparedPack.getStringBiggerPack(mesProductionRecordModel.getCreateDateTimeStart(),"createDatetime",packBean); - DdlPreparedPack.getStringSmallerPack(mesProductionRecordModel.getCreateDateTimeEnd(),"createDatetime",packBean); - DdlPreparedPack.getNumEqualPack( MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue(),"reportStatus",packBean); - pager = PagerHelper.getPager(pager, baseRDao.findByHqlWhereCount(packBean)); - List productionRecordList = baseRDao.findByHqlWherePage(packBean,pager); - if(CollectionUtils.isEmpty(productionRecordList)) return new ListPager<>(new ArrayList<>(),pager); + DdlPreparedPack.getStringEqualPack(mesProdRuleNosortCfgs.iterator().next().getOutPartNo(),"partNo",packBean); + DdlPreparedPack.getStringEqualPack(mesProductionRecordModel.getOnLineWorkCellCode(),"workCellCode",packBean); + DdlPreparedPack.getInPackList(mesProduceSnList.stream().map(MesProduceSn::getProductSn).distinct().collect(Collectors.toList()),"productSn",packBean); + List productionRecordList = baseRDao.findByHqlWhere(packBean); + Map productionRecordMap = new HashMap<>(); + if(!CollectionUtils.isEmpty(productionRecordList)){ + for (MesProductionRecord productionRecord : productionRecordList) { + productionRecordMap.put(productionRecord.getProductSn(),productionRecord); + } + } + //数据组装 List mesProductionRecordModelList = new ArrayList<>(); MesProductionRecordModel model; - for (MesProductionRecord mesProductionRecord : productionRecordList) { + for (MesProduceSn mesProduceSn : mesProduceSnList) { model = new MesProductionRecordModel(); - BeanUtils.copyProperties(mesProductionRecord,model); - model.setOffLineWorkCellCode(mesProductionRecord.getWorkCellCode()); + BeanUtils.copyProperties(mesProduceSn,model); + if(!productionRecordMap.containsKey(mesProduceSn.getProductSn()) || (productionRecordMap.containsKey(mesProduceSn.getProductSn()) && MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue() == productionRecordMap.get(mesProduceSn.getProductSn()).getReportStatus())){ + model.setOffLineWorkCellCode(mesProduceSn.getWorkCellCode()); + mesProductionRecordModelList.add(model); + } } - return new ListPager<>(mesProductionRecordModelList, pager); + pager = PagerHelper.getPager(pager, mesProductionRecordModelList.size()); + return new ListPager<>(mesProductionRecordModelList.subList(pager.getStartRow(), + Math.min(pager.getPageSize() * pager.getCurrentPage(), mesProductionRecordModelList.size())), pager); + } + + private List getMesProduceSnList(MesProductionRecordModel mesProductionRecordModel) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProductionRecordModel.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(mesProductionRecordModel.getPartNo(),"partNo",packBean); + DdlPreparedPack.getStringEqualPack(mesProductionRecordModel.getOffLineWorkCellCode(),"workCellCode",packBean); + DdlPreparedPack.getStringBiggerPack(mesProductionRecordModel.getCreateDateTimeStart(),"createDatetime",packBean); + DdlPreparedPack.getStringSmallerPack(mesProductionRecordModel.getCreateDateTimeEnd(),"createDatetime",packBean); + DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue(),"snStatus",packBean); + return mesProduceSnRepository.findByHqlWhere(packBean); } private ListPager queryERPMaterialStockHqlPager(MesProductionRecord mesProductionRecord, Pager pager) { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java index 6358836..3919fe0 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java @@ -67,7 +67,7 @@ public class MesShippingOrderManagementDetailService extends BaseMesService detailList = getManagementDetails(idList, organizeCode, userName); - if (CollectionUtils.isEmpty(detailList)) return; + if (CollectionUtils.isEmpty(detailList)) MesException.throwMesBusiException("选择数据无效,请检查"); Map> mesProduceSnMap = getMesProduceSnMap(organizeCode, detailList); List updateMesProduceSn = new ArrayList<>(); for (MesShippingOrderManagementDetail detail : detailList) { @@ -91,7 +91,7 @@ public class MesShippingOrderManagementDetailService extends BaseMesService> getMesProduceSnMap(String organizeCode, List detailList) { - List snList = detailList.stream().map(MesShippingOrderManagementDetail::getBarcode).filter(StringUtils::isEmpty).collect(Collectors.toList()); + List snList = detailList.stream().map(MesShippingOrderManagementDetail::getBarcode).collect(Collectors.toList()); if (CollectionUtils.isEmpty(snList)) MesException.throwMesBusiException("发运单条码信息不存在"); List mesProduceSnList = mesProduceSnService.findMesProduceSnList(organizeCode, snList); return mesProduceSnList.stream().collect(Collectors.groupingBy(MesProduceSn::getProductSn));