diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesPartShippingGroupService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesPartShippingGroupService.java index b9f9224..6d65c8e 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesPartShippingGroupService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesPartShippingGroupService.java @@ -4,6 +4,7 @@ import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup; import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroupDetail; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement; +import cn.estsh.i3plus.pojo.mes.model.MesShippingOrderManagementModel; import io.swagger.annotations.ApiOperation; import java.util.List; @@ -23,7 +24,7 @@ public interface IMesPartShippingGroupService { MesPartShippingGroup getMesPartShippingGroup(String organizeCode,String shippingGroupCode); @ApiOperation(value = "打印发运单数据") - List doMesMesShippingOrderManagementPrint(MesShippingOrderManagement model, String userName); + List doMesMesShippingOrderManagementPrint(MesShippingOrderManagement model); @ApiOperation(value = "发运组明细") MesPartShippingGroupDetail getMesPartShippingGroupDetail(String organizeCode, String shippingGroupCode, String partNo, String custPartNo); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesEnumDetailController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesEnumDetailController.java index d03486a..6e3c44e 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesEnumDetailController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesEnumDetailController.java @@ -27,6 +27,8 @@ import java.util.List; @RestController @RequestMapping(MesCommonConstant.MES_YANFEN + "/mesEnumDetail") public class MesEnumDetailController { +// @Autowired +// private IMesEnumExtService enumService; @Autowired private IMesEnumDetailService mesEnumDetailService; @@ -45,4 +47,20 @@ public class MesEnumDetailController { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } + +// @GetMapping(value = "/enumlist") +// @ApiOperation(value = "获取MES系统枚举") +// public ResultBean enumlistByOrg(@RequestParam(name = "enumName") String enumName, @RequestParam(name = "organizeCode", required = false) String organizeCode) { +// try { +// organizeCode = org.springframework.util.StringUtils.isEmpty(organizeCode) ? AuthUtil.getOrganize().getOrganizeCode() : organizeCode; +// Map map = enumService.doGetMesEnumByEnumName(organizeCode, enumName); +// return ResultBean.success("查询成功") +// .setResultObject(map) +// .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); +// } catch (ImppBusiException busExcep) { +// return ResultBean.fail(busExcep); +// } catch (Exception e) { +// return ImppExceptionBuilder.newInstance().buildExceptionResult(e); +// } +// } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesPartShippingGroupController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesPartShippingGroupController.java index f9e92d7..a298ad4 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesPartShippingGroupController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesPartShippingGroupController.java @@ -6,6 +6,7 @@ import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement; +import cn.estsh.i3plus.pojo.mes.model.MesShippingOrderManagementModel; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; @@ -54,13 +55,13 @@ public class MesPartShippingGroupController { } } @PostMapping(value = "/doPrint") - @ApiOperation(value = "打印未打印拉动单后修改状态") + @ApiOperation(value = "打印未打印发运单后修改状态") public ResultBean doMesMesShippingOrderManagementPrint(@RequestBody MesShippingOrderManagement model) { try { // 数据校验 ValidatorBean.checkNotNull(model.getShippingGroupCode(), "发运组代码不能为空"); - List shippingOrderManagementList = shippingGroupService.doMesMesShippingOrderManagementPrint(model, AuthUtil.getSessionUser().getUserName()); - return ResultBean.success("拉动单打印成功") + List shippingOrderManagementList = shippingGroupService.doMesMesShippingOrderManagementPrint(model); + return ResultBean.success("发运单打印成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) .setResultList(shippingOrderManagementList); } catch (ImppBusiException e) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPartShippingGroupService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPartShippingGroupService.java index 22efbbf..bbf8f01 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPartShippingGroupService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPartShippingGroupService.java @@ -7,21 +7,24 @@ 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.base.util.StringUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesConfig; import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup; import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroupDetail; +import cn.estsh.i3plus.pojo.mes.bean.edi.wuhu.MesCimCheryOrder; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail; -import cn.estsh.i3plus.pojo.mes.repository.MesPartShippingGroupDetailRepository; -import cn.estsh.i3plus.pojo.mes.repository.MesPartShippingGroupRepository; -import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementDetailRepository; -import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementRepository; +import cn.estsh.i3plus.pojo.mes.model.MesShippingOrderManagementDetailModel; +import cn.estsh.i3plus.pojo.mes.model.MesShippingOrderManagementModel; +import cn.estsh.i3plus.pojo.mes.repository.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.Arrays; -import java.util.List; +import java.util.*; +import java.util.function.Function; +import java.util.logging.Handler; +import java.util.stream.Collectors; @Service @Slf4j @@ -40,6 +43,12 @@ public class MesPartShippingGroupService implements IMesPartShippingGroupService @Autowired private MesPartShippingGroupDetailRepository mesPartShippingGroupDetailRepository; + @Autowired + private MesCimCheryOrderRepository cheryOrderRao; + + @Autowired + private MesConfigRepository mesConfigRao; + public List findAll(DdlPackBean packBean) { return shippingGroupRepository.findByHqlWhere(packBean); } @@ -53,7 +62,16 @@ public class MesPartShippingGroupService implements IMesPartShippingGroupService } @Override - public List doMesMesShippingOrderManagementPrint(MesShippingOrderManagement bean, String userName) { + public List doMesMesShippingOrderManagementPrint(MesShippingOrderManagement bean) { + DdlPackBean configPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack("WU_HU_SUPPLIER","cfgKey", configPackBean); + List configList = mesConfigRao.findByHqlWhere(configPackBean); + String supplierNo = ""; + if (configList != null && !configList.isEmpty()) { + supplierNo = configList.get(0).getCfgValue(); + } + + List modelList = new ArrayList<>(); DdlPackBean packBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode()); //多选 if (!StringUtil.isEmpty(bean.getShippingGroupCode())) { @@ -62,29 +80,87 @@ public class MesPartShippingGroupService implements IMesPartShippingGroupService DdlPreparedPack.getStringEqualPack(bean.getShippingCode(), "shippingCode", packBean); DdlPreparedPack.getIsNull("lastPrintTime", packBean); - DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean); - List pullingOrderInfos = shippingOrderManagementRepository.findByHqlWhere(packBean); + DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"createDatetime"}, packBean); + List pullingOrderInfos = shippingOrderManagementRepository.findByHqlTopWhere(packBean,10); if (!CollectionUtils.isEmpty(pullingOrderInfos)) { - //把查出来的拉动单打印并修改打印状态为已打印 - for (MesShippingOrderManagement pullingOrderInfo : pullingOrderInfos) { - //查询拉动组明细 - DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(pullingOrderInfo.getOrganizeCode()); - DdlPreparedPack.getNumEqualPack(pullingOrderInfo.getId(), "pid", partPackBean); + //把查出来的发运单打印并修改打印状态为已打印 + for (MesShippingOrderManagement shippingOrder : pullingOrderInfos) { + MesShippingOrderManagementModel model = new MesShippingOrderManagementModel(); + String shippingCodePrefix = shippingOrder.getShippingCode().substring(0, shippingOrder.getShippingCode().length() - 3); + String shippingCodeSuffix = shippingOrder.getShippingCode().substring(shippingOrder.getShippingCode().length() - 3); + model.setShippingCode(shippingCodePrefix); + model.setShippingCodeAfter3(shippingCodeSuffix); + model.setShippingCodeWhole(shippingOrder.getShippingCode()); + + //查询原始报文 + List cheryOrderList = getCheryOrder(shippingOrder.getOrganizeCode(), shippingOrder.getShippingCode()); + Map> cheryOrderMap = new HashMap<>(); + if (cheryOrderList != null && !cheryOrderList.isEmpty()) { + MesCimCheryOrder cheryOrder = cheryOrderList.get(0); + model.setPlantName(cheryOrder.getPlantName()); + model.setPartkitName(cheryOrder.getPartkitName()); + model.setDeliverySendSequence(cheryOrder.getDeliverySendSequence()); + model.setReceiveDockName(cheryOrder.getReceiveDockNo()+"--"+cheryOrder.getReceiveDockName()); + model.setLastRecRequireTime(cheryOrder.getLastRecRequireTime()); + //根据cheryOrder的workshopNo获取对应的车间名称 + String workshopName = getWorkshopName(cheryOrder.getOrganizeCode(), cheryOrder.getWorkshopNo()); + model.setWorkShop(workshopName); + model.setCreateDateTime(cheryOrder.getCreateDatetime()); + model.setPrintDateTime(TimeTool.getNowTime(true)); + cheryOrderMap = cheryOrderList.stream().collect(Collectors.groupingBy(MesCimCheryOrder::getVin)); + } + + //查询发运单明细 + DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(shippingOrder.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(shippingOrder.getId(), "pid", partPackBean); + DdlPreparedPack.getOrderBy("boxNum",CommonEnumUtil.ASC_OR_DESC.ASC.getValue(), partPackBean); List shipOrderPartInfos = shippingOrderManagementDetailRepository.findByHqlWhere(partPackBean); if (!CollectionUtils.isEmpty(shipOrderPartInfos)) { - pullingOrderInfo.setShipOrderPartInfos(shipOrderPartInfos); + List detailList = new ArrayList<>(); + shipOrderPartInfos = shipOrderPartInfos.stream().sorted(Comparator.comparing(MesShippingOrderManagementDetail::getCustInfoSeq)).collect(Collectors.toList()); + for (MesShippingOrderManagementDetail shipOrderPartInfo : shipOrderPartInfos) { + MesShippingOrderManagementDetailModel detailModel = new MesShippingOrderManagementDetailModel(); + detailModel.setPartNo(shipOrderPartInfo.getPartNo()); + detailModel.setPartName(shipOrderPartInfo.getPartName()); + detailModel.setQty(shipOrderPartInfo.getPlanQty()); + detailModel.setBoxNo(shipOrderPartInfo.getCustInfoSeq()); + detailModel.setSupplierNo(supplierNo); + detailModel.setVin(shipOrderPartInfo.getVin().substring(shipOrderPartInfo.getVin().length()-8)); + MesCimCheryOrder order = cheryOrderMap.get(shipOrderPartInfo.getVin()).get(0); + if (order != null) { + detailModel.setWholePartNo(order.getMaterialNo()); + } + detailList.add(detailModel); + } + model.setShipOrderPartInfos(detailList); } - pullingOrderInfo.setPrintCount(StringUtil.isEmpty(pullingOrderInfo.getPrintCount())?1:pullingOrderInfo.getPrintCount()+1); - pullingOrderInfo.setLastPrintTime(TimeTool.getNowTime(true)); - pullingOrderInfo.setLastPrintUser(userName); - ConvertBean.serviceModelUpdate(pullingOrderInfo, userName); + //查询原有报文 根据shippingCode; + shippingOrder.setPrintCount(StringUtil.isEmpty(shippingOrder.getPrintCount())?1:shippingOrder.getPrintCount()+1); + shippingOrder.setLastPrintTime(TimeTool.getNowTime(true)); + shippingOrder.setLastPrintUser(bean.getUserInfo()); + ConvertBean.serviceModelUpdate(shippingOrder, bean.getUserInfo()); + modelList.add(model); } shippingOrderManagementRepository.saveAll(pullingOrderInfos); } - return pullingOrderInfos; +// return pullingOrderInfos; + return modelList; } + private String getWorkshopName(String organizeCode, String workshopNo) { + + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workshopNo, "cfgKey", ddlPackBean); + List configList = mesConfigRao.findByHqlWhere(ddlPackBean); + return configList.isEmpty() ? "" : configList.get(0).getCfgValue(); + + } + private List getCheryOrder(String organizeCode, String sheetNo) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(sheetNo, "sheetNo", ddlPackBean); + return cheryOrderRao.findByHqlWhere(ddlPackBean); + } @Override public MesPartShippingGroupDetail getMesPartShippingGroupDetail(String organizeCode, String shippingGroupCode, String partNo, String custPartNo) { if(StringUtil.isEmpty(organizeCode) || StringUtil.isEmpty(shippingGroupCode) || StringUtil.isEmpty(partNo) || StringUtil.isEmpty(custPartNo)) return null;