diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProducetaskprocServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProducetaskprocServiceImpl.java index 66715933..5d37c0a1 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProducetaskprocServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProducetaskprocServiceImpl.java @@ -944,8 +944,8 @@ public class ProducetaskprocServiceImpl implements ProducetaskprocService { throw new BadRequestException("系列模板产能未配置!"); } String device_id = jo.getString("device_id"); - String plan_finish_date2 = jo.getString("plan_finish_date2"); - Date plan_finish_date = DateUtil.parse(plan_finish_date2); + String finish_date = jo.getString("plan_finish_date2"); + Date plan_finish_date = DateUtil.parse(finish_date); double fact_weight = jo.getDouble("fact_weight"); double standard_weight = jo.getDouble("standard_weight"); //批次数量 @@ -974,52 +974,49 @@ public class ProducetaskprocServiceImpl implements ProducetaskprocService { int yu = pcsn_num%totalproducecapacity_qty; if(yu > 0){ jo.put("planstart_date",start_date); - Date planend_date = DateUtil.offsetDay(planstart_date,days-1); - jo.put("planend_date",DateUtil.formatDate(planend_date)); + jo.put("planend_date",finish_date); jo.put("workorder_type","01"); jo.put("product_weight",standard_weight*yu); jo.put("product_num",yu); jo.put("product_series_id",jo.getString("product_series")); - this.createDay(jo); - //当前开始日期前的一个工作日为下一个开始日期 + this.createDay2(jo); + //当前结束日期前的一个工作日为下一个开始日期 JSONObject before_day = WQL.getWO("QPDM_PRODUCTPLANPROC") .addParam("flag", "10") - .addParam("planstart_date", start_date) + .addParam("planstart_date", finish_date) .addParam("device_id", device_id) .process() .uniqueResult(0); if(before_day ==null){ - throw new BadRequestException("未配置"+start_date+"前的工作日历!"); + throw new BadRequestException("未配置"+finish_date+"前的工作日历!"); } //更新参数 - start_date = before_day.getString("factory_date"); - planstart_date = DateUtil.parse(start_date); + finish_date = before_day.getString("factory_date"); + plan_finish_date = DateUtil.parse(finish_date); pcsn_num = pcsn_num - yu; fact_weight = fact_weight - yu*standard_weight; } else{ jo.put("planstart_date",start_date); - //重新计算结束日期 - Date planend_date = DateUtil.offsetDay(planstart_date,days-1); - jo.put("planend_date",DateUtil.formatDate(planend_date)); + jo.put("planend_date",finish_date); jo.put("workorder_type","01"); jo.put("product_weight",standard_weight*totalproducecapacity_qty); jo.put("product_num",totalproducecapacity_qty); jo.put("product_series_id",jo.getString("product_series")); - this.createDay(jo); + this.createDay2(jo); //当前开始日期前的一个工作日为下一个开始日期 JSONObject before_day = WQL.getWO("QPDM_PRODUCTPLANPROC") .addParam("flag", "10") - .addParam("planstart_date", start_date) + .addParam("planstart_date", finish_date) .addParam("device_id", device_id) .process() .uniqueResult(0); if(before_day ==null){ - throw new BadRequestException("未配置"+start_date+"前的工作日历!"); + throw new BadRequestException("未配置"+finish_date+"前的工作日历!"); } //更新参数 - start_date = before_day.getString("factory_date"); - planstart_date = DateUtil.parse(start_date); + finish_date = before_day.getString("factory_date"); + plan_finish_date = DateUtil.parse(finish_date); pcsn_num = pcsn_num - totalproducecapacity_qty; fact_weight = fact_weight - totalproducecapacity_qty*standard_weight; } @@ -1027,13 +1024,12 @@ public class ProducetaskprocServiceImpl implements ProducetaskprocService { } else{ jo.put("planstart_date",start_date); - Date planend_date = DateUtil.offsetDay(planstart_date,days-1); - jo.put("planend_date",DateUtil.formatDate(planend_date)); + jo.put("planend_date",finish_date); jo.put("workorder_type","01"); jo.put("product_weight",fact_weight); jo.put("product_num",pcsn_num); jo.put("product_series_id",jo.getString("product_series")); - this.createDay(jo); + this.createDay2(jo); } } @@ -1133,6 +1129,65 @@ public class ProducetaskprocServiceImpl implements ProducetaskprocService { new_jo.put("remark", json.getString("remark")); + JSONObject product = pdm_bi_productdeptpcsn.query("org_code='"+json.getString("plan_org_code")+"'").uniqueResult(0); + + new_jo.put("plan_org_name", product.getString("org_name")); + + new_jo.put("product_series", json.getString("product_series_id")); + MPS_BD_ProductDailyPlan.insert(new_jo); + return new_jo; + } + + @Transactional(rollbackFor = Exception.class) + public JSONObject createDay2(JSONObject json) { + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + String now = DateUtil.now(); + WQLObject pdm_bi_productdeptpcsn = WQLObject.getWQLObject("pdm_bi_productdeptpcsn"); + WQLObject MPS_BD_ProductDailyPlan = WQLObject.getWQLObject("MPS_BD_ProductDailyPlan"); + JSONObject new_jo = new JSONObject(); + // 插入主表 + new_jo.put("dailyplan_id", IdUtil.getSnowflake(1, 1).nextId()); + String workorder_code = CodeUtil.getNewCode("R_CODE"); + new_jo.put("plan_code", workorder_code); + new_jo.put("weight_unit_id", "1"); + new_jo.put("weight_unit_name", "千克\\公斤"); + new_jo.put("status", "01"); + new_jo.put("create_id", currentUserId); + new_jo.put("create_name", nickName); + new_jo.put("create_time", now); + + new_jo.put("workorder_type", json.getString("workorder_type")); + new_jo.put("plan_id", json.getString("plan_id")); + new_jo.put("plan_org_code", json.getString("plan_org_code")); + new_jo.put("material_id", json.getString("material_id")); + new_jo.put("product_weight", json.getString("product_weight")); + new_jo.put("product_num", json.getString("product_num")); + new_jo.put("plan_finish_date", json.getString("plan_finish_date")); + new_jo.put("product_series_id", json.getString("product_series_id")); + new_jo.put("device_id", json.getString("device_id")); + new_jo.put("planend_date", json.getString("planend_date")); + + String planend_date = json.getString("planend_date"); + Date date = DateUtil.parse(planend_date); + //生产日数 + int days = this.getDays(json.getString("material_id")); + //计算最后一天的开始日期 + Date planstart_date = DateUtil.offsetDay(date,-(days-1)); + JSONObject last_day = WQL.getWO("QPDM_PRODUCTPLANPROC") + .addParam("flag", "9") + .addParam("planstart_date", DateUtil.formatDate(planstart_date)) + .addParam("device_id", json.getString("device_id")) + .process() + .uniqueResult(0); + if(last_day ==null){ + throw new BadRequestException("未配置"+ DateUtil.formatDate(planstart_date)+"前的工作日历!"); + } + String start_date = last_day.getString("factory_date"); + + new_jo.put("planstart_date", start_date); + new_jo.put("remark", json.getString("remark")); + JSONObject product = pdm_bi_productdeptpcsn.query("org_code='"+json.getString("plan_org_code")+"'").uniqueResult(0); new_jo.put("plan_org_name", product.getString("org_name")); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/AcceptFormulaServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/AcceptFormulaServiceImpl.java index b24f4add..815d1664 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/AcceptFormulaServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/AcceptFormulaServiceImpl.java @@ -981,9 +981,35 @@ public class AcceptFormulaServiceImpl implements AcceptFormulaService { //该批次配粉重量 double X22p = bomdlt_Cr3C2.getDouble("bom_ivt_qty"); - // X21p减=[(X21p)* X21碳含量+软废含碳量-产品碳平衡*(X21p+软废碳化钨)]/X21碳含量 + AtomicReference Z_sum = new AtomicReference<>(0.0); + AtomicReference Z_sum_per = new AtomicReference<>(0.0); + //计算不需要移库的添加剂(抑制剂) + yzj_map.forEach((key,tjj_map_jo)->{ + //获取添加剂id + String tjj_material_id = tjj_map_jo.getString("material_id"); + JSONObject tjj_finished = WQL.getWO("QPF_AUTOFORMULA02") + .addParam("material_id",bomdlt_Cr3C2.getString("material_id")) + .addParam("pcsn",material_pcsn) + .addParam("item_material_id",tjj_material_id) + .addParam("flag","5") + .process() + .uniqueResult(0); + if(tjj_finished!=null){ + //质保书含量比 + double value = tjj_finished.getDouble("value"); + //当前含量重量 + double finished = X22p*value/100.0; + + //累计各碳化钨中已含添加剂重量百分比 + Z_sum_per.set(Z_sum_per.get() + value/100.0); + //累计各碳化钨中已含添加剂重量 + Z_sum.set(Z_sum.get() + finished); + } + }); + + // X1减 = [X1p* X1碳含量-X1p*产品碳平衡- X1p*Z总含量比*产品碳平衡]/(X1碳含量-Z总含量比*产品碳平衡) //解得钨粉重量 - double X22_jian = (CT1 - (c_balance/100.0)*(CT1_weight)) / (X22/100.0); + double X22_jian = (CT1 -(c_balance/100.0)*CT1_weight- Z_sum.get()*(c_balance/100.0)) / (X22/100.0 - Z_sum_per.get()*(c_balance/100.0)); //更新碳化钨配粉重量 double bom_ivt_qty = X22p-X22_jian; if(bom_ivt_qty<=0){ @@ -992,7 +1018,7 @@ public class AcceptFormulaServiceImpl implements AcceptFormulaService { bomdlt_Cr3C2.put("bom_ivt_qty",bom_ivt_qty); bomdlts_plan_map.put(bomdlt_Cr3C2.getString("material_id"),bomdlt_Cr3C2); - AtomicReference Z_sum = new AtomicReference<>(0.0); + AtomicReference Z_sum2 = new AtomicReference<>(0.0); //计算不需要移库的添加剂(抑制剂) yzj_map.forEach((key,tjj_map_jo)->{ //获取添加剂id @@ -1012,7 +1038,7 @@ public class AcceptFormulaServiceImpl implements AcceptFormulaService { //当前含量重量 double finished = bom_ivt_qty*value/100.0; //累计各碳化钨中已含添加剂重量 - Z_sum.set(Z_sum.get() + finished); + Z_sum2.set(Z_sum2.get() + finished); //累计各碳化钨中已含添加剂重量 tjj_map_jo.put("finished_qty",finished_qty+finished); yzj_map.put(tjj_material_id,tjj_map_jo); @@ -1037,7 +1063,7 @@ public class AcceptFormulaServiceImpl implements AcceptFormulaService { yzj_list.add(tjj_map_now); } }); - double W = X22_jian + Z_sum.get(); + double W = X22_jian + Z_sum2.get(); if(W>0){ JSONObject W_weight = new JSONObject(); W_weight.put("formula_qty",W); diff --git a/mes/qd/src/views/wms/pf/acceptformula/AddDialog.vue b/mes/qd/src/views/wms/pf/acceptformula/AddDialog.vue index 0d94aa07..d9015944 100644 --- a/mes/qd/src/views/wms/pf/acceptformula/AddDialog.vue +++ b/mes/qd/src/views/wms/pf/acceptformula/AddDialog.vue @@ -548,7 +548,7 @@ export default { } const values = data.map(item => Number(item[column.property])) if (column.property === 'formula_qty') { - sums[index] = values.reduce((prev, curr) => { + const total = values.reduce((prev, curr) => { const value = Number(curr) if (!isNaN(value)) { return prev + curr @@ -556,6 +556,7 @@ export default { return prev } }, 0) + sums[index] = parseFloat(total).toFixed(4) sums[index] } }) diff --git a/mes/qd/src/views/wms/pf/acceptformula/ViewDialog.vue b/mes/qd/src/views/wms/pf/acceptformula/ViewDialog.vue index 1a1b0045..92036a6c 100644 --- a/mes/qd/src/views/wms/pf/acceptformula/ViewDialog.vue +++ b/mes/qd/src/views/wms/pf/acceptformula/ViewDialog.vue @@ -361,7 +361,7 @@ export default { } const values = data.map(item => Number(item[column.property])) if (column.property === 'formula_qty') { - sums[index] = values.reduce((prev, curr) => { + const total = values.reduce((prev, curr) => { const value = Number(curr) if (!isNaN(value)) { return prev + curr @@ -369,6 +369,7 @@ export default { return prev } }, 0) + sums[index] = parseFloat(total).toFixed(4) sums[index] } })