diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QLK01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QLK01.wql index b6248d55..2ba88dab 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QLK01.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QLK01.wql @@ -15,6 +15,7 @@ ################################################# 输入.flag TYPEAS s_string 输入.material_code TYPEAS s_string + 输入.processroute_uuid TYPEAS s_string [临时表] --这边列出来的临时表就会在运行期动态创建 @@ -197,4 +198,29 @@ IF 输入.flag = "14" AND sys.sysdic_type = 'IF_WCS_DEVICESERIES' ENDSELECT ENDQUERY +ENDIF + + + +IF 输入.flag = "15" + QUERY + SELECT + * + FROM + PDM_BI_ProduceProcessRoute route + ENDSELECT + ENDQUERY +ENDIF + +IF 输入.flag = "16" + QUERY + SELECT + * + FROM + PDM_BI_ProduceProcessRoute route + LEFT JOIN PDM_BI_ProduceProcessRouteDtl dtl ON route.processroute_uuid = dtl.processroute_uuid + route.processroute_uuid = 输入.processroute_uuid + order by workprocedure_number + ENDSELECT + ENDQUERY ENDIF \ No newline at end of file diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/bigscreen/1.text b/mes/hd/nladmin-system/src/main/java/org/nl/wms/bigscreen/1.text deleted file mode 100644 index e69de29b..00000000 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/rest/ProductController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/rest/ProductController.java new file mode 100644 index 00000000..ed17cf3b --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/rest/ProductController.java @@ -0,0 +1,84 @@ + +package org.nl.wms.ext.bigScreen.rest; + + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.annotation.Log; + +import org.nl.wms.ext.bigScreen.service.ProductService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + +/** + * @author ldjun + * @date 2021-07-26 + **/ +@RestController +@RequiredArgsConstructor +@Api(tags = "大屏生产监控中心") +@RequestMapping("/api/bigscreen/product") +@Slf4j +public class ProductController { + + private final ProductService pdaBindingService; + + @PostMapping("/planReached") + @Log("计划达成") + @ApiOperation("计划达成") + public ResponseEntity planReached(@RequestBody Map param) { + return new ResponseEntity<>(pdaBindingService.planReached(param), HttpStatus.OK); + } + @PostMapping("/productSchedule") + @Log("今日排产生产进度跟踪") + @ApiOperation("今日排产生产进度跟踪") + public ResponseEntity productSchedule(@RequestBody Map param) { + return new ResponseEntity<>(pdaBindingService.productSchedule(param), HttpStatus.OK); + } + @PostMapping("/output") + @Log("今日产量") + @ApiOperation("今日产量") + public ResponseEntity output(@RequestBody Map param) { + return new ResponseEntity<>(pdaBindingService.output(param), HttpStatus.OK); + } + + @PostMapping("/worksectionHarvest") + @Log("近一周工段产量") + @ApiOperation("近一周工段产量") + public ResponseEntity worksectionHarvest(@RequestBody Map param) { + return new ResponseEntity<>(pdaBindingService.worksectionHarvest(param), HttpStatus.OK); + } + @PostMapping("/topHarvest") + @Log("今日Top10产量") + @ApiOperation("今日Top10产量") + public ResponseEntity topHarvest(@RequestBody Map param) { + return new ResponseEntity<>(pdaBindingService.topHarvest(param), HttpStatus.OK); + } + @PostMapping("/monthHarvest") + @Log("30天产量走势") + @ApiOperation("30天产量走势") + public ResponseEntity monthHarvest(@RequestBody Map param) { + return new ResponseEntity<>(pdaBindingService.monthHarvest(param), HttpStatus.OK); + } + @PostMapping("/unfinishOrder") + @Log("今日未完成订单") + @ApiOperation("今日未完成订单") + public ResponseEntity unfinishOrder(@RequestBody Map param) { + return new ResponseEntity<>(pdaBindingService.unfinishOrder(param), HttpStatus.OK); + } + @PostMapping("/monthOrder") + @Log("30天生产订单分布") + @ApiOperation("30天生产订单分布") + public ResponseEntity monthOrder(@RequestBody Map param) { + return new ResponseEntity<>(pdaBindingService.monthOrder(param), HttpStatus.OK); + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/ProductService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/ProductService.java new file mode 100644 index 00000000..40530827 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/ProductService.java @@ -0,0 +1,68 @@ +package org.nl.wms.ext.bigScreen.service; + +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.Map; + +@Service +public interface ProductService { + /** + * 计划达成 + * @param param 条件 + * @return Map + * + */ + Map planReached(@RequestBody Map param); + /** + * 今日排产生产进度跟踪 + * @param param 条件 + * @return Map + * + */ + Map productSchedule(@RequestBody Map param); + /** + * 今日产量 + * @param param 条件 + * @return Map + * + */ + Map output(@RequestBody Map param); + /** + * 近一周工段产量 + * @param param 条件 + * @return Map + * + */ + Map worksectionHarvest(@RequestBody Map param); + /** + * 今日Top10产量 + * @param param 条件 + * @return Map + * + */ + Map topHarvest(@RequestBody Map param); + /** + * 30天产量走势 + * @param param 条件 + * @return Map + * + */ + Map monthHarvest(@RequestBody Map param); + /** + * 今日未完成订单 + * @param param 条件 + * @return Map + * + */ + Map unfinishOrder(@RequestBody Map param); + /** + * 30天生产订单分布 + * @param param 条件 + * @return Map + * + */ + Map monthOrder(@RequestBody Map param); + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/impl/DeviceScreenServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/impl/DeviceScreenServiceImpl.java index b6682cd2..274d2b34 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/impl/DeviceScreenServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/impl/DeviceScreenServiceImpl.java @@ -6,12 +6,18 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.nl.wms.ext.bigScreen.service.DeviceScreenService; import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; +import org.springframework.stereotype.Service; import java.util.Date; +@Service +@RequiredArgsConstructor +@Slf4j public class DeviceScreenServiceImpl implements DeviceScreenService { @Override public JSONObject deviceStatus(JSONObject param) { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/impl/ProductServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/impl/ProductServiceImpl.java new file mode 100644 index 00000000..19e8fd0c --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/impl/ProductServiceImpl.java @@ -0,0 +1,216 @@ +package org.nl.wms.ext.bigScreen.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.wms.ext.bigScreen.service.ProductService; +import org.nl.wql.WQL; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +@Service +@RequiredArgsConstructor +@Slf4j +public class ProductServiceImpl implements ProductService { + private String now = "2022-07-26 23:59:59"; + private String today = "2022-07-26"; + //一个月的开始时间 + DateTime beginMonthDateTime = DateUtil.offsetDay(DateUtil.parse(now), 30); + //一天的开始时间 + DateTime beginTimeOfDay = DateUtil.beginOfDay(DateUtil.parse(now)); + //一天的结束时间 + DateTime endTimeOfDay = DateUtil.endOfDay(DateUtil.parseDate(now)); + + @Override + public Map planReached(Map param) { + //计算当天的计划达成 + //01-弯头工段、02-综合工段、03-成品工段 + Map map = new HashMap(); + map.put("flag", "1"); + map.put("begin_time", beginTimeOfDay); + map.put("end_time", endTimeOfDay); + JSONArray dayResult = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().getResultJSONArray(0); + //计算一个月的计划达成 + map.put("begin_time", beginMonthDateTime); + JSONArray monthResult = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().getResultJSONArray(0); + JSONObject returnjo = new JSONObject(); + returnjo.put("code", "1"); + returnjo.put("desc", "操作成功!"); + returnjo.put("dayResult", dayResult); + returnjo.put("monthResult", monthResult); + return returnjo; + } + + @Override + public Map productSchedule(Map param) { + //今日排产生产进度跟踪 + Map map = new HashMap(); + map.put("flag", "2"); + map.put("begin_time", beginTimeOfDay); + map.put("end_time", endTimeOfDay); + JSONArray result = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().getResultJSONArray(0); + JSONObject returnjo = new JSONObject(); + returnjo.put("code", "1"); + returnjo.put("desc", "操作成功!"); + returnjo.put("result", result); + return returnjo; + } + + @Override + public Map output(Map param) { + JSONObject result = new JSONObject(); + Map map = new HashMap(); + // map.put("flag", "3"); + map.put("flag", "7"); + map.put("begin_time", beginTimeOfDay); + map.put("end_time", endTimeOfDay); + //统计产量方式一: 1 计算工单物料 2 计算每个物料清洗前一个工序 3拿着工序+物料 关联工单表 统计总数 + //1激光下料——推弯——清洗 + //2旋压-清洗 + //3盘管无屑下料-三通拉伸-镗孔-清洗 + //4直管无屑下料-镗孔-清洗 + //统计产量方式二: 只需要统计 推弯,旋压。镗孔 3个工序工单的数量 ('07','06','02') + JSONObject joo = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().uniqueResult(0); + result.put("real_qty", joo.getString("real_qty")); + result.put("plan_qty", joo.getString("plan_qty")); + result.put("finish_rate", joo.getString("finish_rate")); + //统计工单个数 + map.put("flag", "4"); + int sum_qty = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().uniqueResult(0).getIntValue("count"); + //统计延时工单 + map.put("now_time", now); + map.put("flag", "5"); + + int delayed_qty = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().uniqueResult(0).getIntValue("count"); + result.put("sum_qty", sum_qty); + result.put("delayed_qty", delayed_qty); + result.put("normal_qty", sum_qty - delayed_qty); + + JSONObject returnjo = new JSONObject(); + returnjo.put("code", "1"); + returnjo.put("desc", "操作成功!"); + returnjo.put("result", result); + return returnjo; + } + + + @Override + public Map worksectionHarvest(Map param) { + //近一周工段产量 + //获取一周的日期 + JSONArray dataArr = new JSONArray(); + JSONArray results = new JSONArray(); + for (int i = 1; i < 9; i++) { + DateTime dateTime = DateUtil.offsetDay(DateUtil.parse(now), -i); + dataArr.add(dateTime.toString().substring(0, 10)); + } + for (int i = 0; i < dataArr.size(); i++) { + JSONObject jo = new JSONObject(); + JSONObject datejo = dataArr.getJSONObject(i); + String date = datejo.get(i).toString(); + jo.put("date", date); + Map map = new HashMap(); + map.put("flag", "8"); + map.put("produce_date", date); + JSONArray arr = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().getResultJSONArray(0); + jo.put("data", arr); + results.add(jo); + } + JSONObject returnjo = new JSONObject(); + returnjo.put("code", "1"); + returnjo.put("desc", "操作成功!"); + returnjo.put("result", results); + return returnjo; + } + + @Override + public Map topHarvest(Map param) { + //今日Top10产量 + Map map = new HashMap(); + map.put("flag", "10"); + map.put("produce_date", today); + JSONArray results = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().getResultJSONArray(0); + JSONObject returnjo = new JSONObject(); + returnjo.put("code", "1"); + returnjo.put("desc", "操作成功!"); + returnjo.put("result", results); + return returnjo; + } + + @Override + public Map monthHarvest(Map param) { + //30天产量走势 + JSONArray dataArr = new JSONArray(); + JSONArray results = new JSONArray(); + for (int i = 1; i < 31; i++) { + DateTime dateTime = DateUtil.offsetDay(DateUtil.parse(now), -i); + dataArr.add(dateTime.toString().substring(0, 10)); + } + for (int i = 0; i < dataArr.size(); i++) { + JSONObject jo = new JSONObject(); + JSONObject datejo = dataArr.getJSONObject(i); + String date = datejo.get(i).toString(); + jo.put("date", date); + Map map = new HashMap(); + map.put("flag", "9"); + map.put("produce_date", date); + int real_qty = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().uniqueResult(0).getIntValue("real_qty"); + jo.put("real_qty", real_qty); + results.add(jo); + } + JSONObject returnjo = new JSONObject(); + returnjo.put("code", "1"); + returnjo.put("desc", "操作成功!"); + returnjo.put("result", results); + return returnjo; + } + + @Override + public Map unfinishOrder(Map param) { + Map map = new HashMap(); + map.put("flag", "11"); + map.put("produce_date", today); + JSONArray results = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().getResultJSONArray(0); + JSONObject returnjo = new JSONObject(); + returnjo.put("code", "1"); + returnjo.put("desc", "操作成功!"); + returnjo.put("result", results); + return returnjo; + } + + @Override + public Map monthOrder(Map param) { + //计算前9种物料产能 + Map map = new HashMap(); + map.put("flag", "12"); + map.put("produce_date", today); + JSONArray results = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().getResultJSONArray(0); + //计算所有的产能 + map.put("flag", "13"); + int sum_count = WQL.getWO("BIGSCREENPRODUCT").addParamMap(map).process().uniqueResult(0).getIntValue("real_qty"); + //前几种物料的总和 + int count_num_flag = 0; + //如果有9种物料则需要计算其他 + if (results.size() == 9) { + for (int i = 0; i < results.size(); i++) { + count_num_flag = count_num_flag + results.getJSONObject(i).getIntValue("real_qty"); + } + } + if (count_num_flag < sum_count) { + JSONObject joo = new JSONObject(); + joo.put("material_name", "其他"); + joo.put("real_qty", sum_count - count_num_flag); + results.add(joo); + } + JSONObject returnjo = new JSONObject(); + returnjo.put("code", "1"); + returnjo.put("desc", "操作成功!"); + returnjo.put("result", results); + return returnjo; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/wql/BIGSCREENPRODUCT.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/wql/BIGSCREENPRODUCT.wql new file mode 100644 index 00000000..8f9ef9da --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/wql/BIGSCREENPRODUCT.wql @@ -0,0 +1,329 @@ +[交易说明] + 交易名: bom查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.workprocedure TYPEAS s_string + 输入.begin_time TYPEAS s_string + 输入.end_time TYPEAS s_string + 输入.now_time TYPEAS s_string + 输入.produce_date TYPEAS s_string + + + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + QUERY + SELECT + workprocedure.worksection_type_scode, + sum( shiftorder.real_qty ) AS real_qty, + sum( shiftorder.plan_qty ) AS plan_qty , + convert(sum( shiftorder.real_qty )/sum( shiftorder.plan_qty ),DECIMAL(10,2))*100 as finish_rate + FROM + mps_bd_produceshiftorder shiftorder + LEFT JOIN pdm_bi_workprocedure workprocedure ON shiftorder.workprocedure_id = workprocedure.workprocedure_id + LEFT JOIN sys_dict_detail sys ON sys.VALUE= workprocedure.worksection_type_scode AND sys.dict_id = '87' + where + 1=1 + OPTION 输入.worksection_type_scode <> "" + workprocedure.worksection_type_scode = 输入.worksection_type_scode + ENDOPTION + OPTION 输入.begin_time <> "" + shiftorder.planproduceend_date >= 输入.begin_time + ENDOPTION + OPTION 输入.end_time <> "" + shiftorder.planproduceend_date <= 输入.end_time + ENDOPTION + GROUP BY + worksection_type_scode + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "2" + QUERY + SELECT + shiftorder.produceorder_code, + shiftorder.plan_qty, + shiftorder.real_qty, + (shiftorder.plan_qty - shiftorder.real_qty) AS gap_qty, + CONVERT ( ( shiftorder.real_qty / shiftorder.plan_qty ), DECIMAL ( 10, 2 ) ) * 100 AS finish_rate + FROM + mps_bd_produceshiftorder shiftorder + where + 1=1 + OPTION 输入.begin_time <> "" + shiftorder.planproduceend_date >= 输入.begin_time + ENDOPTION + OPTION 输入.end_time <> "" + shiftorder.planproduceend_date <= 输入.end_time + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + + +IF 输入.flag = "3" + QUERY + SELECT + sum( shiftorder.real_qty ) AS real_qty, + sum( shiftorder.plan_qty ) AS plan_qty, + CONVERT ( sum( shiftorder.real_qty ) / sum( shiftorder.plan_qty ), DECIMAL ( 10, 2 ) ) * 100 AS finish_rate + FROM + mps_bd_produceshiftorder shiftorder + RIGHT JOIN ( + SELECT + route.material_id, + dtl.workprocedure_id + FROM + PDM_BI_ProductProcessRoute route + LEFT JOIN PDM_BI_ProductProcessRouteDtl dtl ON route.productprocess_id = dtl.productprocess_id + WHERE + route.material_id IN ( SELECT DISTINCT shiftorder.material_id FROM mps_bd_produceshiftorder shiftorder ) + AND dtl.nextworkprocedure_id = '1535144552481034240' + ) a ON a.material_id = shiftorder.material_id + AND a.workprocedure_id = shiftorder.workprocedure_id + where + 1=1 + OPTION 输入.begin_time <> "" + shiftorder.planproduceend_date >= 输入.begin_time + ENDOPTION + OPTION 输入.end_time <> "" + shiftorder.planproduceend_date <= 输入.end_time + ENDOPTION + ENDSELECT + ENDQUERY +ENDIF + + IF 输入.flag = "4" + QUERY + SELECT + count(*) as count + FROM + mps_bd_produceshiftorder shiftorder + where + 1=1 + OPTION 输入.begin_time <> "" + shiftorder.planproduceend_date >= 输入.begin_time + ENDOPTION + OPTION 输入.end_time <> "" + shiftorder.planproduceend_date <= 输入.end_time + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "5" + QUERY + SELECT + count(*) as count + FROM + mps_bd_produceshiftorder shiftorder + where + shiftorder.realproduceend_date > shiftorder.planproduceend_date + OPTION 输入.begin_time <> "" + shiftorder.planproduceend_date >= 输入.begin_time + ENDOPTION + OPTION 输入.end_time <> "" + shiftorder.planproduceend_date <= 输入.end_time + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + + IF 输入.flag = "7" + QUERY + SELECT + sum( real_qty ) AS real_qty, + sum( plan_qty ) AS plan_qty, + CONVERT ( sum( shiftorder.real_qty ) / sum( shiftorder.plan_qty ), DECIMAL ( 10, 2 ) ) * 100 AS finish_rate + FROM + mps_bd_produceshiftorder shiftorder + LEFT JOIN pdm_bi_workprocedure workprocedure ON workprocedure.workprocedure_id = shiftorder.workprocedure_id + WHERE + workprocedure.workprocedure_code IN ( '07', '06', '02' ) + OPTION 输入.begin_time <> "" + shiftorder.planproduceend_date >= 输入.begin_time + ENDOPTION + OPTION 输入.end_time <> "" + shiftorder.planproduceend_date <= 输入.end_time + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + +IF 输入.flag = "8" + QUERY + SELECT + workprocedure.worksection_type_scode, + sum( real_qty ) AS real_qty, + sum( plan_qty ) AS plan_qty, + CONVERT ( sum( shiftorder.real_qty ) / sum( shiftorder.plan_qty ), DECIMAL ( 10, 2 ) ) * 100 AS finish_rate + FROM + mps_bd_produceshiftorder shiftorder + LEFT JOIN pdm_bi_workprocedure workprocedure ON shiftorder.workprocedure_id = workprocedure.workprocedure_id + LEFT JOIN sys_dict_detail sys ON sys.VALUE= workprocedure.worksection_type_scode AND sys.dict_id = '87' + WHERE + workprocedure.workprocedure_code IN ( '07', '06', '02' ) + OPTION 输入.produce_date <> "" + shiftorder.produce_date >= 输入.produce_date + ENDOPTION + GROUP BY worksection_type_scode + ENDSELECT + ENDQUERY +ENDIF + +IF 输入.flag = "9" + QUERY + SELECT + sum( real_qty ) AS real_qty + FROM + mps_bd_produceshiftorder shiftorder + LEFT JOIN pdm_bi_workprocedure workprocedure ON shiftorder.workprocedure_id = workprocedure.workprocedure_id + LEFT JOIN sys_dict_detail sys ON sys.VALUE= workprocedure.worksection_type_scode AND sys.dict_id = '87' + WHERE + workprocedure.workprocedure_code IN ( '07', '06', '02' ) + OPTION 输入.produce_date <> "" + shiftorder.produce_date >= 输入.produce_date + ENDOPTION + GROUP BY worksection_type_scode + ENDSELECT + ENDQUERY +ENDIF + +IF 输入.flag = "10" + QUERY + SELECT + shiftorder.material_id, + material.material_code, + material.material_name, + sum( real_qty ) AS real_qty + FROM + mps_bd_produceshiftorder shiftorder + LEFT JOIN pdm_bi_workprocedure workprocedure ON shiftorder.workprocedure_id = workprocedure.workprocedure_id + LEFT JOIN sys_dict_detail sys ON sys.VALUE= workprocedure.worksection_type_scode AND sys.dict_id = '87' + left join md_me_materialbase material on material.material_id =shiftorder.material_id + WHERE + workprocedure.workprocedure_code IN ( '07', '06', '02' ) + OPTION 输入.produce_date <> "" + shiftorder.produce_date >= 输入.produce_date + ENDOPTION + GROUP BY + shiftorder.material_id, + material.material_code, + material.material_name + ORDER BY real_qty + LIMIT 0,10 + ENDSELECT + ENDQUERY +ENDIF + + +IF 输入.flag = "11" + QUERY + SELECT + shiftorder.produceorder_code, + shiftorder.material_id, + material.material_code, + material.material_name, + material.material_spec, + shiftorder. real_qty, + shiftorder.plan_qty, + shiftorder.plan_qty -shiftorder. real_qty as gap_qty, + curdate() as date + FROM + mps_bd_produceshiftorder shiftorder + LEFT JOIN pdm_bi_workprocedure workprocedure ON shiftorder.workprocedure_id = workprocedure.workprocedure_id + LEFT JOIN sys_dict_detail sys ON sys.VALUE= workprocedure.worksection_type_scode AND sys.dict_id = '87' + left join md_me_materialbase material on material.material_id =shiftorder.material_id + WHERE + workprocedure.workprocedure_code IN ( '07', '06', '02' ) + and shiftorder. real_qty < shiftorder.plan_qty + OPTION 输入.produce_date <> "" + shiftorder.produce_date >= 输入.produce_date + ENDOPTION + ENDSELECT + ENDQUERY +ENDIF + + +IF 输入.flag = "12" + QUERY + SELECT + shiftorder.material_id, + material.material_code, + material.material_name, + sum( real_qty ) AS real_qty + FROM + mps_bd_produceshiftorder shiftorder + LEFT JOIN pdm_bi_workprocedure workprocedure ON shiftorder.workprocedure_id = workprocedure.workprocedure_id + LEFT JOIN sys_dict_detail sys ON sys.VALUE= workprocedure.worksection_type_scode AND sys.dict_id = '87' + left join md_me_materialbase material on material.material_id =shiftorder.material_id + WHERE + workprocedure.workprocedure_code IN ( '07', '06', '02' ) + OPTION 输入.produce_date <> "" + shiftorder.produce_date >= 输入.produce_date + ENDOPTION + GROUP BY + shiftorder.material_id, + material.material_code, + material.material_name + ORDER BY real_qty + LIMIT 0,9 + ENDSELECT + ENDQUERY +ENDIF + +IF 输入.flag = "13" + QUERY + SELECT + sum( real_qty ) AS real_qty + FROM + mps_bd_produceshiftorder shiftorder + LEFT JOIN pdm_bi_workprocedure workprocedure ON shiftorder.workprocedure_id = workprocedure.workprocedure_id + LEFT JOIN sys_dict_detail sys ON sys.VALUE= workprocedure.worksection_type_scode AND sys.dict_id = '87' + left join md_me_materialbase material on material.material_id =shiftorder.material_id + WHERE + workprocedure.workprocedure_code IN ( '07', '06', '02' ) + OPTION 输入.produce_date <> "" + shiftorder.produce_date >= 输入.produce_date + ENDOPTION + + ENDSELECT + ENDQUERY +ENDIF \ No newline at end of file diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/wql/ds_agv.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/wql/ds_agv.xls new file mode 100644 index 00000000..155a4176 Binary files /dev/null and b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/wql/ds_agv.xls differ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls index 5d61000f..2238c466 100644 Binary files a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls and b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls differ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java index 9279d4b8..db2bcb79 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java @@ -41,6 +41,7 @@ public class CallMaterialTask extends AbstractAcsTask { //更新任务状态为执行中 jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); jsonTask.put("update_time", DateUtil.now()); + jsonTask.put("car_no", taskObj.getString("car_no")); taskTab.update(jsonTask); HashMap map = new HashMap(); map.put("bill_status", "40"); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointToPointTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointToPointTask.java index 678b3770..39685b24 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointToPointTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointToPointTask.java @@ -25,6 +25,7 @@ public class PointToPointTask extends AbstractAcsTask { //1:执行中,2:完成 ,3:acs取消 if (status.equals("1")) { map.put("task_status", "03"); + map.put("car_no", taskObj.getString("car_no")); } if (status.equals("2")) { map.put("lock_type", "00"); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java index 5fc5504b..8b866203 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java @@ -50,6 +50,7 @@ public class SendMaterialTask extends AbstractAcsTask { //更新任务状态为执行中 jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); jsonTask.put("update_time", DateUtil.now()); + jsonTask.put("car_no", taskObj.getString("car_no")); taskTab.update(jsonTask); HashMap map = new HashMap(); map.put("update_optid", SecurityUtils.getCurrentUserId()); diff --git a/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml b/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml index 2ac642d6..34d80e13 100644 --- a/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml +++ b/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml @@ -1,5 +1,13 @@ server: port: 8010 + #海亮sqlserver +erp: + sqlserver: + enabled: false + jdbcurl: jdbc:sqlserver://192.168.81.156;DatabaseName=hllg + username: sa + password: root + #配置数据源 spring: @@ -9,9 +17,11 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true + #url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false + url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false username: ${DB_USER:root} #password: ${DB_PWD:P@ssw0rd} + #password: ${DB_PWD:root} password: ${DB_PWD:Root.123456} # 初始连接数 initial-size: 5 @@ -163,5 +173,5 @@ jetcache: maxIdle: 200 maxTotal: 1000 uri: - - redis://47.111.78.178:6379 + - redis://localhost:6379 diff --git a/mes/hd/nladmin-system/src/main/resources/config/application-prod.yml b/mes/hd/nladmin-system/src/main/resources/config/application-prod.yml index c589404a..59ed99d8 100644 --- a/mes/hd/nladmin-system/src/main/resources/config/application-prod.yml +++ b/mes/hd/nladmin-system/src/main/resources/config/application-prod.yml @@ -8,7 +8,7 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.225}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true + url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.225}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false username: ${DB_USER:root} password: ${DB_PWD:123456} #password: ${DB_PWD:Root.123456} @@ -162,5 +162,5 @@ jetcache: maxIdle: 200 maxTotal: 1000 uri: - - redis://192.168.46.225:6379 + - redis://localhost:6379 diff --git a/mes/hd/nladmin-system/src/main/resources/config/application.yml b/mes/hd/nladmin-system/src/main/resources/config/application.yml index 0e75762b..334120a2 100644 --- a/mes/hd/nladmin-system/src/main/resources/config/application.yml +++ b/mes/hd/nladmin-system/src/main/resources/config/application.yml @@ -2,7 +2,7 @@ spring: freemarker: check-template-location: false profiles: - active: prod + active: dev jackson: time-zone: GMT+8 data: diff --git a/mes/hd/nladmin-system/src/test/java/org/nl/Test3.java b/mes/hd/nladmin-system/src/test/java/org/nl/Test3.java index 35f90c6e..d375bbd5 100644 --- a/mes/hd/nladmin-system/src/test/java/org/nl/Test3.java +++ b/mes/hd/nladmin-system/src/test/java/org/nl/Test3.java @@ -1,5 +1,6 @@ package org.nl; +import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; @@ -12,6 +13,7 @@ import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; import java.util.Calendar; +import java.util.Date; public class Test3 extends BaseTest { @Test @@ -1055,8 +1057,78 @@ public class Test3 extends BaseTest { joo.put("lock_type","00"); joo.put("material_height_type","1"); structtable.insert(joo); + } + } + //同步产品工艺路线 + @Test + public void PDM_BI_ProductProcessRoute() { + WQLObject routeTable = WQLObject.getWQLObject("PDM_BI_ProductProcessRoute"); + WQLObject dtlTable = WQLObject.getWQLObject("PDM_BI_ProductProcessRouteDtl"); + WQLObject materialTable = WQLObject.getWQLObject("md_me_materialbase"); + JSONArray ja = WQL.getWO("QLK01").setDbname("dataSource2").addParam("flag", "15").process().getResultJSONArray(0); + for (int i = 0; i < ja.size(); i++) { + JSONObject jo = ja.getJSONObject(i); + String processroute_uuid = jo.getString("processroute_uuid"); + JSONArray dtlja = WQL.getWO("QLK01").setDbname("dataSource2").addParam("processroute_uuid",processroute_uuid).addParam("flag", "16").process().getResultJSONArray(0); + for (int j = 0; j