diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesBoxingErrorProofingController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesBoxingErrorProofingController.java index 1e43637..3c5a6ed 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesBoxingErrorProofingController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesBoxingErrorProofingController.java @@ -82,6 +82,23 @@ public class MesBoxingErrorProofingController { } } + @GetMapping("/do-second-scan") + @ApiOperation(value = "二次装箱扫描") + public ResultBean doSecondScan(MesPackageDetail mesPackageDetail) { + + try { + ValidatorBean.checkNotNull(mesPackageDetail.getPackageNo(), "箱条码不能为空"); + + mesPackageDetail.setOrganizeCode(!StringUtils.isEmpty(mesPackageDetail.getOrganizeCode())?mesPackageDetail.getOrganizeCode():AuthUtil.getOrganizeCode()); + ConvertBean.serviceModelInitialize(mesPackageDetail,!StringUtils.isEmpty(mesPackageDetail.getModifyUser())?mesPackageDetail.getModifyUser():AuthUtil.getSessionUser().getUserName()); + return mesBoxingErrorProofingService.doScan(mesPackageDetail); + } catch (ImppBusiException imppException) { + return ResultBean.fail(imppException); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + @PostMapping("/mes-package-details/saveAll") @ApiOperation(value = "保存包装明细") diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java index 2ca04dc..979c58a 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java @@ -149,7 +149,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer //校验包装条码信息 MesPackage mesPackage = getMesPackageAndCheck(mesPackageDetail.getPackageNo(), mesPackageDetail.getOrganizeCode()); //校验是否已关闭 - if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesPackage.getIsSealed() ) { + if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesPackage.getIsSealed()) { List produceSnList = mesProduceSnExtService.getProduceSnList(mesPackageDetail.getOrganizeCode(), mesPackageDetail.getSerialNumber()); //1.查询包装明细是否包含此零件 List defineDetails = getMesPackingDefineDetailsNew(mesPackageDetail.getOrganizeCode(), mesPackage.getPackageSn(), mesPackage.getPartNo()); @@ -166,12 +166,12 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer //校验条码规则 MesPart mesPart = getMesPartNew(mesPackageDetail, mesPackage, packingDefine); //包装规格明细 - MesPackageDetail saveMesPackageDetail = getPackageDetail(mesPackageDetail, mesPart); + MesPackageDetail saveMesPackageDetail = getPackageDetail(mesPackageDetail, mesPart, packingDefine); if (mesPackageDetail.getIsMemoryBoolean()) { //保存包装明细 mesPackageDetailRDao.insert(saveMesPackageDetail); //更新包装表 - updateMesPackage(mesPackage, mesPackageDetail.getModifyUser(), 1d, false); + updateMesPackage(mesPackage, mesPackageDetail.getModifyUser(), 1d, false, packingDefine); } //缓存是否记忆开关 saveRedis(getKey(mesPackageDetail.getOrganizeCode(), mesPackageDetail.getModifyUser()),mesPackageDetail.getIsMemory()); @@ -200,7 +200,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer mesPackageDetailRDao.saveAll(saveMesPackageDetailList); int qty = saveMesPackageDetailList.size(); //更新包装表 - updateMesPackage(mesPackage, userName, qty, false); + updateMesPackage(mesPackage, userName, qty, false, null); } if(mesPackage.getIsSealed() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){ return ResultBean.success("当前箱条码已完成装箱,请扫描下一个箱条码!").setResultObject(mesPackage); @@ -227,7 +227,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer MesPcnException.throwMesBusiException("箱条码[%s]下不存在零件条码,不允许关箱,请检查数据!", mesPackage.getPackageNo()); } //关箱 - updateMesPackage(mesPackageDb, mesPackage.getModifyUser(), 0d, true); + updateMesPackage(mesPackageDb, mesPackage.getModifyUser(), 0d, true, null); return ResultBean.success("关箱成功!"); } else { if (CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() == mesPackageDb.getIsSealed()) { @@ -294,31 +294,34 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer } } - private MesPart getMesPart(MesPackageDetail mesPackageDetail, MesPackage mesPackage, MesPackingDefine packingDefine) { - //校验是否重复扫描 - checkSerialNumber(mesPackageDetail); - //获取包装定义明细 - List defineDetails = getMesPackingDefineDetails(mesPackageDetail.getOrganizeCode(), mesPackage.getPackageSn()); - //校验是否包含 -// String partNo = getPartNo(mesPackageDetail, mesPackage, defineDetails); - //校验条码信息 - String partNo = checkSn(mesPackageDetail, packingDefine, mesPackage, defineDetails); - //物料信息 - return getPart(mesPackageDetail.getOrganizeCode(), partNo); - } +// private MesPart getMesPart(MesPackageDetail mesPackageDetail, MesPackage mesPackage, MesPackingDefine packingDefine) { +// //校验是否重复扫描 +// checkSerialNumber(mesPackageDetail); +// //获取包装定义明细 +// List defineDetails = getMesPackingDefineDetails(mesPackageDetail.getOrganizeCode(), mesPackage.getPackageSn()); +// //校验是否包含 +//// String partNo = getPartNo(mesPackageDetail, mesPackage, defineDetails); +// //校验条码信息 +// String partNo = checkSn(mesPackageDetail, packingDefine, mesPackage, defineDetails); +// //物料信息 +// return getPart(mesPackageDetail.getOrganizeCode(), partNo); +// } private MesPart getMesPartNew(MesPackageDetail mesPackageDetail, MesPackage mesPackage, MesPackingDefine packingDefine) { //校验是否重复扫描 - checkSerialNumber(mesPackageDetail); + checkSerialNumber(mesPackageDetail, packingDefine); //校验条码信息 String partNo = checkSnNew(mesPackageDetail, packingDefine, mesPackage); //物料信息 return getPart(mesPackageDetail.getOrganizeCode(), partNo); } - private void checkSerialNumber(MesPackageDetail mesPackageDetail) { + private void checkSerialNumber(MesPackageDetail mesPackageDetail, MesPackingDefine packingDefine) { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPackageDetail.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(mesPackageDetail.getSerialNumber(), MesPcnExtConstWords.SERIAL_NUMBER, ddlPackBean); + if (Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), packingDefine.getIsConfirmCheck())) { + DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isSecondPack", ddlPackBean); + } if (mesPackageDetailRDao.isExitByHql(ddlPackBean)) { MesPcnException.throwMesBusiException("零件条码[%s]已装箱,请检查数据!", mesPackageDetail.getSerialNumber()); } @@ -387,13 +390,15 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer } - private void updateMesPackage(MesPackage mesPackage, String userName, double qty, boolean close) { + private void updateMesPackage(MesPackage mesPackage, String userName, double qty, boolean close, MesPackingDefine packingDefine) { mesPackage.setQty(MathOperation.add(mesPackage.getQty(), qty)); if (mesPackage.getPackSpecQty() <= mesPackage.getQty() || close) { mesPackage.setIsSealed(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); mesPackage.setLotNo(TimeTool.getToday()); //数据写入接口表回传wms - saveMesPackageResult(mesPackage, userName); + if (packingDefine == null || !Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), packingDefine.getIsConfirmCheck())) { + saveMesPackageResult(mesPackage, userName); + } } ConvertBean.serviceModelUpdate(mesPackage, userName); mesPackageRDao.update(mesPackage); @@ -418,7 +423,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer return mesPackageDetails; } - private MesPackageDetail getPackageDetail(MesPackageDetail mesPackageDetail, MesPart mesPart) { + private MesPackageDetail getPackageDetail(MesPackageDetail mesPackageDetail, MesPart mesPart, MesPackingDefine packingDefine) { MesPackageDetail saveMesPackageDetail = new MesPackageDetail(); saveMesPackageDetail.setPackageNo(mesPackageDetail.getPackageNo()); saveMesPackageDetail.setSerialNumber(mesPackageDetail.getSerialNumber()); @@ -426,6 +431,11 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer saveMesPackageDetail.setPartName(mesPart.getPartName()); saveMesPackageDetail.setQty(1d); saveMesPackageDetail.setOrganizeCode(mesPackageDetail.getOrganizeCode()); + if (packingDefine != null && Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), packingDefine.getIsConfirmCheck())) { + saveMesPackageDetail.setIsSecondPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + } else { + saveMesPackageDetail.setIsSecondPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + } ConvertBean.serviceModelInitialize(saveMesPackageDetail, mesPackageDetail.getCreateUser()); return saveMesPackageDetail; } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java index b219e37..61fe8ed 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java @@ -773,7 +773,7 @@ public class MesNcProcessingService implements IMesNcProcessingService { mesPartInspectionPerson.setPid(model.getPartInspection().getId()); DdlPackBean partyPackBean = DdlPackBean.getDdlPackBean(org); - DdlPreparedPack.getStringEqualPack(mesNcPersonModel.getOnlyPerson(), "responsibleParty", partyPackBean); + DdlPreparedPack.getStringLikerPack(mesNcPersonModel.getOnlyPerson(), "responsibleParty", partyPackBean); MesOrg mesOrg = mesOrgRDao.getByProperty(partyPackBean); mesPartInspectionPerson.setResponsibleParty(mesOrg.getResponsibleParty()); @@ -850,7 +850,7 @@ public class MesNcProcessingService implements IMesNcProcessingService { mesPartInspectionPerson.setPid(model.getPartInspection().getId()); DdlPackBean partyPackBean = DdlPackBean.getDdlPackBean(org); - DdlPreparedPack.getStringEqualPack(mesNcPersonModel.getOnlyPerson(), "responsibleParty", partyPackBean); + DdlPreparedPack.getStringLikerPack(mesNcPersonModel.getOnlyPerson(), "responsibleParty", partyPackBean); MesOrg mesOrg = mesOrgRDao.getByProperty(partyPackBean); if (mesOrg ==null) { throw new ImppBusiException(String.format("责任人【%s】不存在", mesNcPersonModel.getOnlyPerson())); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingKanbanCfgServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingKanbanCfgServiceImpl.java index ea202d7..8054d35 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingKanbanCfgServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingKanbanCfgServiceImpl.java @@ -5,10 +5,9 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.model.CustQtyByTimeChartDataModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesShippingKanbanCfgModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesShippingKanbanModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesShippingKanbanViewModel; -import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ShippingKanbanCacheModel; import cn.estsh.i3plus.mes.pcn.util.DateUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; -import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; @@ -25,6 +24,7 @@ import cn.estsh.i3plus.pojo.mes.repository.MesShippingKanbanCfgRepository; import cn.estsh.i3plus.pojo.mes.repository.seres.IMesCimSeresJisVinOverPointRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.hutool.core.util.NumberUtil; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -38,6 +38,7 @@ import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; +@Slf4j @Service public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgService { @Autowired @@ -169,6 +170,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer cfgDetailMap = cfgModel.getDetails().stream().collect(Collectors.toMap(MesShippingKanbanCfgDetail::getDetailCode, v -> v)); } + ShippingKanbanCacheModel cacheModel = new ShippingKanbanCacheModel(); for (MesExtEnumUtil.SHIPPING_KANBAN_DETAIL_INDEX index : MesExtEnumUtil.SHIPPING_KANBAN_DETAIL_INDEX.values()) { MesShippingKanbanCfgDetail cfgDetail = cfgDetailMap != null ? cfgDetailMap.get(index.getValue()) : null; if (cfgDetail == null || cfgDetail.getIsShow() == null || cfgDetail.getIsShow() != CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() || cfgDetail.getOrderNumber() == null) { @@ -192,49 +194,49 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer List values = null; switch (index) { case CLIENT_STOCK_QTY: - values = getClientStockQty(cfg); + values = getClientStockQty(cfg, cacheModel); break; case WAIT_SHIPPING_QTY: - values = getWaitShippingQty(cfg, cfgDetail); + values = getWaitShippingQty(cfg); break; case CP_WAIT_SHIPPING_QTY: - values = getCPWaitShippingQty(cfg, cfgDetail); + values = getCPWaitShippingQty(cfg); break; case WAIT_PRODUCT_QTY: - values = getWaitProductQty(cfg, cfgDetail); + values = getWaitProductQty(cfg); break; case LAST_SHIPPING_TIME: - values = getLastShippingTime(cfg, cfgDetail); + values = getLastShippingTime(cfg); break; case CP_LAST_SHIPPING_TIME: - values = getCPLastShippingTime(cfg, cfgDetail); + values = getCPLastShippingTime(cfg); break; case NEXT_SHIPPING_TIME: - values = getNextShippingTime(cfg, cfgDetail); + values = getNextShippingTime(cfg, cacheModel); break; case TREE_STOP_WARNING: - values = getTreeStopWarning(cfg, cfgDetail); + values = getTreeStopWarning(cfg, cacheModel); break; case SHIPPING_VIN: - values = getShippingVin(cfg, cfgDetail); + values = getShippingVin(cfg); break; case CP_SHIPPING_VIN: - values = getCPShippingVin(cfg, cfgDetail); + values = getCPShippingVin(cfg); break; case TODAY_ONLINE: - values = getTodayOnline(cfg, cfgDetail); + values = getTodayOnline(cfg); break; case TODAY_SHIPPING: - values = getTodayShipping(cfg, cfgDetail); + values = getTodayShipping(cfg); break; case TODAY_CAR: - values = getTodayCar(cfg, cfgDetail); + values = getTodayCar(cfg); break; case CLIENT_JPH: - values = getClientJPH(cfg, cfgDetail); + values = getClientJph(cfg); break; case PRODUCT_JPH: - values = getProductJPH(cfg, cfgDetail); + values = getProductJph(cfg); break; } if (values == null) { @@ -437,9 +439,6 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 最新下线的排序发运单客户流水号 - * @param organizeCode - * @param shippingGroupCodes - * @return */ private String getMaxOffNumber(String organizeCode, List shippingGroupCodes) { String vinCode = getMesShippingVin(organizeCode, shippingGroupCodes, Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())); @@ -465,10 +464,12 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 客户端库存 * 最新下线的排序发运单客户流水号(SERIAL_NUMBER)- 赛力斯上线的最新流水号+调整值。 - * @param cfg - * @return + * @param cfg 看板配置 */ - private List getClientStockQty(MesShippingKanbanCfg cfg) { + private List getClientStockQty(MesShippingKanbanCfg cfg, ShippingKanbanCacheModel cacheModel) { + if (cacheModel.getClientStockQty() != null) { + return cacheModel.getClientStockQty(); + } List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { @@ -505,17 +506,16 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer int adjustValue = cfg.getAdjustValue() != null ? cfg.getAdjustValue() : 0; int result = Integer.parseInt(offNumber) - Integer.parseInt(onNumber) + adjustValue; values.add(String.valueOf(result)); + cacheModel.setClientStockQty(values); return values; } /** * 待发运数量 * 排序单装箱扫描流水号-发运扫描流水号,精排最新流水号-辊道线下件流水号(cockpit) - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getWaitShippingQty(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getWaitShippingQty(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { @@ -557,15 +557,23 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append("select new Map(s.shippingGroupCode as shippingGroupCode, COUNT(sd.id) as COUNT)"); hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid "); hql.append(" and s.status = :status "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } hql.append(" group by s.shippingGroupCode"); - List ddd = entityManager.createQuery(hql.toString()) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue()) - .setParameter("shippingGroupCode", strShippingGroupList) - .getResultList(); + Query query = entityManager.createQuery(hql.toString()); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue()); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + List ddd = query.getResultList(); Map shippingGroupCount = new HashMap<>(); if (!CollectionUtils.isEmpty(ddd)) { for (Map dd : ddd) { @@ -582,7 +590,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer return values; } - private List getCPWaitShippingQty(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getCPWaitShippingQty(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { @@ -629,11 +637,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 待生产/装箱数量 * 精排最新流水号-排序单装箱扫描流水号 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getWaitProductQty(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getWaitProductQty(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { @@ -669,15 +675,23 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append("select new Map(s.shippingGroupCode as shippingGroupCode, max(sd.custInfoSeq) as custInfoSeq)"); hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid "); hql.append(" and s.status in (:status) "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } hql.append(" group by s.shippingGroupCode"); - List ddd = entityManager.createQuery(hql.toString()) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())) - .setParameter("shippingGroupCode", strShippingGroupList) - .getResultList(); + Query query = entityManager.createQuery(hql.toString()); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + List ddd = query.getResultList(); Map shippingGroupCount = new HashMap<>(); if (!CollectionUtils.isEmpty(ddd)) { for (Map dd : ddd) { @@ -701,11 +715,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 距离上一次发运时间(Min) * 当前时间-最近一次发运扫描时间 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getLastShippingTime(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getLastShippingTime(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { @@ -717,16 +729,24 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append("select max(s.endScanTime)"); hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid "); hql.append(" and s.status in (:status) "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } String strScanEndTime = ""; try { - strScanEndTime = entityManager.createQuery(hql.toString(), String.class) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())) - .setParameter("shippingGroupCode", strShippingGroupList) - .getSingleResult(); + Query query = entityManager.createQuery(hql.toString(), String.class); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + strScanEndTime = query.getSingleResult().toString(); } catch (NoResultException ignored) { } @@ -739,15 +759,23 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append("select new Map(s.shippingGroupCode as shippingGroupCode, max(l.endScanTime) as endScanTime)"); hql.append(" from MesLoadingList l inner join MesLoadingListDetail ld on l.id = ld.pid inner join MesShippingOrderManagement s on s.id = ld.shippingId and l.organizeCode = :organizeCode and l.isDeleted=:isDeleted and l.isValid=:isValid "); hql.append(" and l.status in (:status) "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } hql.append(" group by s.shippingGroupCode"); - List ddd = entityManager.createQuery(hql.toString()) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", Arrays.asList(MesExtEnumUtil.MES_LOADING_STATUS.PUBLISH.getValue(), MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue())) - .setParameter("shippingGroupCode", strShippingGroupList) - .getResultList(); + Query query = entityManager.createQuery(hql.toString()); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", Arrays.asList(MesExtEnumUtil.MES_LOADING_STATUS.PUBLISH.getValue(), MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue())); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + List ddd = query.getResultList(); Map shippingGroupCount = new HashMap<>(); if (!CollectionUtils.isEmpty(ddd)) { for (Map dd : ddd) { @@ -772,7 +800,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer return values; } - private List getCPLastShippingTime(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getCPLastShippingTime(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); DdlPackBean packBean = DdlPackBean.getDdlPackBean(cfg.getOrganizeCode()); List shippingGroups = partShippingGroupRDao.findByHqlWhere(packBean); @@ -787,16 +815,24 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append("select max(s.endScanTime)"); hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid "); hql.append(" and s.status in (:status) "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } String strScanEndTime = ""; try { - strScanEndTime = entityManager.createQuery(hql.toString(), String.class) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())) - .setParameter("shippingGroupCode", strShippingGroupList) - .getSingleResult(); + Query query = entityManager.createQuery(hql.toString(), String.class); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + strScanEndTime = query.getSingleResult().toString(); } catch (NoResultException ignored) { } if (!StringUtils.isEmpty(strScanEndTime)) { @@ -812,21 +848,24 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 下一车最晚发运时间 * 当前时间+客户端库存/客户JPH-在途时间 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getNextShippingTime(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getNextShippingTime(MesShippingKanbanCfg cfg, ShippingKanbanCacheModel cacheModel) { + if (cacheModel.getCacheNextShipping() != null) { + return cacheModel.getCacheNextShipping(); + } List values = new ArrayList<>(); Date nowTime = DateUtil.now(); //获取客户端库存 - List clientStockValue = getClientStockQty(cfg); + List clientStockValue = getClientStockQty(cfg, cacheModel); if (StringUtils.isEmpty(clientStockValue)) { + cacheModel.setCacheNextShipping(values); return values; } //获取客户JPH - List customerJPHValue = getClientJPH(cfg, cfgDetail); + List customerJPHValue = getClientJph(cfg); if (CollectionUtils.isEmpty(customerJPHValue)) { + cacheModel.setCacheNextShipping(values); return values; } double clientStock = Double.parseDouble(clientStockValue.get(0)); @@ -842,20 +881,19 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer int minutes = (int)(customerJPHInt * 60); Date newDate = DateUtil.addMinutes(nowTime, minutes - onTheWayDate); values.add(DateUtil.formatDate(DateUtil.BASE_FORMAT3, newDate)); + cacheModel.setCacheNextShipping(values); return values; } /** * 三级停线预警(Min) * 当前时间+客户端库存/客户JPH-在途时间 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getTreeStopWarning(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getTreeStopWarning(MesShippingKanbanCfg cfg, ShippingKanbanCacheModel cacheModel) { List values = new ArrayList<>(); //获取下一车最晚发运时间 - List nextShippingTimeValue = getNextShippingTime(cfg, cfgDetail); + List nextShippingTimeValue = getNextShippingTime(cfg, cacheModel); if (StringUtils.isEmpty(nextShippingTimeValue)) { values.add("0"); return values; @@ -869,11 +907,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 最近发运VIN/流水号,客户排序信息序号,截取后6位 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getShippingVin(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getShippingVin(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { @@ -886,19 +922,28 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append("select sd.custInfoSeq"); hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid "); hql.append(" and s.status in (:status) "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } hql.append(" ORDER BY sd.id DESC"); Long custInfoSeq = null; try { - custInfoSeq = entityManager.createQuery(hql.toString(), Long.class) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())) - .setParameter("shippingGroupCode", strShippingGroupList) - .setMaxResults(1) - .getSingleResult(); + Query query = entityManager.createQuery(hql.toString(), Long.class); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + query.setMaxResults(1); + custInfoSeq = (Long) query.getSingleResult(); } catch (NoResultException e) { + log.error("", e); } String strCustInfoSeq = custInfoSeq != null ? Long.toString(custInfoSeq) : ""; if (strCustInfoSeq.length() >= 5) { @@ -911,16 +956,23 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append("select new Map(s.shippingGroupCode as shippingGroupCode, max(sd.custInfoSeq) as custInfoSeq)"); hql.append(" from MesLoadingList l inner join MesLoadingListDetail ld on l.id = ld.pid inner join MesShippingOrderManagement s on s.id = ld.shippingId inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and l.organizeCode = :organizeCode and l.isDeleted=:isDeleted and l.isValid=:isValid "); hql.append(" and l.status in (:status) "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } hql.append(" group by s.shippingGroupCode"); - List ddd = entityManager.createQuery(hql.toString()) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", Arrays.asList(MesExtEnumUtil.MES_LOADING_STATUS.PUBLISH.getValue(), MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue())) - .setParameter("shippingGroupCode", strShippingGroupList) - .getResultList(); - + Query query = entityManager.createQuery(hql.toString()); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", Arrays.asList(MesExtEnumUtil.MES_LOADING_STATUS.PUBLISH.getValue(), MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue())); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + List ddd = query.getResultList(); Map shippingGroupCount = new HashMap<>(); if (!CollectionUtils.isEmpty(ddd)) { for (Map dd : ddd) { @@ -951,11 +1003,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 最近发运VIN/流水号,客户排序信息序号,截取后6位 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getCPShippingVin(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getCPShippingVin(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); DdlPackBean packBean = DdlPackBean.getDdlPackBean(cfg.getOrganizeCode()); List shippingGroups = partShippingGroupRDao.findByHqlWhere(packBean); @@ -971,19 +1021,27 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append("select sd.custInfoSeq"); hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid "); hql.append(" and s.status in (:status) "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } hql.append(" ORDER BY sd.id DESC"); Long custInfoSeq = null; try { - custInfoSeq = entityManager.createQuery(hql.toString(), Long.class) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())) - .setParameter("shippingGroupCode", strShippingGroupList) - .setMaxResults(1) - .getSingleResult(); - } catch (NoResultException e) { + Query query = entityManager.createQuery(hql.toString(), Long.class); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + query.setMaxResults(1); + custInfoSeq = (Long) query.getSingleResult(); + } catch (NoResultException ignored) { } String strCustInfoSeq = custInfoSeq != null ? Long.toString(custInfoSeq) : ""; @@ -1002,11 +1060,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer * 当天上线数,要设置客户开班时间、信息点 * 基于信息点到当前时间过点数量。按天显示。 * 当天上线数/当班上线数 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getTodayOnline(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getTodayOnline(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); if (StringUtils.isEmpty(cfg.getCustStartShift()) || StringUtils.isEmpty(cfg.getOnlinePoint())) { values.add("0"); @@ -1048,11 +1104,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 当天发运数 * 设置内部开班时间,显示已发运数、已装车数,发运单状态为已发运及已装车。 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getTodayShipping(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getTodayShipping(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList) || StringUtils.isEmpty(cfg.getInterStartShift())) { @@ -1080,17 +1134,25 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append(" from MesShippingOrderManagement s inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid "); hql.append(" and s.status in (:status) "); hql.append(" and s.modifyDatetime BETWEEN :startDateTime AND :endDateTime "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } hql.append(" group by s.shippingGroupCode"); - List ddd = entityManager.createQuery(hql.toString()) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())) - .setParameter("startDateTime", startDateTime) - .setParameter("endDateTime", endDateTime) - .setParameter("shippingGroupCode", strShippingGroupList) - .getResultList(); + Query query = entityManager.createQuery(hql.toString()); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())); + query.setParameter("startDateTime", startDateTime); + query.setParameter("endDateTime", endDateTime); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + List ddd = query.getResultList(); Map shippingGroupCount = new HashMap<>(); if (!CollectionUtils.isEmpty(ddd)) { for (Map dd : ddd) { @@ -1109,11 +1171,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 当天装车数 * 设置内部开班时间,显示已装车数,装车单状态为已扫描。 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getTodayCar(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getTodayCar(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList) || StringUtils.isEmpty(cfg.getInterStartShift())) { @@ -1141,18 +1201,25 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append(" from MesLoadingList l inner join MesLoadingListDetail ld on l.id = ld.pid inner join MesShippingOrderManagement s on s.id = ld.shippingId inner join MesShippingOrderManagementDetail sd on s.id = sd.pid and l.organizeCode = :organizeCode and l.isDeleted=:isDeleted and l.isValid=:isValid "); hql.append(" and l.status = :status "); hql.append(" and l.modifyDatetime BETWEEN :startDateTime AND :endDateTime "); - hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + if (strShippingGroupList.size() == 1) { + hql.append(" and s.shippingGroupCode = :shippingGroupCode "); + } else { + hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); + } hql.append(" group by s.shippingGroupCode "); - List dataList = entityManager.createQuery(hql.toString()) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue()) - .setParameter("startDateTime", startDateTime) - .setParameter("endDateTime", endDateTime) - .setParameter("shippingGroupCode", strShippingGroupList) - .getResultList(); - + Query query = entityManager.createQuery(hql.toString()); + query.setParameter("organizeCode", cfg.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.VALID); + query.setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("status", MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue()); + query.setParameter("startDateTime", startDateTime); + query.setParameter("endDateTime", endDateTime); + if (strShippingGroupList.size() == 1) { + query.setParameter("shippingGroupCode", strShippingGroupList.get(0)); + } else { + query.setParameter("shippingGroupCode", strShippingGroupList); + } + List dataList = query.getResultList(); Map shippingGroupCount = new HashMap<>(); if (!CollectionUtils.isEmpty(dataList)) { for (Map data : dataList) { @@ -1171,11 +1238,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 客户端JPH * 上线点,当前时间往前一小时的过点总数维护默认值,当数值为0时,显示为默认值 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getClientJPH(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getClientJph(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { @@ -1186,7 +1251,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer Date prevHourTime = DateUtil.addMinutes(nowTime, -60); StringBuilder offNumberHql = new StringBuilder(); - offNumberHql.append("select count(1) from " + MesCimSeresJisVinOverPoint.class.getName()); + offNumberHql.append("select count(1) from ").append(MesCimSeresJisVinOverPoint.class.getName()); offNumberHql.append(" where organizeCode = :organizeCode and isDeleted = :isDeleted and isValid = :isValid "); offNumberHql.append(" and createDatetime BETWEEN :startDateTime AND :endDateTime "); offNumberHql.append(" and overPoint = :overPoint "); @@ -1217,11 +1282,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 生产JPH * 当前时间往前一小时的完成数/下线数 - * @param cfg - * @param cfgDetail - * @return + * @param cfg 看板配置 */ - private List getProductJPH(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { + private List getProductJph(MesShippingKanbanCfg cfg) { List values = new ArrayList<>(); List partShippingGroups = getShippingGroups(cfg); if (CollectionUtils.isEmpty(partShippingGroups)) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java index 9a851d9..58f3a38 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java @@ -1196,6 +1196,8 @@ public class MesWorkOrderService implements IMesWorkOrderService { try { //加工记录 MesProductionRecord record = model.getMesProductionRecordMap().get(orderNo).iterator().next(); + LOGGER.info("排序报工开始,报工条码={}",record.getProductSn()); + //工单信息 MesWorkOrder workOrder = getMesWorkOrder(model.getMesWorkOrderMap(), record.getWorkOrderNo()); //生产版本 @@ -1245,11 +1247,23 @@ public class MesWorkOrderService implements IMesWorkOrderService { //更新加工记录 productionRecordService.updateProductionRecord(model.getMesProductionRecordMap().get(orderNo), userName, MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getValue(), ""); //更新工单汇报数量 - workOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + /* workOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); workOrder.setReportedQty(workOrder.getReportedQty()+MesPcnExtConstWords.ONE); workOrder.setModifyDatetime((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")).format(new Date())); workOrder.setModifyUser(userName); - workOrderExtService.update(workOrder); + workOrderExtService.update(workOrder);*/ + double qty = workOrder.getReportedQty()+MesPcnExtConstWords.ONE; + DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(workOrder.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(workOrder.getId(),"id", orderPackBean); + + workOrderRepository.updateByPropertiesNoSync( + new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, "reportedQty"}, + new Object[]{userName, TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), qty}, + orderPackBean); + + LOGGER.info("修改工单数量完成,报工前数量:{},报工后数量:{},工单号【{}】",workOrder.getReportedQty(),qty,workOrder.getWorkOrderNo()); + + } catch (Exception e) { String msg = e.getMessage(); if (e instanceof ImppBusiException) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/printqueue/strategy/WorkOrderAssemblyPrintQueueStrategyService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/printqueue/strategy/WorkOrderAssemblyPrintQueueStrategyService.java index 1341d02..c45b043 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/printqueue/strategy/WorkOrderAssemblyPrintQueueStrategyService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/printqueue/strategy/WorkOrderAssemblyPrintQueueStrategyService.java @@ -119,12 +119,14 @@ public class WorkOrderAssemblyPrintQueueStrategyService implements IPrintQueueSt MesWorkOrder mesWorkOrder = (StringUtils.isEmpty(printQueue.getWorkOrderNo()) || CollectionUtils.isEmpty(workOrderMap) || !workOrderMap.containsKey(printQueue.getWorkOrderNo())) ? null : workOrderMap.get(printQueue.getWorkOrderNo()).get(0); if (mesWorkOrder == null) { - printQueue.setRemark("生产工单不存在"); + /*printQueue.setRemark("生产工单不存在"); printQueue.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.FAILURE.getValue()); printQueue.setSystemSyncStatus(CommonEnumUtil.FALSE); ConvertBean.serviceModelUpdate(printQueue, model.getModifyUser()); log.info("打印队列查询 --- {} --- 工单[{}]不存在 暂不输出打印 ---", MesExtEnumUtil.PRINT_QUEUE_TYPE.valueOfDescription(model.getPrintQueueType()), printQueue.getWorkOrderNo()); - continue; + continue;*/ + log.info("打印队列查询 --- {} --- 工单[{}]不存在 暂不输出打印 ---", MesExtEnumUtil.PRINT_QUEUE_TYPE.valueOfDescription(model.getPrintQueueType()), printQueue.getWorkOrderNo()); + break; } MesPartProdGroup mesPartProdGroup = (StringUtils.isEmpty(printQueue.getPartProdGroupCode()) || CollectionUtils.isEmpty(partProdGroupMap) || !partProdGroupMap.containsKey(printQueue.getPartProdGroupCode())) ? null : partProdGroupMap.get(printQueue.getPartProdGroupCode()); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java index ebac849..43f084b 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java @@ -88,6 +88,9 @@ public class MesShippingScanSnStrategyServiceImpl implements IMesShippingScanStr checkShippingDetails(model, orderManagement, shippingGroup, produceSn, detail); scanFlg = true; //明细更新 + if (StringUtils.isEmpty(orderManagement.getCheckSeqCode())) { + detail.setBarcode(model.getSn()); + } updateOrderManagementDetails(produceSn, orderManagement, detail, model); break; } @@ -254,7 +257,6 @@ public class MesShippingScanSnStrategyServiceImpl implements IMesShippingScanStr private void updateOrderManagementDetails(MesProduceSn produceSn, MesShippingOrderManagement orderManagement, MesShippingOrderManagementDetail detail, MesSortShippingCheckModel model) { if (StringUtils.isEmpty(orderManagement.getCheckSeqCode())) { - detail.setBarcode(model.getSn()); detail.setIsScanFlg(MesCommonConstant.TRUE_INTEGER); detail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue()); detail.setRemark("扫描完成"); diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/ShippingKanbanCacheModel.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/ShippingKanbanCacheModel.java new file mode 100644 index 0000000..982427a --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/ShippingKanbanCacheModel.java @@ -0,0 +1,12 @@ +package cn.estsh.i3plus.ext.mes.pcn.pojo.model; + +import lombok.Data; + +import java.util.List; + +@Data +public class ShippingKanbanCacheModel { + private List clientStockQty; + private List cacheNextShipping; + +}