diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesShippingKanbanCfgService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesShippingKanbanCfgService.java index 768d560..aeaac04 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesShippingKanbanCfgService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesShippingKanbanCfgService.java @@ -7,6 +7,6 @@ import java.util.List; public interface IMesShippingKanbanCfgService { MesShippingKanbanCfgModel queryShippingKanbanCfg(String organizeCode); - void saveShippingKanbanCfg(MesShippingKanbanCfgModel request, String organizeCode, String username); + void doSaveShippingKanbanCfg(MesShippingKanbanCfgModel request, String organizeCode, String username); List queryShippingKanbanContext(String organizeCode); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesShippingKanbanCfgController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesShippingKanbanCfgController.java index 62d5069..c0b508f 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesShippingKanbanCfgController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesShippingKanbanCfgController.java @@ -3,7 +3,6 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.busi; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesShippingKanbanCfgService; import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesShippingKanbanCfgModel; -import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingList; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; @@ -43,7 +42,7 @@ public class MesShippingKanbanCfgController { public ResultBean saveShippingKanbanCfg(@RequestBody MesShippingKanbanCfgModel request) { try { String organizeCode = !StringUtils.isEmpty(request.getOrganizeCode()) ? request.getOrganizeCode() : AuthUtil.getOrganize().getOrganizeCode(); - shippingKanbanCfgService.saveShippingKanbanCfg(request, organizeCode, request.getUsername()); + shippingKanbanCfgService.doSaveShippingKanbanCfg(request, organizeCode, request.getUsername()); return ResultBean.success("保存成功"); } catch (ImppBusiException imppException) { return ResultBean.fail(imppException); 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 5b5c08b..ab97e52 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 @@ -11,6 +11,7 @@ import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup; +import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; import cn.estsh.i3plus.pojo.mes.bean.seres.MesCimSeresJisVinOverPoint; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingListDetail; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingKanbanCfg; @@ -31,6 +32,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import javax.persistence.EntityManager; +import javax.persistence.NoResultException; import javax.persistence.Query; import java.math.BigDecimal; import java.math.RoundingMode; @@ -85,7 +87,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer } @Override - public void saveShippingKanbanCfg(MesShippingKanbanCfgModel request, String organizeCode, String username) { + public void doSaveShippingKanbanCfg(MesShippingKanbanCfgModel request, String organizeCode, String username) { if (request.getConfig() == null) { return; } @@ -229,7 +231,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer continue; } if (NumberUtil.isNumber(value)) { - if (Integer.parseInt(value) < Integer.parseInt(rangValue)) { + if (Long.parseLong(value) < Long.parseLong(rangValue)) { return cfgDetail.getRangColorLess(); } } else { @@ -247,7 +249,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer continue; } if (NumberUtil.isNumber(value)) { - if (Integer.parseInt(value) >= Integer.parseInt(rangValue)) { + if (Long.parseLong(value) >= Long.parseLong(rangValue)) { return cfgDetail.getRangColorMore(); } } else { @@ -275,21 +277,25 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer return partShippingGroupRDao.findByHqlWhere(packBean); } - private String getShippingVin(String organizeCode, List shippingGroupCodes, List status) { + private String getMesShippingVin(String organizeCode, List shippingGroupCodes, List status) { StringBuilder hql = new StringBuilder(); hql.append("select sd.vin"); 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) "); hql.append(" ORDER BY sd.id desc"); - return entityManager.createQuery(hql.toString(), String.class) - .setParameter("organizeCode", organizeCode) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", status) - .setParameter("shippingGroupCode", shippingGroupCodes) - .setMaxResults(1) - .getSingleResult(); + try { + return entityManager.createQuery(hql.toString(), String.class) + .setParameter("organizeCode", organizeCode) + .setParameter("isValid", CommonEnumUtil.VALID) + .setParameter("isDeleted", CommonEnumUtil.FALSE) + .setParameter("status", status) + .setParameter("shippingGroupCode", shippingGroupCodes) + .setMaxResults(1) + .getSingleResult(); + } catch (NoResultException e) { + return ""; + } } /** @@ -299,23 +305,38 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer * @return */ private String getMaxOffNumber(String organizeCode, List shippingGroupCodes) { - String vinCode = getShippingVin(organizeCode, shippingGroupCodes, Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())); + String vinCode = getMesShippingVin(organizeCode, shippingGroupCodes, Arrays.asList(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue())); + if (StringUtils.isEmpty(vinCode)) { + return ""; + } StringBuilder offNumberHql = new StringBuilder(); offNumberHql.append("select max(serialNumber) from " + MesCimSeresJisVinOverPoint.class.getName()); offNumberHql.append(" where organizeCode = :organizeCode and isDeleted = :isDeleted and isValid = :isValid "); offNumberHql.append(" and vin = :vin "); - return entityManager.createQuery(offNumberHql.toString(), String.class) - .setParameter("organizeCode", organizeCode) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("vin", vinCode) - .getSingleResult(); + try { + return entityManager.createQuery(offNumberHql.toString(), String.class) + .setParameter("organizeCode", organizeCode) + .setParameter("isValid", CommonEnumUtil.VALID) + .setParameter("isDeleted", CommonEnumUtil.FALSE) + .setParameter("vin", vinCode) + .getSingleResult(); + } catch (NoResultException e) { + return ""; + } } + /** + * 客户端库存 + * 最新下线的排序发运单客户流水号(SERIAL_NUMBER)- 赛力斯上线的最新流水号+调整值。 + * @param cfg + * @param cfgDetail + * @return + */ private List getClientStockQty(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { + values.add("0"); return values; } @@ -326,12 +347,15 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer onNumberHql.append("select max(serialNumber) from " + MesCimSeresJisVinOverPoint.class.getName()); onNumberHql.append(" where organizeCode = :organizeCode and isDeleted = :isDeleted and isValid = :isValid "); onNumberHql.append(" and overPoint = :overPoint "); - onNumber = entityManager.createQuery(onNumberHql.toString(), String.class) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("overPoint", cfg.getOnlinePoint()) - .getSingleResult(); + try { + onNumber = entityManager.createQuery(onNumberHql.toString(), String.class) + .setParameter("organizeCode", cfg.getOrganizeCode()) + .setParameter("isValid", CommonEnumUtil.VALID) + .setParameter("isDeleted", CommonEnumUtil.FALSE) + .setParameter("overPoint", cfg.getOnlinePoint()) + .getSingleResult(); + } catch (NoResultException ignored) { + } } if (StringUtils.isEmpty(onNumber)) { onNumber = "0"; @@ -348,10 +372,18 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer return values; } + /** + * 待发运数量 + * 排序单装箱扫描流水号-发运扫描流水号,精排最新流水号-辊道线下件流水号(cockpit) + * @param cfg + * @param cfgDetail + * @return + */ private List getWaitShippingQty(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { + values.add("0"); return values; } @@ -363,12 +395,15 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer refinedPointHql.append("select max(serialNumber) from " + MesCimSeresJisVinOverPoint.class.getName()); refinedPointHql.append(" where organizeCode = :organizeCode and isDeleted = :isDeleted and isValid = :isValid "); refinedPointHql.append(" and overPoint = :overPoint "); - refinedPointNumber = entityManager.createQuery(refinedPointHql.toString(), String.class) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("overPoint", cfg.getRefinedPoint()) - .getSingleResult(); + try { + refinedPointNumber = entityManager.createQuery(refinedPointHql.toString(), String.class) + .setParameter("organizeCode", cfg.getOrganizeCode()) + .setParameter("isValid", CommonEnumUtil.VALID) + .setParameter("isDeleted", CommonEnumUtil.FALSE) + .setParameter("overPoint", cfg.getRefinedPoint()) + .getSingleResult(); + } catch (NoResultException ignored) { + } } if (StringUtils.isEmpty(refinedPointNumber)) { refinedPointNumber = "0"; @@ -398,7 +433,10 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer Map shippingGroupCount = new HashMap<>(); if (!CollectionUtils.isEmpty(ddd)) { for (Map dd : ddd) { - shippingGroupCount.put(dd.get("shippingGroupCode").toString(), dd.get("COUNT").toString()); + Object count = dd.get("COUNT"); + if (count != null) { + shippingGroupCount.put(dd.get("shippingGroupCode").toString(), count.toString()); + } } } for (String shippingGroupCode : strShippingGroupList) { @@ -412,6 +450,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { + values.add("0"); return values; } @@ -423,12 +462,15 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer refinedPointHql.append("select max(serialNumber) from " + MesCimSeresJisVinOverPoint.class.getName()); refinedPointHql.append(" where organizeCode = :organizeCode and isDeleted = :isDeleted and isValid = :isValid "); refinedPointHql.append(" and overPoint = :overPoint "); - refinedPointNumber = entityManager.createQuery(refinedPointHql.toString(), String.class) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("overPoint", cfg.getRefinedPoint()) - .getSingleResult(); + try { + refinedPointNumber = entityManager.createQuery(refinedPointHql.toString(), String.class) + .setParameter("organizeCode", cfg.getOrganizeCode()) + .setParameter("isValid", CommonEnumUtil.VALID) + .setParameter("isDeleted", CommonEnumUtil.FALSE) + .setParameter("overPoint", cfg.getRefinedPoint()) + .getSingleResult(); + } catch (NoResultException ignored) { + } } if (StringUtils.isEmpty(refinedPointNumber)) { refinedPointNumber = "0"; @@ -450,6 +492,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 待生产/装箱数量 + * 精排最新流水号-排序单装箱扫描流水号 * @param cfg * @param cfgDetail * @return @@ -458,6 +501,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { + values.add("0"); return values; } @@ -471,12 +515,15 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer refinedPointHql.append("select max(serialNumber) from " + MesCimSeresJisVinOverPoint.class.getName()); refinedPointHql.append(" where organizeCode = :organizeCode and isDeleted = :isDeleted and isValid = :isValid "); refinedPointHql.append(" and overPoint = :overPoint "); - refinedPointNumber = entityManager.createQuery(refinedPointHql.toString(), String.class) - .setParameter("organizeCode", cfg.getOrganizeCode()) - .setParameter("isValid", CommonEnumUtil.VALID) - .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("overPoint", cfg.getRefinedPoint()) - .getSingleResult(); + try { + refinedPointNumber = entityManager.createQuery(refinedPointHql.toString(), String.class) + .setParameter("organizeCode", cfg.getOrganizeCode()) + .setParameter("isValid", CommonEnumUtil.VALID) + .setParameter("isDeleted", CommonEnumUtil.FALSE) + .setParameter("overPoint", cfg.getRefinedPoint()) + .getSingleResult(); + } catch (NoResultException ignored) { + } } if (StringUtils.isEmpty(refinedPointNumber)) { refinedPointNumber = "0"; @@ -506,7 +553,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer } for (String shippingGroupCode : strShippingGroupList) { if (shippingGroupCount.containsKey(shippingGroupCode)) { - values.add(Integer.parseInt(refinedPointNumber) - Integer.parseInt(shippingGroupCount.get(shippingGroupCode)) + ""); + values.add(Long.parseLong(refinedPointNumber) - Long.parseLong(shippingGroupCount.get(shippingGroupCode)) + ""); } else { values.add("0"); } @@ -517,6 +564,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 距离上一次发运时间(Min) + * 当前时间-最近一次发运扫描时间 * @param cfg * @param cfgDetail * @return @@ -534,13 +582,18 @@ 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.shippingGroupCode in (:shippingGroupCode) "); - String 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(); + 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(); + } catch (NoResultException ignored) { + } + if (!StringUtils.isEmpty(strScanEndTime)) { Date scanEndTime = DateUtil.parse(strScanEndTime); values.add(DateUtil.formatDate(DateUtil.SHORT_FORMAT_HOUR, scanEndTime)); @@ -556,7 +609,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer .setParameter("organizeCode", cfg.getOrganizeCode()) .setParameter("isValid", CommonEnumUtil.VALID) .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", Arrays.asList(MesExtEnumUtil.LOADING_ORDER_STATUS.LOADED.getValue(), MesExtEnumUtil.LOADING_ORDER_STATUS.SHIPPING.getValue())) + .setParameter("status", Arrays.asList(MesExtEnumUtil.MES_LOADING_STATUS.PUBLISH.getValue(), MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue())) .setParameter("shippingGroupCode", strShippingGroupList) .getResultList(); Map shippingGroupCount = new HashMap<>(); @@ -599,13 +652,17 @@ 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.shippingGroupCode in (:shippingGroupCode) "); - String 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(); + 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(); + } catch (NoResultException ignored) { + } if (!StringUtils.isEmpty(strScanEndTime)) { Date scanEndTime = DateUtil.parse(strScanEndTime); values.add(DateUtil.formatDate(DateUtil.SHORT_FORMAT_HOUR, scanEndTime)); @@ -618,6 +675,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 下一车最晚发运时间 + * 当前时间+客户端库存/客户JPH-在途时间 * @param cfg * @param cfgDetail * @return @@ -653,15 +711,17 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 三级停线预警(Min) + * 当前时间+客户端库存/客户JPH-在途时间 * @param cfg * @param cfgDetail * @return */ private List getTreeStopWarning(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { List values = new ArrayList<>(); - //获取客户端库存 + //获取下一车最晚发运时间 List nextShippingTimeValue = getNextShippingTime(cfg, cfgDetail); if (StringUtils.isEmpty(nextShippingTimeValue)) { + values.add("0"); return values; } Date nowTime = DateUtil.parse(DateUtil.formatDate(DateUtil.BASE_FORMAT3, DateUtil.now()), DateUtil.BASE_FORMAT3); @@ -671,10 +731,17 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer return values; } + /** + * 最近发运VIN/流水号,客户排序信息序号,截取后6位 + * @param cfg + * @param cfgDetail + * @return + */ private List getShippingVin(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { + values.add("0"); return values; } @@ -685,13 +752,18 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append(" and s.status in (:status) "); hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); hql.append(" ORDER BY sd.id DESC"); - Long 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) - .getSingleResult(); + 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) { + } String strCustInfoSeq = custInfoSeq != null ? Long.toString(custInfoSeq) : ""; if (strCustInfoSeq.length() >= 6) { values.add(strCustInfoSeq.substring(strCustInfoSeq.length() - 6)); @@ -709,7 +781,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer .setParameter("organizeCode", cfg.getOrganizeCode()) .setParameter("isValid", CommonEnumUtil.VALID) .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", Arrays.asList(MesExtEnumUtil.LOADING_ORDER_STATUS.LOADED.getValue(), MesExtEnumUtil.LOADING_ORDER_STATUS.SHIPPING.getValue())) + .setParameter("status", Arrays.asList(MesExtEnumUtil.MES_LOADING_STATUS.PUBLISH.getValue(), MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue())) .setParameter("shippingGroupCode", strShippingGroupList) .getResultList(); @@ -741,11 +813,18 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer return values; } + /** + * 最近发运VIN/流水号,客户排序信息序号,截取后6位 + * @param cfg + * @param cfgDetail + * @return + */ private List getCPShippingVin(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { List values = new ArrayList<>(); DdlPackBean packBean = DdlPackBean.getDdlPackBean(cfg.getOrganizeCode()); List shippingGroups = partShippingGroupRDao.findByHqlWhere(packBean); if (CollectionUtils.isEmpty(shippingGroups)) { + values.add("0"); return values; } @@ -758,13 +837,19 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer hql.append(" and s.status in (:status) "); hql.append(" and s.shippingGroupCode in (:shippingGroupCode) "); hql.append(" ORDER BY sd.id DESC"); - Long 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) - .getSingleResult(); + 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) { + } + String strCustInfoSeq = custInfoSeq != null ? Long.toString(custInfoSeq) : ""; if (strCustInfoSeq.length() >= 6) { values.add(strCustInfoSeq.substring(strCustInfoSeq.length() - 6)); @@ -778,7 +863,9 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer } /** - * 当天上线数 + * 当天上线数,要设置客户开班时间、信息点 + * 基于信息点到当前时间过点数量。按天显示。 + * 当天上线数/当班上线数 * @param cfg * @param cfgDetail * @return @@ -786,6 +873,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer private List getTodayOnline(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { List values = new ArrayList<>(); if (StringUtils.isEmpty(cfg.getCustStartShift()) || StringUtils.isEmpty(cfg.getOnlinePoint())) { + values.add("0"); return values; } @@ -823,6 +911,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 当天发运数 + * 设置内部开班时间,显示已发运数、已装车数,发运单状态为已发运及已装车。 * @param cfg * @param cfgDetail * @return @@ -831,6 +920,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList) || StringUtils.isEmpty(cfg.getInterStartShift())) { + values.add("0"); return values; } @@ -882,6 +972,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 当天装车数 + * 设置内部开班时间,显示已装车数,装车单状态为已扫描。 * @param cfg * @param cfgDetail * @return @@ -890,6 +981,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList) || StringUtils.isEmpty(cfg.getInterStartShift())) { + values.add("0"); return values; } @@ -919,7 +1011,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer .setParameter("organizeCode", cfg.getOrganizeCode()) .setParameter("isValid", CommonEnumUtil.VALID) .setParameter("isDeleted", CommonEnumUtil.FALSE) - .setParameter("status", MesExtEnumUtil.LOADING_ORDER_STATUS.SHIPPING.getValue()) + .setParameter("status", MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue()) .setParameter("startDateTime", startDateTime) .setParameter("endDateTime", endDateTime) .setParameter("shippingGroupCode", strShippingGroupList) @@ -942,6 +1034,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 客户端JPH + * 上线点,当前时间往前一小时的过点总数维护默认值,当数值为0时,显示为默认值 * @param cfg * @param cfgDetail * @return @@ -950,6 +1043,7 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer List values = new ArrayList<>(); List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); if (CollectionUtils.isEmpty(strShippingGroupList)) { + values.add("0"); return values; } @@ -980,19 +1074,53 @@ public class MesShippingKanbanCfgServiceImpl implements IMesShippingKanbanCfgSer /** * 生产JPH + * 当前时间往前一小时的完成数/下线数 * @param cfg * @param cfgDetail * @return */ private List getProductJPH(MesShippingKanbanCfg cfg, MesShippingKanbanCfgDetail cfgDetail) { List values = new ArrayList<>(); - List strShippingGroupList = Arrays.asList(cfg.getShippingGroupCode().split(",")); - if (CollectionUtils.isEmpty(strShippingGroupList)) { + List partShippingGroups = getShippingGroups(cfg); + if (CollectionUtils.isEmpty(partShippingGroups)) { + values.add("0"); return values; } Date nowTime = DateUtil.now(); Date prevHourTime = DateUtil.addMinutes(nowTime, -60); + + StringBuilder hql = new StringBuilder(); + hql.append("select new map(workCenterCode, count(1) as totalCount) from " + MesProductionRecord.class.getName()); + hql.append(" where organizeCode = :organizeCode and isDeleted = :isDeleted and isValid = :isValid "); + hql.append(" and createDatetime BETWEEN :startDateTime AND :endDateTime "); + hql.append(" group by workCenterCode"); + List ddd = entityManager.createQuery(hql.toString()) + .setParameter("organizeCode", cfg.getOrganizeCode()) + .setParameter("isValid", CommonEnumUtil.VALID) + .setParameter("isDeleted", CommonEnumUtil.FALSE) + .setParameter("startDateTime", DateUtil.formatDate(nowTime)) + .setParameter("endDateTime", DateUtil.formatDate(prevHourTime)) + .getResultList(); + + Map shippingGroupCount = new HashMap<>(); + if (!CollectionUtils.isEmpty(ddd)) { + for (Map dd : ddd) { + Object totalCount = dd.get("totalCount"); + if (totalCount != null) { + shippingGroupCount.put(dd.get("workCenterCode").toString(), totalCount.toString()); + } + } + } + for (MesPartShippingGroup shippingGroup : partShippingGroups) { + if (StringUtils.isEmpty(shippingGroup.getCarrierCode())) { + continue; + } + values.add(shippingGroupCount.getOrDefault(shippingGroup.getCarrierCode(), "0")); + } + if (values.isEmpty()) { + values.add("0"); + } return values; } }