diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/AutoformulaServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/AutoformulaServiceImpl.java index 5a05ce31..434f1c8e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/AutoformulaServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/AutoformulaServiceImpl.java @@ -4,6 +4,7 @@ package org.nl.wms.pf.service.impl; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -115,6 +116,16 @@ public class AutoformulaServiceImpl implements AutoformulaService { yzj_list = ret.getJSONArray("yzj_list"); cw_list = ret.getJSONArray("cw_list"); }else{ + WQLObject wo_param = WQLObject.getWQLObject("sys_param"); + JSONObject param = wo_param.query("is_active='1' and is_delete='0' and code='IS_LIMIT_RF'").uniqueResult(0); + if (ObjectUtil.isEmpty(param)) { + throw new BadRequestException("是否开启软废限制系统参数查询失败!"); + } + String value = param.getString("value"); + String value_is_active = ""; + if("1".equals(value)){ + value_is_active = "1"; + }//.addParam("is_active",value_is_active) //获取库存集合 JSONArray ivts = new JSONArray(); for(int i=0;i0){ JSONObject Formula_02 = new JSONObject(); @@ -416,12 +428,54 @@ public class InitformulaServiceImpl implements InitformulaService { }else{ Formula_02.put("extadd_qty",Formula_02.getDouble("extadd_qty")+jo.getDouble("formula_qty")); } + JSONObject md_jo = md_me_materialbase.query("is_delete='0' and material_id='"+jo.getString("material_id")+"'").uniqueResult(0); + if(md_jo!=null){ + //是否软废 + if(MaterOptTypeEnum.RF.getClass_idStr().contains(md_jo.getString("material_type_id"))){ + JSONObject pro_jo = md_me_producmaterialext.query("material_id='"+jo.getString("material_id")+"'").uniqueResult(0); + double net_rate = pro_jo.getDouble("net_rate"); + RF_total = RF_total+jo.getDouble("formula_qty")*pro_jo.getDouble("net_rate")/100.0; + } + } bill_qty = bill_qty+jo.getDouble("formula_qty"); PDM_BI_FormulaDtl.insert(jo); } + if(billpure_qty>0){ + double RF_per = RF_total/billpure_qty; + if(RF_per>=0.5){ + if(!pcsn.endsWith("R")){ + pcsn = pcsn+"R"; + } + }else{ + if(pcsn.endsWith("R")){ + pcsn = pcsn.replace("R",""); + } + } + }else{ + pcsn = pcsn.replace("R",""); + } + Formula_02.put("pcsn",pcsn); Formula_02.put("total_qty",Formula_02.getDouble("masterbucket_qty")+Formula_02.getDouble("extadd_qty")); PDM_BI_Formula.insert(Formula_02); } + if(billpure_qty>0){ + double RF_per = RF_total/billpure_qty; + if(RF_per>=0.5){ + if(!pcsn.endsWith("R")){ + pcsn = pcsn+"R"; + } + }else{ + if(pcsn.endsWith("R")){ + pcsn = pcsn.replace("R",""); + } + } + }else{ + pcsn = pcsn.replace("R",""); + } + Formula_01.put("pcsn",pcsn); + Formula_01.put("total_qty",Formula_01.getDouble("masterbucket_qty")+Formula_01.getDouble("extadd_qty")); + PDM_BI_Formula.insert(Formula_01); + order.put("pcsn",pcsn); order.put("status","30"); order.put("billpure_qty",billpure_qty+""); order.put("bill_qty",bill_qty+""); @@ -441,13 +495,15 @@ public class InitformulaServiceImpl implements InitformulaService { WQLObject PDM_BI_WorkOrder = WQLObject.getWQLObject("PDM_BI_WorkOrder"); // 工艺路线主表 WQLObject PDM_BI_Formula = WQLObject.getWQLObject("PDM_BI_Formula"); WQLObject PDM_BI_FormulaDtl = WQLObject.getWQLObject("PDM_BI_FormulaDtl"); - + WQLObject md_me_materialbase = WQLObject.getWQLObject("md_me_materialbase"); + WQLObject md_me_producmaterialext = WQLObject.getWQLObject("md_me_producmaterialext"); String workorder_id = whereJson.getString("workorder_id"); String material_id = whereJson.getString("material_id"); JSONObject order = PDM_BI_WorkOrder.query("is_delete='0' and workorder_id='"+workorder_id+"'").uniqueResult(0); if(order == null){ throw new BadRequestException("当前工令信息查询失败!"); } + String pcsn = order.getString("pcsn"); String status = order.getString("status"); if(!"20,30".contains(status)){ throw new BadRequestException("当前工令非提交或开单中状态,不允许开单确认!"); @@ -494,6 +550,8 @@ public class InitformulaServiceImpl implements InitformulaService { Formula_01.put("remark", whereJson.getString("remark")); double bill_qty = 0; double billpure_qty = 0; + //软废纯粉总重 + double RF_total = 0; int nn = 1; for(int i = 0;i0){ JSONObject Formula_02 = new JSONObject(); @@ -634,12 +701,53 @@ public class InitformulaServiceImpl implements InitformulaService { }else{ Formula_02.put("extadd_qty",Formula_02.getDouble("extadd_qty")+jo.getDouble("formula_qty")); } + JSONObject md_jo = md_me_materialbase.query("is_delete='0' and material_id='"+jo.getString("material_id")+"'").uniqueResult(0); + if(md_jo!=null){ + //是否软废 + if(MaterOptTypeEnum.RF.getClass_idStr().contains(md_jo.getString("material_type_id"))){ + JSONObject pro_jo = md_me_producmaterialext.query("material_id='"+jo.getString("material_id")+"'").uniqueResult(0); + double net_rate = pro_jo.getDouble("net_rate"); + RF_total = RF_total+jo.getDouble("formula_qty")*pro_jo.getDouble("net_rate")/100.0; + } + } bill_qty = bill_qty+jo.getDouble("formula_qty"); PDM_BI_FormulaDtl.insert(jo); } + if(billpure_qty>0){ + double RF_per = RF_total/billpure_qty; + if(RF_per>=0.5){ + if(!pcsn.endsWith("R")){ + pcsn = pcsn+"R"; + } + }else{ + if(pcsn.endsWith("R")){ + pcsn = pcsn.replace("R",""); + } + } + }else{ + pcsn = pcsn.replace("R",""); + } Formula_02.put("total_qty",Formula_02.getDouble("masterbucket_qty")+Formula_02.getDouble("extadd_qty")); PDM_BI_Formula.insert(Formula_02); } + if(billpure_qty>0){ + double RF_per = RF_total/billpure_qty; + if(RF_per>=0.5){ + if(!pcsn.endsWith("R")){ + pcsn = pcsn+"R"; + } + }else{ + if(pcsn.endsWith("R")){ + pcsn = pcsn.replace("R",""); + } + } + }else{ + pcsn = pcsn.replace("R",""); + } + Formula_01.put("pcsn",pcsn); + Formula_01.put("total_qty",Formula_01.getDouble("masterbucket_qty")+Formula_01.getDouble("extadd_qty")); + PDM_BI_Formula.insert(Formula_01); + order.put("pcsn",pcsn); order.put("status","40"); order.put("billpure_qty",billpure_qty+""); order.put("bill_qty",bill_qty+""); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/wql/QPF_AUTOFORMULA01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/wql/QPF_AUTOFORMULA01.wql index 54983e95..e67d2b92 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/wql/QPF_AUTOFORMULA01.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/wql/QPF_AUTOFORMULA01.wql @@ -180,10 +180,12 @@ WHERE 1 = 1 AND structivt.sum_qty > 0 - AND structivt.is_active = '1' OPTION 输入.material_id <> "" structivt.material_id = 输入.material_id ENDOPTION + OPTION 输入.is_active <> "" + structivt.is_active = 输入.is_active + ENDOPTION OPTION 输入.quality_scode <> "" structivt.quality_scode = 输入.quality_scode ENDOPTION