diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/constant/MaterOptTypeEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/constant/MaterOptTypeEnum.java index 6c70bbe3..620ddfa0 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/constant/MaterOptTypeEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/constant/MaterOptTypeEnum.java @@ -35,8 +35,8 @@ public enum MaterOptTypeEnum { TJJ_AND_OTHER(24, "25", "添加剂和其他有色金属粉", "('1503644361697660928','1503644362838511616')", ""), BJID(25, "26", "备品备件", "1503644361789935616", ""), THW_AND_GF_AND_TJJ(26, "27", "碳化钨、钴粉、添加剂", "('1503644361664106496','1503644362192588800','1503644361697660928')", ""), - BCP_AND_YL_AND_FL(27, "28", "半成品、原辅料、合金制品", "('1503644359155912704','1503644353019645952','1503644353116114944','1503644349995552768')", ""); - + BCP_AND_YL_AND_FL(27, "28", "半成品、原辅料、合金制品", "('1503644359155912704','1503644353019645952','1503644353116114944','1503644349995552768')", ""), + YYJS(28, "29", "有色金属中除了焊条", "('1503644361664106496','1503644361697660928','1503644362192588800','1503644362234531840','1503644362788179968','1503644362838511616')", ""); //顺序号 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/statistics/service/impl/StatisticalReportServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/statistics/service/impl/StatisticalReportServiceImpl.java index 23e45f69..804392a6 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/statistics/service/impl/StatisticalReportServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/statistics/service/impl/StatisticalReportServiceImpl.java @@ -12,6 +12,7 @@ import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.exception.BadRequestException; +import org.nl.wms.basedata.master.constant.MaterOptTypeEnum; import org.nl.wms.common.util.DataAuthUtil; import org.nl.wms.statistics.service.StatisticalReportService; import org.nl.wms.statistics.service.StifleQueryService; @@ -133,9 +134,32 @@ public class StatisticalReportServiceImpl implements StatisticalReportService { WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); // 物料信息表 String begin_time = MapUtil.getStr(whereJson, "begin_time"); String end_time = MapUtil.getStr(whereJson, "end_time"); - String org_id = MapUtil.getStr(whereJson, "org_id"); + + String begin_date = ""; + String end_date = ""; + if (StrUtil.isNotEmpty(begin_time)) { + begin_time = begin_time.substring(0,10)+" 00:00:00"; + begin_date = begin_time.substring(0,10); + } + if (StrUtil.isNotEmpty(end_time)) { + end_time = end_time.substring(0,10)+" 23:59:59"; + end_date = end_time.substring(0,10); + } + String org_ids = MapUtil.getStr(whereJson, "task_status"); + + String org_ids_new = ""; + if (StrUtil.isNotEmpty(org_ids) && !"null".equals(org_ids)) { + String[] strs = org_ids.split(","); + for( int i=0;i dtlJa_map = new HashMap(); @@ -173,11 +200,23 @@ public class StatisticalReportServiceImpl implements StatisticalReportService { JSONObject form_qty = dtlJa.getJSONObject(i); dtlJa_map.put(form_qty.getString("material_id"),form_qty.getDouble("qty")); } + + //汇总历史配方明细物料 + HashMap dtlJa_map2 = new HashMap(); + JSONArray dtlJa2 = WQL.getWO("statistical_report_query_02").addParam("flag", "4") + .addParam("begin_time", begin_time) + .addParam("end_time", end_time) + .process() + .getResultJSONArray(0); + for (int i = 0; i < dtlJa2.size(); i++) { + JSONObject form_qty = dtlJa2.getJSONObject(i); + dtlJa_map2.put(form_qty.getString("material_id"),form_qty.getDouble("qty")); + } //库存物料数量 JSONArray materQryArray = WQL.getWO("statistical_report_query_01").addParam("flag", "4").process().getResultJSONArray(0); Map> materialMap = materQryArray.stream().collect(Collectors.groupingBy(a -> ((JSONObject)a).getString("material_id"))); //排产需求 - JSONArray needMaterArray = WQL.getWO("statistical_report_query_01").addParam("flag", "6").addParam("begin_time", begin_time).addParam("end_time", end_time).addParam("org_id", org_id).process().getResultJSONArray(0); + JSONArray needMaterArray = WQL.getWO("statistical_report_query_01").addParam("flag", "6").addParam("begin_date", begin_date).addParam("end_date", end_date).addParam("org_ids", org_ids_new).process().getResultJSONArray(0); Map> needMaterMap = needMaterArray.stream().collect(Collectors.groupingBy(a -> ((JSONObject)a).getString("material_id"))); //3、待检入库量:sum(此物料未确认的到货单的单据数-入库数) @@ -186,8 +225,11 @@ public class StatisticalReportServiceImpl implements StatisticalReportService { //查询物料计划日期内的需求量 JSONArray DataPlanQtyArray = WQL.getWO("statistical_report_query_01").addParam("flag", "10") - .addParam("begin_time", begin_time.substring(0, 10) + "%") - .addParam("end_time", end_time.substring(0, 10) + "%").process().getResultJSONArray(0); + .addParam("begin_time", begin_time) + .addParam("end_time", end_time) + .addParam("begin_date", begin_date) + .addParam("end_date", end_date) + .process().getResultJSONArray(0); Map> datePlanMap = DataPlanQtyArray.stream().collect(Collectors.groupingBy(a -> ((JSONObject)a).getString("material_id"))); for (int i = 0; i < mater_rows.size(); i++) { @@ -211,7 +253,6 @@ public class StatisticalReportServiceImpl implements StatisticalReportService { //已开单重量 jo22.put(material_id, String.format("%.2f", need_qty)); //2、排产需求量(未开工的工令重量+排产未生成工令日计划重量)根据bom计算需要多少原料库存重量: -// JSONObject nedd_mater = WQL.getWO("statistical_report_query_01").addParam("flag", "6").addParam("material_id", material_id).addParam("begin_time", begin_time).addParam("end_time", end_time).addParam("org_id", org_id).process().uniqueResult(0); double bom_qty = 0; List needMaterInfo = needMaterMap.get(material_id); if (ObjectUtil.isNotEmpty(needMaterInfo)) { @@ -270,6 +311,14 @@ public class StatisticalReportServiceImpl implements StatisticalReportService { double buy_qty = (canuse_num + noin_qty + notqty) - (bom_qty + safe_qty); jo8.put(material_id, String.format("%.2f", buy_qty)); + //9 + double need_qty2 = 0; + if (dtlJa_map2.containsKey(material_id)) { + need_qty2 = dtlJa_map2.get(material_id); + } + + jo9.put(material_id, String.format("%.2f", need_qty2)); + //6、覆盖日期:物料库存可坚持到哪一天:库存现存量减每天需求量,哪天<0,取前一天 if (canuse_num<0){ jo5.put(material_id, DateUtil.offsetDay(date1, -1).toString().substring(0, 10)); @@ -290,25 +339,6 @@ public class StatisticalReportServiceImpl implements StatisticalReportService { } } } - -// for (int j = 1; j <= betweenDay; j++) { -// DateTime newDate = DateUtil.offsetDay(date1, j); -// //查询该物料当天的需求量 -// JSONObject today_qty = WQL.getWO("statistical_report_query_01").addParam("flag", "8").addParam("material_id", material_id).addParam("begin_time", newDate.toString().substring(0, 10) + "%").process().uniqueResult(0); -// double need_weight = 0; -// if (ObjectUtil.isNotEmpty(today_qty)) { -// need_weight = today_qty.getDoubleValue("qty"); -// } -// if (canuse_num < need_weight) { -// jo5.put(material_id, DateUtil.offsetDay(newDate, -1).toString().substring(0, 10)); -// break; -// } else { -// canuse_num -= need_weight; -// } -// if (j == betweenDay) { -// jo5.put(material_id, end_time.substring(0, 10)); -// } -// } } } JSONObject jo = new JSONObject(); @@ -320,9 +350,36 @@ public class StatisticalReportServiceImpl implements StatisticalReportService { public Map materPlanDtlQuery(Map whereJson) { String begin_time = MapUtil.getStr(whereJson, "begin_time"); String end_time = MapUtil.getStr(whereJson, "end_time"); - String org_id = MapUtil.getStr(whereJson, "org_id"); + String begin_date = ""; + String end_date = ""; + if (StrUtil.isNotEmpty(begin_time)) { + begin_time = begin_time.substring(0,10)+" 00:00:00"; + begin_date = begin_time.substring(0,10); + } + if (StrUtil.isNotEmpty(end_time)) { + end_time = end_time.substring(0,10)+" 23:59:59"; + end_date = end_time.substring(0,10); + } + String org_ids = MapUtil.getStr(whereJson, "task_status"); + + String org_ids_new = ""; + if (StrUtil.isNotEmpty(org_ids) && !"null".equals(org_ids)) { + String[] strs = org_ids.split(","); + for( int i=0;i "" - wo.planstart_time >= 输入.begin_time - ENDOPTION - OPTION 输入.end_time <> "" - wo.planstart_time <= 输入.end_time - ENDOPTION - UNION - SELECT - plan.material_id - FROM - mps_bd_productdailyplan plan - WHERE - plan.`status` = '01' - OPTION 输入.begin_time <> "" - plan.planstart_date >= 输入.begin_time - ENDOPTION - OPTION 输入.end_time <> "" - plan.planstart_date <= 输入.end_time - ENDOPTION - ) a - LEFT JOIN md_pd_productbom bom ON bom.material_id = a.material_id - LEFT JOIN md_pd_productbomdtl dtl ON dtl.bom_id = bom.bom_id - LEFT JOIN md_me_materialbase mb ON mb.material_id = dtl.material_id - LEFT JOIN md_pb_classstandard class ON class.class_id = mb.material_type_id - ORDER BY order_no,material_code + ( + SELECT + dtl.material_id + FROM + ( + SELECT + wo.material_id + FROM + pdm_bi_workorder wo + WHERE + wo.is_delete = '0' + AND wo.`status` IN ( '10', '20', '30' ) UNION + SELECT + plan.material_id + FROM + mps_bd_productdailyplan plan + WHERE + plan.`status` = '01' + ) a + INNER JOIN md_pd_productbom bom ON bom.material_id = a.material_id + INNER JOIN md_pd_productbomdtl dtl ON dtl.bom_id = bom.bom_id UNION + SELECT + mb2.material_id + FROM + md_me_materialbase mb2 + WHERE + 1 = 1 + AND mb2.is_delete = '0' + AND mb2.material_type_id IN ( '1503644361664106496', '1503644361697660928', '1503644362192588800', '1503644362234531840', '1503644362788179968', '1503644362838511616' ) + ) b + INNER JOIN md_me_materialbase mb ON mb.material_id = b.material_id + INNER JOIN md_pb_classstandard class ON class.class_id = mb.material_type_id + ORDER BY + order_no, + material_code ENDSELECT ENDQUERY ENDIF @@ -433,14 +447,14 @@ WHERE wo.`status` < 50 AND is_delete = '0' - OPTION 输入.begin_time <> "" - wo.planstart_time >= 输入.begin_time + OPTION 输入.begin_date <> "" + wo.planstart_time >= 输入.begin_date ENDOPTION - OPTION 输入.end_time <> "" - wo.planstart_time <= 输入.end_time + OPTION 输入.end_date <> "" + wo.planstart_time <= 输入.end_date ENDOPTION - OPTION 输入.org_id <> "" - wo.org_id = 输入.org_id + OPTION 输入.org_ids <> "" + wo.org_id in 输入.org_ids ENDOPTION UNION ALL SELECT @@ -457,8 +471,8 @@ OPTION 输入.end_time <> "" plan.planstart_date <= 输入.end_time ENDOPTION - OPTION 输入.org_id <> "" - dept.dept_id = 输入.org_id + OPTION 输入.org_ids <> "" + dept.dept_id in 输入.org_ids ENDOPTION ) a GROUP BY @@ -632,16 +646,15 @@ LEFT JOIN sys_dept dept ON dept.`code` = plan.plan_org_code WHERE plan.status = '01' - OPTION 输入.begin_time <> "" - plan.planstart_date >= 输入.begin_time + OPTION 输入.begin_date <> "" + plan.planstart_date >= 输入.begin_date ENDOPTION - OPTION 输入.end_time <> "" - plan.planstart_date <= 输入.end_time + OPTION 输入.end_date <> "" + plan.planstart_date <= 输入.end_date ENDOPTION - OPTION 输入.org_id <> "" - dept.dept_id = 输入.org_id + OPTION 输入.org_ids <> "" + dept.dept_id in 输入.org_ids ENDOPTION - UNION ALL SELECT @@ -665,12 +678,11 @@ OPTION 输入.end_time <> "" wo.planstart_time <= 输入.end_time ENDOPTION - OPTION 输入.org_id <> "" - wo.org_id = 输入.org_id + OPTION 输入.org_ids <> "" + wo.org_id in 输入.org_ids ENDOPTION GROUP BY planstart_time,wo.material_id - ORDER BY planstart_date ENDSELECT @@ -709,11 +721,11 @@ FROM MPS_BD_ProductDailyPlan WHERE `status` = '01' - OPTION 输入.begin_time <> "" - planstart_date >= 输入.begin_time + OPTION 输入.begin_date <> "" + planstart_date >= 输入.begin_date ENDOPTION - OPTION 输入.end_time <> "" - planstart_date <= 输入.end_time + OPTION 输入.end_date <> "" + planstart_date <= 输入.end_date ENDOPTION ) a GROUP BY a.material_id,currentDate ) b diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/statistics/wql/statistical_report_query_02.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/statistics/wql/statistical_report_query_02.wql index be584b81..2ea2e736 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/statistics/wql/statistical_report_query_02.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/statistics/wql/statistical_report_query_02.wql @@ -16,6 +16,8 @@ 输入.flag TYPEAS s_string 输入.begin_time TYPEAS s_string 输入.end_time TYPEAS s_string + 输入.begin_date TYPEAS s_string + 输入.end_date TYPEAS s_string 输入.pcsn TYPEAS s_string 输入.material_code TYPEAS s_string 输入.bill_code TYPEAS s_string @@ -131,4 +133,25 @@ ENDQUERY ENDIF + IF 输入.flag = "4" + QUERY + SELECT + FormulaDtl.material_id, + SUM( FormulaDtl.formula_qty ) AS qty + FROM PDM_BI_Formula Formula + inner JOIN PDM_BI_FormulaDtl FormulaDtl ON FormulaDtl.formula_id = Formula.formula_id + where 1=1 + and Formula.is_delete='0' + OPTION 输入.begin_time <> "" + Formula.create_time >= 输入.begin_time + ENDOPTION + OPTION 输入.end_time <> "" + Formula.create_time <= 输入.end_time + ENDOPTION + GROUP BY + FormulaDtl.material_id + ENDSELECT + ENDQUERY + ENDIF + diff --git a/mes/qd/src/views/wms/statistics/materPlan/index.vue b/mes/qd/src/views/wms/statistics/materPlan/index.vue index fd49409e..ec1d2673 100644 --- a/mes/qd/src/views/wms/statistics/materPlan/index.vue +++ b/mes/qd/src/views/wms/statistics/materPlan/index.vue @@ -12,7 +12,16 @@ label-suffix=":" > - + { this.Depts = res }) + this.crud.query.createTime = [new Date(), new Date().daysLater(30)] }, methods: { // 钩子:在获取表格数据之前执行,false 则代表不获取数据 @@ -160,9 +171,10 @@ export default { report.getHeader2().then(res => { this.cols2 = res }) - if (this.crud.query.createTime) { - this.crud.query.begin_time = this.crud.query.createTime[0] - this.crud.query.end_time = this.crud.query.createTime[1] + if (this.query_flag) { + this.crud.query.begin_time = (new Date()).strftime('%F', 'zh') + this.crud.query.end_time = (new Date().daysLater(30)).strftime('%F', 'zh') + this.query_flag = false } const data = this.crud.query report.materPlanDtlQuery(data).then(res => { @@ -173,6 +185,21 @@ export default { }) return true }, + handTaskStatus(value) { + var str1 = '' + if (value) { + for (const item of value) { + if (str1 === '') { + str1 = item + } else { + str1 = str1 + ',' + item + } + } + this.query.task_status = str1 + } else { + this.query.task_status = '' + } + }, open2(index, row) { if (row.first === '库存现存量') { this.structshow = true @@ -198,6 +225,19 @@ export default { hand(value) { this.crud.toQuery() }, + onInput() { + this.$forceUpdate() + }, + mytoQuery(array1) { + if (array1 === null) { + this.crud.query.begin_time = '' + this.crud.query.end_time = '' + } else { + this.crud.query.begin_time = array1[0] + this.crud.query.end_time = array1[1] + } + this.crud.toQuery() + }, downdtl() { if (this.currentRow !== null) { crud.downloadLoading = true