POM逻辑修改

dev-temp-xw-202501031219-44700
臧学普 5 months ago
parent 010ea9ce0c
commit ef0e52289b

@ -63,6 +63,14 @@ public interface IMesBomService extends IBaseMesService<MesBom> {
*/ */
MesBom findBom(String organizeCode, String bomVersion,String partNo); MesBom findBom(String organizeCode, String bomVersion,String partNo);
/**
* bom
* @param organizeCode
* @param partNo
* @return
*/
MesBom findBom(String organizeCode,String partNo);
@ApiOperation(value = "bom反向查询") @ApiOperation(value = "bom反向查询")
List<MesBom> queryMesBomReverse(MesBom mesBom); List<MesBom> queryMesBomReverse(MesBom mesBom);
} }

@ -209,6 +209,17 @@ public class MesBomService extends BaseMesService<MesBom> implements IMesBomServ
} }
@Override @Override
public MesBom findBom(String organizeCode, String partNo) {
DdlPackBean bomPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", bomPackBean);
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), "effStartTime", bomPackBean);
DdlPreparedPack.getStringBiggerPack(TimeTool.getNowTime(true), "effEndTime", bomPackBean);
DdlPreparedPack.getOrderBy("effStartTime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), bomPackBean);
List<MesBom> bomList = this.baseRDao.findByHqlTopWhere(bomPackBean,1);
return bomList.isEmpty() ? null : bomList.get(0);
}
@Override
public List<MesBom> queryMesBomReverse(MesBom mesBom) { public List<MesBom> queryMesBomReverse(MesBom mesBom) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesBom.getOrganizeCode()); DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesBom.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesBom.getPartNo(), "itemPartNo", packBean); DdlPreparedPack.getStringEqualPack(mesBom.getPartNo(), "itemPartNo", packBean);

@ -195,19 +195,41 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
/** /**
* erp * erp
*/ */
MesProductVersion prodVersion = getProdVersion(organizeCode, mesPartProdGroupDetail.getProductPartNo()); /**
if (prodVersion == null) { * 2024-12-13 bug 44316 bom by castle
log.info("请配置工厂:{},partNo:{}的生产版本", mesPartProdGroupDetail.organizeCode, mesPartProdGroupDetail.getProductPartNo()); * EDIBOM
} else { *
String productVersion = prodVersion.getProductVersion(); * -线
mesWorkOrder.setProductVersion(productVersion); * 1使BOM
* 2使BOM
*
*
* 1BOM
* 2BOM
* BOM
*
* BOM;
* limit 1ECN
* ***BOM > BOM <= yyyy-mm-dd hh:MM:ss
*/
MesBom bom;
if (partProdGroup.getRemark() != "xxx"){
MesProductVersion prodVersion = getProdVersion(organizeCode, mesPartProdGroupDetail.getProductPartNo());
if (prodVersion == null) {
log.info("请配置工厂:{},partNo:{}的生产版本", mesPartProdGroupDetail.organizeCode, mesPartProdGroupDetail.getProductPartNo());
} else {
String productVersion = prodVersion.getProductVersion();
mesWorkOrder.setProductVersion(productVersion);
}
bom = mesBomService.findBom(organizeCode, prodVersion == null ? null : prodVersion.getAlternativePartList(), mesPartProdGroupDetail.getProductPartNo());
}else {
bom = mesBomService.findBom(organizeCode, mesPartProdGroupDetail.getProductPartNo());
} }
// bom prodVersion.alternativePartList bom版本 // bom prodVersion.alternativePartList bom版本
/** /**
* bom * bom
*/ */
MesBom bom = mesBomService.findBom(organizeCode, prodVersion == null ? null : prodVersion.getAlternativePartList(), mesPartProdGroupDetail.getProductPartNo());
if (bom != null) { if (bom != null) {
mesWorkOrder.setBomCode(bom.getBomCode()); mesWorkOrder.setBomCode(bom.getBomCode());
} else { } else {
@ -308,7 +330,7 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
List<MesWorkOrderPart> workOrderPartList = new ArrayList<>(); List<MesWorkOrderPart> workOrderPartList = new ArrayList<>();
if (partProdGroup.getIsDisassembleBom() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) { if (partProdGroup.getIsDisassembleBom() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) {
//打散bom使用生产零件号 //打散bom使用生产零件号
workOrderPartList = dismantleBom(mesPartProdGroupDetail.getProductPartNo(), mesWorkOrder.getQty(), sortInfo.getMatchTime(), bom.getBomCode(), sortInfo.getOrganizeCode(), mesPartProdGroupDetail.getWorkCellCode(), mesWorkOrder.getWorkOrderNo()); workOrderPartList = dismantleBom(bom, mesPartProdGroupDetail.getProductPartNo(), mesWorkOrder.getQty(), sortInfo.getMatchTime(), sortInfo.getOrganizeCode(), mesPartProdGroupDetail.getWorkCellCode(), mesWorkOrder.getWorkOrderNo());
} }
@ -759,11 +781,11 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
} }
return null; return null;
} }
private List<MesWorkOrderPart> dismantleBom(String partNo, double qty, String productTime, String bomCode, String organizeCode, String workCellCode, String workOrderNo) { private List<MesWorkOrderPart> dismantleBom(MesBom mesBom, String partNo, double qty, String productTime, String organizeCode, String workCellCode, String workOrderNo) {
List<MesWorkOrderPart> orderPartList = new ArrayList<>(); List<MesWorkOrderPart> orderPartList = new ArrayList<>();
//1.根据bomCode,partNo productTime organizeCode 查询bom清单 bomList //1.根据bomCode,partNo productTime organizeCode 查询bom清单 bomList
List<MesBom> bomList = getPlatBom(partNo, productTime, bomCode, organizeCode); List<MesBom> bomList = getPlatBom(mesBom,partNo, productTime, organizeCode);
//2.根据bomList中的subPartNo 查询零件清单 partList //2.根据bomList中的subPartNo 查询零件清单 partList
List<String> partNoList = bomList.stream().map(MesBom::getItemPartNo).distinct().collect(Collectors.toList()); List<String> partNoList = bomList.stream().map(MesBom::getItemPartNo).distinct().collect(Collectors.toList());
@ -803,8 +825,8 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
return orderPartList; return orderPartList;
} }
private List<MesBom> getPlatBom(String partNo, String effectiveTime, String bomCode, String organizeCode) { private List<MesBom> getPlatBom(MesBom mesBom,String partNo, String effectiveTime,String organizeCode) {
if (bomCode == null) { if (mesBom == null) {
//首先根据虚结构的零件号查询出最新的一条bom信息作为bomCode //首先根据虚结构的零件号查询出最新的一条bom信息作为bomCode
DdlPackBean bomCodePackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean bomCodePackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", bomCodePackBean); DdlPreparedPack.getStringEqualPack(partNo, "partNo", bomCodePackBean);
@ -814,19 +836,18 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
if (bomList == null || bomList.isEmpty()) { if (bomList == null || bomList.isEmpty()) {
return new ArrayList<>(); return new ArrayList<>();
} }
bomCode = bomList.get(0).getBomCode(); mesBom = bomList.get(0);
} }
List<MesBom> bomResultList = new ArrayList<>(); List<MesBom> bomResultList = new ArrayList<>();
DdlPackBean bomPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean bomPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(bomCode, "bomCode", bomPackBean); DdlPreparedPack.getStringEqualPack(mesBom.getBomCode(), "bomCode", bomPackBean);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", bomPackBean); DdlPreparedPack.getStringEqualPack(partNo, "partNo", bomPackBean);
DdlPreparedPack.getStringSmallerPack(effectiveTime, "effStartTime", bomPackBean); DdlPreparedPack.getStringEqualPack(effectiveTime, "effStartTime", bomPackBean);
DdlPreparedPack.getStringBiggerPack(effectiveTime, "effEndTime", bomPackBean);
List<MesBom> bomList = bomRao.findByHqlWhere(bomPackBean); List<MesBom> bomList = bomRao.findByHqlWhere(bomPackBean);
for (MesBom bom : bomList) { for (MesBom bom : bomList) {
if (bom.getPartType() != null && bom.getPartType().equalsIgnoreCase("X")) { if (bom.getPartType() != null && bom.getPartType().equalsIgnoreCase("X")) {
getPlatBom(bom.getItemPartNo(), effectiveTime, null, organizeCode); getPlatBom(null,bom.getItemPartNo(), effectiveTime, organizeCode);
} else { } else {
bom.setBomCode(bom.getBomCode().toLowerCase()); bom.setBomCode(bom.getBomCode().toLowerCase());
bomResultList.add(bom); bomResultList.add(bom);

Loading…
Cancel
Save