diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/rest/AcceptFormulaController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/rest/AcceptFormulaController.java index 4604246e..8b9b2805 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/rest/AcceptFormulaController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/rest/AcceptFormulaController.java @@ -2,6 +2,7 @@ package org.nl.wms.pf.rest; +import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -36,27 +37,27 @@ public class AcceptFormulaController { return new ResponseEntity<>(acceptFormulaService.queryAll(whereJson, page), HttpStatus.OK); } - @PostMapping + @PostMapping("/create") @Log("新增配粉BOM维护") @ApiOperation("新增配粉BOM维护") - public ResponseEntity create(@RequestBody Map whereJson) { + public ResponseEntity create(@RequestBody JSONObject whereJson) { acceptFormulaService.create(whereJson); return new ResponseEntity<>(HttpStatus.CREATED); } - @PutMapping + @PostMapping("/update") @Log("修改配粉BOM维护") @ApiOperation("修改配粉BOM维护") - public ResponseEntity update(@RequestBody Map whereJson) { + public ResponseEntity update(@RequestBody JSONObject whereJson) { acceptFormulaService.update(whereJson); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } @Log("删除配粉BOM维护") @ApiOperation("删除配粉BOM维护") - @DeleteMapping - public ResponseEntity delete(@RequestBody Long[] ids) { - acceptFormulaService.deleteAll(ids); + @PostMapping("/mydel") + public ResponseEntity mydel(@RequestBody JSONObject whereJson) { + acceptFormulaService.deleteAll(whereJson); return new ResponseEntity<>(HttpStatus.OK); } @@ -99,8 +100,21 @@ public class AcceptFormulaController { } @Log("获取成型剂类别") @ApiOperation("获取成型剂类别") + @GetMapping("/getPCSNid") + public ResponseEntity getPCSNid(@RequestParam Map whereJson) { + return new ResponseEntity<>(acceptFormulaService.getPCSNid(whereJson),HttpStatus.OK); + } + @Log("获取成型剂类别") + @ApiOperation("获取成型剂类别") @GetMapping("/createPcsn") public ResponseEntity createPcsn() { return new ResponseEntity<>(acceptFormulaService.createPcsn(),HttpStatus.OK); } + + @Log("获取成型剂类别") + @ApiOperation("获取成型剂类别") + @GetMapping("/autoCalculation") + public ResponseEntity autoCalculation(@RequestParam Map whereJson) { + return new ResponseEntity<>(acceptFormulaService.autoCalculation(whereJson),HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/AcceptFormulaService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/AcceptFormulaService.java index 15aca95f..33929ed4 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/AcceptFormulaService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/AcceptFormulaService.java @@ -50,19 +50,19 @@ public interface AcceptFormulaService { * 创建 * @param whereJson / */ - void create(Map whereJson); + void create(JSONObject whereJson); /** * 编辑 * @param whereJson / */ - void update(Map whereJson); + void update(JSONObject whereJson); /** * 多选删除 * @param ids / */ - void deleteAll(Long[] ids); + void deleteAll(JSONObject ids); /** * 编辑时获取明细 @@ -90,9 +90,17 @@ public interface AcceptFormulaService { * 提交 */ JSONObject getBom(Map whereJson); + /** + * 提交 + */ + JSONObject getPCSNid(Map whereJson); /** * 提交 */ JSONObject createPcsn(); + /** + * 提交 + */ + JSONArray autoCalculation(Map whereJson); } 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 03c4010a..a278c423 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 @@ -4,6 +4,8 @@ package org.nl.wms.pf.service.impl; import cn.hutool.core.date.DateUtil; 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; @@ -14,6 +16,7 @@ import org.nl.exception.BadRequestException; import org.nl.modules.security.service.dto.JwtUserDto; import org.nl.modules.system.util.CodeUtil; import org.nl.utils.SecurityUtils; +import org.nl.wms.basedata.master.constant.MaterOptTypeEnum; import org.nl.wms.pf.service.AcceptFormulaService; import org.nl.wms.pf.service.AcceptMarkService; import org.nl.wms.pf.service.dto.ProductbomDto; @@ -24,9 +27,11 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; /** * @author Liuxy @@ -99,130 +104,155 @@ public class AcceptFormulaServiceImpl implements AcceptFormulaService { @Override @Transactional(rollbackFor = Exception.class) - public void create(Map whereJson) { + public void create(JSONObject whereJson) { Long currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getNickName(); String now = DateUtil.now(); JwtUserDto currentUser = (JwtUserDto) SecurityUtils.getCurrentUser(); Long deptId = currentUser.getDeptId(); + WQLObject QL_TEST_FactoryWarrantyMst = WQLObject.getWQLObject("QL_TEST_FactoryWarrantyMst"); + WQLObject mstTab = WQLObject.getWQLObject("QL_TEST_AcceptFormula"); + WQLObject dtlTab = WQLObject.getWQLObject("QL_TEST_AcceptFormulaDtl"); - WQLObject mstTab = WQLObject.getWQLObject("QL_TEST_AcceptMark"); - WQLObject dtlTab = WQLObject.getWQLObject("QL_TEST_AcceptMarkBOM"); - - JSONArray jsonArr = JSONArray.parseArray(JSON.toJSONString(whereJson.get("tableData"))); + JSONArray jsonArr = whereJson.getJSONArray("tableData"); // 主表 - JSONObject jsonMst = new JSONObject(); - jsonMst = (JSONObject) JSON.toJSON(whereJson); + JSONObject jsonMst = whereJson; whereJson.remove("tableData"); - jsonMst.put("mark_id", IdUtil.getSnowflake(1, 1).nextId()); + long formula_id = IdUtil.getSnowflake(1, 1).nextId(); + jsonMst.put("formula_id",formula_id+""); + String formula_code = CodeUtil.getNewCode("ACCEPTFORMULA_CODE"); + jsonMst.put("formula_code", formula_code); jsonMst.put("is_delete", "0"); - jsonMst.put("remark", (String) whereJson.get("remark")); - JSONObject jonow = mstTab.query("is_delete='0' and mark_code='" + jsonMst.getString("mark_code") + "'").uniqueResult(0); - if (jonow != null) { - throw new BadRequestException("该牌号已存在!"); - } + + //成品物料id + String inspection_id = whereJson.getString("inspection_id"); + JSONObject FactoryWarrantyMst = QL_TEST_FactoryWarrantyMst.query("inspection_id='"+inspection_id+"'").uniqueResult(0); + + String material_pcsn = FactoryWarrantyMst.getString("pcsn"); + + jsonMst.put("material_pcsn", material_pcsn); + jsonMst.put("remark", whereJson.getString("remark")); jsonMst.put("create_id", currentUserId); jsonMst.put("create_name", nickName); jsonMst.put("create_time", now); jsonMst.put("update_optid", currentUserId); jsonMst.put("update_optname", nickName); jsonMst.put("update_time", now); - jsonMst.put("detail_count", jsonArr.size()); - mstTab.insert(jsonMst); + jsonMst.put("syscompanyid", deptId); + jsonMst.put("sysdeptid", deptId); + + double sum_qty = 0; // 明细表 for (int i = 0; i < jsonArr.size(); i++) { JSONObject json = jsonArr.getJSONObject(i); JSONObject jsonDtl = new JSONObject(); - jsonDtl.put("bomdtl_id", IdUtil.getSnowflake(1, 1).nextId()); - jsonDtl.put("mark_id", jsonMst.getString("mark_id")); - jsonDtl.put("seqno", (i+1)+""); + jsonDtl.put("formuladtl_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonDtl.put("formula_id", formula_id+""); + jsonDtl.put("formula_code", formula_code+""); + jsonDtl.put("seq_no", (i+1)+""); + jsonDtl.put("material_type","01"); jsonDtl.put("material_id", json.getString("material_id")); - jsonDtl.put("standard_rate", json.getString("standard_rate")); + jsonDtl.put("dtl_pcsn", json.getString("dtl_pcsn")); + jsonDtl.put("formula_qty", json.getString("formula_qty")); + jsonDtl.put("qty_unit_id", "2"); + jsonDtl.put("qty_unit_name", "克"); + + sum_qty = sum_qty + json.getDouble("formula_qty"); dtlTab.insert(jsonDtl); } + jsonMst.put("confirm_qty", sum_qty); + mstTab.insert(jsonMst); } @Override @Transactional(rollbackFor = Exception.class) - public void update(Map whereJson) { - JSONObject entity = this.findById(Long.valueOf((String) whereJson.get("mark_id"))); - if (entity == null) { - throw new BadRequestException("被删除或无权限,操作失败!"); - } - WQLObject mstTab = WQLObject.getWQLObject("QL_TEST_AcceptMark"); - WQLObject dtlTab = WQLObject.getWQLObject("QL_TEST_AcceptMarkBOM"); - + public void update(JSONObject whereJson) { Long currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getNickName(); + JwtUserDto currentUser = (JwtUserDto) SecurityUtils.getCurrentUser(); + WQLObject QL_TEST_FactoryWarrantyMst = WQLObject.getWQLObject("QL_TEST_FactoryWarrantyMst"); + WQLObject mstTab = WQLObject.getWQLObject("QL_TEST_AcceptFormula"); + WQLObject dtlTab = WQLObject.getWQLObject("QL_TEST_AcceptFormulaDtl"); - JSONArray jsonArr = JSONArray.parseArray(JSON.toJSONString(whereJson.get("tableData"))); + JSONArray jsonArr = whereJson.getJSONArray("tableData"); // 主表 - JSONObject jsonMst = new JSONObject(); + JSONObject jsonMst = whereJson; whereJson.remove("tableData"); - jsonMst = (JSONObject) JSON.toJSON(whereJson); - String mark_code = jsonMst.getString("mark_code"); - String mark_id = jsonMst.getString("mark_id"); - JSONObject oldJO = mstTab.query("mark_id <> '" + mark_id + "' and mark_code='"+mark_code+"'").uniqueResult(0); - if(oldJO !=null){ - throw new BadRequestException("已存在相同牌号!"); - } - JSONObject now = mstTab.query("mark_id = '" + mark_id + "'").uniqueResult(0); - //主表 - now.put("mark_code", jsonMst.getString("mark_code")); - now.put("c_balance", jsonMst.getString("c_balance")); - now.put("liquid_rate", jsonMst.getString("liquid_rate")); - now.put("ball_rate", jsonMst.getString("ball_rate")); - now.put("ball_speed", jsonMst.getString("ball_speed")); - now.put("ball_time", jsonMst.getString("ball_time")); - now.put("remark", jsonMst.getString("remark")); + String formula_id = jsonMst.getString("formula_id"); + JSONObject now = mstTab.query("formula_id = '" + formula_id + "'").uniqueResult(0); + //成品物料id + String inspection_id = whereJson.getString("inspection_id"); + JSONObject FactoryWarrantyMst = QL_TEST_FactoryWarrantyMst.query("inspection_id='"+inspection_id+"'").uniqueResult(0); + + String material_pcsn = FactoryWarrantyMst.getString("pcsn"); + now.put("material_pcsn", material_pcsn); now.put("update_optid", currentUserId); now.put("update_optname", nickName); now.put("update_time", DateUtil.now()); //删明细 - dtlTab.delete("mark_id = '" + mark_id + "'"); + dtlTab.delete("formula_id = '" + formula_id + "'"); //明细表 now.put("detail_count", jsonArr.size() + ""); - mstTab.update(now); + + double sum_qty = 0; + // 明细表 for (int i = 0; i < jsonArr.size(); i++) { JSONObject json = jsonArr.getJSONObject(i); JSONObject jsonDtl = new JSONObject(); - jsonDtl.put("bomdtl_id", IdUtil.getSnowflake(1, 1).nextId()); - jsonDtl.put("mark_id", mark_id); - jsonDtl.put("seqno", (i+1)+""); + jsonDtl.put("formuladtl_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonDtl.put("formula_id", formula_id+""); + jsonDtl.put("formula_code", now.getString("formula_code")); + jsonDtl.put("seq_no", (i+1)+""); + jsonDtl.put("material_type","01"); jsonDtl.put("material_id", json.getString("material_id")); - jsonDtl.put("standard_rate", json.getString("standard_rate")); + jsonDtl.put("dtl_pcsn", json.getString("dtl_pcsn")); + jsonDtl.put("formula_qty", json.getString("formula_qty")); + jsonDtl.put("qty_unit_id", "2"); + jsonDtl.put("qty_unit_name", "克"); + sum_qty = sum_qty + json.getDouble("formula_qty"); dtlTab.insert(jsonDtl); } + now.put("confirm_qty", sum_qty); + mstTab.update(now); } @Override @Transactional(rollbackFor = Exception.class) - public void deleteAll(Long[] ids) { + public void deleteAll(JSONObject jo) { Long currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getNickName(); String now = DateUtil.now(); - - WQLObject mstTab = WQLObject.getWQLObject("QL_TEST_AcceptMark"); - WQLObject dtlTab = WQLObject.getWQLObject("QL_TEST_AcceptMarkBOM"); - for (Long mark_id : ids) { - JSONObject param = new JSONObject(); - param.put("mark_id", String.valueOf(mark_id)); - param.put("is_delete", "1"); - param.put("update_optid", currentUserId); - param.put("update_optname", nickName); - param.put("update_time", now); - mstTab.update(param); - dtlTab.delete("mark_id='" + String.valueOf(mark_id) + "'"); - } + WQLObject mstTab = WQLObject.getWQLObject("QL_TEST_AcceptFormula"); + WQLObject dtlTab = WQLObject.getWQLObject("QL_TEST_AcceptFormulaDtl"); + JSONObject param = new JSONObject(); + param.put("formula_id", jo.getString("formula_id")); + param.put("is_delete", "1"); + param.put("update_optid", currentUserId); + param.put("update_optname", nickName); + param.put("update_time", now); + mstTab.update(param); + dtlTab.delete("formula_id='" + jo.getString("formula_id") + "'"); } @Override @Transactional(rollbackFor = Exception.class) public JSONArray getDtl(Map whereJson) { - String mark_id = (String) whereJson.get("mark_id"); - JSONArray jsonArr = WQL.getWO("QMD_PD_ACCEPTFORMULA01").addParam("flag", "2").addParam("mark_id", mark_id).process().getResultJSONArray(0); - return jsonArr; + WQLObject md_pb_classstandard = WQLObject.getWQLObject("md_pb_classstandard"); + String formula_id = (String) whereJson.get("formula_id"); + JSONArray jsonArr = WQL.getWO("QMD_PD_ACCEPTFORMULA01").addParam("flag", "2").addParam("formula_id", formula_id).process().getResultJSONArray(0); + JSONArray newJa = new JSONArray(); + for(int i=0;i 0){ + jo.put("manufactor",ret.getJSONObject(0).getString("manufactor")); for(int i=0;i map = new HashMap<>(whereJson); + WQLObject mstTab = WQLObject.getWQLObject("QL_TEST_FactoryWarrantyMst"); + String material_id = map.get("material_id"); + String material_pcsn = map.get("material_pcsn"); + JSONObject jo = mstTab.query("is_delete='0' and material_id='"+material_id+"' and pcsn='"+material_pcsn+"'").uniqueResult(0); + whereJson.put("inspection_id",jo.getString("inspection_id")); + jo = this.getPCSN(whereJson); + return jo; + } @Override public JSONObject createPcsn() { JSONObject jo = new JSONObject(); @@ -301,4 +345,586 @@ public class AcceptFormulaServiceImpl implements AcceptFormulaService { jo.put("accept_pcsn",ACCEPT_PCSN); return jo; } + + @Override + @Transactional(rollbackFor = Exception.class) + public JSONArray autoCalculation(Map map) { + JSONObject json = JSONObject.parseObject(JSON.toJSONString(map)); + JSONArray result = this.autoCalculationBy01(json); + return result; + } + + /** + * 新料模式开单 + * @param json + * @return + */ + JSONArray autoCalculationBy01(JSONObject json){ + //需配新料集合 + JSONArray xl_list = new JSONArray(); + //需配成型剂集合 + JSONArray cxj_list = new JSONArray(); + //需抑制剂剂集合 + JSONArray yzj_list = new JSONArray(); + //需抑碳粉钨粉集合 + JSONArray cw_list = new JSONArray(); + //新料配粉环节 + JSONObject ret = this.autoCalculationBy01_xinliao(json); + xl_list = ret.getJSONArray("xl_list"); + cxj_list = ret.getJSONArray("cxj_list"); + yzj_list = ret.getJSONArray("yzj_list"); + cw_list = ret.getJSONArray("cw_list"); + + /*12、分别返回主桶、副桶配粉物料: + 单次投料:主桶:新料+软废+成型剂; + 二次投料:主桶:新料+成型剂;副桶:各软废 + 其中:软废还要返回各成型剂含量*/ + //主桶 + JSONArray tableDtl = new JSONArray(); + if(xl_list!=null){ + List list = JSONObject.parseArray(xl_list.toJSONString(), JSONObject.class); + Collections.sort(list, (JSONObject o1, JSONObject o2) -> { + //转成JSON对象中保存的值类型 + double a = Double.parseDouble(o1.getString("seqno")); + double b = Double.parseDouble(o2.getString("seqno")); + // 如果a, b数据类型为int,可直接 return a - b ;(升序,降序为 return b - a;) + if (a > b) { //降序排列,升序改成a>b + return 1; + } else if(a == b) { + return 0; + } else { + return -1; + } + }); + xl_list = JSONArray.parseArray(JSON.toJSONString(list)); + + xl_list.forEach((value)->{ + JSONObject jo = (JSONObject) value; + tableDtl.add(jo); + }); + } + yzj_list.forEach((value)->{ + JSONObject jo = (JSONObject) value; + jo.put("is_need_manage","1"); + jo.put("bucket_type","01"); + tableDtl.add(jo); + }); + cw_list.forEach((value)->{ + JSONObject jo = (JSONObject) value; + jo.put("bucket_type","01"); + tableDtl.add(jo); + }); + cxj_list.forEach((value)->{ + JSONObject jo = (JSONObject) value; + jo.put("bucket_type","01"); + tableDtl.add(jo); + }); + JSONArray dtl_new = new JSONArray(); + for(int i=0;i bomdlts_plan_map = new HashMap(); + //不需要移库的添加剂(抑制剂)集合 + HashMap yzj_map = new HashMap(); + //各批次碳化钨配粉开单重量 + JSONArray bomdlts_Cr3C2 = new JSONArray(); + //各碳化乌含量百比分之和 + double sum_Cr3C2 = 0; + int num = 0; + for(int i=0;i1){ + throw new BadRequestException("当前Bom碳化钨有多个!"); + } + //计算碳化钨总碳 + double CT1 = 0; + //计算碳化钨总重 + double CT1_weight = 0; + for(int i=0;i total_sum = new AtomicReference<>(0.0); + + double bom_ivt_qty = bomdlt_Cr3C2.getDouble("bom_ivt_qty"); + total_sum.set(total_sum.get() + 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_AUTOFORMULA02") + .addParam("material_id",bomdlt_Cr3C2.getString("material_id")) + .addParam("pcsn",bomdlt_Cr3C2.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 = bom_ivt_qty*value/100.0; + //累计各碳化钨中已含添加剂重量 + tjj_map_jo.put("finished_qty",finished_qty+finished); + yzj_map.put(tjj_material_id,tjj_map_jo); + } + }); + //判断已含添加剂与需配添加剂大小 + yzj_map.forEach((key,tjj_map_now)->{ + //需配添加剂重量 + double need_qty = NumberUtil.round(tjj_map_now.getDouble("need_qty"),3).doubleValue(); + //当前添加剂已配 + double finished_qty = NumberUtil.round(tjj_map_now.getDouble("finished_qty"),3).doubleValue(); + //已配小于需配 + if(finished_qty0){ + 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 + //需配碳粉 + if(CT1= 0){ + bomdlt_Cr3C2.put("bom_ivt_qty",bom_ivt_qty); + bomdlts_plan_map.put(bomdlt_Cr3C2.getString("material_id"),bomdlt_Cr3C2); + + //统计除钨以外其他总重 + AtomicReference total_sum = new AtomicReference<>(0.0); + + total_sum.set(total_sum.get() + bomdlt_Cr3C2.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_AUTOFORMULA02") + .addParam("material_id",bomdlt_Cr3C2.getString("material_id")) + .addParam("pcsn",bomdlt_Cr3C2.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 = bom_ivt_qty*value/100.0; + //累计各碳化钨中已含添加剂重量 + tjj_map_jo.put("finished_qty",finished_qty+finished); + yzj_map.put(tjj_material_id,tjj_map_jo); + } + }); + //判断已含添加剂与需配添加剂大小 + yzj_map.forEach((key,tjj_map_now)->{ + //需配添加剂重量 + double need_qty = NumberUtil.round(tjj_map_now.getDouble("need_qty"),3).doubleValue(); + //当前添加剂已配 + double finished_qty = NumberUtil.round(tjj_map_now.getDouble("finished_qty"),3).doubleValue(); + //已配小于需配 + if(finished_qty0){ + JSONObject C_weight = new JSONObject(); + C_weight.put("formula_qty",C); + //钨分类id + C_weight.put("material_id","1503644362788179968"); + C_weight.put("material_name","碳粉"); + C_weight.put("material_code","09030104"); + C_weight.put("material_type","02"); + C_weight.put("is_need_move","0"); + C_weight.put("is_need_manage","1"); + C_weight.put("is_tan","100"); + C_weight.put("is_rf_xl","1"); + C_weight.put("ivt_level","01"); + C_weight.put("is_active","1"); + C_weight.put("quality_scode","01"); + cw_list.add(C_weight); + total_sum.set(total_sum.get() + C); + } + 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 + //需配钨粉 + if(CT1>CT2){ + //只配库存明细时 + if(bomdlts_Cr3C2.size()==1){ + //假设钨粉重量为W + JSONObject bomdlt_Cr3C2 = bomdlts_Cr3C2.getJSONObject(0); + //获取碳含量 + JSONObject FactoryWarranty = bomdlts_plan_map.get(bomdlt_Cr3C2.getString("material_id")); + //该批次含碳比 + double X22 = FactoryWarranty.getDouble("is_tan"); + //该批次配粉重量 + double X22p = bomdlt_Cr3C2.getDouble("bom_ivt_qty"); + + // X1减=[产品碳平衡*X1-(X1)* X1碳含量]/(1-X1碳含量) + //解得钨粉重量 + double X22_jian = CT1_weight*(c_balance/100.0-X22/100.0) / (1-X22/100.0); + //更新碳化钨配粉重量 + double bom_ivt_qty = X22p-X22_jian; + if(bom_ivt_qty<=0){ + throw new BadRequestException("碳化钨为非正数,当前配粉无解!"); + } + bomdlt_Cr3C2.put("bom_ivt_qty",bom_ivt_qty); + bomdlts_plan_map.put(bomdlt_Cr3C2.getString("material_id"),bomdlt_Cr3C2); + //统计除钨以外其他总重 + AtomicReference total_sum = new AtomicReference<>(0.0); + + total_sum.set(total_sum.get() + bomdlt_Cr3C2.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_AUTOFORMULA02") + .addParam("material_id",bomdlt_Cr3C2.getString("material_id")) + .addParam("pcsn",bomdlt_Cr3C2.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 = bom_ivt_qty*value/100.0; + //累计各碳化钨中已含添加剂重量 + tjj_map_jo.put("finished_qty",finished_qty+finished); + yzj_map.put(tjj_material_id,tjj_map_jo); + } + }); + //判断已含添加剂与需配添加剂大小 + yzj_map.forEach((key,tjj_map_now)->{ + //需配添加剂重量 + double need_qty = NumberUtil.round(tjj_map_now.getDouble("need_qty"),3).doubleValue(); + //当前添加剂已配 + double finished_qty = NumberUtil.round(tjj_map_now.getDouble("finished_qty"),3).doubleValue(); + //已配小于需配 + if(finished_qty0){ + 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); + } + } + } + + bomdlts_plan_map.forEach((key,bomdlts_plan)->{ + bomdlts_plan.put("formula_qty",bomdlts_plan.getDouble("bom_ivt_qty")); + bomdlts_plan.put("is_rf_xl","1"); + xl_list.add(bomdlts_plan); + }); + ret.put("xl_list",xl_list); + ret.put("cxj_list",cxj_list); + ret.put("yzj_list",yzj_list); + ret.put("cw_list",cw_list); + return ret; + } + + public double getWCChange(String material_id,String pcsn){ + WQLObject PDM_BI_SuppWCChange = WQLObject.getWQLObject("PDM_BI_SuppWCChange"); // 工艺路线主表 + double wcchange = 0.0; + + //获取碳化钒 + JSONObject FactoryWarranty = WQL.getWO("QPF_INITFORMULA01") + .addParam("material_id",material_id) + .addParam("pcsn",pcsn) + .addParam("flag","9") + .process() + .uniqueResult(0); + if(FactoryWarranty!=null){ + String source_id = FactoryWarranty.getString("source_id"); + JSONObject jo = PDM_BI_SuppWCChange.query("material_id='"+material_id+"' and supp_id='"+source_id+"'").uniqueResult(0); + if(jo!=null){ + wcchange = jo.getDouble("change_qty"); + } + } + + return wcchange; + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/wql/QMD_PD_ACCEPTFORMULA01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/wql/QMD_PD_ACCEPTFORMULA01.wql index d9332670..10e16c9c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/wql/QMD_PD_ACCEPTFORMULA01.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/wql/QMD_PD_ACCEPTFORMULA01.wql @@ -23,7 +23,7 @@ 输入.end_time TYPEAS s_string 输入.material_id TYPEAS s_string 输入.inspection_id TYPEAS s_string - + 输入.formula_id TYPEAS s_string [临时表] --这边列出来的临时表就会在运行期动态创建 @@ -87,14 +87,14 @@ IF 输入.flag = "2" QUERY SELECT - AcceptMarkBOM.*, + AcceptFormulaDtl.*, mater.material_code, mater.material_name FROM - QL_TEST_AcceptMarkBOM AcceptMarkBOM - LEFT JOIN MD_ME_MaterialBase mater ON AcceptMarkBOM.material_id = mater.material_id + QL_TEST_AcceptFormulaDtl AcceptFormulaDtl + LEFT JOIN MD_ME_MaterialBase mater ON AcceptFormulaDtl.material_id = mater.material_id WHERE 1=1 - and AcceptMarkBOM.mark_id = 输入.mark_id + and AcceptFormulaDtl.formula_id = 输入.formula_id ENDSELECT ENDQUERY ENDIF @@ -154,10 +154,12 @@ SELECT FactoryWarrantyDtl.*, inspectionitempoint.inspection_item_code, - inspectionitempoint.inspection_item_name + inspectionitempoint.inspection_item_name, + FactoryWarrantyMst.manufactor FROM QL_TEST_FactoryWarrantyDtl FactoryWarrantyDtl LEFT JOIN ql_test_inspectionitempoint inspectionitempoint ON FactoryWarrantyDtl.inspection_item_id = inspectionitempoint.inspection_item_id + LEFT JOIN QL_TEST_FactoryWarrantyMst FactoryWarrantyMst ON FactoryWarrantyMst.inspection_id = FactoryWarrantyDtl.inspection_id WHERE 1 = 1 OPTION 输入.inspection_id <> "" diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/wql/QPF_AUTOFORMULA02.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/wql/QPF_AUTOFORMULA02.wql new file mode 100644 index 00000000..92921f43 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/wql/QPF_AUTOFORMULA02.wql @@ -0,0 +1,352 @@ +[交易说明] + 交易名: 工艺路线分页查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.quality_scode TYPEAS s_string + 输入.prior_level TYPEAS s_string + 输入.material_id TYPEAS s_string + 输入.mark_id TYPEAS s_string + 输入.dtlmaterial_id TYPEAS s_string + 输入.material_code TYPEAS s_string + 输入.is_need_manage TYPEAS s_string + 输入.formingtype_id TYPEAS s_string + 输入.item_material_id TYPEAS s_string + 输入.is_active TYPEAS s_string + 输入.workorder_id TYPEAS s_string + 输入.pcsn TYPEAS s_string + 输入.nots TYPEAS f_string + 输入.is_pure TYPEAS s_string + 输入.set_type TYPEAS s_string + 输入.set_material_id TYPEAS s_string + 输入.material_type_id TYPEAS f_string + + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + QUERY + SELECT + bomdtl.*, + mater.is_need_move, + MaterialBase.material_type_id, + classstandard.class_code, + MaterialBase.material_name, + MaterialBase.material_code, + FormingMaterial.formingtype_code + FROM + QL_TEST_AcceptMark bom + LEFT JOIN QL_TEST_AcceptMarkBOM bomdtl ON bom.mark_id = bomdtl.mark_id + LEFT JOIN MD_ME_StockMaterialExt mater ON mater.material_id = bomdtl.material_id + LEFT JOIN MD_ME_MaterialBase MaterialBase ON MaterialBase.material_id = bomdtl.material_id + LEFT JOIN md_pb_classstandard classstandard ON classstandard.class_id = MaterialBase.material_type_id + LEFT JOIN MD_PD_FormingMaterial FormingMaterial ON FormingMaterial.material_id = bomdtl.material_id + WHERE + 1 = 1 + AND bom.is_delete = '0' + OPTION 输入.mark_id <> "" + bom.mark_id = 输入.mark_id + ENDOPTION + OPTION 输入.nots <> "" + MaterialBase.material_type_id not in 输入.nots + ENDOPTION + ORDER BY bomdtl.seqno + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "2" + QUERY + SELECT + structivt.*, mater.material_type_id, + mater.material_code, + mater.material_name + FROM + st_ivt_structivt structivt + LEFT JOIN MD_ME_MaterialBase mater ON mater.material_id = structivt.material_id + WHERE + 1 = 1 + OPTION 输入.material_id <> "" + structivt.material_id = 输入.material_id + ENDOPTION + OPTION 输入.is_active <> "" + structivt.is_active = 输入.is_active + ENDOPTION + ORDER BY structivt.material_id,structivt.pcsn + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "22" + QUERY + SELECT + structivt.*, + mb.material_name, + mb.material_code, + mb.material_type_id, + stockmaterialext.is_need_move, + CASE + + WHEN FormulaDtl3.used__qty > 0 THEN + structivt.sum_qty - FormulaDtl3.used__qty ELSE structivt.sum_qty + END AS sum_ivt_qty + FROM + ( + SELECT + SUM( ivt.canuse_qty ) AS sum_qty, + ivt.qty_unit_id, + ivt.qty_unit_name, + ivt.material_id, + ivt.pcsn, + ivt.is_active, + ivt.ivt_level, + ivt.quality_scode + FROM + st_ivt_structivt ivt + GROUP BY + ivt.material_id, + ivt.pcsn, + ivt.is_active, + ivt.ivt_level, + ivt.quality_scode, + ivt.qty_unit_id, + ivt.qty_unit_name + ) structivt + LEFT JOIN md_me_materialbase mb ON mb.material_id = structivt.material_id + LEFT JOIN md_me_stockmaterialext stockmaterialext ON mb.material_id = stockmaterialext.material_id + LEFT JOIN ( + SELECT + SUM( FormulaDtl2.formula_qty - FormulaDtl2.put_qty ) AS used__qty, + FormulaDtl2.material_id, + FormulaDtl2.pcsn, + FormulaDtl2.is_active, + FormulaDtl2.ivt_level, + FormulaDtl2.quality_scode + FROM + PDM_BI_FormulaDtl FormulaDtl2 + LEFT JOIN PDM_BI_Formula Formula2 ON FormulaDtl2.formula_id = Formula2.formula_id + WHERE + 1 = 1 + AND FormulaDtl2.STATUS <> '99' + OPTION 输入.workorder_id <> "" + Formula2.workorder_id <> 输入.workorder_id + ENDOPTION + GROUP BY + FormulaDtl2.material_id, + FormulaDtl2.pcsn, + FormulaDtl2.is_active, + FormulaDtl2.ivt_level, + FormulaDtl2.quality_scode + ) FormulaDtl3 ON ( + FormulaDtl3.material_id = structivt.material_id + AND FormulaDtl3.pcsn = structivt.pcsn + AND FormulaDtl3.is_active = structivt.is_active + AND FormulaDtl3.ivt_level = structivt.ivt_level + AND FormulaDtl3.quality_scode = structivt.quality_scode + ) + WHERE + 1 = 1 + AND structivt.sum_qty > 0 + 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 + OPTION 输入.prior_level <> "" + structivt.ivt_level <= 输入.prior_level + ENDOPTION + OPTION 输入.is_pure <> "" + stockmaterialext.is_pure = 输入.is_pure + ENDOPTION + ORDER BY structivt.material_id,structivt.ivt_level desc,structivt.pcsn, structivt.sum_qty desc + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "3" + QUERY + SELECT + FactoryWarrantyDtl.* + FROM + QL_TEST_FactoryWarrantyMst FactoryWarrantyMst + LEFT JOIN QL_TEST_FactoryWarrantyDtl FactoryWarrantyDtl ON FactoryWarrantyDtl.inspection_id = FactoryWarrantyMst.inspection_id + LEFT JOIN ql_test_inspectionitempoint inspectionitempoint ON inspectionitempoint.inspection_item_id = FactoryWarrantyDtl.inspection_item_id + WHERE + 1 = 1 + AND inspectionitempoint.inspection_item_code = 'CJZB00004' + AND FactoryWarrantyMst.is_delete = '0' + AND FactoryWarrantyMst.bill_status = '99' + OPTION 输入.material_id <> "" + FactoryWarrantyMst.material_id = 输入.material_id + ENDOPTION + OPTION 输入.pcsn <> "" + FactoryWarrantyMst.pcsn = 输入.pcsn + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "33" + QUERY + SELECT + FactoryWarrantyDtl.* + FROM + QL_TEST_FactoryWarrantyMst FactoryWarrantyMst + LEFT JOIN QL_TEST_FactoryWarrantyDtl FactoryWarrantyDtl ON FactoryWarrantyDtl.inspection_id = FactoryWarrantyMst.inspection_id + LEFT JOIN ql_test_inspectionitempoint inspectionitempoint ON inspectionitempoint.inspection_item_id = FactoryWarrantyDtl.inspection_item_id + WHERE + 1 = 1 + AND FactoryWarrantyMst.is_delete = '0' + AND FactoryWarrantyMst.bill_status = '99' + OPTION 输入.dtlmaterial_id <> "" + inspectionitempoint.inspection_item_code = 输入.dtlmaterial_id + ENDOPTION + OPTION 输入.material_id <> "" + FactoryWarrantyMst.material_id = 输入.material_id + ENDOPTION + OPTION 输入.pcsn <> "" + FactoryWarrantyMst.pcsn = 输入.pcsn + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "4" + QUERY + SELECT + bomdtl.* + FROM + MD_PD_ProductBOM bom + LEFT JOIN md_pd_productbomdtl bomdtl ON bom.bom_id = bomdtl.bom_id + LEFT JOIN MD_PD_FormingMaterial FormingMaterial ON FormingMaterial.material_id = bomdtl.material_id + WHERE + 1 = 1 + AND bom.is_delete = '0' + AND bom.is_used = '1' + AND bomdtl.is_need_manage='0' + OPTION 输入.material_id <> "" + bom.material_id = 输入.material_id + ENDOPTION + OPTION 输入.formingtype_id <> "" + FormingMaterial.formingtype_id = 输入.formingtype_id + ENDOPTION + ORDER BY bomdtl.seqno + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "5" + QUERY + SELECT + FactoryWarrantyDtl.* + FROM + QL_TEST_FactoryWarrantyMst FactoryWarrantyMst + LEFT JOIN QL_TEST_FactoryWarrantyDtl FactoryWarrantyDtl ON FactoryWarrantyDtl.inspection_id = FactoryWarrantyMst.inspection_id + LEFT JOIN ql_test_inspectionitempoint inspectionitempoint ON inspectionitempoint.inspection_item_id = FactoryWarrantyDtl.inspection_item_id + WHERE + 1 = 1 + AND FactoryWarrantyMst.is_delete = '0' + AND FactoryWarrantyMst.bill_status = '99' + OPTION 输入.material_id <> "" + FactoryWarrantyMst.material_id = 输入.material_id + ENDOPTION + OPTION 输入.item_material_id <> "" + inspectionitempoint.material_uuid = 输入.item_material_id + ENDOPTION + OPTION 输入.pcsn <> "" + FactoryWarrantyMst.pcsn = 输入.pcsn + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "6" + QUERY + SELECT + FactoryWarrantyDtl.* , + materialbase.material_name + FROM + QL_TEST_FactoryWarrantyMst FactoryWarrantyMst + LEFT JOIN QL_TEST_FactoryWarrantyDtl FactoryWarrantyDtl ON FactoryWarrantyDtl.inspection_id = FactoryWarrantyMst.inspection_id + LEFT JOIN ql_test_inspectionitempoint inspectionitempoint ON inspectionitempoint.inspection_item_id = FactoryWarrantyDtl.inspection_item_id + LEFT JOIN md_me_materialbase materialbase ON materialbase.material_id = inspectionitempoint.material_uuid + WHERE + 1 = 1 + AND FactoryWarrantyMst.is_delete = '0' + AND FactoryWarrantyMst.bill_status = '99' + AND FactoryWarrantyDtl.VALUE> 0 + OPTION 输入.material_id <> "" + FactoryWarrantyMst.material_id = 输入.material_id + ENDOPTION + OPTION 输入.material_type_id <> "" + materialbase.material_type_id in 输入.material_type_id + ENDOPTION + OPTION 输入.pcsn <> "" + FactoryWarrantyMst.pcsn = 输入.pcsn + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "7" + QUERY + SELECT + ProductMaterialSet.*, + classstandard.class_code + FROM + MD_PD_ProductMaterialSet ProductMaterialSet + left join md_me_materialbase materialbase on materialbase.material_id = ProductMaterialSet.set_material_id + LEFT JOIN md_pb_classstandard classstandard ON classstandard.class_id = materialbase.material_type_id + LEFT JOIN md_me_producmaterialext producmaterialext ON producmaterialext.material_id = materialbase.material_id + WHERE + 1 = 1 + and producmaterialext.net_rate>0 + OPTION 输入.material_id <> "" + ProductMaterialSet.material_id = 输入.material_id + ENDOPTION + OPTION 输入.set_material_id <> "" + ProductMaterialSet.set_material_id = 输入.set_material_id + ENDOPTION + OPTION 输入.set_type <> "" + ProductMaterialSet.set_type = 输入.set_type + ENDOPTION + order by classstandard.class_code asc,ProductMaterialSet.set_material_id + ENDSELECT + ENDQUERY + ENDIF + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/statistics/service/impl/RawUatWcQueryServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/statistics/service/impl/RawUatWcQueryServiceImpl.java index 6e264d2e..abb5ada3 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/statistics/service/impl/RawUatWcQueryServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/statistics/service/impl/RawUatWcQueryServiceImpl.java @@ -90,11 +90,11 @@ public class RawUatWcQueryServiceImpl implements RawUatWcQueryService { String inspection_item_id = jsonItem.getString("inspection_item_id"); double value = jsonItem.getDoubleValue("value"); if (value > 0 && value < 1){ - jsonResuft.put(inspection_item_id,"0"+NumberUtil.decimalFormat("#.00", value)); + jsonResuft.put(inspection_item_id,"0"+NumberUtil.decimalFormat("#.0000", value)); } else if (value == 0){ - jsonResuft.put(inspection_item_id,"0.00"); + jsonResuft.put(inspection_item_id,"0.0000"); } else { - jsonResuft.put(inspection_item_id,NumberUtil.decimalFormat("#.00", value)); + jsonResuft.put(inspection_item_id,NumberUtil.decimalFormat("#.0000", value)); } } // 根据物料批次查找理化单对应的项点 @@ -104,11 +104,11 @@ public class RawUatWcQueryServiceImpl implements RawUatWcQueryService { String inspection_item_id = jsonItem.getString("inspection_item_id"); double value = jsonItem.getDoubleValue("value"); if (value > 0 && value < 1) { - jsonResuft.put(inspection_item_id,"0"+NumberUtil.decimalFormat("#.00", value)); + jsonResuft.put(inspection_item_id,"0"+NumberUtil.decimalFormat("#.0000", value)); } else if (value == 0){ - jsonResuft.put(inspection_item_id,"0.00"); + jsonResuft.put(inspection_item_id,"0.0000"); } else { - jsonResuft.put(inspection_item_id,NumberUtil.decimalFormat("#.00", value)); + jsonResuft.put(inspection_item_id,NumberUtil.decimalFormat("#.0000", value)); } } jsonResuftArr.add(jsonResuft); diff --git a/mes/qd/src/api/wms/pf/acceptformula.js b/mes/qd/src/api/wms/pf/acceptformula.js index 999bc3b1..96775477 100644 --- a/mes/qd/src/api/wms/pf/acceptformula.js +++ b/mes/qd/src/api/wms/pf/acceptformula.js @@ -8,11 +8,11 @@ export function add(data) { }) } -export function del(ids) { +export function mydel(data) { return request({ - url: 'api/acceptformula/', - method: 'delete', - data: ids + url: 'api/acceptformula/mydel', + method: 'post', + data }) } @@ -23,7 +23,21 @@ export function edit(data) { data }) } +export function create(data) { + return request({ + url: 'api/acceptformula/create', + method: 'post', + data + }) +} +export function update(data) { + return request({ + url: 'api/acceptformula/update', + method: 'post', + data + }) +} export function getDtl(params) { return request({ url: 'api/acceptformula/getDtl', @@ -70,4 +84,18 @@ export function createPcsn() { method: 'get' }) } -export default { add, edit, del, getDtl, getBoms, getTHWs, getPCSNs, getPCSN, getBom, createPcsn } +export function autoCalculation(params) { + return request({ + url: 'api/acceptformula/autoCalculation', + method: 'get', + params + }) +} +export function getPCSNid(params) { + return request({ + url: 'api/acceptformula/getPCSNid', + method: 'get', + params + }) +} +export default { create, update, mydel, getDtl, getBoms, getTHWs, getPCSNs, getPCSN, getBom, createPcsn, autoCalculation, getPCSNid } diff --git a/mes/qd/src/views/wms/pf/acceptformula/AddDialog.vue b/mes/qd/src/views/wms/pf/acceptformula/AddDialog.vue index 5a530a72..3b0a14ba 100644 --- a/mes/qd/src/views/wms/pf/acceptformula/AddDialog.vue +++ b/mes/qd/src/views/wms/pf/acceptformula/AddDialog.vue @@ -1,20 +1,22 @@ @@ -293,6 +292,7 @@ import Date from '@/utils/datetime' const defaultForm = { formula_code: '', material_id: '', + manufactor: '', inspection_id: '', CJZB00001: 0, CJZB00002: 0, @@ -318,6 +318,7 @@ const defaultForm = { import crudacceptformula from '@/api/wms/pf/acceptformula' import CRUD, { form, crud } from '@crud/crud' +import { mapGetters } from 'vuex' export default { name: 'AddDialog', @@ -327,6 +328,9 @@ export default { dialogShow: { type: Boolean, default: false + }, + rowmst: { + type: Object } }, data() { @@ -338,6 +342,8 @@ export default { boms: [], THWs: [], PCSNs: [], + tableData: [], + fullscreenLoading: false, rules: { material_id: [ { required: true, message: '物料不能为空', trigger: 'blur' } @@ -362,8 +368,18 @@ export default { handler(newValue, oldValue) { this.dialogVisible = newValue } + }, + rowmst: { + handler(newValue) { + this.form = newValue + } } }, + computed: { + ...mapGetters({ + user: 'user' + }) + }, created() { crudacceptformula.getBoms().then(res => { this.boms = res @@ -371,9 +387,18 @@ export default { crudacceptformula.getTHWs().then(res => { this.THWs = res }) + this.tableData = [] }, methods: { - [CRUD.HOOK.beforeSubmit]() { + mysubmitCU() { + if (!this.form.material_id) { + this.crud.notify('物料不能为空!', CRUD.NOTIFICATION_TYPE.INFO) + return false + } + if (!this.form.inspection_id) { + this.crud.notify('批号不能为空!', CRUD.NOTIFICATION_TYPE.INFO) + return false + } if (!this.form.mark_id) { this.crud.notify('验收牌号不能为空!', CRUD.NOTIFICATION_TYPE.INFO) return false @@ -383,19 +408,71 @@ export default { return false } if (this.form.accept_qty <= 0) { - this.crud.notify('试验重量不能为0!', CRUD.NOTIFICATION_TYPE.INFO) + this.crud.notify('试验重量不能为0或空!', CRUD.NOTIFICATION_TYPE.INFO) return false } - if (this.form.tableData.length === 0) { + if (this.tableData.length === 0) { this.crud.notify('开单明细不能为空', CRUD.NOTIFICATION_TYPE.INFO) return false } + for (let i = 0; i < this.tableData.length; i++) { + if (!this.tableData[i].dtl_pcsn) { + this.crud.notify('批次不能为空,明细序号为' + (i + 1) + '请检查!') + return false + } + if (this.tableData[i].formula_qty <= 0) { + this.crud.notify('明细重量不能为0或空,明细序号为' + (i + 1) + '请检查!') + return false + } + } + this.form.tableData = this.tableData + + if (!this.form.formula_id) { + crudacceptformula.create(this.form).then(res => { + this.$refs['form'].resetFields() + this.tableData = [] + this.$emit('AddChanged') + this.$emit('update:dialogShow', false) + }) + } else { + crudacceptformula.update(this.form).then(res => { + this.$refs['form'].resetFields() + this.tableData = [] + this.$emit('AddChanged') + this.$emit('update:dialogShow', false) + }) + } }, - [CRUD.HOOK.afterToEdit]() { - // 编辑之后获取明细 - crudacceptformula.getDtl({ 'mark_id': this.form.mark_id }).then(res => { - this.form.tableData = res - }) + open() { + if (this.form.formula_id) { + // 编辑之后获取明细 + crudacceptformula.getDtl({ 'formula_id': this.form.formula_id }).then(res => { + this.tableData = res + }) + crudacceptformula.getPCSNs({ 'material_id': this.form.material_id }).then(res => { + this.PCSNs = res + }) + crudacceptformula.getPCSNid(this.form).then(res => { + this.form.inspection_id = res.inspection_id + this.form.CJZB00007 = res.CJZB00007 + this.form.CJZB00001 = res.CJZB00001 + this.form.CJZB00002 = res.CJZB00002 + this.form.CJZB00006 = res.CJZB00006 + this.form.CJZB00021 = res.CJZB00021 + this.form.CJZB00020 = res.CJZB00020 + this.form.CJZB00004 = res.CJZB00004 + this.form.manufactor = res.manufactor + }) + crudacceptformula.getBom({ 'mark_id': this.form.mark_id }).then(res => { + this.form.c_balance = res.c_balance + this.form.ball_rate = res.ball_rate + this.form.liquid_rate = res.liquid_rate + this.form.ball_time = res.ball_time + this.form.ball_speed = res.ball_speed + this.form.ball_qty = this.form.ball_rate * this.form.accept_qty / 100.0 + this.form.liquid_qty = this.form.liquid_rate * this.form.accept_qty / 100.0 + }) + } }, storChange(row) { crudacceptformula.getPCSNs({ 'material_id': row }).then(res => { @@ -419,6 +496,7 @@ export default { this.form.CJZB00021 = res.CJZB00021 this.form.CJZB00020 = res.CJZB00020 this.form.CJZB00004 = res.CJZB00004 + this.form.manufactor = res.manufactor }) }, storChange3(row) { @@ -445,30 +523,25 @@ export default { }) }, close() { + this.$refs['form'].resetFields() + this.tableData = [] + this.$emit('AddChanged') this.$emit('update:dialogShow', false) }, - handleEdit(index, row) { - // 判断是否可以关闭编辑状态 - if (!row.edit) { - if (parseFloat(row.standard_rate) <= 0) { - this.crud.notify('标准值必须大于0!', CRUD.NOTIFICATION_TYPE.INFO) - return false - } - if (!row.material_code) { - this.crud.notify('物料不能为空!', CRUD.NOTIFICATION_TYPE.INFO) - return false - } - } - row.edit = !row.edit - this.form.tableData.splice(index, 1, row) // 通过splice 替换数据 触发视图更新 - }, - insertdtl() { - this.form.tableData.push({ material_id: '', material_code: '', material_name: '', standard_rate: '0', seqno: '', edit: false }) - }, createPcsn() { crudacceptformula.createPcsn().then(res => { this.form.accept_pcsn = res.accept_pcsn }) + }, + autoCalculation() { + this.fullscreenLoading = true + crudacceptformula.autoCalculation(this.form).then(res => { + this.crud.notify('自动计算成功!') + this.tableData = res + this.fullscreenLoading = false + }).catch(() => { + this.fullscreenLoading = false + }) } } } diff --git a/mes/qd/src/views/wms/pf/acceptformula/AddDialog2.vue b/mes/qd/src/views/wms/pf/acceptformula/AddDialog2.vue deleted file mode 100644 index fce30f97..00000000 --- a/mes/qd/src/views/wms/pf/acceptformula/AddDialog2.vue +++ /dev/null @@ -1,343 +0,0 @@ - - - - - - - diff --git a/mes/qd/src/views/wms/pf/acceptformula/ViewDialog.vue b/mes/qd/src/views/wms/pf/acceptformula/ViewDialog.vue index 57ed7cb3..9187f887 100644 --- a/mes/qd/src/views/wms/pf/acceptformula/ViewDialog.vue +++ b/mes/qd/src/views/wms/pf/acceptformula/ViewDialog.vue @@ -1,16 +1,164 @@