diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/WorkOrderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/WorkOrderServiceImpl.java index 8697fd67..9a83ad3c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/WorkOrderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/WorkOrderServiceImpl.java @@ -227,6 +227,7 @@ public class WorkOrderServiceImpl implements WorkOrdereService { String nickName = SecurityUtils.getNickName(); String now = DateUtil.now(); WQLObject PDM_BI_WorkOrder = WQLObject.getWQLObject("PDM_BI_WorkOrder"); + WQLObject PDM_BI_Formula = WQLObject.getWQLObject("PDM_BI_Formula"); WQLObject PDM_BI_WorkTask = WQLObject.getWQLObject("PDM_BI_WorkTask"); WQLObject PDM_BI_WorkTaskJob = WQLObject.getWQLObject("PDM_BI_WorkTaskJob"); WQLObject PDM_BI_ProduceProcessRoute = WQLObject.getWQLObject("pdm_bi_productprocessroute"); @@ -256,6 +257,11 @@ public class WorkOrderServiceImpl implements WorkOrdereService { if (jsonMst == null) { throw new BadRequestException(jo.getString("workorder_code") + "当前工令记录状态异常,操作失败!"); } + + JSONObject Formula = PDM_BI_Formula.query("workorder_id ='" + jo.getString("workorder_id") + "' and is_delete = '0' and is_audit='0' ").uniqueResult(0); + if (Formula != null) { + throw new BadRequestException(jo.getString("workorder_code") + "工令对应配方未审核,操作失败!"); + } String nowStatus = jsonMst.getString("status"); JSONObject Route = PDM_BI_ProduceProcessRoute.query("is_delete='0' and productprocess_status='20' and material_id='" + jsonMst.getString("material_id") + "'").uniqueResult(0); if (Route == null) { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/rest/FormulaController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/rest/FormulaController.java index 24ccefb5..5077ca2f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/rest/FormulaController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/rest/FormulaController.java @@ -58,6 +58,14 @@ public class FormulaController { public ResponseEntity query(@RequestParam Map whereJson, Pageable page){ return new ResponseEntity<>(formulaService.queryAll(whereJson,page),HttpStatus.OK); } + @PostMapping("/audit") + @Log("保存") + @ApiOperation("保存") + public ResponseEntity audit(@RequestBody JSONObject whereJson){ + formulaService.audit(whereJson); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + @PostMapping("/cancel") @Log("保存") @ApiOperation("保存") diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/FormulaService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/FormulaService.java index b4264122..3b135dc6 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/FormulaService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/FormulaService.java @@ -25,6 +25,11 @@ public interface FormulaService { * @param whereJson / */ void cancel(JSONObject whereJson); + /** + * 编辑 + * @param whereJson / + */ + void audit(JSONObject whereJson); /** * 提交 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 706d4017..77a16b97 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 @@ -710,58 +710,64 @@ public class AutoformulaServiceImpl implements AutoformulaService { cw_list.add(C_weight); //更新碳化钨配粉重量 double bom_ivt_qty = X22p-C; - bomdlt_Cr3C2_X22p.put("bom_ivt_qty",bom_ivt_qty); - bomdlts_plan_map.put(bomdlt_Cr3C2_X22p.getString("stockrecord_id"),bomdlt_Cr3C2_X22p); - if(bom_ivt_qty<=0){ - bomdlts_plan_map.remove(bomdlt_Cr3C2_X22p.getString("stockrecord_id")); - } - //循环碳化钨 - for(int i=0;i{ - //获取添加剂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 = bom_ivt_qty_jo*value/100.0; - //累计各碳化钨中已含添加剂重量 - tjj_map_jo.put("finished_qty",finished_qty+finished); - yzj_map.put(tjj_material_id,tjj_map_jo); + if(bom_ivt_qty<0){ + flag = false; + }else{ + bomdlt_Cr3C2_X22p.put("bom_ivt_qty",bom_ivt_qty); + bomdlts_plan_map.put(bomdlt_Cr3C2_X22p.getString("stockrecord_id"),bomdlt_Cr3C2_X22p); + if(bom_ivt_qty<=0){ + bomdlts_plan_map.remove(bomdlt_Cr3C2_X22p.getString("stockrecord_id")); + } + //循环碳化钨 + for(int i=0;i{ + //获取添加剂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 = bom_ivt_qty_jo*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_qty{ - //需配添加剂重量 - 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_qty{ - //获取添加剂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 = bom_ivt_qty_jo*value/100.0; - //累计各碳化钨中已含添加剂重量 - tjj_map_jo.put("finished_qty",finished_qty+finished); - yzj_map.put(tjj_material_id,tjj_map_jo); + if(bom_ivt_qty<0){ + flag = false; + }else{ + bomdlt_Cr3C2_X22p.put("bom_ivt_qty",bom_ivt_qty); + bomdlts_plan_map.put(bomdlt_Cr3C2_X22p.getString("stockrecord_id"),bomdlt_Cr3C2_X22p); + if(bom_ivt_qty<=0){ + bomdlts_plan_map.remove(bomdlt_Cr3C2_X22p.getString("stockrecord_id")); + } + //循环碳化钨 + for(int i=0;i{ + //获取添加剂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 = bom_ivt_qty_jo*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_qty{ - //需配添加剂重量 - 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_qty{ - //获取添加剂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 is_tan = tjj_finished.getDouble("value"); - //当前含量重量 - double finished = bom_ivt_qty_jo*is_tan/100.0; - //累计各碳化钨中已含添加剂重量 - tjj_map_jo.put("finished_qty",finished_qty+finished); - tjj_map.put(tjj_material_id,tjj_map_jo); + if(bom_ivt_qty<0){ + flag = false; + }else{ + bomdlt_Cr3C2_X22p.put("bom_ivt_qty",bom_ivt_qty); + bomdlts_plan_map.put(bomdlt_Cr3C2_X22p.getString("stockrecord_id"),bomdlt_Cr3C2_X22p); + if(bom_ivt_qty<=0){ + bomdlts_plan_map.remove(bomdlt_Cr3C2_X22p.getString("stockrecord_id")); + } + //循环碳化钨 + for(int i=0;i{ + //获取添加剂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 is_tan = tjj_finished.getDouble("value"); + //当前含量重量 + double finished = bom_ivt_qty_jo*is_tan/100.0; + //累计各碳化钨中已含添加剂重量 + tjj_map_jo.put("finished_qty",finished_qty+finished); + tjj_map.put(tjj_material_id,tjj_map_jo); + } + }); + } + //判断已含添加剂与需配添加剂大小 + tjj_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_qty{ - //需配添加剂重量 - 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_qty{ - //获取添加剂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 is_tan = tjj_finished.getDouble("value"); - //当前含量重量 - double finished = bom_ivt_qty_jo*is_tan/100.0; - //累计各碳化钨中已含添加剂重量 - tjj_map_jo.put("finished_qty",finished_qty+finished); - tjj_map.put(tjj_material_id,tjj_map_jo); + if(bom_ivt_qty<0){ + flag = false; + }else{ + bomdlt_Cr3C2_X22p.put("bom_ivt_qty",bom_ivt_qty); + bomdlts_plan_map.put(bomdlt_Cr3C2_X22p.getString("stockrecord_id"),bomdlt_Cr3C2_X22p); + if(bom_ivt_qty<=0){ + bomdlts_plan_map.remove(bomdlt_Cr3C2_X22p.getString("stockrecord_id")); + } + //循环碳化钨 + for(int i=0;i{ + //获取添加剂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 is_tan = tjj_finished.getDouble("value"); + //当前含量重量 + double finished = bom_ivt_qty_jo*is_tan/100.0; + //累计各碳化钨中已含添加剂重量 + tjj_map_jo.put("finished_qty",finished_qty+finished); + tjj_map.put(tjj_material_id,tjj_map_jo); + } + }); + } + //判断已含添加剂与需配添加剂大小 + tjj_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_qty{ - //需配添加剂重量 - 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_qty map = new HashMap<>(); map.put("flag", "1"); map.put("device_id", MapUtil.getStr(whereJson, "device_id")); @@ -70,6 +71,7 @@ public class FlourworkServiceImpl implements FlourworkService { } if (StrUtil.equals(is_all, "0")) map.put("status", "99"); if (ObjectUtil.isNotEmpty(pcsn)) map.put("pcsn", "%"+pcsn+"%"); + if (ObjectUtil.isNotEmpty(formula_code)) map.put("formula_code", "%"+formula_code+"%"); JSONObject json = WQL.getWO("QPDM_BI_FORMULA01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "fMst.status,task.start_time,fMst.bucket_type ASC"); return json; } @@ -383,127 +385,137 @@ public class FlourworkServiceImpl implements FlourworkService { String formula_code = whereJson.getString("formula_code"); String device_id = whereJson.getString("device_id"); - WQLObject dtlTab = WQLObject.getWQLObject("PDM_BI_FormulaDtl"); - WQLObject mstTab = WQLObject.getWQLObject("PDM_BI_Formula"); + WQLObject dtlTab = WQLObject.getWQLObject("PDM_BI_FormulaDtl"); // 配方明细表 + WQLObject mstTab = WQLObject.getWQLObject("PDM_BI_Formula"); // 配方主表 + WQLObject workTab = WQLObject.getWQLObject("PDM_BI_WorkTask"); // 工序任务表 - HashMap param = new HashMap<>(); - param.put("flag", "8"); - param.put("formula_code", formula_code); - param.put("device_id", device_id); - JSONArray mstArr = WQL.getWO("QPDM_BI_FORMULA01").addParamMap(param).process().getResultJSONArray(0); - if (ObjectUtil.isNotEmpty(mstArr)) { - throw new BadRequestException("此配粉工位有配方正在作业"); - } - - /* - * 下发电气: 配方编号,当前配粉物料编码、物料重量、配粉槽重量、小秤误差值、中秤误差值、大秤误差值 - */ JSONObject jsonDtl = dtlTab.query("formuladtl_id = '" + formuladtl_id + "'").uniqueResult(0); // 查询配粉槽重量 JSONObject jsonMst = mstTab.query("formula_id ='" + jsonDtl.getString("formula_id") + "'").uniqueResult(0); - String storagevehicle_id = jsonMst.getString("storagevehicle_id"); - if (ObjectUtil.isEmpty(storagevehicle_id)) throw new BadRequestException("此配方没有配粉槽"); - HashMap map = new HashMap<>(); - map.put("flag", "8"); - map.put("storagevehicle_id", storagevehicle_id); - JSONObject jsonIvt = WQL.getWO("QPDM_BI_FORMULA02").addParamMap(map).process().uniqueResult(0); + // 校验配方状态为30生产中 或者 配方状态为20提交并且工序任务状态为30开始生产 + String statusMst = jsonMst.getString("status"); + JSONObject jsonWork = workTab.query("workorder_id = '" + jsonMst.getString("workorder_id") + "' and workprocedure_code = 'GX001' and status = '30'").uniqueResult(0); + if (StrUtil.equals(statusMst, "30") || (StrUtil.equals(statusMst, "20") && ObjectUtil.isNotEmpty(jsonWork))) { + HashMap param = new HashMap<>(); + param.put("flag", "8"); + param.put("formula_code", formula_code); + param.put("device_id", device_id); + JSONArray mstArr = WQL.getWO("QPDM_BI_FORMULA01").addParamMap(param).process().getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(mstArr)) { + throw new BadRequestException("此配粉工位有配方正在作业"); + } - // 准备下发的参数 - JSONArray array = new JSONArray(); - // 配方编码 - JSONObject data1 = new JSONObject(); - data1.put("device_code", device_code); - data1.put("code", "to_formula_code"); - data1.put("value", jsonDtl.getString("formula_code")); - array.add(data1); - // 当前配粉物料编码 - JSONObject data2 = new JSONObject(); - data2.put("device_code", device_code); - data2.put("code", "to_material_code"); - data2.put("value", data.getString("material_code")); - array.add(data2); - // 物料重量 - JSONObject data3 = new JSONObject(); - data3.put("device_code", device_code); - data3.put("code", "to_formula_qty"); - data3.put("value", jsonDtl.getString("formula_qty")); - array.add(data3); - // 配粉槽重量 - JSONObject data4 = new JSONObject(); - data4.put("device_code", device_code); - data4.put("code", "to_masterbucket_qty"); - data4.put("value", jsonMst.getString("masterbucket_qty")); - array.add(data4); - // 配方明细id - JSONObject data8 = new JSONObject(); - data8.put("device_code", device_code); - data8.put("code", "to_formuladtl_id"); - data8.put("value", jsonDtl.getString("formuladtl_id")); - array.add(data8); + /* + * 下发电气: 配方编号,当前配粉物料编码、物料重量、配粉槽重量、小秤误差值、中秤误差值、大秤误差值 + */ + String storagevehicle_id = jsonMst.getString("storagevehicle_id"); + if (ObjectUtil.isEmpty(storagevehicle_id)) throw new BadRequestException("此配方没有配粉槽"); + HashMap map = new HashMap<>(); + map.put("flag", "8"); + map.put("storagevehicle_id", storagevehicle_id); + JSONObject jsonIvt = WQL.getWO("QPDM_BI_FORMULA02").addParamMap(map).process().uniqueResult(0); - // 小称误差值 - JSONObject data5 = new JSONObject(); - data5.put("device_code", device_code); - data5.put("code", "to_small_scale_error"); - // 中称误差值 - JSONObject data6 = new JSONObject(); - data6.put("device_code", device_code); - data6.put("code", "to_middle_scale_error"); - // 大称误差值 - JSONObject data7 = new JSONObject(); - data7.put("device_code", device_code); - data7.put("code", "to_big_scale_error"); + // 准备下发的参数 + JSONArray array = new JSONArray(); + // 配方编码 + JSONObject data1 = new JSONObject(); + data1.put("device_code", device_code); + data1.put("code", "to_formula_code"); + data1.put("value", jsonDtl.getString("formula_code")); + array.add(data1); + // 当前配粉物料编码 + JSONObject data2 = new JSONObject(); + data2.put("device_code", device_code); + data2.put("code", "to_material_code"); + data2.put("value", data.getString("material_code")); + array.add(data2); + // 物料重量 + JSONObject data3 = new JSONObject(); + data3.put("device_code", device_code); + data3.put("code", "to_formula_qty"); + data3.put("value", jsonDtl.getString("formula_qty")); + array.add(data3); + // 配粉槽重量 + JSONObject data4 = new JSONObject(); + data4.put("device_code", device_code); + data4.put("code", "to_masterbucket_qty"); + data4.put("value", jsonMst.getString("masterbucket_qty")); + array.add(data4); + // 配方明细id + JSONObject data8 = new JSONObject(); + data8.put("device_code", device_code); + data8.put("code", "to_formuladtl_id"); + data8.put("value", jsonDtl.getString("formuladtl_id")); + array.add(data8); - switch (device_code) { - case "PFW001": - data5.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("SMALL_BALANCE1").getValue()); - data6.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MIDDLE_BALANCE1").getValue()); - data7.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("BIG_BALANCE1").getValue()); - break; - case "PFW002": - data5.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("SMALL_BALANCE2").getValue()); - data6.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MIDDLE_BALANCE2").getValue()); - data7.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("BIG_BALANCE2").getValue()); - break; - case "PFW003": - data5.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("SMALL_BALANCE3").getValue()); - data6.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MIDDLE_BALANCE3").getValue()); - data7.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("BIG_BALANCE3").getValue()); - break; - } - array.add(data5); - array.add(data6); - array.add(data7); + // 小称误差值 + JSONObject data5 = new JSONObject(); + data5.put("device_code", device_code); + data5.put("code", "to_small_scale_error"); + // 中称误差值 + JSONObject data6 = new JSONObject(); + data6.put("device_code", device_code); + data6.put("code", "to_middle_scale_error"); + // 大称误差值 + JSONObject data7 = new JSONObject(); + data7.put("device_code", device_code); + data7.put("code", "to_big_scale_error"); - // 调用电气接口 下发电气 - Map result = wmsToAcsService.action(array); - String status = MapUtil.getStr(result, "status"); - if (!StrUtil.equals(status, "200")) { - String message = MapUtil.getStr(result, "message"); - throw new BadRequestException("下发电气失败:" + message); + switch (device_code) { + case "PFW001": + data5.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("SMALL_BALANCE1").getValue()); + data6.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MIDDLE_BALANCE1").getValue()); + data7.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("BIG_BALANCE1").getValue()); + break; + case "PFW002": + data5.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("SMALL_BALANCE2").getValue()); + data6.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MIDDLE_BALANCE2").getValue()); + data7.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("BIG_BALANCE2").getValue()); + break; + case "PFW003": + data5.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("SMALL_BALANCE3").getValue()); + data6.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MIDDLE_BALANCE3").getValue()); + data7.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("BIG_BALANCE3").getValue()); + break; + } + array.add(data5); + array.add(data6); + array.add(data7); + + // 调用电气接口 下发电气 + Map result = wmsToAcsService.action(array); + String status = MapUtil.getStr(result, "status"); + if (!StrUtil.equals(status, "200")) { + String message = MapUtil.getStr(result, "message"); + throw new BadRequestException("下发电气失败:" + message); + } + + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + String now = DateUtil.now(); + + // 更新主表开始时间 和状态为执行中 + String start_time = jsonMst.getString("start_time"); + if (ObjectUtil.isEmpty(start_time)) { + jsonMst.put("start_id", currentUserId); + jsonMst.put("start_name", nickName); + jsonMst.put("start_time", now); + } + if (!StrUtil.equals(jsonMst.getString("status"), "30")) { + jsonMst.put("status", "30"); + } + mstTab.update(jsonMst); + // 更新明细状态为开始作业 + jsonDtl.put("status", "20"); + jsonDtl.put("start_id", currentUserId); + jsonDtl.put("start_name", nickName); + jsonDtl.put("start_time", now); + dtlTab.update(jsonDtl); + } else { + throw new BadRequestException("配方状态不为生产中或者工序任务不为生产中"); } - Long currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getNickName(); - String now = DateUtil.now(); - // 更新主表开始时间 和状态为执行中 - String start_time = jsonMst.getString("start_time"); - if (ObjectUtil.isEmpty(start_time)) { - jsonMst.put("start_id", currentUserId); - jsonMst.put("start_name", nickName); - jsonMst.put("start_time", now); - } - if (!StrUtil.equals(jsonMst.getString("status"), "30")) { - jsonMst.put("status", "30"); - } - mstTab.update(jsonMst); - // 更新明细状态为开始作业 - jsonDtl.put("status", "20"); - jsonDtl.put("start_id", currentUserId); - jsonDtl.put("start_name", nickName); - jsonDtl.put("start_time", now); - dtlTab.update(jsonDtl); } @Override @@ -900,87 +912,96 @@ public class FlourworkServiceImpl implements FlourworkService { WQLObject dtlTab = WQLObject.getWQLObject("PDM_BI_FormulaDtl"); WQLObject mstTab = WQLObject.getWQLObject("PDM_BI_Formula"); + WQLObject workTab = WQLObject.getWQLObject("PDM_BI_WorkTask"); // 工序任务表 - /* - * 下发电气: 配方编号,当前配粉物料编码、物料重量、配粉槽重量、小秤误差值、中秤误差值、大秤误差值 - */ JSONObject jsonDtl = dtlTab.query("formuladtl_id = '" + formuladtl_id + "'").uniqueResult(0); // 查询配粉槽重量 JSONObject jsonMst = mstTab.query("formula_id ='" + jsonDtl.getString("formula_id") + "'").uniqueResult(0); - // 准备下发的参数 - JSONArray array = new JSONArray(); - // 配方编码 - JSONObject data1 = new JSONObject(); - data1.put("device_code", device_code); - data1.put("code", "to_formula_code"); - data1.put("value", jsonDtl.getString("formula_code")); - array.add(data1); - // 当前配粉物料编码 - JSONObject data2 = new JSONObject(); - data2.put("device_code", device_code); - data2.put("code", "to_material_code"); - data2.put("value", data.getString("material_code")); - array.add(data2); - // 物料重量 - JSONObject data3 = new JSONObject(); - data3.put("device_code", device_code); - data3.put("code", "to_formula_qty"); - data3.put("value", jsonDtl.getString("formula_qty")); - array.add(data3); - // 配粉槽重量 - JSONObject data4 = new JSONObject(); - data4.put("device_code", device_code); - data4.put("code", "to_masterbucket_qty"); - data4.put("value", jsonMst.getString("masterbucket_qty")); - array.add(data4); - // 配方明细id - JSONObject data8 = new JSONObject(); - data8.put("device_code", device_code); - data8.put("code", "to_formuladtl_id"); - data8.put("value", jsonDtl.getString("formuladtl_id")); - array.add(data8); + String statusMst = jsonMst.getString("status"); + JSONObject jsonWork = workTab.query("workorder_id = '" + jsonMst.getString("workorder_id") + "' and workprocedure_code = 'GX001' and status = '30'").uniqueResult(0); + if (StrUtil.equals(statusMst, "30") || (StrUtil.equals(statusMst, "20") && ObjectUtil.isNotEmpty(jsonWork))) { + /* + * 下发电气: 配方编号,当前配粉物料编码、物料重量、配粉槽重量、小秤误差值、中秤误差值、大秤误差值 + */ + // 准备下发的参数 + JSONArray array = new JSONArray(); + // 配方编码 + JSONObject data1 = new JSONObject(); + data1.put("device_code", device_code); + data1.put("code", "to_formula_code"); + data1.put("value", jsonDtl.getString("formula_code")); + array.add(data1); + // 当前配粉物料编码 + JSONObject data2 = new JSONObject(); + data2.put("device_code", device_code); + data2.put("code", "to_material_code"); + data2.put("value", data.getString("material_code")); + array.add(data2); + // 物料重量 + JSONObject data3 = new JSONObject(); + data3.put("device_code", device_code); + data3.put("code", "to_formula_qty"); + data3.put("value", jsonDtl.getString("formula_qty")); + array.add(data3); + // 配粉槽重量 + JSONObject data4 = new JSONObject(); + data4.put("device_code", device_code); + data4.put("code", "to_masterbucket_qty"); + data4.put("value", jsonMst.getString("masterbucket_qty")); + array.add(data4); + // 配方明细id + JSONObject data8 = new JSONObject(); + data8.put("device_code", device_code); + data8.put("code", "to_formuladtl_id"); + data8.put("value", jsonDtl.getString("formuladtl_id")); + array.add(data8); - // 小称误差值 - JSONObject data5 = new JSONObject(); - data5.put("device_code", device_code); - data5.put("code", "to_small_scale_error"); - // 中称误差值 - JSONObject data6 = new JSONObject(); - data6.put("device_code", device_code); - data6.put("code", "to_middle_scale_error"); - // 大称误差值 - JSONObject data7 = new JSONObject(); - data7.put("device_code", device_code); - data7.put("code", "to_big_scale_error"); + // 小称误差值 + JSONObject data5 = new JSONObject(); + data5.put("device_code", device_code); + data5.put("code", "to_small_scale_error"); + // 中称误差值 + JSONObject data6 = new JSONObject(); + data6.put("device_code", device_code); + data6.put("code", "to_middle_scale_error"); + // 大称误差值 + JSONObject data7 = new JSONObject(); + data7.put("device_code", device_code); + data7.put("code", "to_big_scale_error"); - switch (device_code) { - case "PFW001": - data5.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("SMALL_BALANCE1").getValue()); - data6.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MIDDLE_BALANCE1").getValue()); - data7.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("BIG_BALANCE1").getValue()); - break; - case "PFW002": - data5.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("SMALL_BALANCE2").getValue()); - data6.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MIDDLE_BALANCE2").getValue()); - data7.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("BIG_BALANCE2").getValue()); - break; - case "PFW003": - data5.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("SMALL_BALANCE3").getValue()); - data6.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MIDDLE_BALANCE3").getValue()); - data7.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("BIG_BALANCE3").getValue()); - break; + switch (device_code) { + case "PFW001": + data5.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("SMALL_BALANCE1").getValue()); + data6.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MIDDLE_BALANCE1").getValue()); + data7.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("BIG_BALANCE1").getValue()); + break; + case "PFW002": + data5.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("SMALL_BALANCE2").getValue()); + data6.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MIDDLE_BALANCE2").getValue()); + data7.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("BIG_BALANCE2").getValue()); + break; + case "PFW003": + data5.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("SMALL_BALANCE3").getValue()); + data6.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MIDDLE_BALANCE3").getValue()); + data7.put("value", SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("BIG_BALANCE3").getValue()); + break; + } + array.add(data5); + array.add(data6); + array.add(data7); + + // 调用电气接口 下发电气 + Map result = wmsToAcsService.action(array); + String status = MapUtil.getStr(result, "status"); + if (!StrUtil.equals(status, "200")) { + String message = MapUtil.getStr(result, "message"); + throw new BadRequestException("下发电气失败:" + message); + } + } else { + throw new BadRequestException("配方状态不为生产中或者工序任务不为生产中"); } - array.add(data5); - array.add(data6); - array.add(data7); - // 调用电气接口 下发电气 - Map result = wmsToAcsService.action(array); - String status = MapUtil.getStr(result, "status"); - if (!StrUtil.equals(status, "200")) { - String message = MapUtil.getStr(result, "message"); - throw new BadRequestException("下发电气失败:" + message); - } + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/FormulaServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/FormulaServiceImpl.java index 7baebaf6..fa489d0f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/FormulaServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/FormulaServiceImpl.java @@ -66,6 +66,10 @@ public class FormulaServiceImpl implements FormulaService { if (StrUtil.isNotEmpty(workorder_code)) { map.put("workorder_code", "%" + workorder_code + "%"); } + String formula_code = map.get("formula_code"); + if (StrUtil.isNotEmpty(formula_code)) { + map.put("formula_code", "%" + formula_code + "%"); + } String pcsn = map.get("pcsn"); if (StrUtil.isNotEmpty(pcsn)) { map.put("pcsn", "%" + pcsn + "%"); @@ -145,6 +149,30 @@ public class FormulaServiceImpl implements FormulaService { } } + @Override + @Transactional(rollbackFor = Exception.class) + public void audit(JSONObject whereJson) { + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + String now = DateUtil.now(); + + WQLObject PDM_BI_Formula = WQLObject.getWQLObject("PDM_BI_Formula"); + JSONArray rows = whereJson.getJSONArray("rows"); + for(int i=0;i "" + fMst.formula_code like 输入.formula_code + ENDOPTION + OPTION 输入.pcsn <> "" fMst.pcsn like 输入.pcsn ENDOPTION diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/wql/QPF_FORMULA01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/wql/QPF_FORMULA01.wql index d50d97e0..71e3c70d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/wql/QPF_FORMULA01.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/wql/QPF_FORMULA01.wql @@ -22,6 +22,7 @@ 输入.end_time TYPEAS s_string 输入.formula_id TYPEAS s_string 输入.pcsn TYPEAS s_string + 输入.is_audit TYPEAS s_string [临时表] --这边列出来的临时表就会在运行期动态创建 @@ -75,6 +76,9 @@ OPTION 输入.status <> "" Formula.status = 输入.status ENDOPTION + OPTION 输入.is_audit <> "" + Formula.is_audit = 输入.is_audit + ENDOPTION OPTION 输入.formula_code <> "" Formula.formula_code like 输入.formula_code ENDOPTION diff --git a/mes/hd/nladmin-system/src/main/resources/logback-spring.xml b/mes/hd/nladmin-system/src/main/resources/logback-spring.xml index 6eb40073..b5a0a731 100644 --- a/mes/hd/nladmin-system/src/main/resources/logback-spring.xml +++ b/mes/hd/nladmin-system/src/main/resources/logback-spring.xml @@ -80,7 +80,7 @@ https://juejin.cn/post/6844903775631572999 - + diff --git a/mes/qd/src/api/wms/pf/formula.js b/mes/qd/src/api/wms/pf/formula.js index 6328332b..51c21465 100644 --- a/mes/qd/src/api/wms/pf/formula.js +++ b/mes/qd/src/api/wms/pf/formula.js @@ -7,6 +7,13 @@ export function cancel(data) { data }) } +export function audit(data) { + return request({ + url: 'api/formula/audit', + method: 'post', + data + }) +} export function submit(data) { return request({ url: 'api/formula/submit', @@ -49,4 +56,4 @@ export function print(data) { data }) } -export default { cancel, getform, submit, getView, pointCard, preview, print } +export default { audit, cancel, getform, submit, getView, pointCard, preview, print } diff --git a/mes/qd/src/views/wms/pf/flourwork/ShowWorkDialog.vue b/mes/qd/src/views/wms/pf/flourwork/ShowWorkDialog.vue new file mode 100644 index 00000000..97386b3a --- /dev/null +++ b/mes/qd/src/views/wms/pf/flourwork/ShowWorkDialog.vue @@ -0,0 +1,337 @@ + + + + + diff --git a/mes/qd/src/views/wms/pf/flourwork/WorkDialog.vue b/mes/qd/src/views/wms/pf/flourwork/WorkDialog.vue index e9bac5b2..d29c0674 100644 --- a/mes/qd/src/views/wms/pf/flourwork/WorkDialog.vue +++ b/mes/qd/src/views/wms/pf/flourwork/WorkDialog.vue @@ -428,9 +428,9 @@ export default { if (this.form.storagevehicle_code === '') { return this.crud.notify('请绑定配粉槽', CRUD.NOTIFICATION_TYPE.INFO) } - if (this.form.status !== '30') { - return this.crud.notify('配方状态不为生产中', CRUD.NOTIFICATION_TYPE.INFO) - } + // if (this.form.status !== '30') { + // return this.crud.notify('配方状态不为生产中', CRUD.NOTIFICATION_TYPE.INFO) + // } const arr = this.tableDtl let num = 0 for (let i = 0; i < arr.length; i++) { @@ -475,9 +475,9 @@ export default { cancelButtonText: '取消', type: 'warning' }).then(() => { - if (this.form.status !== '30') { - return this.crud.notify('配方状态不为生产中', CRUD.NOTIFICATION_TYPE.INFO) - } + // if (this.form.status !== '30') { + // return this.crud.notify('配方状态不为生产中', CRUD.NOTIFICATION_TYPE.INFO) + // } if (this.dtlJson === null) { this.crud.notify('请选择物料', CRUD.NOTIFICATION_TYPE.INFO) return false diff --git a/mes/qd/src/views/wms/pf/flourwork/index.vue b/mes/qd/src/views/wms/pf/flourwork/index.vue index bf9b8345..4507d327 100644 --- a/mes/qd/src/views/wms/pf/flourwork/index.vue +++ b/mes/qd/src/views/wms/pf/flourwork/index.vue @@ -34,6 +34,18 @@ + + + + + - + + + @@ -122,6 +138,7 @@ + @@ -136,13 +153,13 @@ import pagination from '@crud/Pagination' import DateRangePicker from '@/components/DateRangePicker' import WorkDialog from '@/views/wms/pf/flourwork/WorkDialog' import ExceptionDialog from '@/views/wms/pf/flourwork/ExceptionDialog' -import crudMaterialparameters from "@/api/wms/basedata/master/materialparameters"; - +import crudMaterialparameters from '@/api/wms/basedata/master/materialparameters' +import ShowWorkDialog from '@/views/wms/pf/flourwork/ShowWorkDialog' export default { name: 'Flourwork', dicts: ['product_series'], - components: { pagination, crudOperation, rrOperation, udOperation, DateRangePicker, WorkDialog, ExceptionDialog }, + components: { pagination, crudOperation, rrOperation, udOperation, DateRangePicker, WorkDialog, ExceptionDialog, ShowWorkDialog }, mixins: [presenter(), header(), crud()], cruds() { return CRUD({ @@ -168,6 +185,7 @@ export default { biz_date: new Date().format('yyyy-MM-dd'), openParam: null, openWorkDialog: false, + openShowWorkDialog: false, exceptionDialog: false, serieseList: [], deviceList: [], @@ -221,6 +239,10 @@ export default { this.openWorkDialog = true }) }, + openShowWork(index, row) { + this.openParam = row + this.openShowWorkDialog = true + }, exception() { this.exceptionDialog = true }, diff --git a/mes/qd/src/views/wms/pf/formula/ViewDialog.vue b/mes/qd/src/views/wms/pf/formula/ViewDialog.vue index ca80a29a..824ea1fe 100644 --- a/mes/qd/src/views/wms/pf/formula/ViewDialog.vue +++ b/mes/qd/src/views/wms/pf/formula/ViewDialog.vue @@ -90,6 +90,22 @@ /> + + + + + diff --git a/mes/qd/src/views/wms/pf/formula/index.vue b/mes/qd/src/views/wms/pf/formula/index.vue index eb402a09..f7984a0b 100644 --- a/mes/qd/src/views/wms/pf/formula/index.vue +++ b/mes/qd/src/views/wms/pf/formula/index.vue @@ -40,6 +40,15 @@ @change="crud.toQuery" /> + + + - - + + + - + + + + @@ -82,6 +108,17 @@ > 作废 + + 审核 + - - - - - - - - - - + + + + + + + + + + + + + @@ -244,7 +284,7 @@ export default { }, mixins: [presenter(), header(), crud()], // 数据字典 - dicts: ['formula_status', 'workorder_type', 'product_series', 'bucket_type'], + dicts: ['formula_status', 'workorder_type', 'product_series', 'bucket_type', 'is_again_put'], data() { return { dialogUpload: false, @@ -256,6 +296,7 @@ export default { }, divShow: false, dissub_flag: true, + audit_flag: true, change_flag: true, Export_flag: true, show_flag: true, @@ -301,6 +342,7 @@ export default { buttonChange(rows) { if (rows.length !== 0) { this.dissub_flag = false + this.audit_flag = false this.change_flag = false this.Export_flag = false this.show_flag = false @@ -308,10 +350,13 @@ export default { if (rows[i].status !== '20') { this.dissub_flag = true } + if (rows[i].status !== '20' || rows[i].is_audit !== '0') { + this.audit_flag = true + } if (rows[i].status === '99') { this.Export_flag = true } - if (!'30,20'.includes(rows[i].status) || rows.length !== 1) {//后台校验首道工序 + if (!'30,20'.includes(rows[i].status) || rows.length !== 1) { this.change_flag = true } } @@ -322,6 +367,9 @@ export default { stateFormat(row) { return this.dict.label.formula_status[row.status] }, + stateFormat2(row) { + return this.dict.label.is_again_put[row.is_audit] + }, bill_typeFormat(row) { return this.dict.label.workorder_type[row.workorder_type] }, @@ -339,6 +387,7 @@ export default { this.checkrows = [] this.mstrow = {} this.dissub_flag = true + this.audit_flag = true this.change_flag = true this.Export_flag = true this.show_flag = true @@ -366,6 +415,17 @@ export default { this.querytable() }) }, + audit(){ + this.checkrows = this.$refs.table.selection + if(this.checkrows.length === 0){ + this.crud.notify('请先选择需要审核的配方记录!') + return false + } + formula.audit({'rows':this.checkrows}).then(res => { + this.crud.notify('审核配方成功!') + this.querytable() + }) + }, querytable() { this.crud.toQuery() this.handleCurrentChange()