|
|
|
@ -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<MesPartShippingGroup> findAll(DdlPackBean packBean) {
|
|
|
|
|
return shippingGroupRepository.findByHqlWhere(packBean);
|
|
|
|
|
}
|
|
|
|
@ -53,7 +62,16 @@ public class MesPartShippingGroupService implements IMesPartShippingGroupService
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<MesShippingOrderManagement> doMesMesShippingOrderManagementPrint(MesShippingOrderManagement bean, String userName) {
|
|
|
|
|
public List<MesShippingOrderManagementModel> doMesMesShippingOrderManagementPrint(MesShippingOrderManagement bean) {
|
|
|
|
|
DdlPackBean configPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack("WU_HU_SUPPLIER","cfgKey", configPackBean);
|
|
|
|
|
List<MesConfig> configList = mesConfigRao.findByHqlWhere(configPackBean);
|
|
|
|
|
String supplierNo = "";
|
|
|
|
|
if (configList != null && !configList.isEmpty()) {
|
|
|
|
|
supplierNo = configList.get(0).getCfgValue();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<MesShippingOrderManagementModel> 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<MesShippingOrderManagement> pullingOrderInfos = shippingOrderManagementRepository.findByHqlWhere(packBean);
|
|
|
|
|
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"createDatetime"}, packBean);
|
|
|
|
|
List<MesShippingOrderManagement> 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<MesCimCheryOrder> cheryOrderList = getCheryOrder(shippingOrder.getOrganizeCode(), shippingOrder.getShippingCode());
|
|
|
|
|
Map<String, List<MesCimCheryOrder>> 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<MesShippingOrderManagementDetail> shipOrderPartInfos = shippingOrderManagementDetailRepository.findByHqlWhere(partPackBean);
|
|
|
|
|
if (!CollectionUtils.isEmpty(shipOrderPartInfos)) {
|
|
|
|
|
pullingOrderInfo.setShipOrderPartInfos(shipOrderPartInfos);
|
|
|
|
|
List<MesShippingOrderManagementDetailModel> 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<MesConfig> configList = mesConfigRao.findByHqlWhere(ddlPackBean);
|
|
|
|
|
return configList.isEmpty() ? "" : configList.get(0).getCfgValue();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
private List<MesCimCheryOrder> 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;
|
|
|
|
|