|
|
|
@ -12,6 +12,7 @@ import cn.estsh.i3plus.mes.api.iservice.base.IConfigService;
|
|
|
|
|
import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService;
|
|
|
|
|
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
|
|
|
|
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
|
|
|
|
|
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.enumutil.ResourceEnumUtil;
|
|
|
|
@ -20,20 +21,26 @@ import cn.estsh.i3plus.pojo.base.util.StringUtil;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesConfig;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.edi.cd.*;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingList;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingListDetail;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesLoadingListDetailRepository;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementDetailRepository;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementRepository;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.edi.cd.*;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
|
|
|
|
import cn.estsh.impp.framework.boot.auth.AuthUtil;
|
|
|
|
|
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
|
|
|
|
|
import cn.estsh.impp.framework.boot.util.ResultBean;
|
|
|
|
|
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
|
|
|
|
|
import cn.estsh.impp.framework.boot.util.ValidatorBean;
|
|
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.elasticsearch.common.recycler.Recycler;
|
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
@ -41,8 +48,10 @@ import org.springframework.util.CollectionUtils;
|
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Objects;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
|
@Slf4j
|
|
|
|
@ -53,6 +62,8 @@ public class MesLoadingListService extends BaseMesService<MesLoadingList> implem
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesShippingOrderManagementRepository shippingOrderManagementRepository;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesShippingOrderManagementDetailRepository shippingOrderManagementDetailRDao;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesLoadingListDetailRepository listDetailRepository;
|
|
|
|
|
@Autowired
|
|
|
|
|
private IMesPartShippingGroupService mesPartShippingGroupService;
|
|
|
|
@ -63,6 +74,16 @@ public class MesLoadingListService extends BaseMesService<MesLoadingList> implem
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private IMesLabelTemplateService labelTemplateService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesCimVolvoJisRackIdDetailRepository volvoJisRackIdDetailRDao;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesCimVolvoJisRackIdRepository volvoJisRackIdRDao;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesCimVolvoLdjisRepository volvoLdjisRDao;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesCimVolvoAsnRepository volvoAsnRDao;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesCimVolvoAsnDetailRepository volvoAsnDetailRDao;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public MesLoadingList insert(MesLoadingList bean) {
|
|
|
|
@ -189,7 +210,7 @@ public class MesLoadingListService extends BaseMesService<MesLoadingList> implem
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected void onInsertBean(MesLoadingList item) {
|
|
|
|
|
|
|
|
|
|
List<String> shippingOrderNoList = new ArrayList<>();
|
|
|
|
@ -241,6 +262,7 @@ public class MesLoadingListService extends BaseMesService<MesLoadingList> implem
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected void setPackQueryBean(MesLoadingList bean, DdlPackBean packBean) {
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getOrderCode(), "orderCode", packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getCustCode(), "custCode", packBean);
|
|
|
|
@ -294,4 +316,198 @@ public class MesLoadingListService extends BaseMesService<MesLoadingList> implem
|
|
|
|
|
|
|
|
|
|
return resultBean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void doSubmit(List<Long> ids) {
|
|
|
|
|
List<MesLoadingList> loadingLists = getMesLoadingListByIds(ids);
|
|
|
|
|
for (MesLoadingList loadingList : loadingLists) {
|
|
|
|
|
if (loadingList.getStatus() > MesExtEnumUtil.MES_LOADING_STATUS.PUBLISH.getValue()) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode())
|
|
|
|
|
.setErrorDetail(String.format("装车单已扫描,不能再确认或取消确认!"))
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (MesLoadingList loading : loadingLists) {
|
|
|
|
|
List<MesShippingOrderManagement> orderManagements = getMesShippingOrderManagement(loading);
|
|
|
|
|
if (loading.getStatus() == MesExtEnumUtil.MES_LOADING_STATUS.CREATE.getValue()) {
|
|
|
|
|
loading.setStatus(MesExtEnumUtil.MES_LOADING_STATUS.PUBLISH.getValue());
|
|
|
|
|
for (MesShippingOrderManagement orderManagement : orderManagements) {
|
|
|
|
|
orderManagement.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.LOADING.getValue());
|
|
|
|
|
shippingOrderManagementRepository.update(orderManagement);
|
|
|
|
|
}
|
|
|
|
|
baseRDao.update(loading);
|
|
|
|
|
} else if (loading.getStatus() == MesExtEnumUtil.MES_LOADING_STATUS.PUBLISH.getValue()) {
|
|
|
|
|
loading.setStatus(MesExtEnumUtil.MES_LOADING_STATUS.CREATE.getValue());
|
|
|
|
|
for (MesShippingOrderManagement orderManagement : orderManagements) {
|
|
|
|
|
orderManagement.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue());
|
|
|
|
|
shippingOrderManagementRepository.update(orderManagement);
|
|
|
|
|
}
|
|
|
|
|
baseRDao.update(loading);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void doCreateVolvoAsn(List<Long> ids) {
|
|
|
|
|
String organizeCode = AuthUtilExt.getOrganizeCode();
|
|
|
|
|
List<MesLoadingList> loadingLists = getMesLoadingListByIds(ids);
|
|
|
|
|
for (MesLoadingList loading : loadingLists) {
|
|
|
|
|
if (loading.getStatus() != MesExtEnumUtil.MES_LOADING_STATUS.SCANNED.getValue()) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode())
|
|
|
|
|
.setErrorDetail(String.format("装车单【%s】未执行装车校验!", loading.getOrderCode()))
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for (MesLoadingList loading : loadingLists) {
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(loading.getId(), "pid", packBean);
|
|
|
|
|
List<MesLoadingListDetail> details = listDetailRepository.findByHqlWhere(packBean);
|
|
|
|
|
if (CollectionUtils.isEmpty(details)) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode())
|
|
|
|
|
.setErrorDetail(String.format("装车单【%s】明细为空!", loading.getOrderCode()))
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
MesCimVolvoJisRackId jisRackId = null;
|
|
|
|
|
for (MesLoadingListDetail detail : details) {
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(detail.getShippingCode(), "shippingCode", ddlPackBean);
|
|
|
|
|
MesShippingOrderManagement orderManagement = shippingOrderManagementRepository.getByProperty(ddlPackBean);
|
|
|
|
|
if (orderManagement != null) {
|
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(orderManagement.getId(), "pid", ddlPackBean);
|
|
|
|
|
List<MesShippingOrderManagementDetail> orderManagementDetails = shippingOrderManagementDetailRDao.findByHqlWhere(ddlPackBean);
|
|
|
|
|
for (MesShippingOrderManagementDetail orderManagementDetail : orderManagementDetails) {
|
|
|
|
|
if (orderManagementDetail.getSourceId() != null) {
|
|
|
|
|
MesCimVolvoJisRackIdDetail rackIdDetail = volvoJisRackIdDetailRDao.getById(orderManagementDetail.getSourceId());
|
|
|
|
|
if (rackIdDetail != null) {
|
|
|
|
|
jisRackId = volvoJisRackIdRDao.getById(rackIdDetail.getJisRackIdFid());
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (jisRackId != null) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (jisRackId == null) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(jisRackId.getConsignmentReference(), "consignmentReference", ddlPackBean);
|
|
|
|
|
MesCimVolvoLdjis volvoLdjis = volvoLdjisRDao.getByProperty(ddlPackBean);
|
|
|
|
|
if (volvoLdjis == null) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MesCimVolvoAsn volvoAsn = new MesCimVolvoAsn();
|
|
|
|
|
volvoAsn.setOrganizeCode(organizeCode);
|
|
|
|
|
volvoAsn.setAsnDate(TimeTool.getNowTime("yyyy-MM-dd HH:mm:ss.SSS"));
|
|
|
|
|
volvoAsn.setAsnTime(TimeTool.getNowTime("yyyy-MM-dd HH:mm:ss.SSS"));
|
|
|
|
|
volvoAsn.setStatus(10);
|
|
|
|
|
volvoAsn.setMessage(volvoLdjis.getInterchangeHeader());
|
|
|
|
|
volvoAsn.setProject(volvoLdjis.getMessageHeader());
|
|
|
|
|
volvoAsn.setBeginningOfMessage(volvoLdjis.getBeginningOfMessage());
|
|
|
|
|
volvoAsn.setSeller(volvoLdjis.getSeller());
|
|
|
|
|
volvoAsn.setBuyer(volvoLdjis.getBuyer());
|
|
|
|
|
volvoAsn.setShipFrom(volvoLdjis.getShipFrom());
|
|
|
|
|
volvoAsn.setShipTo(volvoLdjis.getShipTo());
|
|
|
|
|
volvoAsn.setAdviceNoteNo(volvoLdjis.getConsignmentReference());
|
|
|
|
|
volvoAsn.setPlaceOfDischarge(volvoLdjis.getIdForPlaceOfDischarge());
|
|
|
|
|
volvoAsn.setMtq(0.0);
|
|
|
|
|
volvoAsn.setKgm(0.0);
|
|
|
|
|
loading.setStatus(MesExtEnumUtil.MES_LOADING_STATUS.CREATE_ASN.getValue());
|
|
|
|
|
ConvertBean.serviceModelInitialize(volvoAsn, AuthUtil.getSessionUser().getUserName());
|
|
|
|
|
volvoAsnRDao.save(volvoAsn);
|
|
|
|
|
|
|
|
|
|
int packageId = 1;
|
|
|
|
|
for (MesLoadingListDetail detail : details) {
|
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(detail.getShippingCode(), "shippingCode", ddlPackBean);
|
|
|
|
|
MesShippingOrderManagement orderManagement = shippingOrderManagementRepository.getByProperty(ddlPackBean);
|
|
|
|
|
if (orderManagement != null) {
|
|
|
|
|
if (StringUtils.isEmpty(volvoAsn.getAsnNo())) {
|
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(orderManagement.getShippingCode(), "jisRackId", ddlPackBean);
|
|
|
|
|
MesCimVolvoJisRackId rackId = volvoJisRackIdRDao.getByProperty(ddlPackBean);
|
|
|
|
|
if (rackId != null) {
|
|
|
|
|
volvoAsn.setAsnNo(rackId.getAsnNo());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(orderManagement.getId(), "pid", ddlPackBean);
|
|
|
|
|
List<MesShippingOrderManagementDetail> orderManagementDetails = shippingOrderManagementDetailRDao.findByHqlWhere(ddlPackBean);
|
|
|
|
|
for (MesShippingOrderManagementDetail orderManagementDetail : orderManagementDetails) {
|
|
|
|
|
MesCimVolvoJisRackId rackId = null;
|
|
|
|
|
MesCimVolvoJisRackIdDetail rackIdDetail = volvoJisRackIdDetailRDao.getById(orderManagementDetail.getSourceId());
|
|
|
|
|
if (rackIdDetail != null) {
|
|
|
|
|
rackId = volvoJisRackIdRDao.getById(rackIdDetail.getJisRackIdFid());
|
|
|
|
|
}
|
|
|
|
|
if (rackId == null) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(rackId.getConsignmentReference(), "consignmentReference", ddlPackBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(rackId.getJisRackId(), "rackId", ddlPackBean);
|
|
|
|
|
volvoLdjis = volvoLdjisRDao.getByProperty(ddlPackBean);
|
|
|
|
|
if (volvoLdjis == null) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MesCimVolvoAsnDetail asnDetail = new MesCimVolvoAsnDetail();
|
|
|
|
|
asnDetail.setAsnId(volvoAsn.getId());
|
|
|
|
|
asnDetail.setSeq(orderManagement.getSeq());
|
|
|
|
|
asnDetail.setPackagingReference(volvoLdjis.getPackageReference());
|
|
|
|
|
asnDetail.setPackageTypeReference(volvoLdjis.getPackageReference());
|
|
|
|
|
asnDetail.setPackageId(String.valueOf(packageId));
|
|
|
|
|
asnDetail.setRackId(volvoLdjis.getRackId());
|
|
|
|
|
asnDetail.setLineItem(orderManagementDetail.getCustPartNo());
|
|
|
|
|
asnDetail.setDispatchedQuantity(volvoLdjis.getProductionReferencesSequenceNumber());
|
|
|
|
|
asnDetail.setFyon(volvoLdjis.getProductionReferencesFyon());
|
|
|
|
|
asnDetail.setRackPositionReferece(volvoLdjis.getProductionReferencesPosition());
|
|
|
|
|
asnDetail.setPurchaseOrderNumber(volvoLdjis.getOrderReference());
|
|
|
|
|
asnDetail.setAdditionalInternalDestination(volvoLdjis.getIdForAdditionalInternalDestination());
|
|
|
|
|
asnDetail.setOrganizeCode(organizeCode);
|
|
|
|
|
ConvertBean.serviceModelInitialize(asnDetail, AuthUtil.getSessionUser().getUserName());
|
|
|
|
|
volvoAsnDetailRDao.save(asnDetail);
|
|
|
|
|
packageId++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<MesLoadingList> getMesLoadingListByIds(List<Long> ids) {
|
|
|
|
|
String organizeCode = AuthUtilExt.getOrganizeCode();
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getInPackList(ids, "id", packBean);
|
|
|
|
|
return baseRDao.findByHqlWhere(packBean);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<MesShippingOrderManagement> getMesShippingOrderManagement(MesLoadingList loading) {
|
|
|
|
|
List<MesShippingOrderManagement> orderManagements = new ArrayList<>();
|
|
|
|
|
String organizeCode = AuthUtilExt.getOrganizeCode();
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(loading.getId(), "pid", packBean);
|
|
|
|
|
List<MesLoadingListDetail> details = listDetailRepository.findByHqlWhere(packBean);
|
|
|
|
|
if (!CollectionUtils.isEmpty(details)) {
|
|
|
|
|
for (MesLoadingListDetail detail : details) {
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(detail.getShippingCode(), "shippingCode", ddlPackBean);
|
|
|
|
|
MesShippingOrderManagement orderManagement = shippingOrderManagementRepository.getByProperty(ddlPackBean);
|
|
|
|
|
if (orderManagement != null) {
|
|
|
|
|
orderManagements.add(orderManagement);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return orderManagements;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|