diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/MaterialParametersServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/MaterialParametersServiceImpl.java index 61d9c56b..d541af53 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/MaterialParametersServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/MaterialParametersServiceImpl.java @@ -163,16 +163,22 @@ public class MaterialParametersServiceImpl implements MaterialParametersService WQLObject producTab = WQLObject.getWQLObject("md_me_producmaterialext"); WQLObject materTab = WQLObject.getWQLObject("MD_ME_MaterialBase"); WQLObject wrokTab = WQLObject.getWQLObject("PDM_BI_WorkProcedureParaProduct"); + + WQLObject productMstTab = WQLObject.getWQLObject("MD_PD_ProductBOM"); // 产品bom单主表 + WQLObject productDtlTab = WQLObject.getWQLObject("MD_PD_ProductBOMDtl"); // 产品bom单明细表 + WQLObject wasTab = WQLObject.getWQLObject("PDM_BI_WasteCChange"); // 软废碳平衡修正表 //判断物料类别类型 String material_type_id = MapUtil.getStr(map, "material_type_id"); boolean is_bcp = materialbaseService.isAlongMaterType(MaterOptTypeEnum.BCP.getCode(), null, material_type_id); boolean is_yfl = materialbaseService.isAlongMaterType(MaterOptTypeEnum.YL_AND_FL.getCode(), null, material_type_id); boolean is_rf = materialbaseService.isAlongMaterType(MaterOptTypeEnum.RF.getCode(), null, material_type_id); - + boolean is_pgf = materialbaseService.isAlongMaterType(MaterOptTypeEnum.PGF.getCode(), null, material_type_id); if (is_bcp) { //半成品 String technology_code = MapUtil.getStr(map, "technology_code"); - if (technology_code.length() > 1) throw new BadRequestException("工艺代码长度大于1"); + if (technology_code.length() > 1) { + throw new BadRequestException("工艺代码长度大于1"); + } String material_id = (String) map.get("material_id"); JSONObject json = producTab.query("material_id= '" + material_id + "'").uniqueResult(0); if (ObjectUtil.isEmpty(json)) { @@ -253,6 +259,79 @@ public class MaterialParametersServiceImpl implements MaterialParametersService jsonMater.put("update_time", DateUtil.now()); jsonMater.put("update_optname", SecurityUtils.getCurrentUsername()); materTab.update(jsonMater); + + /* + * 1.PG粉碳平衡修正 + * 2.软废碳平衡修正 + */ + + jsonMater = materTab.query("material_id = '" + material_id + "'").uniqueResult(0); + JSONObject jsonExtMater = producTab.query("material_id = '" + material_id + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonExtMater)) throw new BadRequestException("此PGF扩展属性不存在"); + + String old_mark = jsonExtMater.getString("old_mark"); // 粉料牌号 + String tech_type = ""; + if (old_mark.contains("新")) { + tech_type = "01"; + } else { + tech_type = "02"; + } + if (is_pgf) { + /* + * PG粉碳平衡修正: + * 1.查询此PG粉产品bom明细表第一个碳化钨 + * 2.查询此碳化钨 软废碳平衡修正表获得全部软废类型的值 + * 3.查询软废:物料表,软废编码 = PG粉编码 + '-CF' + * 4.依次修改16种软废类型的碳平衡 + * 软废碳平衡=pg粉碳平衡+CF修正值 + */ + + // 1.查询此物料的产品bom明细表中第一个出现的碳化钨 + // 查主表 + JSONObject jsonProductMst = productMstTab.query("material_id = '" + material_id + "' and is_used = '1' and is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonProductMst)) throw new BadRequestException("此产品没有创建bom单或者已删除、未启用"); + // 查明细 + JSONArray productDtlArr = productDtlTab.query("bom_id = '" + jsonProductMst.getString("bom_id") + "' order by seqno ASC").getResultJSONArray(0); + if (ObjectUtil.isEmpty(productDtlArr)) throw new BadRequestException("此产品bom单暂无明细"); + + // 找出第一个碳化钨 + String thw_material_id = ""; + for (int i = 0; i < productDtlArr.size(); i++) { + JSONObject jsonProductDtl = productDtlArr.getJSONObject(i); + boolean is_thw = materialbaseService.isAlongMaterType(MaterOptTypeEnum.THW.getCode(), jsonProductDtl.getString("material_id"), null); + + if (is_thw) { + thw_material_id = jsonProductDtl.getString("material_id"); + break; + } + } + + // 2.查询此碳化钨 软废碳平衡修正表获得全部软废类型的值 并转化成数组(便于处理数据) + JSONObject jsonThwMater = materTab.query("material_id = '" + thw_material_id + "'").uniqueResult(0); + JSONObject jsonWas = wasTab.query("material_id = '" + thw_material_id + "' and tech_type = '"+tech_type+"'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonWas)) throw new BadRequestException("此碳化钨软废修正数据不存在:"+jsonThwMater.getString("material_code")); + + // 将此碳化钨的软废类型转化为数组 + JSONArray wasArr = new WastecchangeServiceImpl().contentShift(jsonWas); + + // 3.查询软废:物料表,软废编码 = PG粉编码 + '-CF' (以软废类型CF为例) + for (int j = 0; j < wasArr.size(); j++) { + JSONObject jsonWasDtl = wasArr.getJSONObject(j); + + String rf_type_code = jsonMater.getString("material_code") +"-"+jsonWasDtl.getString("name"); + JSONObject jsonRfMater = materTab.query("material_code = '" + rf_type_code + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(jsonRfMater)) { + // 4.依次修改16种软废类型的碳平衡: 软废碳平衡=pg粉碳平衡+CF修正值 + JSONObject jsonRfExt = producTab.query("material_id = '" + jsonRfMater.getString("material_id") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonRfExt)) { + continue; + } + double rf_c_balance = NumberUtil.add(jsonExtMater.getDoubleValue("c_balance"), jsonWasDtl.getDoubleValue("value")); + jsonRfExt.put("c_balance", String.valueOf(rf_c_balance)); + producTab.update(jsonRfExt); + } + } + } } else if (is_yfl) { //原辅料 String material_id = (String) map.get("material_id"); @@ -343,9 +422,7 @@ public class MaterialParametersServiceImpl implements MaterialParametersService WQLObject extTab = WQLObject.getWQLObject("MD_ME_ProducMaterialExt"); // 成品物料扩展信息表 JSONObject result = new JSONObject(); - // 1.判断此物料是PG粉还是RF - boolean is_pgf = materialbaseService.isAlongMaterType(MaterOptTypeEnum.PGF.getCode(), whereJson.getString("material_id"), null); boolean is_rf = materialbaseService.isAlongMaterType(MaterOptTypeEnum.RF.getCode(), whereJson.getString("material_id"), null); String material_id = whereJson.getString("material_id"); @@ -361,63 +438,6 @@ public class MaterialParametersServiceImpl implements MaterialParametersService tech_type = "02"; } - if (is_pgf) { - /* - * PG粉碳平衡修正: - * 1.查询此PG粉产品bom明细表第一个碳化钨 - * 2.查询此碳化钨 软废碳平衡修正表获得全部软废类型的值 - * 3.查询软废:物料表,软废编码 = PG粉编码 + '-CF' - * 4.依次修改16种软废类型的碳平衡 - * 软废碳平衡=pg粉碳平衡+CF修正值 - */ - - // 1.查询此物料的产品bom明细表中第一个出现的碳化钨 - // 查主表 - JSONObject jsonProductMst = productMstTab.query("material_id = '" + material_id + "' and is_used = '1' and is_delete = '0'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonProductMst)) throw new BadRequestException("此产品没有创建bom单或者已删除、未启用"); - // 查明细 - JSONArray productDtlArr = productDtlTab.query("bom_id = '" + jsonProductMst.getString("bom_id") + "' order by seqno ASC").getResultJSONArray(0); - if (ObjectUtil.isEmpty(productDtlArr)) throw new BadRequestException("此产品bom单暂无明细"); - - // 找出第一个碳化钨 - String thw_material_id = ""; - for (int i = 0; i < productDtlArr.size(); i++) { - JSONObject jsonProductDtl = productDtlArr.getJSONObject(i); - boolean is_thw = materialbaseService.isAlongMaterType(MaterOptTypeEnum.THW.getCode(), jsonProductDtl.getString("material_id"), null); - - if (is_thw) { - thw_material_id = jsonProductDtl.getString("material_id"); - break; - } - } - - // 2.查询此碳化钨 软废碳平衡修正表获得全部软废类型的值 并转化成数组(便于处理数据) - JSONObject jsonThwMater = materTab.query("material_id = '" + thw_material_id + "'").uniqueResult(0); - JSONObject jsonWas = wasTab.query("material_id = '" + thw_material_id + "' and tech_type = '"+tech_type+"'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonWas)) throw new BadRequestException("此碳化钨软废修正数据不存在:"+jsonThwMater.getString("material_code")); - - // 将此碳化钨的软废类型转化为数组 - JSONArray wasArr = new WastecchangeServiceImpl().contentShift(jsonWas); - - // 3.查询软废:物料表,软废编码 = PG粉编码 + '-CF' (以软废类型CF为例) - for (int j = 0; j < wasArr.size(); j++) { - JSONObject jsonWasDtl = wasArr.getJSONObject(j); - - String rf_type_code = jsonMater.getString("material_code") +"-"+jsonWasDtl.getString("name"); - JSONObject jsonRfMater = materTab.query("material_code = '" + rf_type_code + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(jsonRfMater)) { - // 4.依次修改16种软废类型的碳平衡: 软废碳平衡=pg粉碳平衡+CF修正值 - JSONObject jsonRfExt = extTab.query("material_id = '" + jsonRfMater.getString("material_id") + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonRfExt)) throw new BadRequestException("此软废扩展信息不存在:"+rf_type_code); - - double rf_c_balance = NumberUtil.add(jsonExtMater.getDoubleValue("c_balance"), jsonWasDtl.getDoubleValue("value")); - jsonRfExt.put("c_balance", String.valueOf(rf_c_balance)); - extTab.update(jsonRfExt); - } - } - result.put("c_balance", ""); - } - if (is_rf) { /* * 软废粉碳平衡修正: @@ -435,10 +455,14 @@ public class MaterialParametersServiceImpl implements MaterialParametersService // 2.找碳化钨:此PG粉产品BOM明细第一个碳化钨 // 查主表 JSONObject jsonProductMst = productMstTab.query("material_id = '" + jsonPgfMater.getString("material_id") + "' and is_used = '1' and is_delete = '0'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonProductMst)) throw new BadRequestException("此产品没有创建bom单或者已删除、未启用"+pg_material_code); + if (ObjectUtil.isEmpty(jsonProductMst)) { + throw new BadRequestException("此产品没有创建bom单或者已删除、未启用"+pg_material_code); + } // 查明细 JSONArray productDtlArr = productDtlTab.query("bom_id = '" + jsonProductMst.getString("bom_id") + "' order by seqno ASC").getResultJSONArray(0); - if (ObjectUtil.isEmpty(productDtlArr)) throw new BadRequestException("此产品bom单暂无明细"+pg_material_code); + if (ObjectUtil.isEmpty(productDtlArr)) { + throw new BadRequestException("此产品bom单暂无明细"+pg_material_code); + } // 找出第一个碳化钨 String thw_material_id = ""; @@ -456,7 +480,9 @@ public class MaterialParametersServiceImpl implements MaterialParametersService // 3.找修正值:废类型为编码最后'-'后的内容 JSONObject jsonThwMater = materTab.query("material_id = '" + thw_material_id + "'").uniqueResult(0); JSONObject jsonWas = wasTab.query("material_id = '" + thw_material_id + "' and tech_type ='"+tech_type+"'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonWas)) throw new BadRequestException("此碳化钨软废修正数据不存在:"+jsonThwMater.getString("material_name")); + if (ObjectUtil.isEmpty(jsonWas)) { + throw new BadRequestException("此碳化钨软废修正数据不存在:"+jsonThwMater.getString("material_name")); + } // 将此碳化钨的软废类型转化为数组 JSONArray wasArr = new WastecchangeServiceImpl().contentShift(jsonWas); @@ -474,7 +500,9 @@ public class MaterialParametersServiceImpl implements MaterialParametersService // 软废碳平衡=pg粉碳平衡+此软废修正值 JSONObject jsonPgfExt = extTab.query("material_id = '" + jsonPgfMater.getString("material_id") + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonPgfExt)) throw new BadRequestException("此PG粉扩展属性不存在:"+pg_material_code); + if (ObjectUtil.isEmpty(jsonPgfExt)) { + throw new BadRequestException("此PG粉扩展属性不存在:"+pg_material_code); + } double c_balance = NumberUtil.add(jsonPgfExt.getDoubleValue("c_balance"), value); result.put("c_balance", String.valueOf(c_balance));