优化
This commit is contained in:
@@ -608,6 +608,7 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
else{//抑制剂
|
else{//抑制剂
|
||||||
bomdlt.put("finished_qty",0);
|
bomdlt.put("finished_qty",0);
|
||||||
bomdlt.put("need_sum_qty",nedd_qty);
|
bomdlt.put("need_sum_qty",nedd_qty);
|
||||||
|
bomdlt.put("z1_sum",0);
|
||||||
yzj_map.put(bomdtl_material_id,bomdlt);
|
yzj_map.put(bomdtl_material_id,bomdlt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -670,7 +671,8 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
}else
|
}else
|
||||||
//需配碳粉
|
//需配碳粉
|
||||||
if(CT1<CT2){
|
if(CT1<CT2){
|
||||||
if(bomdlts_Cr3C2.size()==1){//只配库存明细时
|
//只配库存明细时
|
||||||
|
if(bomdlts_Cr3C2.size()==1){
|
||||||
//假设碳粉重量为W
|
//假设碳粉重量为W
|
||||||
JSONObject bomdlt_Cr3C2 = bomdlts_Cr3C2.getJSONObject(0);
|
JSONObject bomdlt_Cr3C2 = bomdlts_Cr3C2.getJSONObject(0);
|
||||||
|
|
||||||
@@ -678,6 +680,7 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
double X22p = bomdlt_Cr3C2.getDouble("bom_ivt_qty");
|
double X22p = bomdlt_Cr3C2.getDouble("bom_ivt_qty");
|
||||||
|
|
||||||
AtomicReference<Double> Z_sum = new AtomicReference<>(0.0);
|
AtomicReference<Double> Z_sum = new AtomicReference<>(0.0);
|
||||||
|
AtomicReference<Double> Z_sum_per = new AtomicReference<>(0.0);
|
||||||
//计算不需要移库的添加剂(抑制剂)
|
//计算不需要移库的添加剂(抑制剂)
|
||||||
yzj_map.forEach((key,tjj_map_jo)->{
|
yzj_map.forEach((key,tjj_map_jo)->{
|
||||||
//获取添加剂id
|
//获取添加剂id
|
||||||
@@ -690,12 +693,13 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
.process()
|
.process()
|
||||||
.uniqueResult(0);
|
.uniqueResult(0);
|
||||||
if(tjj_finished!=null){
|
if(tjj_finished!=null){
|
||||||
//已配重量
|
|
||||||
double finished_qty = tjj_map_jo.getDouble("finished_qty");
|
|
||||||
//质保书含量比
|
//质保书含量比
|
||||||
double value = tjj_finished.getDouble("value");
|
double value = tjj_finished.getDouble("value");
|
||||||
//当前含量重量
|
//当前含量重量
|
||||||
double finished = X22p*value/100.0;
|
double finished = X22p*value/100.0;
|
||||||
|
|
||||||
|
//累计各碳化钨中已含添加剂重量百分比
|
||||||
|
Z_sum_per.set(Z_sum_per.get() + value/100.0);
|
||||||
//累计各碳化钨中已含添加剂重量
|
//累计各碳化钨中已含添加剂重量
|
||||||
Z_sum.set(Z_sum.get() + finished);
|
Z_sum.set(Z_sum.get() + finished);
|
||||||
}
|
}
|
||||||
@@ -705,14 +709,15 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
JSONObject FactoryWarranty = bomdlts_plan_map.get(bomdlt_Cr3C2.getString("stockrecord_id"));
|
JSONObject FactoryWarranty = bomdlts_plan_map.get(bomdlt_Cr3C2.getString("stockrecord_id"));
|
||||||
//该批次含碳比
|
//该批次含碳比
|
||||||
double X22 = FactoryWarranty.getDouble("is_tan");
|
double X22 = FactoryWarranty.getDouble("is_tan");
|
||||||
//X22p减=[产品碳平衡*(X11p+X12p+X21p+X22p+软废碳化钨)-(X11p* X11碳含量+X12p* X12碳含量+X21p* X21碳含量+X22p* X22碳含量+软废含碳量)]/(1-X22碳含量)
|
//X22p减=(产品碳平衡*(Z_sum已+CT1_weight)-CT1-Z_sum已)/(1- X22碳含量- X22Z1含量+产品碳平衡*X22Z1含量)
|
||||||
double X22_jian = ((c_balance/100.0)*(CT1_weight)-CT1)/(1-X22/100.0);
|
|
||||||
|
double X22_jian = ((c_balance/100.0)*(CT1_weight+Z_sum.get())-CT1-Z_sum.get())/(1-X22/100.0-Z_sum_per.get()+(c_balance/100.0)*Z_sum_per.get());
|
||||||
//更新碳化钨配粉重量
|
//更新碳化钨配粉重量
|
||||||
double bom_ivt_qty = X22p-X22_jian;
|
double bom_ivt_qty = X22p-X22_jian;
|
||||||
if(bom_ivt_qty < 0){
|
if(bom_ivt_qty < 0){
|
||||||
throw new BadRequestException("碳化钨配粉结果为负数,当前配粉无解!");
|
throw new BadRequestException("碳化钨配粉结果为负数,当前配粉无解!");
|
||||||
}
|
}
|
||||||
double C = X22_jian;
|
double C = X22_jian + bom_ivt_qty*Z_sum_per.get();
|
||||||
if(C < 0){
|
if(C < 0){
|
||||||
throw new BadRequestException("补碳结果为负数,当前配粉无解!");
|
throw new BadRequestException("补碳结果为负数,当前配粉无解!");
|
||||||
}else if(C >= 0){
|
}else if(C >= 0){
|
||||||
@@ -741,9 +746,6 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
yzj_map.put(tjj_material_id,tjj_map_jo);
|
yzj_map.put(tjj_material_id,tjj_map_jo);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
//统计除钨以外其他总重
|
|
||||||
AtomicReference<Double> total_sum = new AtomicReference<>(0.0);
|
|
||||||
//判断已含添加剂与需配添加剂大小
|
//判断已含添加剂与需配添加剂大小
|
||||||
yzj_map.forEach((key,tjj_map_now)->{
|
yzj_map.forEach((key,tjj_map_now)->{
|
||||||
//需配添加剂重量
|
//需配添加剂重量
|
||||||
@@ -761,7 +763,6 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
tjj_map_now.put("is_active","1");
|
tjj_map_now.put("is_active","1");
|
||||||
tjj_map_now.put("quality_scode","01");
|
tjj_map_now.put("quality_scode","01");
|
||||||
yzj_list.add(tjj_map_now);
|
yzj_list.add(tjj_map_now);
|
||||||
total_sum.set(total_sum.get()+need_qty-finished_qty);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if(C>0){
|
if(C>0){
|
||||||
@@ -780,32 +781,12 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
C_weight.put("is_active","1");
|
C_weight.put("is_active","1");
|
||||||
C_weight.put("quality_scode","01");
|
C_weight.put("quality_scode","01");
|
||||||
cw_list.add(C_weight);
|
cw_list.add(C_weight);
|
||||||
total_sum.set(total_sum.get()+C);
|
|
||||||
}
|
}
|
||||||
bomdlts_plan_map.forEach((key,bomdlts_plan_now)->{
|
|
||||||
//需配添加剂重量
|
|
||||||
double bom_ivt_qty_now = NumberUtil.round(bomdlts_plan_now.getDouble("bom_ivt_qty"),3).doubleValue();
|
|
||||||
total_sum.set(total_sum.get() + bom_ivt_qty_now);
|
|
||||||
});
|
|
||||||
double W = new_qty - total_sum.get();
|
|
||||||
if(W>0){
|
|
||||||
JSONObject W_weight = new JSONObject();
|
|
||||||
W_weight.put("formula_qty",W);
|
|
||||||
//钨分类id
|
|
||||||
W_weight.put("material_id","1503644362234531840");
|
|
||||||
W_weight.put("material_name","钨粉");
|
|
||||||
W_weight.put("material_code","09030103");
|
|
||||||
W_weight.put("material_type","02");
|
|
||||||
W_weight.put("is_need_move","0");
|
|
||||||
W_weight.put("is_need_manage","1");
|
|
||||||
W_weight.put("is_rf_xl","0");
|
|
||||||
W_weight.put("ivt_level","01");
|
|
||||||
W_weight.put("is_active","1");
|
|
||||||
W_weight.put("quality_scode","01");
|
|
||||||
cw_list.add(W_weight);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else{//大于等于2条库粗你明细时
|
//大于等于2条库粗你明细时
|
||||||
|
else{
|
||||||
//最后一个为X22p
|
//最后一个为X22p
|
||||||
JSONObject bomdlt_Cr3C2_X22p = bomdlts_Cr3C2.getJSONObject(bomdlts_Cr3C2.size()-1);
|
JSONObject bomdlt_Cr3C2_X22p = bomdlts_Cr3C2.getJSONObject(bomdlts_Cr3C2.size()-1);
|
||||||
//倒数第二为X21p
|
//倒数第二为X21p
|
||||||
@@ -827,10 +808,15 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
|
|
||||||
double X21c = X21p*X21/100.0;
|
double X21c = X21p*X21/100.0;
|
||||||
|
|
||||||
|
boolean flag = true;
|
||||||
|
//设X21p减=0,解方程
|
||||||
|
if(flag){
|
||||||
AtomicReference<Double> Z_sum = new AtomicReference<>(0.0);
|
AtomicReference<Double> Z_sum = new AtomicReference<>(0.0);
|
||||||
|
AtomicReference<Double> Z_sum_per = new AtomicReference<>(0.0);
|
||||||
//循环碳化钨
|
//循环碳化钨
|
||||||
for(int i=0;i<bomdlts_Cr3C2.size();i++){
|
for(int i=0;i<bomdlts_Cr3C2.size();i++){
|
||||||
JSONObject jo = bomdlts_Cr3C2.getJSONObject(i);
|
JSONObject jo = bomdlts_Cr3C2.getJSONObject(i);
|
||||||
|
String stockrecord_id = jo.getString("stockrecord_id");
|
||||||
double bom_ivt_qty_jo = jo.getDouble("bom_ivt_qty");
|
double bom_ivt_qty_jo = jo.getDouble("bom_ivt_qty");
|
||||||
//计算不需要移库的添加剂
|
//计算不需要移库的添加剂
|
||||||
yzj_map.forEach((key,tjj_map_jo)->{
|
yzj_map.forEach((key,tjj_map_jo)->{
|
||||||
@@ -848,17 +834,17 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
double value = tjj_finished.getDouble("value");
|
double value = tjj_finished.getDouble("value");
|
||||||
//当前含量重量
|
//当前含量重量
|
||||||
double finished = bom_ivt_qty_jo*value/100.0;
|
double finished = bom_ivt_qty_jo*value/100.0;
|
||||||
|
//累计各碳化钨中已含添加剂重量百分比
|
||||||
|
if(stockrecord_id.equals(bomdlt_Cr3C2_X22p.getString("stockrecord_id"))){
|
||||||
|
Z_sum_per.set(Z_sum_per.get() + value/100.0);
|
||||||
|
}
|
||||||
//累计各碳化钨中已含添加剂重量
|
//累计各碳化钨中已含添加剂重量
|
||||||
Z_sum.set(Z_sum.get() + finished);
|
Z_sum.set(Z_sum.get() + finished);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
//X22p减=(产品碳平衡*(Z_sum已+CT1_weight)-CT1-Z_sum已)/(1- X22碳含量- X22Z1含量+产品碳平衡*X22Z1含量)
|
||||||
boolean flag = true;
|
double X22_jian = ((c_balance/100.0)*(CT1_weight+Z_sum.get())-CT1-Z_sum.get())/(1-X22/100.0-Z_sum_per.get()+(c_balance/100.0)*Z_sum_per.get());
|
||||||
//设X21p减=0,解方程
|
|
||||||
if(flag){
|
|
||||||
//X22p减=[产品碳平衡*(X11p+X12p+X21p+X22p+软废碳化钨)-(X11p* X11碳含量+X12p* X12碳含量+X21p* X21碳含量+X22p* X22碳含量+软废含碳量)]/(1-X22碳含量)
|
|
||||||
double X22_jian = ((c_balance/100.0)*(CT1_weight)-CT1)/(1-X22/100.0);
|
|
||||||
//更新碳化钨配粉重量
|
//更新碳化钨配粉重量
|
||||||
double bom_ivt_qty = X22p-X22_jian;
|
double bom_ivt_qty = X22p-X22_jian;
|
||||||
if(bom_ivt_qty<0){
|
if(bom_ivt_qty<0){
|
||||||
@@ -866,6 +852,41 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
}else{
|
}else{
|
||||||
//解得钨粉重量
|
//解得钨粉重量
|
||||||
double C = X22_jian;
|
double C = X22_jian;
|
||||||
|
//统计除钨以外其他总重
|
||||||
|
AtomicReference<Double> total_sum = new AtomicReference<>(0.0);
|
||||||
|
//循环碳化钨
|
||||||
|
for(int i=0;i<bomdlts_Cr3C2.size();i++){
|
||||||
|
JSONObject jo = bomdlts_Cr3C2.getJSONObject(i);
|
||||||
|
String stockrecord_id = jo.getString("stockrecord_id");
|
||||||
|
double bom_ivt_qty_jo = jo.getDouble("bom_ivt_qty");
|
||||||
|
if(stockrecord_id.equals(bomdlt_Cr3C2_X22p.getString("stockrecord_id"))){
|
||||||
|
bom_ivt_qty_jo = bom_ivt_qty;
|
||||||
|
}
|
||||||
|
//计算不需要移库的添加剂
|
||||||
|
double finalBom_ivt_qty_jo = bom_ivt_qty_jo;
|
||||||
|
yzj_map.forEach((key, tjj_map_jo)->{
|
||||||
|
//获取添加剂id
|
||||||
|
String tjj_material_id = tjj_map_jo.getString("material_id");
|
||||||
|
JSONObject tjj_finished = WQL.getWO("QPF_AUTOFORMULA01")
|
||||||
|
.addParam("material_id",jo.getString("material_id"))
|
||||||
|
.addParam("pcsn",jo.getString("pcsn"))
|
||||||
|
.addParam("item_material_id",tjj_material_id)
|
||||||
|
.addParam("flag","5")
|
||||||
|
.process()
|
||||||
|
.uniqueResult(0);
|
||||||
|
if(tjj_finished!=null){
|
||||||
|
//已配重量
|
||||||
|
double finished_qty = tjj_map_jo.getDouble("finished_qty");
|
||||||
|
//质保书含量比
|
||||||
|
double value = tjj_finished.getDouble("value");
|
||||||
|
//当前含量重量
|
||||||
|
double finished = finalBom_ivt_qty_jo *value/100.0;
|
||||||
|
//累计各碳化钨中已含添加剂重量
|
||||||
|
total_sum.set(total_sum.get()+finished);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
C = C + total_sum.get();
|
||||||
if(C<0){
|
if(C<0){
|
||||||
flag = false;
|
flag = false;
|
||||||
}else if(C>=0){
|
}else if(C>=0){
|
||||||
@@ -903,8 +924,6 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
//统计除钨以外其他总重
|
|
||||||
AtomicReference<Double> total_sum = new AtomicReference<>(0.0);
|
|
||||||
//判断已含添加剂与需配添加剂大小
|
//判断已含添加剂与需配添加剂大小
|
||||||
yzj_map.forEach((key,tjj_map_now)->{
|
yzj_map.forEach((key,tjj_map_now)->{
|
||||||
//需配添加剂重量
|
//需配添加剂重量
|
||||||
@@ -922,7 +941,6 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
tjj_map_now.put("is_active","1");
|
tjj_map_now.put("is_active","1");
|
||||||
tjj_map_now.put("quality_scode","01");
|
tjj_map_now.put("quality_scode","01");
|
||||||
yzj_list.add(tjj_map_now);
|
yzj_list.add(tjj_map_now);
|
||||||
total_sum.set(total_sum.get()+need_qty-finished_qty);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -944,43 +962,94 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
cw_list.add(C_weight);
|
cw_list.add(C_weight);
|
||||||
total_sum.set(total_sum.get()+C);
|
total_sum.set(total_sum.get()+C);
|
||||||
}
|
}
|
||||||
bomdlts_plan_map.forEach((key,bomdlts_plan_now)->{
|
|
||||||
//需配添加剂重量
|
|
||||||
double bom_ivt_qty_now = NumberUtil.round(bomdlts_plan_now.getDouble("bom_ivt_qty"),3).doubleValue();
|
|
||||||
total_sum.set(total_sum.get() + bom_ivt_qty_now);
|
|
||||||
});
|
|
||||||
double W = new_qty - total_sum.get();
|
|
||||||
if(W>0 && W>=0.001){
|
|
||||||
JSONObject W_weight = new JSONObject();
|
|
||||||
W_weight.put("formula_qty",W);
|
|
||||||
//钨分类id
|
|
||||||
W_weight.put("material_id","1503644362234531840");
|
|
||||||
W_weight.put("material_name","钨粉");
|
|
||||||
W_weight.put("material_code","09030103");
|
|
||||||
W_weight.put("material_type","02");
|
|
||||||
W_weight.put("is_need_move","0");
|
|
||||||
W_weight.put("is_need_manage","1");
|
|
||||||
W_weight.put("is_rf_xl","0");
|
|
||||||
W_weight.put("ivt_level","01");
|
|
||||||
W_weight.put("is_active","1");
|
|
||||||
W_weight.put("quality_scode","01");
|
|
||||||
cw_list.add(W_weight);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!flag){
|
if(!flag){
|
||||||
|
AtomicReference<Double> Z_sum = new AtomicReference<>(0.0);
|
||||||
|
AtomicReference<Double> Z22_sum_per = new AtomicReference<>(0.0);
|
||||||
|
AtomicReference<Double> Z21_sum_per = new AtomicReference<>(0.0);
|
||||||
|
//循环碳化钨
|
||||||
|
for(int i=0;i<bomdlts_Cr3C2.size();i++){
|
||||||
|
JSONObject jo = bomdlts_Cr3C2.getJSONObject(i);
|
||||||
|
String stockrecord_id = jo.getString("stockrecord_id");
|
||||||
|
double bom_ivt_qty_jo = jo.getDouble("bom_ivt_qty");
|
||||||
|
//计算不需要移库的添加剂
|
||||||
|
yzj_map.forEach((key,tjj_map_jo)->{
|
||||||
|
//获取添加剂id
|
||||||
|
String tjj_material_id = tjj_map_jo.getString("material_id");
|
||||||
|
JSONObject tjj_finished = WQL.getWO("QPF_AUTOFORMULA01")
|
||||||
|
.addParam("material_id",jo.getString("material_id"))
|
||||||
|
.addParam("pcsn",jo.getString("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 = bom_ivt_qty_jo*value/100.0;
|
||||||
|
//累计各碳化钨中已含添加剂重量百分比
|
||||||
|
if(stockrecord_id.equals(bomdlt_Cr3C2_X21p.getString("stockrecord_id"))){
|
||||||
|
Z21_sum_per.set(Z21_sum_per.get() + value/100.0);
|
||||||
|
}
|
||||||
|
if(stockrecord_id.equals(bomdlt_Cr3C2_X22p.getString("stockrecord_id"))){
|
||||||
|
Z22_sum_per.set(Z22_sum_per.get() + value/100.0);
|
||||||
|
}
|
||||||
|
//累计各碳化钨中已含添加剂重量
|
||||||
|
Z_sum.set(Z_sum.get() + finished);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
//设X22p减=X22p,解方程
|
//设X22p减=X22p,解方程
|
||||||
// X21p减=[产品碳平衡*(X11p+X12p+X21p+X22p+Z已总) - (X11p* X11碳含量+X12p* X12碳含量+(X21p)* X21碳含量+Z已总+X22p)]/(1-X21碳含量)
|
// X21p减=[产品碳平衡*(X11p+X12p+X21p+X22p+Z已总) - (X11p* X11碳含量+X12p* X12碳含量+(X21p)* X21碳含量+Z已总+X22p)]/(1-X21碳含量)
|
||||||
double X21_jian = ((c_balance/100.0)*(CT1_weight) - (CT1-X22c) - X22p)/(1-X21/100.0);
|
//X21p减=[(CT1_weight+z_sum已-X22p含抑制剂总和)*产品碳平衡-( CT1-X22p* X22碳含量+X22p)-(z_sum已-X22p含抑制剂总和)]/(1-X21碳含量-X21p抑制剂总含量+X21p抑制剂总含量*产品碳平衡)
|
||||||
|
|
||||||
|
double X21_jian = ((c_balance/100.0)*(CT1_weight+Z_sum.get()-Z22_sum_per.get()) - (CT1+X22p-X22p*X22c/100.0) -(Z_sum.get()-Z22_sum_per.get()))/(1-X21/100.0-Z21_sum_per.get() +Z21_sum_per.get()*(c_balance/100.0));
|
||||||
|
|
||||||
|
//更新碳化钨配粉重量
|
||||||
|
double bom_ivt_qty = X21p-X21_jian;
|
||||||
|
//统计除钨以外其他总重
|
||||||
|
AtomicReference<Double> total_sum = new AtomicReference<>(0.0);
|
||||||
|
//循环碳化钨
|
||||||
|
for(int i=0;i<bomdlts_Cr3C2.size();i++){
|
||||||
|
JSONObject jo = bomdlts_Cr3C2.getJSONObject(i);
|
||||||
|
String stockrecord_id = jo.getString("stockrecord_id");
|
||||||
|
double bom_ivt_qty_jo = jo.getDouble("bom_ivt_qty");
|
||||||
|
if(stockrecord_id.equals(bomdlt_Cr3C2_X22p.getString("stockrecord_id"))){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(stockrecord_id.equals(bomdlt_Cr3C2_X21p.getString("stockrecord_id"))){
|
||||||
|
bom_ivt_qty_jo = bom_ivt_qty;
|
||||||
|
}
|
||||||
|
//计算不需要移库的添加剂
|
||||||
|
double finalBom_ivt_qty_jo = bom_ivt_qty_jo;
|
||||||
|
yzj_map.forEach((key, tjj_map_jo)->{
|
||||||
|
//获取添加剂id
|
||||||
|
String tjj_material_id = tjj_map_jo.getString("material_id");
|
||||||
|
JSONObject tjj_finished = WQL.getWO("QPF_AUTOFORMULA01")
|
||||||
|
.addParam("material_id",jo.getString("material_id"))
|
||||||
|
.addParam("pcsn",jo.getString("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 = finalBom_ivt_qty_jo *value/100.0;
|
||||||
|
//累计各碳化钨中已含添加剂重量
|
||||||
|
total_sum.set(total_sum.get() + finished);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
//解得钨粉重量
|
//解得钨粉重量
|
||||||
double C = X22p + X21_jian;
|
double C = X22p + X21_jian+total_sum.get();
|
||||||
if(C<0){
|
if(C<0){
|
||||||
throw new BadRequestException("加碳粉为负数,当前配粉无解!");
|
throw new BadRequestException("加碳粉为负数,当前配粉无解!");
|
||||||
}else if(C>=0){
|
}else if(C>=0){
|
||||||
//更新碳化钨配粉重量
|
|
||||||
double bom_ivt_qty = X21p-X21_jian;
|
|
||||||
if(bom_ivt_qty<0){
|
if(bom_ivt_qty<0){
|
||||||
throw new BadRequestException("碳化钨倒数第二条配粉结果为负数,当前配粉无解!");
|
throw new BadRequestException("碳化钨倒数第二条配粉结果为负数,当前配粉无解!");
|
||||||
}
|
}
|
||||||
@@ -1018,8 +1087,6 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
//统计除钨以外其他总重
|
|
||||||
AtomicReference<Double> total_sum = new AtomicReference<>(0.0);
|
|
||||||
//判断已含添加剂与需配添加剂大小
|
//判断已含添加剂与需配添加剂大小
|
||||||
yzj_map.forEach((key,tjj_map_now)->{
|
yzj_map.forEach((key,tjj_map_now)->{
|
||||||
//需配添加剂重量
|
//需配添加剂重量
|
||||||
@@ -1037,7 +1104,6 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
tjj_map_now.put("is_active","1");
|
tjj_map_now.put("is_active","1");
|
||||||
tjj_map_now.put("quality_scode","01");
|
tjj_map_now.put("quality_scode","01");
|
||||||
yzj_list.add(tjj_map_now);
|
yzj_list.add(tjj_map_now);
|
||||||
total_sum.set(total_sum.get() + need_qty-finished_qty);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1057,29 +1123,6 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
C_weight.put("is_active","1");
|
C_weight.put("is_active","1");
|
||||||
C_weight.put("quality_scode","01");
|
C_weight.put("quality_scode","01");
|
||||||
cw_list.add(C_weight);
|
cw_list.add(C_weight);
|
||||||
total_sum.set(total_sum.get()+C);
|
|
||||||
}
|
|
||||||
bomdlts_plan_map.forEach((key,bomdlts_plan_now)->{
|
|
||||||
//需配添加剂重量
|
|
||||||
double bom_ivt_qty_now = NumberUtil.round(bomdlts_plan_now.getDouble("bom_ivt_qty"),3).doubleValue();
|
|
||||||
total_sum.set(total_sum.get() + bom_ivt_qty_now);
|
|
||||||
});
|
|
||||||
double W = new_qty - total_sum.get();
|
|
||||||
if(W>0 && W>=0.001){
|
|
||||||
JSONObject W_weight = new JSONObject();
|
|
||||||
W_weight.put("formula_qty",W);
|
|
||||||
//钨分类id
|
|
||||||
W_weight.put("material_id","1503644362234531840");
|
|
||||||
W_weight.put("material_name","钨粉");
|
|
||||||
W_weight.put("material_code","09030103");
|
|
||||||
W_weight.put("material_type","02");
|
|
||||||
W_weight.put("is_need_move","0");
|
|
||||||
W_weight.put("is_need_manage","1");
|
|
||||||
W_weight.put("is_rf_xl","0");
|
|
||||||
W_weight.put("ivt_level","01");
|
|
||||||
W_weight.put("is_active","1");
|
|
||||||
W_weight.put("quality_scode","01");
|
|
||||||
cw_list.add(W_weight);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1844,7 +1887,8 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
}else
|
}else
|
||||||
//需配碳粉
|
//需配碳粉
|
||||||
if(CT1<CT2){
|
if(CT1<CT2){
|
||||||
if(bomdlts_Cr3C2.size()==1){//只配库存明细时
|
//一条库存明细
|
||||||
|
if(bomdlts_Cr3C2.size()==1){
|
||||||
//假设碳粉重量为W
|
//假设碳粉重量为W
|
||||||
JSONObject bomdlt_Cr3C2 = bomdlts_Cr3C2.getJSONObject(0);
|
JSONObject bomdlt_Cr3C2 = bomdlts_Cr3C2.getJSONObject(0);
|
||||||
//获取碳含量
|
//获取碳含量
|
||||||
@@ -1855,6 +1899,7 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
double X22p = bomdlt_Cr3C2.getDouble("bom_ivt_qty");
|
double X22p = bomdlt_Cr3C2.getDouble("bom_ivt_qty");
|
||||||
|
|
||||||
AtomicReference<Double> Z_sum = new AtomicReference<>(0.0);
|
AtomicReference<Double> Z_sum = new AtomicReference<>(0.0);
|
||||||
|
AtomicReference<Double> Z_sum_per = new AtomicReference<>(0.0);
|
||||||
//计算不需要移库的添加剂(抑制剂)
|
//计算不需要移库的添加剂(抑制剂)
|
||||||
tjj_map.forEach((key,tjj_map_jo)->{
|
tjj_map.forEach((key,tjj_map_jo)->{
|
||||||
//获取添加剂id
|
//获取添加剂id
|
||||||
@@ -1868,24 +1913,27 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
.uniqueResult(0);
|
.uniqueResult(0);
|
||||||
if(tjj_finished!=null){
|
if(tjj_finished!=null){
|
||||||
//质保书含量比
|
//质保书含量比
|
||||||
double value_jo = tjj_finished.getDouble("value");
|
double tjj_finished_value = tjj_finished.getDouble("value");
|
||||||
//当前含量重量
|
//当前含量重量
|
||||||
double finished = X22p*value_jo/100.0;
|
double finished = X22p*tjj_finished_value/100.0;
|
||||||
|
|
||||||
|
//累计各碳化钨中已含添加剂重量百分比
|
||||||
|
Z_sum_per.set(Z_sum_per.get() + tjj_finished_value/100.0);
|
||||||
//累计各碳化钨中已含添加剂重量
|
//累计各碳化钨中已含添加剂重量
|
||||||
Z_sum.set(Z_sum.get() + finished);
|
Z_sum.set(Z_sum.get() + finished);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
//X22p减=[产品碳平衡*(X11p+X12p+X21p+X22p+软废碳化钨)-(X11p* X11碳含量+X12p* X12碳含量+X21p* X21碳含量+X22p* X22碳含量+软废含碳量)]/(1-X22碳含量)
|
//X22p减=(产品碳平衡*(Z_sum已+CT1_weight)-CT1-Z_sum已)/(1- X22碳含量- X22Z1含量+产品碳平衡*X22Z1含量)
|
||||||
double X22_jian = ((c_balance/100.0)*(CT1_weight)-CT1)/(1-X22/100.0);
|
|
||||||
|
double X22_jian = ((c_balance/100.0)*(CT1_weight+Z_sum.get())-CT1-Z_sum.get())/(1-X22/100.0-Z_sum_per.get()+(c_balance/100.0)*Z_sum_per.get());
|
||||||
//更新碳化钨配粉重量
|
//更新碳化钨配粉重量
|
||||||
double bom_ivt_qty = X22p-X22_jian;
|
double bom_ivt_qty = X22p-X22_jian;
|
||||||
if(bom_ivt_qty < 0){
|
if(bom_ivt_qty < 0){
|
||||||
throw new BadRequestException("碳化钨配粉结果为负数,当前配粉无解!");
|
throw new BadRequestException("碳化钨配粉结果为负数,当前配粉无解!");
|
||||||
}
|
}
|
||||||
double C = X22_jian;
|
double C = X22_jian + bom_ivt_qty*Z_sum_per.get();
|
||||||
|
|
||||||
if(C < 0){
|
if(C < 0){
|
||||||
throw new BadRequestException("加碳粉为负数,当前配粉无解!");
|
throw new BadRequestException("补碳结果为负数,当前配粉无解!");
|
||||||
}
|
}
|
||||||
bomdlt_Cr3C2.put("bom_ivt_qty",bom_ivt_qty);
|
bomdlt_Cr3C2.put("bom_ivt_qty",bom_ivt_qty);
|
||||||
bomdlts_plan_map.put(bomdlt_Cr3C2.getString("stockrecord_id"),bomdlt_Cr3C2);
|
bomdlts_plan_map.put(bomdlt_Cr3C2.getString("stockrecord_id"),bomdlt_Cr3C2);
|
||||||
@@ -1912,8 +1960,6 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
tjj_map.put(tjj_material_id,tjj_map_jo);
|
tjj_map.put(tjj_material_id,tjj_map_jo);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
//统计除钨以外其他总重
|
|
||||||
AtomicReference<Double> total_sum = new AtomicReference<>(0.0);
|
|
||||||
|
|
||||||
if(C>0){
|
if(C>0){
|
||||||
JSONObject C_weight = new JSONObject();
|
JSONObject C_weight = new JSONObject();
|
||||||
@@ -1931,13 +1977,7 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
C_weight.put("is_active","1");
|
C_weight.put("is_active","1");
|
||||||
C_weight.put("quality_scode","01");
|
C_weight.put("quality_scode","01");
|
||||||
cw_list.add(C_weight);
|
cw_list.add(C_weight);
|
||||||
total_sum.set(total_sum.get() + C);
|
|
||||||
}
|
}
|
||||||
bomdlts_plan_map.forEach((key,bomdlts_plan_now)->{
|
|
||||||
//需配添加剂重量
|
|
||||||
double bom_ivt_qty_now = NumberUtil.round(bomdlts_plan_now.getDouble("bom_ivt_qty"),3).doubleValue();
|
|
||||||
total_sum.set(total_sum.get() + bom_ivt_qty_now);
|
|
||||||
});
|
|
||||||
//判断已含添加剂与需配添加剂大小
|
//判断已含添加剂与需配添加剂大小
|
||||||
tjj_map.forEach((key,tjj_map_now)->{
|
tjj_map.forEach((key,tjj_map_now)->{
|
||||||
//需配添加剂重量
|
//需配添加剂重量
|
||||||
@@ -1955,27 +1995,11 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
tjj_map_now.put("is_active","1");
|
tjj_map_now.put("is_active","1");
|
||||||
tjj_map_now.put("quality_scode","01");
|
tjj_map_now.put("quality_scode","01");
|
||||||
yzj_list.add(tjj_map_now);
|
yzj_list.add(tjj_map_now);
|
||||||
total_sum.set(total_sum.get() + need_qty-finished_qty);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
double W = new_qty - total_sum.get();
|
|
||||||
if(W>0){
|
|
||||||
JSONObject W_weight = new JSONObject();
|
|
||||||
W_weight.put("formula_qty",W);
|
|
||||||
//钨分类id
|
|
||||||
W_weight.put("material_id","1503644362234531840");
|
|
||||||
W_weight.put("material_name","钨粉");
|
|
||||||
W_weight.put("material_code","09030103");
|
|
||||||
W_weight.put("material_type","02");
|
|
||||||
W_weight.put("is_need_move","0");
|
|
||||||
W_weight.put("is_need_manage","1");
|
|
||||||
W_weight.put("is_rf_xl","0");
|
|
||||||
W_weight.put("ivt_level","01");
|
|
||||||
W_weight.put("is_active","1");
|
|
||||||
W_weight.put("quality_scode","01");
|
|
||||||
cw_list.add(W_weight);
|
|
||||||
}
|
}
|
||||||
}else{//大于等于2条库粗你明细时
|
//大于等于2条库粗你明细时
|
||||||
|
else{
|
||||||
//最后一个为X22p
|
//最后一个为X22p
|
||||||
JSONObject bomdlt_Cr3C2_X22p = bomdlts_Cr3C2.getJSONObject(bomdlts_Cr3C2.size()-1);
|
JSONObject bomdlt_Cr3C2_X22p = bomdlts_Cr3C2.getJSONObject(bomdlts_Cr3C2.size()-1);
|
||||||
//倒数第二为X21p
|
//倒数第二为X21p
|
||||||
@@ -1997,10 +2021,15 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
|
|
||||||
double X21c = X21p*X21/100.0;
|
double X21c = X21p*X21/100.0;
|
||||||
|
|
||||||
|
boolean flag = true;
|
||||||
|
//设X21p减=0,解方程
|
||||||
|
if(flag){
|
||||||
AtomicReference<Double> Z_sum = new AtomicReference<>(0.0);
|
AtomicReference<Double> Z_sum = new AtomicReference<>(0.0);
|
||||||
|
AtomicReference<Double> Z_sum_per = new AtomicReference<>(0.0);
|
||||||
//循环碳化钨
|
//循环碳化钨
|
||||||
for(int i=0;i<bomdlts_Cr3C2.size();i++){
|
for(int i=0;i<bomdlts_Cr3C2.size();i++){
|
||||||
JSONObject jo = bomdlts_Cr3C2.getJSONObject(i);
|
JSONObject jo = bomdlts_Cr3C2.getJSONObject(i);
|
||||||
|
String stockrecord_id = jo.getString("stockrecord_id");
|
||||||
double bom_ivt_qty_jo = jo.getDouble("bom_ivt_qty");
|
double bom_ivt_qty_jo = jo.getDouble("bom_ivt_qty");
|
||||||
//计算不需要移库的添加剂
|
//计算不需要移库的添加剂
|
||||||
tjj_map.forEach((key,tjj_map_jo)->{
|
tjj_map.forEach((key,tjj_map_jo)->{
|
||||||
@@ -2015,20 +2044,20 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
.uniqueResult(0);
|
.uniqueResult(0);
|
||||||
if(tjj_finished!=null){
|
if(tjj_finished!=null){
|
||||||
//质保书含量比
|
//质保书含量比
|
||||||
double value_jo = tjj_finished.getDouble("value");
|
double tjj_finished_value = tjj_finished.getDouble("value");
|
||||||
//当前含量重量
|
//当前含量重量
|
||||||
double finished = bom_ivt_qty_jo*value_jo/100.0;
|
double finished = bom_ivt_qty_jo*tjj_finished_value/100.0;
|
||||||
|
//累计各碳化钨中已含添加剂重量百分比
|
||||||
|
if(stockrecord_id.equals(bomdlt_Cr3C2_X22p.getString("stockrecord_id"))){
|
||||||
|
Z_sum_per.set(Z_sum_per.get() + tjj_finished_value/100.0);
|
||||||
|
}
|
||||||
//累计各碳化钨中已含添加剂重量
|
//累计各碳化钨中已含添加剂重量
|
||||||
Z_sum.set(Z_sum.get() + finished);
|
Z_sum.set(Z_sum.get() + finished);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
//X22p减=(产品碳平衡*(Z_sum已+CT1_weight)-CT1-Z_sum已)/(1- X22碳含量- X22Z1含量+产品碳平衡*X22Z1含量)
|
||||||
boolean flag = true;
|
double X22_jian = ((c_balance/100.0)*(CT1_weight+Z_sum.get())-CT1-Z_sum.get())/(1-X22/100.0-Z_sum_per.get()+(c_balance/100.0)*Z_sum_per.get());
|
||||||
//设X21p减=0,解方程
|
|
||||||
if(flag){
|
|
||||||
//X22p减=[产品碳平衡*(X11p+X12p+X21p+X22p+软废碳化钨)-(X11p* X11碳含量+X12p* X12碳含量+X21p* X21碳含量+X22p* X22碳含量+软废含碳量)]/(1-X22碳含量)
|
|
||||||
double X22_jian = ((c_balance/100.0)*(CT1_weight)-CT1)/(1-X22/100.0);
|
|
||||||
//更新碳化钨配粉重量
|
//更新碳化钨配粉重量
|
||||||
double bom_ivt_qty = X22p-X22_jian;
|
double bom_ivt_qty = X22p-X22_jian;
|
||||||
if(bom_ivt_qty<0){
|
if(bom_ivt_qty<0){
|
||||||
@@ -2036,6 +2065,39 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
}else{
|
}else{
|
||||||
//解得钨粉重量
|
//解得钨粉重量
|
||||||
double C = X22_jian;
|
double C = X22_jian;
|
||||||
|
//统计除钨以外其他总重
|
||||||
|
AtomicReference<Double> total_sum = new AtomicReference<>(0.0);
|
||||||
|
//循环碳化钨
|
||||||
|
for(int i=0;i<bomdlts_Cr3C2.size();i++){
|
||||||
|
JSONObject jo = bomdlts_Cr3C2.getJSONObject(i);
|
||||||
|
String stockrecord_id = jo.getString("stockrecord_id");
|
||||||
|
double bom_ivt_qty_jo = jo.getDouble("bom_ivt_qty");
|
||||||
|
if(stockrecord_id.equals(bomdlt_Cr3C2_X22p.getString("stockrecord_id"))){
|
||||||
|
bom_ivt_qty_jo = bom_ivt_qty;
|
||||||
|
}
|
||||||
|
//计算不需要移库的添加剂
|
||||||
|
double finalBom_ivt_qty_jo = bom_ivt_qty_jo;
|
||||||
|
tjj_map.forEach((key, tjj_map_jo)->{
|
||||||
|
//获取添加剂id
|
||||||
|
String tjj_material_id = tjj_map_jo.getString("material_id");
|
||||||
|
JSONObject tjj_finished = WQL.getWO("QPF_AUTOFORMULA01")
|
||||||
|
.addParam("material_id",jo.getString("material_id"))
|
||||||
|
.addParam("pcsn",jo.getString("pcsn"))
|
||||||
|
.addParam("item_material_id",tjj_material_id)
|
||||||
|
.addParam("flag","5")
|
||||||
|
.process()
|
||||||
|
.uniqueResult(0);
|
||||||
|
if(tjj_finished!=null){
|
||||||
|
//质保书含量比
|
||||||
|
double tjj_finished_value = tjj_finished.getDouble("value");
|
||||||
|
//当前含量重量
|
||||||
|
double finished = finalBom_ivt_qty_jo *tjj_finished_value/100.0;
|
||||||
|
//累计各碳化钨中已含添加剂重量
|
||||||
|
total_sum.set(total_sum.get()+finished);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
C = C + total_sum.get();
|
||||||
if(C<0){
|
if(C<0){
|
||||||
flag = false;
|
flag = false;
|
||||||
}else if(C>=0){
|
}else if(C>=0){
|
||||||
@@ -2072,8 +2134,6 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
//统计除钨以外其他总重
|
|
||||||
AtomicReference<Double> total_sum = new AtomicReference<>(0.0);
|
|
||||||
|
|
||||||
if(C>0){
|
if(C>0){
|
||||||
JSONObject C_weight = new JSONObject();
|
JSONObject C_weight = new JSONObject();
|
||||||
@@ -2093,11 +2153,6 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
cw_list.add(C_weight);
|
cw_list.add(C_weight);
|
||||||
total_sum.set(total_sum.get() + C);
|
total_sum.set(total_sum.get() + C);
|
||||||
}
|
}
|
||||||
bomdlts_plan_map.forEach((key,bomdlts_plan_now)->{
|
|
||||||
//需配添加剂重量
|
|
||||||
double bom_ivt_qty_now = NumberUtil.round(bomdlts_plan_now.getDouble("bom_ivt_qty"),3).doubleValue();
|
|
||||||
total_sum.set(total_sum.get() + bom_ivt_qty_now);
|
|
||||||
});
|
|
||||||
//判断已含添加剂与需配添加剂大小
|
//判断已含添加剂与需配添加剂大小
|
||||||
tjj_map.forEach((key,tjj_map_now)->{
|
tjj_map.forEach((key,tjj_map_now)->{
|
||||||
//需配添加剂重量
|
//需配添加剂重量
|
||||||
@@ -2115,40 +2170,95 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
tjj_map_now.put("is_active","1");
|
tjj_map_now.put("is_active","1");
|
||||||
tjj_map_now.put("quality_scode","01");
|
tjj_map_now.put("quality_scode","01");
|
||||||
yzj_list.add(tjj_map_now);
|
yzj_list.add(tjj_map_now);
|
||||||
total_sum.set(total_sum.get() + need_qty-finished_qty);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
double W = new_qty - total_sum.get();
|
|
||||||
if(W>0){
|
|
||||||
JSONObject W_weight = new JSONObject();
|
|
||||||
W_weight.put("formula_qty",W);
|
|
||||||
//钨分类id
|
|
||||||
W_weight.put("material_id","1503644362234531840");
|
|
||||||
W_weight.put("material_name","钨粉");
|
|
||||||
W_weight.put("material_code","09030103");
|
|
||||||
W_weight.put("material_type","02");
|
|
||||||
W_weight.put("is_need_move","0");
|
|
||||||
W_weight.put("is_need_manage","1");
|
|
||||||
W_weight.put("is_rf_xl","0");
|
|
||||||
W_weight.put("ivt_level","01");
|
|
||||||
W_weight.put("is_active","1");
|
|
||||||
W_weight.put("quality_scode","01");
|
|
||||||
cw_list.add(W_weight);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!flag){
|
if(!flag){
|
||||||
|
AtomicReference<Double> Z_sum = new AtomicReference<>(0.0);
|
||||||
|
AtomicReference<Double> Z22_sum_per = new AtomicReference<>(0.0);
|
||||||
|
AtomicReference<Double> Z21_sum_per = new AtomicReference<>(0.0);
|
||||||
|
//循环碳化钨
|
||||||
|
for(int i=0;i<bomdlts_Cr3C2.size();i++){
|
||||||
|
JSONObject jo = bomdlts_Cr3C2.getJSONObject(i);
|
||||||
|
String stockrecord_id = jo.getString("stockrecord_id");
|
||||||
|
double bom_ivt_qty_jo = jo.getDouble("bom_ivt_qty");
|
||||||
|
//计算不需要移库的添加剂
|
||||||
|
tjj_map.forEach((key,tjj_map_jo)->{
|
||||||
|
//获取添加剂id
|
||||||
|
String tjj_material_id = tjj_map_jo.getString("material_id");
|
||||||
|
JSONObject tjj_finished = WQL.getWO("QPF_AUTOFORMULA01")
|
||||||
|
.addParam("material_id",jo.getString("material_id"))
|
||||||
|
.addParam("pcsn",jo.getString("pcsn"))
|
||||||
|
.addParam("item_material_id",tjj_material_id)
|
||||||
|
.addParam("flag","5")
|
||||||
|
.process()
|
||||||
|
.uniqueResult(0);
|
||||||
|
if(tjj_finished!=null){
|
||||||
|
//质保书含量比
|
||||||
|
double tjj_finished_value = tjj_finished.getDouble("value");
|
||||||
|
//当前含量重量
|
||||||
|
double finished = bom_ivt_qty_jo*tjj_finished_value/100.0;
|
||||||
|
//累计各碳化钨中已含添加剂重量百分比
|
||||||
|
if(stockrecord_id.equals(bomdlt_Cr3C2_X21p.getString("stockrecord_id"))){
|
||||||
|
Z21_sum_per.set(Z21_sum_per.get() + tjj_finished_value/100.0);
|
||||||
|
}
|
||||||
|
if(stockrecord_id.equals(bomdlt_Cr3C2_X22p.getString("stockrecord_id"))){
|
||||||
|
Z22_sum_per.set(Z22_sum_per.get() + tjj_finished_value/100.0);
|
||||||
|
}
|
||||||
|
//累计各碳化钨中已含添加剂重量
|
||||||
|
Z_sum.set(Z_sum.get() + finished);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
//设X22p减=X22p,解方程
|
//设X22p减=X22p,解方程
|
||||||
// X21p减=[产品碳平衡*(X11p+X12p+X21p+X22p+Z已总) - (X11p* X11碳含量+X12p* X12碳含量+(X21p)* X21碳含量+Z已总+X22p)]/(1-X21碳含量)
|
//X21p减=[(CT1_weight+z_sum已-X22p含抑制剂总和)*产品碳平衡-( CT1-X22p* X22碳含量+X22p)-(z_sum已-X22p含抑制剂总和)]/(1-X21碳含量-X21p抑制剂总含量+X21p抑制剂总含量*产品碳平衡)
|
||||||
double X21_jian = ((c_balance/100.0)*(CT1_weight) - (CT1-X22c) - X22p)/(1-X21/100.0);
|
|
||||||
|
double X21_jian = ((c_balance/100.0)*(CT1_weight+Z_sum.get()-Z22_sum_per.get()) - (CT1+X22p-X22p*X22c/100.0) -(Z_sum.get()-Z22_sum_per.get()))/(1-X21/100.0-Z21_sum_per.get() +Z21_sum_per.get()*(c_balance/100.0));
|
||||||
|
|
||||||
|
//更新碳化钨配粉重量
|
||||||
|
double bom_ivt_qty = X21p-X21_jian;
|
||||||
|
//统计除钨以外其他总重
|
||||||
|
AtomicReference<Double> total_sum = new AtomicReference<>(0.0);
|
||||||
|
//循环碳化钨
|
||||||
|
for(int i=0;i<bomdlts_Cr3C2.size();i++){
|
||||||
|
JSONObject jo = bomdlts_Cr3C2.getJSONObject(i);
|
||||||
|
String stockrecord_id = jo.getString("stockrecord_id");
|
||||||
|
double bom_ivt_qty_jo = jo.getDouble("bom_ivt_qty");
|
||||||
|
if(stockrecord_id.equals(bomdlt_Cr3C2_X22p.getString("stockrecord_id"))){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(stockrecord_id.equals(bomdlt_Cr3C2_X21p.getString("stockrecord_id"))){
|
||||||
|
bom_ivt_qty_jo = bom_ivt_qty;
|
||||||
|
}
|
||||||
|
//计算不需要移库的添加剂
|
||||||
|
double finalBom_ivt_qty_jo = bom_ivt_qty_jo;
|
||||||
|
tjj_map.forEach((key, tjj_map_jo)->{
|
||||||
|
//获取添加剂id
|
||||||
|
String tjj_material_id = tjj_map_jo.getString("material_id");
|
||||||
|
JSONObject tjj_finished = WQL.getWO("QPF_AUTOFORMULA01")
|
||||||
|
.addParam("material_id",jo.getString("material_id"))
|
||||||
|
.addParam("pcsn",jo.getString("pcsn"))
|
||||||
|
.addParam("item_material_id",tjj_material_id)
|
||||||
|
.addParam("flag","5")
|
||||||
|
.process()
|
||||||
|
.uniqueResult(0);
|
||||||
|
if(tjj_finished!=null){
|
||||||
|
//质保书含量比
|
||||||
|
double tjj_finished_value = tjj_finished.getDouble("value");
|
||||||
|
//当前含量重量
|
||||||
|
double finished = finalBom_ivt_qty_jo *tjj_finished_value/100.0;
|
||||||
|
//累计各碳化钨中已含添加剂重量
|
||||||
|
total_sum.set(total_sum.get() + finished);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
//解得钨粉重量
|
//解得钨粉重量
|
||||||
double C = X22p + X21_jian;
|
double C = X22p + X21_jian+total_sum.get();
|
||||||
if(C<0){
|
if(C<0){
|
||||||
throw new BadRequestException("加碳粉为负数,当前配粉无解!");
|
throw new BadRequestException("加碳粉为负数,当前配粉无解!");
|
||||||
}else if(C>=0){
|
}else if(C>=0){
|
||||||
//更新碳化钨配粉重量
|
|
||||||
double bom_ivt_qty = X21p-X21_jian;
|
|
||||||
if(bom_ivt_qty<0){
|
if(bom_ivt_qty<0){
|
||||||
throw new BadRequestException("碳化钨倒数第二条配粉结果为负数,当前配粉无解!");
|
throw new BadRequestException("碳化钨倒数第二条配粉结果为负数,当前配粉无解!");
|
||||||
}
|
}
|
||||||
@@ -2186,8 +2296,6 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
//统计除钨以外其他总重
|
|
||||||
AtomicReference<Double> total_sum = new AtomicReference<>(0.0);
|
|
||||||
|
|
||||||
if(C>0){
|
if(C>0){
|
||||||
JSONObject C_weight = new JSONObject();
|
JSONObject C_weight = new JSONObject();
|
||||||
@@ -2205,13 +2313,7 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
C_weight.put("is_active","1");
|
C_weight.put("is_active","1");
|
||||||
C_weight.put("quality_scode","01");
|
C_weight.put("quality_scode","01");
|
||||||
cw_list.add(C_weight);
|
cw_list.add(C_weight);
|
||||||
total_sum.set(total_sum.get() + C);
|
|
||||||
}
|
}
|
||||||
bomdlts_plan_map.forEach((key,bomdlts_plan_now)->{
|
|
||||||
//需配添加剂重量
|
|
||||||
double bom_ivt_qty_now = NumberUtil.round(bomdlts_plan_now.getDouble("bom_ivt_qty"),3).doubleValue();
|
|
||||||
total_sum.set(total_sum.get() + bom_ivt_qty_now);
|
|
||||||
});
|
|
||||||
//判断已含添加剂与需配添加剂大小
|
//判断已含添加剂与需配添加剂大小
|
||||||
tjj_map.forEach((key,tjj_map_now)->{
|
tjj_map.forEach((key,tjj_map_now)->{
|
||||||
//需配添加剂重量
|
//需配添加剂重量
|
||||||
@@ -2229,33 +2331,16 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
tjj_map_now.put("is_active","1");
|
tjj_map_now.put("is_active","1");
|
||||||
tjj_map_now.put("quality_scode","01");
|
tjj_map_now.put("quality_scode","01");
|
||||||
yzj_list.add(tjj_map_now);
|
yzj_list.add(tjj_map_now);
|
||||||
total_sum.set(total_sum.get() + need_qty-finished_qty);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
double W = new_qty - total_sum.get();
|
|
||||||
if(W>0){
|
|
||||||
JSONObject W_weight = new JSONObject();
|
|
||||||
W_weight.put("formula_qty",W);
|
|
||||||
//钨分类id
|
|
||||||
W_weight.put("material_id","1503644362234531840");
|
|
||||||
W_weight.put("material_name","钨粉");
|
|
||||||
W_weight.put("material_code","09030103");
|
|
||||||
W_weight.put("material_type","02");
|
|
||||||
W_weight.put("is_need_move","0");
|
|
||||||
W_weight.put("is_need_manage","1");
|
|
||||||
W_weight.put("is_rf_xl","0");
|
|
||||||
W_weight.put("ivt_level","01");
|
|
||||||
W_weight.put("is_active","1");
|
|
||||||
W_weight.put("quality_scode","01");
|
|
||||||
cw_list.add(W_weight);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else
|
}else
|
||||||
//需配钨粉
|
//需配钨粉
|
||||||
if(CT1>CT2){
|
if(CT1>CT2){
|
||||||
if(bomdlts_Cr3C2.size()==1){//只配库存明细时
|
//只配库存明细时
|
||||||
|
if(bomdlts_Cr3C2.size()==1){
|
||||||
//假设钨粉重量为W
|
//假设钨粉重量为W
|
||||||
JSONObject bomdlt_Cr3C2 = bomdlts_Cr3C2.getJSONObject(0);
|
JSONObject bomdlt_Cr3C2 = bomdlts_Cr3C2.getJSONObject(0);
|
||||||
//获取碳含量
|
//获取碳含量
|
||||||
@@ -3405,9 +3490,6 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
double need_qty = bomdlt.getDouble("formula_qty");
|
double need_qty = bomdlt.getDouble("formula_qty");
|
||||||
W = NumberUtil.round(W - need_qty,3).doubleValue();
|
W = NumberUtil.round(W - need_qty,3).doubleValue();
|
||||||
}
|
}
|
||||||
/*if(W<0){
|
|
||||||
throw new BadRequestException("补钨粉重量为负数,请检查bom及其他参数!");
|
|
||||||
}*/
|
|
||||||
if(W>0){
|
if(W>0){
|
||||||
JSONObject W_weight = new JSONObject();
|
JSONObject W_weight = new JSONObject();
|
||||||
W_weight.put("formula_qty",W);
|
W_weight.put("formula_qty",W);
|
||||||
@@ -3428,7 +3510,8 @@ public class AutoformulaServiceImpl implements AutoformulaService {
|
|||||||
//需配碳粉
|
//需配碳粉
|
||||||
if(CT1<CT2){
|
if(CT1<CT2){
|
||||||
//B、若有软废,先加钨Wp=桶重量 - (R1p*R1纯粉系数+ R2p*R2纯粉系数…) - (Y1p+X1p+X2p…)
|
//B、若有软废,先加钨Wp=桶重量 - (R1p*R1纯粉系数+ R2p*R2纯粉系数…) - (Y1p+X1p+X2p…)
|
||||||
if(rf_list.size()!=0){//只配库存明细时
|
//只配库存明细时
|
||||||
|
if(rf_list.size()!=0){
|
||||||
double W = net_qty;
|
double W = net_qty;
|
||||||
//桶重量 - (R1p*R1纯粉系数+ R2p*R2纯粉系数…)
|
//桶重量 - (R1p*R1纯粉系数+ R2p*R2纯粉系数…)
|
||||||
for(int i=0;i<rf_list.size();i++){
|
for(int i=0;i<rf_list.size();i++){
|
||||||
|
|||||||
Reference in New Issue
Block a user