成都发运,临时提交

uat-temp-nht-2503130000-shipping
jason 2 months ago
parent 32e010665d
commit 28e3e82a42

@ -3,6 +3,8 @@ package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingList;
import io.swagger.annotations.ApiOperation;
import java.util.List;
/**
* @Description:
* @CreateDate 2024/04/16
@ -13,4 +15,7 @@ public interface IMesLoadingListService extends IBaseMesService<MesLoadingList>
@ApiOperation("根据发运单号查询装车单信息")
MesLoadingList getMesLoadingListByShippingCode(String organizeCode, String shippingCode);
void doSubmit(List<Long> ids);
void doCreateVolvoAsn(List<Long> ids);
}

@ -1,16 +1,54 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesLoadingListService;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesLoadingList;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Api(description = "装车单主页面")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesLoadingVehiclesOrder")
public class MesLoadingListController extends BaseMesController<MesLoadingList> {
@Autowired
private IMesLoadingListService mesLoadingListService;
@PostMapping(value = "/submit")
@ApiOperation(value = "确认")
public ResultBean submit(@RequestBody List<Long> ids) {
try {
mesLoadingListService.doSubmit(ids);
return ResultBean.success("确认成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping(value = "/createVolvoAsn")
@ApiOperation(value = "创建沃尔沃的ASN")
public ResultBean createVolvoAsn(@RequestBody List<Long> ids) {
try {
mesLoadingListService.doCreateVolvoAsn(ids);
return ResultBean.success("确认成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -7,22 +7,29 @@ import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
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.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.base.util.StringUtil;
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.ValidatorBean;
import cn.hutool.core.date.DateTime;
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;
@ -30,8 +37,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
@ -42,11 +51,23 @@ public class MesLoadingListService extends BaseMesService<MesLoadingList> implem
@Autowired
private MesShippingOrderManagementRepository shippingOrderManagementRepository;
@Autowired
private MesShippingOrderManagementDetailRepository shippingOrderManagementDetailRDao;
@Autowired
private MesLoadingListDetailRepository listDetailRepository;
@Autowired
private IMesPartShippingGroupService mesPartShippingGroupService;
@Autowired
private ISyncFuncService syncFuncService;
@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) {
@ -173,7 +194,7 @@ public class MesLoadingListService extends BaseMesService<MesLoadingList> implem
}
}
@Override
protected void onInsertBean(MesLoadingList item) {
List<String> shippingOrderNoList = new ArrayList<>();
@ -225,6 +246,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);
@ -243,4 +265,198 @@ public class MesLoadingListService extends BaseMesService<MesLoadingList> implem
DdlPreparedPack.getNumEqualPack(mesLoadingListDetail.getPid(),"id",packBean);
return baseRDao.getByProperty(packBean);
}
@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;
}
}

@ -20,25 +20,30 @@ import java.util.List;
@Slf4j
public class MesVolvoRackService extends BaseMesService<MesVolvoRack> implements IMesVolvoRackService {
@Override
protected void setPackQueryBean(MesVolvoRack bean, DdlPackBean packBean) {
DdlPreparedPack.getStringLikerPack(bean.getRackOwner(), "rackOwner", packBean);
DdlPreparedPack.getNumEqualPack(bean.getRackType(), "rackType", packBean);
}
@Override
protected void onInsertBean(MesVolvoRack item) {
// 数据校验
ValidatorBean.checkNotNull(item.getRackOwner(), "料架所有者");
ValidatorBean.checkNotNull(item.getRackSeq(), "料架系列号不能为空");
ValidatorBean.checkNotNull(item.getRackType(), "料架类型不能为空");
ValidatorBean.checkNotNull(item.getPositionTotal(), "位置总数不能为空");
setBarcode(item);
}
@Override
protected void onUpdateBean(MesVolvoRack item) {
// 数据校验
ValidatorBean.checkNotNull(item.getRackOwner(), "料架所有者");
ValidatorBean.checkNotNull(item.getRackSeq(), "料架系列号不能为空");
ValidatorBean.checkNotNull(item.getRackType(), "料架类型不能为空");
ValidatorBean.checkNotNull(item.getPositionTotal(), "位置总数不能为空");
setBarcode(item);
}
@Override
@ -50,7 +55,12 @@ public class MesVolvoRackService extends BaseMesService<MesVolvoRack> implements
ValidatorBean.checkNotNull(item.getRackSeq(), "料架系列号不能为空");
ValidatorBean.checkNotNull(item.getRackType(), "料架类型不能为空");
ValidatorBean.checkNotNull(item.getPositionTotal(), "位置总数不能为空");
setBarcode(item);
}
}
private void setBarcode(MesVolvoRack bean) {
String barcode = "[)>" + (char)30 + "06" + (char)29 + "26BOD" + bean.getRackOwner().trim() + bean.getRackType().toString() + "+" + bean.getRackSeq() + (char)30 + (char)04;
bean.setBarCode(barcode);
}
}

Loading…
Cancel
Save