Merge branch 'uat-temp-xw-202501200000-44905' into dev

dev
xiangwei.zhang 4 months ago
commit 6b5432d5b9

@ -5,6 +5,7 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderPart;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.ApiOperation;
import java.util.List;
@ -22,6 +23,20 @@ public interface IMesShippingOrderManagementDetailService extends IBaseMesServic
@ApiOperation("查询发运单明细")
ListPager<MesShippingOrderManagementDetailModel> queryMesShippingDetailsByPager(MesShippingOrderManagementDetailModel mesShippingOrderManagementDetailModel, Pager pager);
@ApiOperation("查询发运单明细")
ListPager<MesShippingOrderManagementDetailModel> queryMesShippingErrorDetailsByPager(MesShippingOrderManagementDetailModel mesShippingOrderManagementDetailModel, Pager pager);
@ApiOperation("根据客户零件匹配零件号")
public ResultBean supplyBycustPartNo(Long[] ids);
@ApiOperation("根据CBR匹配零件号")
public ResultBean supplyByCBR(Long[] ids);
@ApiOperation("手动发运改数量")
public ResultBean updateQty(Long[] ids);
@ApiOperation("发运退回")
void doShippingBack(Long[] idList,String organizeCode,String userName);

@ -55,6 +55,54 @@ public class MesShippingOrderManagementDetailController extends BaseMesControlle
}
}
@ApiOperation(value = "发运单异常明细", notes = "发运单异常明细")
@GetMapping("/master/error/query")
public ResultBean queryMesShippingErrorDetailsByPager(MesShippingOrderManagementDetailModel mesShippingOrderManagementDetailModel, Pager pager) {
try {
return ResultBean.success("查询成功").setListPager(shippingOrderManagementDetailService.queryMesShippingDetailsByPager(mesShippingOrderManagementDetailModel,pager));
} catch (ImppBusiException e) {
return ResultBean.fail(e);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@ApiOperation(value = "根据客户零件匹配零件号", notes = "根据客户零件匹配零件号")
@GetMapping("/master/part/supplyBycustPartNo")
public ResultBean supplyBycustPartNo(Long[] ids) {
try {
return shippingOrderManagementDetailService.supplyBycustPartNo(ids);
} catch (ImppBusiException e) {
return ResultBean.fail(e);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@ApiOperation(value = "根据CBR匹配零件号", notes = "根据CBR匹配零件号")
@GetMapping("/master/part/supplyByCBR")
public ResultBean supplyByCBR(Long[] ids) {
try {
return shippingOrderManagementDetailService.supplyByCBR(ids);
} catch (ImppBusiException e) {
return ResultBean.fail(e);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@ApiOperation(value = "手工发运", notes = "手工发运")
@GetMapping("/master/part/updateQty")
public ResultBean updateQty(Long[] ids) {
try {
return shippingOrderManagementDetailService.updateQty(ids);
} catch (ImppBusiException e) {
return ResultBean.fail(e);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@ApiOperation(value = "发运退回", notes = "发运退回")
@PutMapping("/doShippingBack")
public ResultBean doShippingBack(@RequestBody Long[] idList) {

@ -188,6 +188,8 @@ public class MesShippingOrderManagementDetailDaoImpl implements IMesShippingOrde
commonHql.append(" and m.publishTime >= :publishTimeStart ");
if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getPublishTimeEnd()))
commonHql.append(" and m.publishTime <= :publishTimeEnd ");
if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getDetailsStatus()))
commonHql.append(" and d.status = " + mesShippingOrderManagementDetailModel.getDetailsStatus() + "");
return commonHql.toString();
}
@Override

@ -133,13 +133,13 @@ public class MesPartTypeDefectService extends BaseMesService<MesPartTypeDefect>
item.setPartTypeName(partType.getPartTypeName());
DdlPackBean defectTypePackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPartTypeCode(), "defectTypeCode", defectTypePackBean);
DdlPreparedPack.getStringEqualPack(item.getDefectTypeCode(), "defectTypeCode", defectTypePackBean);
MesDefectType defectType = defectTypeRepository.getByProperty(defectTypePackBean);
if (defectTypeRepository == null) {
if (defectType == null) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("缺陷类型【%s】不存在请检查数据", item.getPartTypeCode())
.setErrorDetail("缺陷类型【%s】不存在请检查数据", item.getDefectTypeCode())
.build();
}
item.setDefectTypeName(defectType.getDefectTypeName());

@ -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("选择数据无效,请检查");

Loading…
Cancel
Save