add:合批模式添加成型计计算

This commit is contained in:
zhangzhiqiang
2023-01-06 10:23:13 +08:00
parent deaed8ab0a
commit 5b8ceec526

View File

@@ -4888,6 +4888,8 @@ public class AutoformulaServiceImpl implements AutoformulaService {
* @return * @return
*/ */
JSONObject autoCalculationBy03_ruanfei(JSONObject json){ JSONObject autoCalculationBy03_ruanfei(JSONObject json){
WQLObject MD_PD_ProductMaterialSet = WQLObject.getWQLObject("MD_PD_ProductMaterialSet");
WQLObject MD_PD_FormingMaterial = WQLObject.getWQLObject("MD_PD_FormingMaterial");
//定义返回值 //定义返回值
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
ret.put("chunfen_qty","-1"); ret.put("chunfen_qty","-1");
@@ -5205,7 +5207,7 @@ public class AutoformulaServiceImpl implements AutoformulaService {
ret.put("chunfen_qty",sum_chunfen.get()); ret.put("chunfen_qty",sum_chunfen.get());
rf_list2 = new JSONArray(); rf_list2 = new JSONArray();
xl_list2 = new JSONArray(); xl_list2 = new JSONArray();
cxj_list = new JSONArray(); // cxj_list = new JSONArray();
yzj_list = new JSONArray(); yzj_list = new JSONArray();
cw_list = new JSONArray(); cw_list = new JSONArray();
}else{ }else{
@@ -5406,7 +5408,7 @@ public class AutoformulaServiceImpl implements AutoformulaService {
//若Cp<=Wp更新Wp=Wp-Cp结束 //若Cp<=Wp更新Wp=Wp-Cp结束
if(Cp<=W){ if(Cp<=W){
if(Cp>0){ if(Cp>0){
if(Cp > cw_limit_down){ if(true){//Cp > cw_limit_down
JSONObject C_weight = new JSONObject(); JSONObject C_weight = new JSONObject();
C_weight.put("formula_qty",Cp); C_weight.put("formula_qty",Cp);
//钨分类id //钨分类id
@@ -5425,7 +5427,7 @@ public class AutoformulaServiceImpl implements AutoformulaService {
double Wp = NumberUtil.round(W-Cp,6).doubleValue(); double Wp = NumberUtil.round(W-Cp,6).doubleValue();
if(Wp>0){ if(Wp>0){
if(Wp > cw_limit_down){ if(true){//(Wp > cw_limit_down
JSONObject W_weight = new JSONObject(); JSONObject W_weight = new JSONObject();
W_weight.put("formula_qty",NumberUtil.round(Wp,6).doubleValue()); W_weight.put("formula_qty",NumberUtil.round(Wp,6).doubleValue());
//钨分类id //钨分类id
@@ -5578,7 +5580,7 @@ public class AutoformulaServiceImpl implements AutoformulaService {
if(C_bu>0){ if(C_bu>0){
//Wp=Wp+W补 //Wp=Wp+W补
Cp = Cp + C_bu; Cp = Cp + C_bu;
if(Cp > cw_limit_down){ if(true){//cw_limit_down
//计算非碳化钨需补重量 //计算非碳化钨需补重量
double finalR3p_jian = R3p_jian; double finalR3p_jian = R3p_jian;
bj_bomdlts_map.forEach((key, bj_bomdlt)->{ bj_bomdlts_map.forEach((key, bj_bomdlt)->{
@@ -5691,7 +5693,7 @@ public class AutoformulaServiceImpl implements AutoformulaService {
if(C_bu>0){ if(C_bu>0){
//Wp=Wp+W补 //Wp=Wp+W补
Cp = Cp + C_bu; Cp = Cp + C_bu;
if(Cp > cw_limit_down){ if(true){//Cp > cw_limit_down
JSONObject C_weight = new JSONObject(); JSONObject C_weight = new JSONObject();
C_weight.put("formula_qty",Cp); C_weight.put("formula_qty",Cp);
//钨分类id //钨分类id
@@ -5914,7 +5916,7 @@ public class AutoformulaServiceImpl implements AutoformulaService {
}else{ }else{
//Wp=Wp+W补 //Wp=Wp+W补
W = W + W_bu; W = W + W_bu;
if(W <= cw_limit_down){ if(true){//W <= cw_limit_down
//用新料补足剩余部分 //用新料补足剩余部分
bomdlts_need_map.forEach((key,bomdlt)->{ bomdlts_need_map.forEach((key,bomdlt)->{
//获取Y1、X1、X2….剩余>0的物料 //获取Y1、X1、X2….剩余>0的物料
@@ -6024,7 +6026,7 @@ public class AutoformulaServiceImpl implements AutoformulaService {
} }
//Wp=Wp+W补 //Wp=Wp+W补
W = W + W_bu; W = W + W_bu;
if(W <= cw_limit_down){ if(true){//W <= cw_limit_down
//用新料补足剩余部分 //用新料补足剩余部分
bomdlts_need_map.forEach((key,bomdlt)->{ bomdlts_need_map.forEach((key,bomdlt)->{
//获取Y1、X1、X2….剩余>0的物料 //获取Y1、X1、X2….剩余>0的物料
@@ -6108,6 +6110,85 @@ public class AutoformulaServiceImpl implements AutoformulaService {
throw new BadRequestException("满足条件的软废库存为0请按其他模式配粉"); throw new BadRequestException("满足条件的软废库存为0请按其他模式配粉");
} }
} }
//3.计算成型剂
JSONArray bomdlts2 = WQL.getWO("QPF_AUTOFORMULA01")
.addParam("material_id",material_id)
.addParam("is_need_manage","0")
.addParam("flag","1")
.process().getResultJSONArray(0);
//各成型剂需配总量
HashMap<String,JSONObject> bomdlts2_map = new HashMap<String,JSONObject>();
for(int i=0;i<bomdlts2.size();i++){
JSONObject bomdlt = bomdlts2.getJSONObject(i);
double standard_rate = bomdlt.getDouble("standard_rate");
//需配成型剂重量
bomdlt.put("formula_qty",net_qty*standard_rate/100.0);
//当前已配
bomdlt.put("now_formula_qty",0);
bomdlt.put("need_sum_qty",net_qty*standard_rate/100.0);
bomdlts2_map.put(bomdlt.getString("material_id"),bomdlt);
}
rf_map.forEach((key, rf_dis)->{
String set_material_id = rf_dis.getString("material_id");
//R1p*纯粉系数
double net_rate_qty = rf_dis.getDouble("formula_qty")*net_rate_map.get(set_material_id)/100.0;
// double net_rate_qty = rf_dis.getDouble("net_rate_qty");
JSONObject ProductMaterialSet = MD_PD_ProductMaterialSet.query("set_type='02' and material_id='"+material_id+"' and set_material_id='"+set_material_id+"'").uniqueResult(0);
if(ProductMaterialSet == null){
throw new BadRequestException("产品"+material_code+"未配置改配模式可配粉软废信息!");
}
//是否计算成型剂
String is_calculate_forming = ProductMaterialSet.getString("is_calculate_forming");
if("1".equals(is_calculate_forming)){
//循环成型剂
for(int k=0;k<bomdlts2.size();k++){
JSONObject bomdlt2 = bomdlts2.getJSONObject(k);
JSONObject FormingMaterial = MD_PD_FormingMaterial.query("material_id='"+bomdlt2.getString("material_id")+"'").uniqueResult(0);
if(FormingMaterial==null){
throw new BadRequestException("成型剂"+rf_dis.getString("material_code")+" "+rf_dis.getString("material_name")+"未配置配粉开单成型剂物料对应关系!");
}
String formingtype_id = FormingMaterial.getString("formingtype_id");
//获取所含成型剂分类物料信息
JSONArray cxj_ja = WQL.getWO("QPF_AUTOFORMULA01")
.addParam("material_id",set_material_id)
.addParam("formingtype_id",formingtype_id)
.addParam("flag","4")
.process().getResultJSONArray(0);
for(int j=0;j<cxj_ja.size();j++){
JSONObject cxj = cxj_ja.getJSONObject(j);
//软废中bom对应成型剂开单时计算含量
double calculate_rate = cxj.getDouble("calculate_rate");
//软废中bom对应成型剂含量
double standard_rate = cxj.getDouble("standard_rate")*calculate_rate/100.0;
//当前成型剂含量
double now = net_rate_qty*standard_rate/100.0;
JSONObject bomdlt = bomdlts2_map.get(bomdlt2.getString("material_id"));
//需配成型剂重量
double now_formula_qty = bomdlt.getDouble("now_formula_qty")+now;
bomdlt.put("now_formula_qty",now_formula_qty);
bomdlts2_map.put(bomdlt2.getString("material_id"),bomdlt);
}
}
}
});
bomdlts2_map.forEach((key,bomdlts2_now)->{
//需配成型剂重量
double formula_qty = bomdlts2_now.getDouble("formula_qty");
//当前软废已配
double now_formula_qty = bomdlts2_now.getDouble("now_formula_qty");
//已配小于需配
if(now_formula_qty<formula_qty){//已配软废0.5992,需要成型"500*0.2
bomdlts2_now.put("formula_qty",formula_qty-now_formula_qty);
bomdlts2_now.put("material_type","01");
bomdlts2_now.put("is_need_move","0");
bomdlts2_now.put("is_need_manage","0");
bomdlts2_now.put("is_rf_xl","0");
bomdlts2_now.put("ivt_level","01");
bomdlts2_now.put("is_active","1");
bomdlts2_now.put("quality_scode","01");
cxj_list.add(bomdlts2_now);
}
});
//处理新料 //处理新料
JSONArray xl_list3 = new JSONArray(); JSONArray xl_list3 = new JSONArray();
//重新分配总需配库存 //重新分配总需配库存