|
|
|
@ -1,12 +1,149 @@
|
|
|
|
|
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
|
|
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesShippingOrderManagementService;
|
|
|
|
|
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
|
|
|
|
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
|
|
|
|
|
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.mes.bean.MesPartShippingGroup;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesShippingOrderManagement;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesShippingOrderManagementDetail;
|
|
|
|
|
import cn.estsh.impp.framework.boot.auth.AuthUtil;
|
|
|
|
|
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
|
@Slf4j
|
|
|
|
|
public class MesShippingOrderManagementService extends BaseMesService<MesShippingOrderManagement> implements IMesShippingOrderManagementService {
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesShippingOrderManagementDetailService detailService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesPartShippingGroupService shippingGroupService;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public MesShippingOrderManagement insert(MesShippingOrderManagement bean) {
|
|
|
|
|
//插入前构造数据
|
|
|
|
|
onInsertBean(bean);
|
|
|
|
|
|
|
|
|
|
//查询物料发运组数据
|
|
|
|
|
DdlPackBean shipGroupPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getShippingOrderNo(), "shippingGroupNo", shipGroupPackBean);
|
|
|
|
|
List<MesPartShippingGroup> partShippingGroupList = shippingGroupService.findAll(shipGroupPackBean);
|
|
|
|
|
if (CollectionUtils.isEmpty(partShippingGroupList)) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("【%s】发运组数据为空,请检查数据", bean.getShippingOrderNo())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//发运单明细
|
|
|
|
|
List<MesShippingOrderManagementDetail> detailInsertList = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
MesShippingOrderManagement finalBean = bean;
|
|
|
|
|
partShippingGroupList.forEach(k -> {
|
|
|
|
|
MesShippingOrderManagementDetail detail = new MesShippingOrderManagementDetail();
|
|
|
|
|
|
|
|
|
|
detail.setShippingOrderNo(finalBean.getShippingOrderNo());
|
|
|
|
|
detail.setOrganizeCode(k.getOrganizeCode());
|
|
|
|
|
ConvertBean.serviceModelInitialize(detail, AuthUtil.getSessionUser().getUserName());
|
|
|
|
|
BeanUtils.copyProperties(k, detail, "id");
|
|
|
|
|
detailInsertList.add(detail);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
detailService.insertBatch(detailInsertList);
|
|
|
|
|
bean = baseRDao.insert(bean);
|
|
|
|
|
return bean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public MesShippingOrderManagement update(MesShippingOrderManagement bean) {
|
|
|
|
|
//更新前构造数据
|
|
|
|
|
onUpdateBean(bean);
|
|
|
|
|
MesShippingOrderManagement originBean = baseRDao.getById(bean.getId());
|
|
|
|
|
if (StringUtils.isEmpty(originBean)) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("请选择需要操作的资源。")
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//判断是否修改发运组,如果不修改发运组,则不修改明细
|
|
|
|
|
if (!bean.getShippingGroupNo().equals(originBean.getShippingGroupNo())) {
|
|
|
|
|
|
|
|
|
|
DdlPackBean detailPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getShippingOrderNo(), "shippingGroupNo", detailPackBean);
|
|
|
|
|
List<MesShippingOrderManagementDetail> detailDeleteList = detailService.findAll(detailPackBean);
|
|
|
|
|
detailDeleteList.forEach(k -> {
|
|
|
|
|
k.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
|
|
|
|
|
ConvertBean.serviceModelUpdate(k, AuthUtil.getSessionUser().getUserName());
|
|
|
|
|
});
|
|
|
|
|
//查询物料发运组数据
|
|
|
|
|
DdlPackBean shipGroupPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getShippingOrderNo(), "shippingGroupNo", shipGroupPackBean);
|
|
|
|
|
List<MesPartShippingGroup> partShippingGroupList = shippingGroupService.findAll(shipGroupPackBean);
|
|
|
|
|
if (CollectionUtils.isEmpty(partShippingGroupList)) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("【%s】发运组数据为空,请检查数据", bean.getShippingOrderNo())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
//发运单明细
|
|
|
|
|
List<MesShippingOrderManagementDetail> detailInsertList = new ArrayList<>();
|
|
|
|
|
partShippingGroupList.forEach(k -> {
|
|
|
|
|
MesShippingOrderManagementDetail detail = new MesShippingOrderManagementDetail();
|
|
|
|
|
|
|
|
|
|
detail.setOrganizeCode(k.getOrganizeCode());
|
|
|
|
|
ConvertBean.serviceModelInitialize(detail, AuthUtil.getSessionUser().getUserName());
|
|
|
|
|
BeanUtils.copyProperties(k, detail, "id");
|
|
|
|
|
detailInsertList.add(detail);
|
|
|
|
|
});
|
|
|
|
|
//软删原明细数据
|
|
|
|
|
detailService.updates(detailDeleteList);
|
|
|
|
|
//新增新明细数据
|
|
|
|
|
detailService.insertBatch(detailInsertList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
onModifyBean();
|
|
|
|
|
ConvertBean.serviceModelUpdate(bean, AuthUtil.getSessionUser().getUserName());
|
|
|
|
|
baseRDao.update(bean);
|
|
|
|
|
return originBean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void deleteWeaklyByIds(Long[] ids, String userName) {
|
|
|
|
|
|
|
|
|
|
for (Long id : ids) {
|
|
|
|
|
MesShippingOrderManagement bean = baseRDao.getById(id);
|
|
|
|
|
if (StringUtils.isEmpty(bean)) continue;
|
|
|
|
|
DdlPackBean detailPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getShippingOrderNo(), "shippingGroupNo", detailPackBean);
|
|
|
|
|
List<MesShippingOrderManagementDetail> detailDeleteList = detailService.findAll(detailPackBean);
|
|
|
|
|
detailDeleteList.forEach(k -> {
|
|
|
|
|
k.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
|
|
|
|
|
ConvertBean.serviceModelUpdate(k, AuthUtil.getSessionUser().getUserName());
|
|
|
|
|
});
|
|
|
|
|
bean.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
|
|
|
|
|
ConvertBean.serviceModelUpdate(bean, AuthUtil.getSessionUser().getUserName());
|
|
|
|
|
baseRDao.update(bean);
|
|
|
|
|
detailService.updates(detailDeleteList);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|