|
|
|
@ -6,29 +6,29 @@ import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesShippingOrderManagementDetailD
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel;
|
|
|
|
|
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.bean.ListPager;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.common.Pager;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroupDetail;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderPart;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.*;
|
|
|
|
|
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.MesProduceSnRepository;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementDetailRepository;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.*;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
|
|
|
|
import cn.estsh.impp.framework.boot.auth.AuthUtil;
|
|
|
|
|
import cn.estsh.impp.framework.boot.util.ResultBean;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.Objects;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.function.Function;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
@ -42,10 +42,27 @@ public class MesShippingOrderManagementDetailService extends BaseMesService<MesS
|
|
|
|
|
private MesShippingOrderManagementDetailRepository shippingOrderDetailRepository;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesShippingOrderManagementRepository shippingOrderRepository;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private IMesProduceSnService mesProduceSnService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesProduceSnRepository mesProduceSnRepository;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesCustomerPartRepository mesCustomerPartRepository;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private IMesMoveRuleRepository mesMoveRuleRepository;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesCimGmCbrRuleRepository mesCimGmCbrRuleRepository;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesWorkOrderPartRepository mesWorkOrderPartRepository;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesJisShippingRepository jisShippingRepository;
|
|
|
|
|
|
|
|
|
|
protected void setPackQueryBean(MesShippingOrderManagementDetail bean, DdlPackBean packBean) {
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(bean.getPid(), "pid", packBean);
|
|
|
|
@ -71,6 +88,133 @@ public class MesShippingOrderManagementDetailService extends BaseMesService<MesS
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public ListPager<MesShippingOrderManagementDetailModel> queryMesShippingErrorDetailsByPager(MesShippingOrderManagementDetailModel mesShippingOrderManagementDetailModel, Pager pager) {
|
|
|
|
|
mesShippingOrderManagementDetailModel.setStatus(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SKIP.getValue());
|
|
|
|
|
return shippingOrderManagementDetailDao.queryMesShippingDetailsByPager(mesShippingOrderManagementDetailModel, pager);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public ResultBean supplyBycustPartNo(Long[] ids) {
|
|
|
|
|
|
|
|
|
|
String organizeCode = AuthUtil.getOrganizeCode();
|
|
|
|
|
String userName = AuthUtil.getSessionUser().getUserName();
|
|
|
|
|
List<MesShippingOrderManagementDetail> detailList = getManagementDetails(ids, organizeCode, userName);
|
|
|
|
|
|
|
|
|
|
for (MesShippingOrderManagementDetail mesShippingOrderManagementDetail : detailList) {
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesShippingOrderManagementDetail.getCustPartNo(), "custPartNo", ddlPackBean);
|
|
|
|
|
MesCustomerPart mesCustomerPart = mesCustomerPartRepository.getByProperty(ddlPackBean);
|
|
|
|
|
if (mesCustomerPart == null) {
|
|
|
|
|
log.info("客户零件号不存在:{}", mesShippingOrderManagementDetail.getCustPartNo());
|
|
|
|
|
}
|
|
|
|
|
mesShippingOrderManagementDetail.setPartNo(mesCustomerPart.getErpPartNo());
|
|
|
|
|
mesShippingOrderManagementDetail.setPartName(mesCustomerPart.getErpPartName());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ResultBean.success().setResultList(detailList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public ResultBean supplyByCBR(Long[] ids) {
|
|
|
|
|
|
|
|
|
|
String organizeCode = AuthUtil.getOrganizeCode();
|
|
|
|
|
String userName = AuthUtil.getSessionUser().getUserName();
|
|
|
|
|
List<MesShippingOrderManagementDetail> detailList = getManagementDetails(ids, organizeCode, userName);
|
|
|
|
|
|
|
|
|
|
for (MesShippingOrderManagementDetail mesShippingOrderManagementDetail : detailList) {
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesShippingOrderManagementDetail.getCustPartNo(), "custPartNo", ddlPackBean);
|
|
|
|
|
MesCimGmCbrRule mesCimGmCbrRule = mesCimGmCbrRuleRepository.getByProperty(ddlPackBean);
|
|
|
|
|
if (mesCimGmCbrRule == null) {
|
|
|
|
|
log.info("CBR规则未配置:客户零件号:{}", mesShippingOrderManagementDetail.getCustPartNo());
|
|
|
|
|
}
|
|
|
|
|
mesShippingOrderManagementDetail.setPartNo(mesCimGmCbrRule.getErpPartNo());
|
|
|
|
|
mesShippingOrderManagementDetail.setPartName(mesCimGmCbrRule.getErpPartName());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ResultBean.success().setResultList(detailList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public ResultBean updateQty(Long[] ids) {
|
|
|
|
|
String organizeCode = AuthUtil.getOrganizeCode();
|
|
|
|
|
String userName = AuthUtil.getSessionUser().getUserName();
|
|
|
|
|
List<MesShippingOrderManagementDetail> detailList = getManagementDetails(ids, organizeCode, userName);
|
|
|
|
|
List<String> orderNoList = detailList.stream().map(MesShippingOrderManagementDetail::getShippingCode).distinct().collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getInPackList(orderNoList, "shippingCode", orderPackBean);
|
|
|
|
|
List<MesShippingOrderManagement> shippingOrderManagements = shippingOrderRepository.findByHqlWhere(orderPackBean);
|
|
|
|
|
|
|
|
|
|
Map<String, MesShippingOrderManagement> orderMap = shippingOrderManagements.stream().collect(Collectors.toMap(MesShippingOrderManagement::getShippingCode, Function.identity()));
|
|
|
|
|
|
|
|
|
|
List<MesJisShipping> mesJisShippings = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (MesShippingOrderManagementDetail mesShippingOrderManagementDetail : detailList) {
|
|
|
|
|
MesShippingOrderManagement mesShippingOrderManagement = orderMap.get(mesShippingOrderManagementDetail.getShippingCode());
|
|
|
|
|
if (StringUtils.isEmpty(mesShippingOrderManagementDetail.getPartNo())) {
|
|
|
|
|
log.info("客户零件号对应的零件号为空:{}", mesShippingOrderManagementDetail.getCustPartNo());
|
|
|
|
|
return ResultBean.fail(String.format("客户零件号对应的零件号为空:%s", mesShippingOrderManagementDetail.getCustPartNo()));
|
|
|
|
|
}
|
|
|
|
|
mesShippingOrderManagementDetail.setActualQty((int)mesShippingOrderManagementDetail.getPlanQty());
|
|
|
|
|
mesShippingOrderManagementDetail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue());
|
|
|
|
|
ConvertBean.serviceModelUpdate(mesShippingOrderManagementDetail, userName);
|
|
|
|
|
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.MOVE_RULE_GROUP_TYPE.MOVE_RULE_GROUP_TYPE_10.getValue(), "groupType", ddlPackBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesShippingOrderManagement.getShippingGroupCode(), "code", ddlPackBean);
|
|
|
|
|
MesMoveRule moveRule = mesMoveRuleRepository.getByProperty(ddlPackBean);
|
|
|
|
|
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesShippingOrderManagementDetail.getVisualOrderNo(), "workOrderNo", packBean);
|
|
|
|
|
|
|
|
|
|
MesWorkOrderPart workOrderPart = mesWorkOrderPartRepository.getByProperty(packBean);
|
|
|
|
|
|
|
|
|
|
mesJisShippings.add(getMesJisShipping(mesShippingOrderManagement, mesShippingOrderManagementDetail,moveRule.getErpSrcLocateNo(), workOrderPart,userName));
|
|
|
|
|
}
|
|
|
|
|
if (!CollectionUtils.isEmpty(detailList)) {
|
|
|
|
|
shippingOrderDetailRepository.saveAll(detailList);
|
|
|
|
|
}
|
|
|
|
|
// jis同步
|
|
|
|
|
if(!CollectionUtils.isEmpty(mesJisShippings)){
|
|
|
|
|
jisShippingRepository.saveAll(mesJisShippings);
|
|
|
|
|
}
|
|
|
|
|
return ResultBean.success("操作成功");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public MesJisShipping getMesJisShipping(MesShippingOrderManagement orderManagement,MesShippingOrderManagementDetail detail, String srcLocateNo, MesWorkOrderPart orderPart, String userName) {
|
|
|
|
|
MesJisShipping jisShipping = new MesJisShipping();
|
|
|
|
|
BeanUtils.copyProperties(orderManagement, jisShipping);
|
|
|
|
|
BeanUtils.copyProperties(detail, jisShipping);
|
|
|
|
|
jisShipping.setFactoryCode(orderManagement.getCustOrganizeCode());
|
|
|
|
|
jisShipping.setShippingTime(TimeTool.getNowTime(true));
|
|
|
|
|
jisShipping.setErpWarerhouse(srcLocateNo);
|
|
|
|
|
jisShipping.setErpWarehous(srcLocateNo);
|
|
|
|
|
jisShipping.setDock(orderManagement.getSendDockCode());
|
|
|
|
|
jisShipping.setCusCode(orderManagement.getCustCode());
|
|
|
|
|
jisShipping.setCusDock(orderManagement.getCustDockCode());
|
|
|
|
|
jisShipping.setCustOrderNo(detail.getCustOrderNo());
|
|
|
|
|
// 子零件信息赋值
|
|
|
|
|
jisShipping.setPartNo(orderPart.getPartNo());
|
|
|
|
|
jisShipping.setUnit(orderPart.getItemUnit());
|
|
|
|
|
// 20241115 没有给carNo赋值
|
|
|
|
|
jisShipping.setCarNo(detail.getVin());
|
|
|
|
|
jisShipping.setSerialNumber(orderPart.getWorkOrderNo());
|
|
|
|
|
jisShipping.setQuantityPerCar(orderPart.getItemQty());
|
|
|
|
|
jisShipping.setOffTime(TimeTool.getNowTime(true));
|
|
|
|
|
jisShipping.setShippingOrderCode(orderManagement.getShippingCode());
|
|
|
|
|
jisShipping.setFid(UUID.randomUUID().toString());
|
|
|
|
|
jisShipping.setSystemSyncStatus(CommonEnumUtil.FALSE);
|
|
|
|
|
ConvertBean.serviceModelInitialize(jisShipping, userName);
|
|
|
|
|
return jisShipping;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void doShippingBack(Long[] idList, String organizeCode, String userName) {
|
|
|
|
|
List<MesShippingOrderManagementDetail> detailList = getManagementDetails(idList, organizeCode, userName);
|
|
|
|
|
if (CollectionUtils.isEmpty(detailList)) MesException.throwMesBusiException("选择数据无效,请检查");
|
|
|
|
|