|  |  |  | @ -135,6 +135,9 @@ public class MesWorkOrderService implements IMesWorkOrderService { | 
		
	
		
			
				|  |  |  |  |     @Autowired | 
		
	
		
			
				|  |  |  |  |     private IMesProdRuleSortCfgDao mesProdRuleSortCfgDao; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     @Autowired | 
		
	
		
			
				|  |  |  |  |     private MesPartProdGroupRepository mesPartProdGroupRao; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     @Override | 
		
	
		
			
				|  |  |  |  |     public MesWorkOrder queryMesWorkOrder(MesWorkOrder workOrder) { | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -220,9 +223,26 @@ public class MesWorkOrderService implements IMesWorkOrderService { | 
		
	
		
			
				|  |  |  |  |             MesPcnException.throwMesBusiException("产线【%s】不存在", mesWorkOrderDb.getWorkCenterCode()); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         //获取生产版本
 | 
		
	
		
			
				|  |  |  |  |         MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrderDb); | 
		
	
		
			
				|  |  |  |  |         MesProductVersion mesProductVersion = getProductVersion(mesWorkOrderDb.getOrganizeCode(), mesWorkOrderDb.getPartNo(), mesWorkOrderDb.getProductVersion()); | 
		
	
		
			
				|  |  |  |  |         String bomVersion =  mesProductVersion.getAlternativePartList(); | 
		
	
		
			
				|  |  |  |  |         String partProdGroupCode = mesWorkOrderDb.getPartProdGroupCode(); | 
		
	
		
			
				|  |  |  |  |         // partProdGroupCode 不为空,查询的数据不为空,查询数据中的获取bom方式不为空且枚举是 基于默认BOM ,才bomversion = null 否则都是通过生产版本找bom
 | 
		
	
		
			
				|  |  |  |  |         if (!StringUtil.isEmpty(partProdGroupCode)) { | 
		
	
		
			
				|  |  |  |  |             DdlPackBean partProdBean = DdlPackBean.getDdlPackBean(mesWorkOrderDb.getOrganizeCode()); | 
		
	
		
			
				|  |  |  |  |             DdlPreparedPack.getStringEqualPack(partProdGroupCode, "partProdGroupCode", partProdBean); | 
		
	
		
			
				|  |  |  |  |             List<MesPartProdGroup> mesPartProdGroupList = mesPartProdGroupRao.findByHqlTopWhere(partProdBean, 1); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |             // 没有零件生产组用默认找生产版本、有的话找获取bom方式枚举,枚举是基于默认BOM 则直接找
 | 
		
	
		
			
				|  |  |  |  |             if (!mesPartProdGroupList.isEmpty()) { | 
		
	
		
			
				|  |  |  |  |                 MesPartProdGroup mesPartProdGroup = mesPartProdGroupList.get(0); | 
		
	
		
			
				|  |  |  |  |                 if (mesPartProdGroup.getEnableBomVersion() != null && mesPartProdGroup.getEnableBomVersion() == MesExtEnumUtil.ENABLE_BOM_VERSION.ENABLE_BOM_VERSION_2.getValue()) { | 
		
	
		
			
				|  |  |  |  |                     log.info("基于默认BOM获取BOM"); | 
		
	
		
			
				|  |  |  |  |                     bomVersion = ""; | 
		
	
		
			
				|  |  |  |  |                 } | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         //物料+生产版本获取bom信息
 | 
		
	
		
			
				|  |  |  |  |         List<MesBom> mesBoms = findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList()); | 
		
	
		
			
				|  |  |  |  |         List<MesBom> mesBoms = findBomList(mesPart.getOrganizeCode(), mesPart, bomVersion); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         LOGGER.info("产线:{} 零件:{}更新工单", mesWorkOrderDb.getWorkCenterCode(), mesWorkOrderDb.getPartNo()); | 
		
	
		
			
				|  |  |  |  |         //更新工单
 | 
		
	
	
		
			
				
					|  |  |  | @ -535,10 +555,27 @@ public class MesWorkOrderService implements IMesWorkOrderService { | 
		
	
		
			
				|  |  |  |  |             return; | 
		
	
		
			
				|  |  |  |  |             //throw new ImppBusiException(String.format("未找到匹配的加工单"));
 | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         //获取生产版本
 | 
		
	
		
			
				|  |  |  |  |         MesProductVersion mesProductVersion = getProductVersion(organizeCode, productionRecord.getPartNo(), oldMesWorkOrder.getProductVersion()); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         //查询物料信息
 | 
		
	
		
			
				|  |  |  |  |         //获取生产版本
 | 
		
	
		
			
				|  |  |  |  |         MesProductVersion mesProductVersion = getProductVersion(oldMesWorkOrder.getOrganizeCode(), oldMesWorkOrder.getPartNo(), oldMesWorkOrder.getProductVersion()); | 
		
	
		
			
				|  |  |  |  |         String bomVersion =  mesProductVersion.getAlternativePartList(); | 
		
	
		
			
				|  |  |  |  |         String partProdGroupCode = oldMesWorkOrder.getPartProdGroupCode(); | 
		
	
		
			
				|  |  |  |  |         // partProdGroupCode 不为空,查询的数据不为空,查询数据中的获取bom方式不为空且枚举是 基于默认BOM ,才bomversion = null 否则都是通过生产版本找bom
 | 
		
	
		
			
				|  |  |  |  |         if (!StringUtil.isEmpty(partProdGroupCode)) { | 
		
	
		
			
				|  |  |  |  |             DdlPackBean partProdBean = DdlPackBean.getDdlPackBean(oldMesWorkOrder.getOrganizeCode()); | 
		
	
		
			
				|  |  |  |  |             DdlPreparedPack.getStringEqualPack(partProdGroupCode, "partProdGroupCode", partProdBean); | 
		
	
		
			
				|  |  |  |  |             List<MesPartProdGroup> mesPartProdGroupList = mesPartProdGroupRao.findByHqlTopWhere(partProdBean, 1); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |             // 没有零件生产组用默认找生产版本、有的话找获取bom方式枚举,枚举是基于默认BOM 则直接找
 | 
		
	
		
			
				|  |  |  |  |             if (!mesPartProdGroupList.isEmpty()) { | 
		
	
		
			
				|  |  |  |  |                 MesPartProdGroup mesPartProdGroup = mesPartProdGroupList.get(0); | 
		
	
		
			
				|  |  |  |  |                 if (mesPartProdGroup.getEnableBomVersion() != null && mesPartProdGroup.getEnableBomVersion() == MesExtEnumUtil.ENABLE_BOM_VERSION.ENABLE_BOM_VERSION_2.getValue()) { | 
		
	
		
			
				|  |  |  |  |                     log.info("基于默认BOM获取BOM"); | 
		
	
		
			
				|  |  |  |  |                     bomVersion = ""; | 
		
	
		
			
				|  |  |  |  |                 } | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |             //查询物料信息
 | 
		
	
		
			
				|  |  |  |  |         DdlPackBean ddlPackBeanPart = DdlPackBean.getDdlPackBean(organizeCode); | 
		
	
		
			
				|  |  |  |  |         DdlPreparedPack.getStringEqualPack(productionRecord.getPartNo(), "partNo", ddlPackBeanPart); | 
		
	
		
			
				|  |  |  |  |         MesPart mesPart = mesPartRDao.getByProperty(ddlPackBeanPart); | 
		
	
	
		
			
				
					|  |  |  | @ -546,7 +583,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { | 
		
	
		
			
				|  |  |  |  |             throw new ImppBusiException(String.format("物料【%s】信息不存在", productionRecord.getPartNo())); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         List<MesBom> mesBoms = findBomList(organizeCode, mesPart, mesProductVersion.getAlternativePartList()); | 
		
	
		
			
				|  |  |  |  |         List<MesBom> mesBoms = findBomList(organizeCode, mesPart, bomVersion); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         if (CollectionUtils.isEmpty(mesBoms)) { | 
		
	
	
		
			
				
					|  |  |  | @ -1020,8 +1057,25 @@ public class MesWorkOrderService implements IMesWorkOrderService { | 
		
	
		
			
				|  |  |  |  |         MesWorkCenter mesWorkCenter = getMesWorkCenter(mesWorkOrderDb); | 
		
	
		
			
				|  |  |  |  |         //获取生产版本
 | 
		
	
		
			
				|  |  |  |  |         MesProductVersion mesProductVersion = getProductVersion(mesWorkOrderDb.getOrganizeCode(),mesWorkOrderDb.getPartNo(),mesWorkOrderDb.getProductVersion()); | 
		
	
		
			
				|  |  |  |  |         String bomVersion =  mesProductVersion.getAlternativePartList(); | 
		
	
		
			
				|  |  |  |  |         String partProdGroupCode = mesWorkOrderDb.getPartProdGroupCode(); | 
		
	
		
			
				|  |  |  |  |         // partProdGroupCode 不为空,查询的数据不为空,查询数据中的获取bom方式不为空且枚举是 基于默认BOM ,才bomversion = null 否则都是通过生产版本找bom
 | 
		
	
		
			
				|  |  |  |  |         if (!StringUtil.isEmpty(partProdGroupCode)) { | 
		
	
		
			
				|  |  |  |  |             DdlPackBean partProdBean = DdlPackBean.getDdlPackBean(mesWorkOrderDb.getOrganizeCode()); | 
		
	
		
			
				|  |  |  |  |             DdlPreparedPack.getStringEqualPack(partProdGroupCode, "partProdGroupCode", partProdBean); | 
		
	
		
			
				|  |  |  |  |             List<MesPartProdGroup> mesPartProdGroupList = mesPartProdGroupRao.findByHqlTopWhere(partProdBean, 1); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |             // 没有零件生产组用默认找生产版本、有的话找获取bom方式枚举,枚举是基于默认BOM 则直接找
 | 
		
	
		
			
				|  |  |  |  |             if (!mesPartProdGroupList.isEmpty()) { | 
		
	
		
			
				|  |  |  |  |                 MesPartProdGroup mesPartProdGroup = mesPartProdGroupList.get(0); | 
		
	
		
			
				|  |  |  |  |                 if (mesPartProdGroup.getEnableBomVersion() != null && mesPartProdGroup.getEnableBomVersion() == MesExtEnumUtil.ENABLE_BOM_VERSION.ENABLE_BOM_VERSION_2.getValue()) { | 
		
	
		
			
				|  |  |  |  |                     log.info("基于默认BOM获取BOM"); | 
		
	
		
			
				|  |  |  |  |                     bomVersion = ""; | 
		
	
		
			
				|  |  |  |  |                 } | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         //物料+生产版本获取bom信息
 | 
		
	
		
			
				|  |  |  |  |         List<MesBom> mesBoms = findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList()); | 
		
	
		
			
				|  |  |  |  |         List<MesBom> mesBoms = findBomList(mesPart.getOrganizeCode(), mesPart, bomVersion); | 
		
	
		
			
				|  |  |  |  |         mesWorkOrderDb.setReportedQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrderDb.getReportedQty())); | 
		
	
		
			
				|  |  |  |  |         //更新工单状态
 | 
		
	
		
			
				|  |  |  |  |         double unCompleteQty = MathOperation.sub(mesWorkOrderDb.getQty(), mesWorkOrderDb.getReportedQty()); | 
		
	
	
		
			
				
					|  |  |  | 
 |