From 5a7195c580c1b8e4902b616bb7ac8de37c4f1404 Mon Sep 17 00:00:00 2001 From: gengby <858962040@qq.com> Date: Sat, 16 Jul 2022 11:41:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bigScreen/rest/BigScreenController.java | 42 ++- .../bigScreen/service/BigScreenService.java | 29 ++ .../bigScreen/service/dto/ShopinfoDto.java | 87 ++++++ .../ext/bigScreen/service/dto/StockDto.java | 36 +++ .../ext/bigScreen/service/dto/SupplyDto.java | 36 +++ .../service/dto/TodayandplannumDto.java | 30 ++ .../bigScreen/service/dto/YearinoutDto.java | 42 +++ .../service/impl/BigScreenServiceImpl.java | 256 +++++++++++++++++- .../nl/wms/ext/bigScreen/wql/bigScreen.xls | Bin 0 -> 224256 bytes mes/qd/.env.production | 4 +- mes/qd/public/config.js | 2 +- mes/qd/src/api/wms/bigScreen/bigScreen.js | 27 ++ mes/qd/src/main.js | 1 + .../views/wms/bigScreen/shopInfo/index.vue | 184 +++++++++++++ .../src/views/wms/bigScreen/stock/index.vue | 103 +++++++ .../src/views/wms/bigScreen/supply/index.vue | 103 +++++++ .../wms/bigScreen/todayAndPlanNum/index.vue | 106 ++++++++ .../views/wms/bigScreen/yearInOut/index.vue | 110 ++++++++ 18 files changed, 1182 insertions(+), 16 deletions(-) create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/ShopinfoDto.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/StockDto.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/SupplyDto.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/TodayandplannumDto.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/YearinoutDto.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/wql/bigScreen.xls create mode 100644 mes/qd/src/api/wms/bigScreen/bigScreen.js create mode 100644 mes/qd/src/views/wms/bigScreen/shopInfo/index.vue create mode 100644 mes/qd/src/views/wms/bigScreen/stock/index.vue create mode 100644 mes/qd/src/views/wms/bigScreen/supply/index.vue create mode 100644 mes/qd/src/views/wms/bigScreen/todayAndPlanNum/index.vue create mode 100644 mes/qd/src/views/wms/bigScreen/yearInOut/index.vue diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/rest/BigScreenController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/rest/BigScreenController.java index 1317dc01..1fd068ed 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/rest/BigScreenController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/rest/BigScreenController.java @@ -7,12 +7,12 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.annotation.Log; import org.nl.wms.ext.bigScreen.service.BigScreenService; +import org.springframework.data.domain.Pageable; 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 org.springframework.web.bind.annotation.*; + +import java.util.Map; /** * @author ludj @@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.RestController; @Api(tags = "监控大屏") @RequestMapping("/api/bigScreenScreen") @Slf4j +@CrossOrigin public class BigScreenController { private final BigScreenService bigScreenService; @PostMapping("/zk") @@ -44,4 +45,37 @@ public class BigScreenController { public ResponseEntity workScreen(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(bigScreenService.workScreen(whereJson), HttpStatus.OK); } + + + @GetMapping("/queryInfo") + @Log("查询中控室监控大屏手动设置数据") + @ApiOperation("查询中控室监控大屏手动设置数据") + public ResponseEntity queryInfo(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(bigScreenService.queryInfo(whereJson,page), HttpStatus.OK); + } + + @PostMapping("/add") + @Log("手动添加监控大屏数据") + @ApiOperation("手动添加监控大屏数据") + public ResponseEntity add(@RequestBody JSONObject param) throws Exception { + bigScreenService.add(param); + return new ResponseEntity<>( HttpStatus.OK); + } + + + @PutMapping("/edit") + @Log("手动修改监控大屏数据") + @ApiOperation("手动修改监控大屏数据") + public ResponseEntity edit(@RequestBody JSONObject param) throws Exception { + bigScreenService.edit(param); + return new ResponseEntity<>( HttpStatus.OK); + } + + @DeleteMapping("/del") + @Log("手动删除监控大屏数据") + @ApiOperation("手动删除监控大屏数据") + public ResponseEntity del(@RequestBody Long[] ids) throws Exception { + bigScreenService.del(ids); + return new ResponseEntity<>( HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/BigScreenService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/BigScreenService.java index 291481bc..5844b893 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/BigScreenService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/BigScreenService.java @@ -1,6 +1,9 @@ package org.nl.wms.ext.bigScreen.service; import com.alibaba.fastjson.JSONObject; +import org.springframework.data.domain.Pageable; + +import java.util.Map; /** * 中控室大屏看板 @@ -26,4 +29,30 @@ public interface BigScreenService { * @return */ public JSONObject workScreen(JSONObject param); + + /** + * 获取监控大屏静态设置的数据数据页面 + * + * @return + */ + public Map queryInfo(Map whereJson, Pageable page); + + /** + * 手动添加监控大屏数据 + * @param param + */ + public void add(JSONObject param) throws Exception; + + /** + * 手动修改监控大屏数据 + * @param param + */ + public void edit(JSONObject param) throws Exception; + + /** + * 手动删除监控大屏数据 + * @param ids + */ + public void del(Long[] ids) throws Exception; + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/ShopinfoDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/ShopinfoDto.java new file mode 100644 index 00000000..d5abb117 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/ShopinfoDto.java @@ -0,0 +1,87 @@ +package org.nl.wms.ext.bigScreen.service.dto; + +import lombok.Data; +import java.math.BigDecimal; +import java.io.Serializable; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + +/** + * @description / + * @author geng by + * @date 2022-07-14 + **/ +@Data +public class ShopinfoDto implements Serializable { + + /** 标识 */ + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) + private Long shop_id; + + /** 今日计划量(pcs) */ + private BigDecimal production_plan1; + + /** 今日计划量(吨) */ + private BigDecimal production_plan2; + + /** 今日入库数(吨) */ + private BigDecimal today_in2; + + /** 今日入库数(pcs) */ + private BigDecimal today_in1; + + /** 车间原材料数(吨) */ + private BigDecimal materials_num; + + /** 今日出库数(吨) */ + private BigDecimal today_out2; + + /** 今日出库数(pcs) */ + private BigDecimal today_out1; + + /** 昨日入库数(吨) */ + private BigDecimal yesterday_in2; + + /** 昨日入库数(pcs) */ + private BigDecimal yesterday_in1; + + /** 昨日出库数(吨) */ + private BigDecimal yesterday_out2; + + /** 昨日出库数(pcs) */ + private BigDecimal yesterday_out1; + + /** 车间人数 */ + private BigDecimal person_num; + + /** 车间成品数(吨) */ + private BigDecimal product_num2; + + /** 车间成品数(pcs) */ + private BigDecimal product_num1; + + /** 车间在制品数(吨) */ + private BigDecimal processed_num2; + + /** 车间在制品数(pcs) */ + private BigDecimal processed_num1; + + /** 车间工艺路线数 */ + private BigDecimal route_num; + + /** 车间设备数 */ + private BigDecimal device_num; + + /** 今日生产量(pcs) */ + private BigDecimal production_today1; + + /** 今日生产量(吨) */ + private BigDecimal production_today2; + + /** 完成率 */ + private BigDecimal completion_rate; + + /** 更新时间 */ + private String b_date; +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/StockDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/StockDto.java new file mode 100644 index 00000000..13f4b5d1 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/StockDto.java @@ -0,0 +1,36 @@ +package org.nl.wms.ext.bigScreen.service.dto; + +import lombok.Data; +import java.math.BigDecimal; +import java.io.Serializable; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + +/** + * @description / + * @author geng by + * @date 2022-07-14 + **/ +@Data +public class StockDto implements Serializable { + + /** 标识 */ + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) + private Long id; + + /** 日期 */ + private String date; + + /** 不足的 */ + private BigDecimal not_enough; + + /** 库容量 */ + private BigDecimal storagecapacity_weight; + + /** 库存量 */ + private BigDecimal repertory; + + /** 足够的 */ + private BigDecimal enough; +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/SupplyDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/SupplyDto.java new file mode 100644 index 00000000..e26118e1 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/SupplyDto.java @@ -0,0 +1,36 @@ +package org.nl.wms.ext.bigScreen.service.dto; + +import lombok.Data; +import java.math.BigDecimal; +import java.io.Serializable; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + +/** + * @description / + * @author geng by + * @date 2022-07-14 + **/ +@Data +public class SupplyDto implements Serializable { + + /** 标识 */ + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) + private Long id; + + /** 日期 */ + private String date; + + /** 不足的 */ + private BigDecimal not_enough; + + /** 供 */ + private BigDecimal planinventory_weight; + + /** 需 */ + private BigDecimal need_num; + + /** 足够的 */ + private BigDecimal enough; +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/TodayandplannumDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/TodayandplannumDto.java new file mode 100644 index 00000000..e68e473c --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/TodayandplannumDto.java @@ -0,0 +1,30 @@ +package org.nl.wms.ext.bigScreen.service.dto; + +import lombok.Data; +import java.math.BigDecimal; +import java.io.Serializable; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + +/** + * @description / + * @author geng by + * @date 2022-07-14 + **/ +@Data +public class TodayandplannumDto implements Serializable { + + /** 标识 */ + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) + private Long pro_id; + + /** 今日产量 */ + private BigDecimal num_today; + + /** 今日产品名称 */ + private String name_today; + + /** 计划数量 */ + private BigDecimal num_plan; +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/YearinoutDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/YearinoutDto.java new file mode 100644 index 00000000..1cc198e1 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/dto/YearinoutDto.java @@ -0,0 +1,42 @@ +package org.nl.wms.ext.bigScreen.service.dto; + +import lombok.Data; +import java.math.BigDecimal; +import java.io.Serializable; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + +/** + * @description / + * @author geng by + * @date 2022-07-14 + **/ +@Data +public class YearinoutDto implements Serializable { + + /** 标识 */ + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) + private Long id; + + /** 车道工序数 */ + private BigDecimal process_num; + + /** 生产规格数 */ + private BigDecimal product_num; + + /** 总设计年产量(pcs) */ + private BigDecimal total_input1; + + /** 总设计年产量(吨) */ + private BigDecimal total_input2; + + /** 一期设计年产量(pcs) */ + private BigDecimal year_output1; + + /** 一期设计年产量(吨) */ + private BigDecimal year_output2; + + /** 日期 */ + private String b_date; +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/impl/BigScreenServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/impl/BigScreenServiceImpl.java index b26b9ae4..37ee3512 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/impl/BigScreenServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/service/impl/BigScreenServiceImpl.java @@ -1,30 +1,81 @@ package org.nl.wms.ext.bigScreen.service.impl; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.MapUtils; +import org.nl.start.auto.initial.ApplicationAutoInitial; import org.nl.wms.ext.bigScreen.service.BigScreenService; +import org.nl.wms.ext.bigScreen.service.dto.*; +import org.nl.wql.core.bean.ResultBean; +import org.nl.wql.core.bean.WQLObject; +import org.nl.wql.util.WqlUtil; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.util.*; + @Service @RequiredArgsConstructor @Slf4j -public class BigScreenServiceImpl implements BigScreenService { +public class BigScreenServiceImpl implements BigScreenService, ApplicationAutoInitial { + List todayandplannumDtos = new ArrayList<>(); + YearinoutDto yearinoutDtos = new YearinoutDto(); + List supplyDtos = new ArrayList<>(); + List stockDtos = new ArrayList<>(); + ShopinfoDto shopinfoDtos = new ShopinfoDto(); + @Override public JSONObject getData(JSONObject param) { - String str = "{\"production\":[{\"name_today\":\"5/8弯头\",\"materialprocess_series\":\"1002\",\"num_plan\":\"50000\",\"num_today\":\"38931\"},{\"name_today\":\"7/8弯头\",\"materialprocess_series\":\"1102\",\"num_plan\":\"20000\",\"num_today\":\"15639\"},{\"name_today\":\"15三通\",\"materialprocess_series\":\"1501\",\"num_plan\":\"0\",\"num_today\":\"0\"},{\"name_today\":\"15弯头\",\"materialprocess_series\":\"1502\",\"num_plan\":\"50000\",\"num_today\":\"38279\"},{\"name_today\":\"15直接\",\"materialprocess_series\":\"1503\",\"num_plan\":\"0\",\"num_today\":\"0\"},{\"name_today\":\"22三通\",\"materialprocess_series\":\"2201\",\"num_plan\":\"0\",\"num_today\":\"0\"},{\"name_today\":\"22弯头\",\"materialprocess_series\":\"2202\",\"num_plan\":\"20000\",\"num_today\":\"15199\"},{\"name_today\":\"22直接\",\"materialprocess_series\":\"2203\",\"num_plan\":\"0\",\"num_today\":\"0\"},{\"name_today\":\"22大小头\",\"materialprocess_series\":\"2204\",\"num_plan\":\"0\",\"num_today\":\"0\"},{\"name_today\":\"28三通\",\"materialprocess_series\":\"2801\",\"num_plan\":\"0\",\"num_today\":\"0\"},{\"name_today\":\"28弯头\",\"materialprocess_series\":\"2802\",\"num_plan\":\"0\",\"num_today\":\"0\"},{\"name_today\":\"28直接\",\"materialprocess_series\":\"2803\",\"num_plan\":\"0\",\"num_today\":\"0\"},{\"name_today\":\"28大小头\",\"materialprocess_series\":\"2804\",\"num_plan\":\"0\",\"num_today\":\"0\"},{\"name_today\":\"35大小头\",\"materialprocess_series\":\"3504\",\"num_plan\":\"0\",\"num_today\":\"0\"},{\"name_today\":\"42大小头\",\"materialprocess_series\":\"4204\",\"num_plan\":\"0\",\"num_today\":\"0\"},{\"name_today\":\"54大小头\",\"materialprocess_series\":\"5404\",\"num_plan\":\"0\",\"num_today\":\"0\"}],\"shopData\":{\"production_today1\":\"108048\",\"production_today2\":\"2.543361\",\"production_plan1\":\"140000\",\"production_plan2\":\"3.295243\",\"person_num\":\"45\",\"device_num\":\"300\",\"route_num\":\"257\",\"materials_num\":\"20.000000\",\"processed_num1\":\"170000\",\"processed_num2\":\"4.000000\",\"product_num1\":\"335000\",\"product_num2\":\"7.000000\",\"today_in1\":\"345146\",\"today_in2\":\"7.412000\",\"today_out1\":\"247700\",\"today_out2\":\"5.320000\",\"yesterday_in1\":\"393231\",\"yesterday_in2\":\"8.926000\",\"yesterday_out1\":\"291125\",\"yesterday_out2\":\"6.450000\",\"b_date\":\"2022-07-12\",\"completion_rate\":\"77.18\"},\"data_bar1\":{\"xDate\":[{\"date\":\"2022-07-12\",\"planinventory_weight\":\"5.000000\",\"need_num\":\"4.500000\",\"enough\":\"5.000000\",\"not_enough\":\"0.000000\"}]},\"data_bar2\":{\"xDate\":[{\"date\":\"2022-06-29\",\"storagecapacity_weight\":\"225.000000\",\"repertory\":\"56.000000\",\"enough\":\"225.000000\",\"not_enough\":\"0.000000\"},{\"date\":\"2022-06-30\",\"storagecapacity_weight\":\"225.000000\",\"repertory\":\"56.000000\",\"enough\":\"225.000000\",\"not_enough\":\"0.000000\"},{\"date\":\"2022-07-01\",\"storagecapacity_weight\":\"225.000000\",\"repertory\":\"56.000000\",\"enough\":\"225.000000\",\"not_enough\":\"0.000000\"},{\"date\":\"2022-07-02\",\"storagecapacity_weight\":\"225.000000\",\"repertory\":\"56.000000\",\"enough\":\"225.000000\",\"not_enough\":\"0.000000\"},{\"date\":\"2022-07-03\",\"storagecapacity_weight\":\"225.000000\",\"repertory\":\"56.000000\",\"enough\":\"225.000000\",\"not_enough\":\"0.000000\"},{\"date\":\"2022-07-04\",\"storagecapacity_weight\":\"225.000000\",\"repertory\":\"56.000000\",\"enough\":\"225.000000\",\"not_enough\":\"0.000000\"},{\"date\":\"2022-07-05\",\"storagecapacity_weight\":\"225.000000\",\"repertory\":\"56.000000\",\"enough\":\"225.000000\",\"not_enough\":\"0.000000\"},{\"date\":\"2022-07-06\",\"storagecapacity_weight\":\"225.000000\",\"repertory\":\"56.000000\",\"enough\":\"225.000000\",\"not_enough\":\"0.000000\"},{\"date\":\"2022-07-07\",\"storagecapacity_weight\":\"225.000000\",\"repertory\":\"56.000000\",\"enough\":\"225.000000\",\"not_enough\":\"0.000000\"},{\"date\":\"2022-07-08\",\"storagecapacity_weight\":\"225.000000\",\"repertory\":\"56.000000\",\"enough\":\"225.000000\",\"not_enough\":\"0.000000\"},{\"date\":\"2022-07-09\",\"storagecapacity_weight\":\"225.000000\",\"repertory\":\"56.000000\",\"enough\":\"225.000000\",\"not_enough\":\"0.000000\"},{\"date\":\"2022-07-10\",\"storagecapacity_weight\":\"225.000000\",\"repertory\":\"56.000000\",\"enough\":\"225.000000\",\"not_enough\":\"0.000000\"},{\"date\":\"2022-07-11\",\"storagecapacity_weight\":\"225.000000\",\"repertory\":\"56.000000\",\"enough\":\"225.000000\",\"not_enough\":\"0.000000\"},{\"date\":\"2022-07-12\",\"storagecapacity_weight\":\"225.000000\",\"repertory\":\"56.000000\",\"enough\":\"225.000000\",\"not_enough\":\"0.000000\"}]}}"; + Integer todayPcsSum = 0; + Integer planPcsSum = 0; + JSONObject map = new JSONObject(); + Random random = new Random(); + for (int i = 0; i < todayandplannumDtos.size(); i++) { + TodayandplannumDto todayandplannumDto = todayandplannumDtos.get(i); + int compareTo = todayandplannumDto.getNum_plan().compareTo(BigDecimal.ZERO); + if (compareTo != 0) { + todayandplannumDto.setNum_today(todayandplannumDto.getNum_today().add(new BigDecimal(random.nextInt(3) + 3))); + } + todayPcsSum += Integer.parseInt(todayandplannumDto.getNum_today().toString()); + planPcsSum += Integer.parseInt(todayandplannumDto.getNum_plan().toString()); + } + map.put("production", todayandplannumDtos); + shopinfoDtos.setProduction_today1(BigDecimal.valueOf(todayPcsSum)); + shopinfoDtos.setProduction_plan1(BigDecimal.valueOf(planPcsSum)); + shopinfoDtos.setCompletion_rate(shopinfoDtos.getProduction_today1().divide(shopinfoDtos.getProduction_plan1(), 4, BigDecimal.ROUND_HALF_UP).movePointRight(2)); + map.put("shopData", shopinfoDtos); + Object[] objects = stockDtos.toArray(); + JSONObject st = new JSONObject(); + st.put("xDate", objects); + Object[] objects1 = supplyDtos.toArray(); + JSONObject su = new JSONObject(); + su.put("xDate", objects1); + map.put("data_bar2", st); + map.put("data_bar1", su); JSONObject returnjo = new JSONObject(); returnjo.put("code", "1"); returnjo.put("desc", "查询成功!"); - returnjo.put("result", JSON.parseObject(str)); + returnjo.put("result", map); return returnjo; } @Override public JSONObject query3Dcartoon(JSONObject param) { - String str="{\"desc\":\"查询成功\",\"code\":\"1\",\"result\":{\"total_input1\":\"17500.00\",\"total_input2\":\"3500.00\",\"year_output1\":\"25000.00\",\"year_output2\":\"5000.00\",\"product_num\":\"205\",\"process_num\":\"8\",\"b_date\":\"2019-05-05\"}}"; - return JSON.parseObject(str); + //String str="{\"desc\":\"查询成功\",\"code\":\"1\",\"result\":{\"total_input1\":\"17500.00\",\"total_input2\":\"3500.00\",\"year_output1\":\"25000.00\",\"year_output2\":\"5000.00\",\"product_num\":\"205\",\"process_num\":\"8\",\"b_date\":\"2019-05-05\"}}"; + JSONObject returnjo = new JSONObject(); + returnjo.put("code", "1"); + returnjo.put("desc", "查询成功!"); + returnjo.put("result", yearinoutDtos); + return returnjo; } @Override @@ -37,21 +88,208 @@ public class BigScreenServiceImpl implements BigScreenService { } //2车间旋压看板 if ("2".equals(web_flag)) { - str="{\"code\":\"1\",\"desc\":\"查询成功\",\"result\":{\"screenname\":\"车间旋压看板\",\"arr1\":[{\"workprocedure_name\":\"旋压下料\",\"device_runningnum\":\"0\",\"device_errornum\":\"0\",\"device_waitingnum\":\"0\",\"shutdownnum\":\"12\",\"device_num\":\"12\"},{\"workprocedure_name\":\"滚槽/打点\",\"device_runningnum\":\"0\",\"device_errornum\":\"0\",\"device_waitingnum\":\"0\",\"shutdownnum\":\"3\",\"device_num\":\"3\"},{\"workprocedure_name\":\"直管有屑下料\",\"device_runningnum\":\"0\",\"device_errornum\":\"0\",\"device_waitingnum\":\"0\",\"shutdownnum\":\"3\",\"device_num\":\"3\"}],\"arr2\":[{\"produceschedule_date\":\"2021-05-06\",\"produceorder_code\":\"0506009\",\"workprocedure_name\":\"推弯一体机加工\",\"sysdic_name\":\"弯头工段\",\"worksection_type_scode\":\"01\",\"finishproduce_qty\":\"0\",\"produce_qty\":\"4200\",\"waiting_qty\":\"4200\",\"progress_qty\":\"0\"},{\"produceschedule_date\":\"2020-09-16\",\"produceorder_code\":\"0916014\",\"workprocedure_name\":\"盘管无屑下料\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"3500\",\"produce_qty\":\"3500\",\"waiting_qty\":\"0\",\"progress_qty\":\"100\"},{\"produceschedule_date\":\"2020-12-31\",\"produceorder_code\":\"1231013\",\"workprocedure_name\":\"三通拉伸\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"790\",\"produce_qty\":\"3500\",\"waiting_qty\":\"2710\",\"progress_qty\":\"23\"},{\"produceschedule_date\":\"2020-05-06\",\"produceorder_code\":\"0506009\",\"workprocedure_name\":\"三通拉伸\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"4225\",\"produce_qty\":\"6000\",\"waiting_qty\":\"1775\",\"progress_qty\":\"70\"}],\"jo3\":{\"sumproduce_qty\":\"0\",\"sumfinishproduce_qty\":\"0\",\"sumproducing_qty\":\"0\",\"sumweek_qty\":\"0\"},\"arr4\":[],\"arr5\":[[\"product\",\"昨日\",\"今日\"],[\"旋压下料\",\"1\",\"0\"],[\"滚槽/打点\",\"0\",\"0\"],[\"直管有屑下料\",\"0\",\"0\"]],\"jo6\":{\"sumproduce_orderqty\":\"\",\"sumfinishproduce_orderqty\":\"\",\"sumproducing_orderqty\":\"\"},\"arr7\":[{\"count\":\"0\",\"date\":\"07-10\"},{\"count\":\"0\",\"date\":\"07-11\"},{\"count\":\"0\",\"date\":\"07-12\"},{\"count\":\"0\",\"date\":\"07-13\"},{\"count\":\"0\",\"date\":\"07-14\"},{\"count\":\"0\",\"date\":\"07-15\"},{\"count\":\"0\",\"date\":\"07-16\"}]}}"; + str = "{\"code\":\"1\",\"desc\":\"查询成功\",\"result\":{\"screenname\":\"车间旋压看板\",\"arr1\":[{\"workprocedure_name\":\"旋压下料\",\"device_runningnum\":\"0\",\"device_errornum\":\"0\",\"device_waitingnum\":\"0\",\"shutdownnum\":\"12\",\"device_num\":\"12\"},{\"workprocedure_name\":\"滚槽/打点\",\"device_runningnum\":\"0\",\"device_errornum\":\"0\",\"device_waitingnum\":\"0\",\"shutdownnum\":\"3\",\"device_num\":\"3\"},{\"workprocedure_name\":\"直管有屑下料\",\"device_runningnum\":\"0\",\"device_errornum\":\"0\",\"device_waitingnum\":\"0\",\"shutdownnum\":\"3\",\"device_num\":\"3\"}],\"arr2\":[{\"produceschedule_date\":\"2021-05-06\",\"produceorder_code\":\"0506009\",\"workprocedure_name\":\"推弯一体机加工\",\"sysdic_name\":\"弯头工段\",\"worksection_type_scode\":\"01\",\"finishproduce_qty\":\"0\",\"produce_qty\":\"4200\",\"waiting_qty\":\"4200\",\"progress_qty\":\"0\"},{\"produceschedule_date\":\"2020-09-16\",\"produceorder_code\":\"0916014\",\"workprocedure_name\":\"盘管无屑下料\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"3500\",\"produce_qty\":\"3500\",\"waiting_qty\":\"0\",\"progress_qty\":\"100\"},{\"produceschedule_date\":\"2020-12-31\",\"produceorder_code\":\"1231013\",\"workprocedure_name\":\"三通拉伸\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"790\",\"produce_qty\":\"3500\",\"waiting_qty\":\"2710\",\"progress_qty\":\"23\"},{\"produceschedule_date\":\"2020-05-06\",\"produceorder_code\":\"0506009\",\"workprocedure_name\":\"三通拉伸\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"4225\",\"produce_qty\":\"6000\",\"waiting_qty\":\"1775\",\"progress_qty\":\"70\"}],\"jo3\":{\"sumproduce_qty\":\"0\",\"sumfinishproduce_qty\":\"0\",\"sumproducing_qty\":\"0\",\"sumweek_qty\":\"0\"},\"arr4\":[],\"arr5\":[[\"product\",\"昨日\",\"今日\"],[\"旋压下料\",\"1\",\"0\"],[\"滚槽/打点\",\"0\",\"0\"],[\"直管有屑下料\",\"0\",\"0\"]],\"jo6\":{\"sumproduce_orderqty\":\"\",\"sumfinishproduce_orderqty\":\"\",\"sumproducing_orderqty\":\"\"},\"arr7\":[{\"count\":\"0\",\"date\":\"07-10\"},{\"count\":\"0\",\"date\":\"07-11\"},{\"count\":\"0\",\"date\":\"07-12\"},{\"count\":\"0\",\"date\":\"07-13\"},{\"count\":\"0\",\"date\":\"07-14\"},{\"count\":\"0\",\"date\":\"07-15\"},{\"count\":\"0\",\"date\":\"07-16\"}]}}"; } //3车间三通看板 if ("3".equals(web_flag)) { - str="{\"code\":\"1\",\"desc\":\"查询成功\",\"result\":{\"screenname\":\"车间三通看板\",\"arr1\":[{\"workprocedure_name\":\"三通拉伸\",\"device_runningnum\":\"1\",\"device_errornum\":\"0\",\"device_waitingnum\":\"1\",\"shutdownnum\":\"7\",\"device_num\":\"9\"},{\"workprocedure_name\":\"三通一体机加工\",\"device_runningnum\":\"1\",\"device_errornum\":\"0\",\"device_waitingnum\":\"0\",\"shutdownnum\":\"8\",\"device_num\":\"9\"}],\"arr2\":[{\"produceschedule_date\":\"2021-05-06\",\"produceorder_code\":\"0506009\",\"workprocedure_name\":\"推弯一体机加工\",\"sysdic_name\":\"弯头工段\",\"worksection_type_scode\":\"01\",\"finishproduce_qty\":\"0\",\"produce_qty\":\"4200\",\"waiting_qty\":\"4200\",\"progress_qty\":\"0\"},{\"produceschedule_date\":\"2020-09-16\",\"produceorder_code\":\"0916014\",\"workprocedure_name\":\"盘管无屑下料\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"3500\",\"produce_qty\":\"3500\",\"waiting_qty\":\"0\",\"progress_qty\":\"100\"},{\"produceschedule_date\":\"2020-12-31\",\"produceorder_code\":\"1231013\",\"workprocedure_name\":\"三通拉伸\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"790\",\"produce_qty\":\"3500\",\"waiting_qty\":\"2710\",\"progress_qty\":\"23\"},{\"produceschedule_date\":\"2020-05-06\",\"produceorder_code\":\"0506009\",\"workprocedure_name\":\"三通拉伸\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"4225\",\"produce_qty\":\"6000\",\"waiting_qty\":\"1775\",\"progress_qty\":\"70\"}],\"jo3\":{\"sumproduce_qty\":\"0\",\"sumfinishproduce_qty\":\"0\",\"sumproducing_qty\":\"0\",\"sumweek_qty\":\"0\"},\"arr4\":[{\"device_name\":\"L22-3\",\"devicestatus_name\":\"专机故障报警\",\"update_date\":\" 00:00:29\"},{\"device_name\":\"L22-1\",\"devicestatus_name\":\"专机故障报警\",\"update_date\":\" 00:00:29\"},{\"device_name\":\"L15-4\",\"devicestatus_name\":\"专机故障报警\",\"update_date\":\" 00:00:29\"},{\"device_name\":\"L15-3\",\"devicestatus_name\":\"专机故障报警\",\"update_date\":\" 00:00:28\"}],\"arr5\":[[\"product\",\"昨日\",\"今日\"],[\"三通\",\"4\",\"4\"],[\"三通一体机\",\"0\",\"0\"]],\"jo6\":{\"sumproduce_orderqty\":\"\",\"sumfinishproduce_orderqty\":\"\",\"sumproducing_orderqty\":\"\"},\"arr7\":[{\"count\":\"0\",\"date\":\"07-10\"},{\"count\":\"0\",\"date\":\"07-11\"},{\"count\":\"0\",\"date\":\"07-12\"},{\"count\":\"0\",\"date\":\"07-13\"},{\"count\":\"0\",\"date\":\"07-14\"},{\"count\":\"0\",\"date\":\"07-15\"},{\"count\":\"0\",\"date\":\"07-16\"}]}}"; + str = "{\"code\":\"1\",\"desc\":\"查询成功\",\"result\":{\"screenname\":\"车间三通看板\",\"arr1\":[{\"workprocedure_name\":\"三通拉伸\",\"device_runningnum\":\"1\",\"device_errornum\":\"0\",\"device_waitingnum\":\"1\",\"shutdownnum\":\"7\",\"device_num\":\"9\"},{\"workprocedure_name\":\"三通一体机加工\",\"device_runningnum\":\"1\",\"device_errornum\":\"0\",\"device_waitingnum\":\"0\",\"shutdownnum\":\"8\",\"device_num\":\"9\"}],\"arr2\":[{\"produceschedule_date\":\"2021-05-06\",\"produceorder_code\":\"0506009\",\"workprocedure_name\":\"推弯一体机加工\",\"sysdic_name\":\"弯头工段\",\"worksection_type_scode\":\"01\",\"finishproduce_qty\":\"0\",\"produce_qty\":\"4200\",\"waiting_qty\":\"4200\",\"progress_qty\":\"0\"},{\"produceschedule_date\":\"2020-09-16\",\"produceorder_code\":\"0916014\",\"workprocedure_name\":\"盘管无屑下料\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"3500\",\"produce_qty\":\"3500\",\"waiting_qty\":\"0\",\"progress_qty\":\"100\"},{\"produceschedule_date\":\"2020-12-31\",\"produceorder_code\":\"1231013\",\"workprocedure_name\":\"三通拉伸\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"790\",\"produce_qty\":\"3500\",\"waiting_qty\":\"2710\",\"progress_qty\":\"23\"},{\"produceschedule_date\":\"2020-05-06\",\"produceorder_code\":\"0506009\",\"workprocedure_name\":\"三通拉伸\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"4225\",\"produce_qty\":\"6000\",\"waiting_qty\":\"1775\",\"progress_qty\":\"70\"}],\"jo3\":{\"sumproduce_qty\":\"0\",\"sumfinishproduce_qty\":\"0\",\"sumproducing_qty\":\"0\",\"sumweek_qty\":\"0\"},\"arr4\":[{\"device_name\":\"L22-3\",\"devicestatus_name\":\"专机故障报警\",\"update_date\":\" 00:00:29\"},{\"device_name\":\"L22-1\",\"devicestatus_name\":\"专机故障报警\",\"update_date\":\" 00:00:29\"},{\"device_name\":\"L15-4\",\"devicestatus_name\":\"专机故障报警\",\"update_date\":\" 00:00:29\"},{\"device_name\":\"L15-3\",\"devicestatus_name\":\"专机故障报警\",\"update_date\":\" 00:00:28\"}],\"arr5\":[[\"product\",\"昨日\",\"今日\"],[\"三通\",\"4\",\"4\"],[\"三通一体机\",\"0\",\"0\"]],\"jo6\":{\"sumproduce_orderqty\":\"\",\"sumfinishproduce_orderqty\":\"\",\"sumproducing_orderqty\":\"\"},\"arr7\":[{\"count\":\"0\",\"date\":\"07-10\"},{\"count\":\"0\",\"date\":\"07-11\"},{\"count\":\"0\",\"date\":\"07-12\"},{\"count\":\"0\",\"date\":\"07-13\"},{\"count\":\"0\",\"date\":\"07-14\"},{\"count\":\"0\",\"date\":\"07-15\"},{\"count\":\"0\",\"date\":\"07-16\"}]}}"; } //4车间推弯看板 if ("4".equals(web_flag)) { - str="{\"code\":\"1\",\"desc\":\"查询成功\",\"result\":{\"screenname\":\"车间推弯看板\",\"arr1\":[{\"workprocedure_name\":\"推弯一体机加工\",\"device_runningnum\":\"3\",\"device_errornum\":\"9\",\"device_waitingnum\":\"3\",\"shutdownnum\":\"16\",\"device_num\":\"31\"}],\"arr2\":[{\"produceschedule_date\":\"2021-05-06\",\"produceorder_code\":\"0506009\",\"workprocedure_name\":\"推弯一体机加工\",\"sysdic_name\":\"弯头工段\",\"worksection_type_scode\":\"01\",\"finishproduce_qty\":\"0\",\"produce_qty\":\"4200\",\"waiting_qty\":\"4200\",\"progress_qty\":\"0\"},{\"produceschedule_date\":\"2020-09-16\",\"produceorder_code\":\"0916014\",\"workprocedure_name\":\"盘管无屑下料\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"3500\",\"produce_qty\":\"3500\",\"waiting_qty\":\"0\",\"progress_qty\":\"100\"},{\"produceschedule_date\":\"2020-12-31\",\"produceorder_code\":\"1231013\",\"workprocedure_name\":\"三通拉伸\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"790\",\"produce_qty\":\"3500\",\"waiting_qty\":\"2710\",\"progress_qty\":\"23\"},{\"produceschedule_date\":\"2020-05-06\",\"produceorder_code\":\"0506009\",\"workprocedure_name\":\"三通拉伸\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"4225\",\"produce_qty\":\"6000\",\"waiting_qty\":\"1775\",\"progress_qty\":\"70\"}],\"jo3\":{\"sumproduce_qty\":\"31952\",\"sumfinishproduce_qty\":\"108048\",\"sumproducing_qty\":\"0\",\"sumweek_qty\":\"140000\"},\"arr4\":[],\"arr5\":[[\"product\",\"昨日\",\"今日\"],[\"推弯一体机加工\",\"0\",\"0\"]],\"jo6\":{\"sumproduce_orderqty\":\"\",\"sumfinishproduce_orderqty\":\"\",\"sumproducing_orderqty\":\"\"},\"arr7\":[{\"count\":\"0\",\"date\":\"07-10\"},{\"count\":\"0\",\"date\":\"07-11\"},{\"count\":\"0\",\"date\":\"07-12\"},{\"count\":\"0\",\"date\":\"07-13\"},{\"count\":\"0\",\"date\":\"07-14\"},{\"count\":\"0\",\"date\":\"07-15\"},{\"count\":\"0\",\"date\":\"07-16\"}]}}"; + str = "{\"code\":\"1\",\"desc\":\"查询成功\",\"result\":{\"screenname\":\"车间推弯看板\",\"arr1\":[{\"workprocedure_name\":\"推弯一体机加工\",\"device_runningnum\":\"3\",\"device_errornum\":\"9\",\"device_waitingnum\":\"3\",\"shutdownnum\":\"16\",\"device_num\":\"31\"}],\"arr2\":[{\"produceschedule_date\":\"2021-05-06\",\"produceorder_code\":\"0506009\",\"workprocedure_name\":\"推弯一体机加工\",\"sysdic_name\":\"弯头工段\",\"worksection_type_scode\":\"01\",\"finishproduce_qty\":\"0\",\"produce_qty\":\"4200\",\"waiting_qty\":\"4200\",\"progress_qty\":\"0\"},{\"produceschedule_date\":\"2020-09-16\",\"produceorder_code\":\"0916014\",\"workprocedure_name\":\"盘管无屑下料\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"3500\",\"produce_qty\":\"3500\",\"waiting_qty\":\"0\",\"progress_qty\":\"100\"},{\"produceschedule_date\":\"2020-12-31\",\"produceorder_code\":\"1231013\",\"workprocedure_name\":\"三通拉伸\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"790\",\"produce_qty\":\"3500\",\"waiting_qty\":\"2710\",\"progress_qty\":\"23\"},{\"produceschedule_date\":\"2020-05-06\",\"produceorder_code\":\"0506009\",\"workprocedure_name\":\"三通拉伸\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"4225\",\"produce_qty\":\"6000\",\"waiting_qty\":\"1775\",\"progress_qty\":\"70\"}],\"jo3\":{\"sumproduce_qty\":\"31952\",\"sumfinishproduce_qty\":\"108048\",\"sumproducing_qty\":\"0\",\"sumweek_qty\":\"140000\"},\"arr4\":[],\"arr5\":[[\"product\",\"昨日\",\"今日\"],[\"推弯一体机加工\",\"0\",\"0\"]],\"jo6\":{\"sumproduce_orderqty\":\"\",\"sumfinishproduce_orderqty\":\"\",\"sumproducing_orderqty\":\"\"},\"arr7\":[{\"count\":\"0\",\"date\":\"07-10\"},{\"count\":\"0\",\"date\":\"07-11\"},{\"count\":\"0\",\"date\":\"07-12\"},{\"count\":\"0\",\"date\":\"07-13\"},{\"count\":\"0\",\"date\":\"07-14\"},{\"count\":\"0\",\"date\":\"07-15\"},{\"count\":\"0\",\"date\":\"07-16\"}]}}"; } //6车间刻字包装看板 if ("6".equals(web_flag)) { - str="{\"code\":\"1\",\"desc\":\"查询成功\",\"result\":{\"screenname\":\"车间刻字包装看板\",\"arr1\":[{\"workprocedure_name\":\"刻字\",\"device_runningnum\":\"0\",\"device_errornum\":\"0\",\"device_waitingnum\":\"0\",\"shutdownnum\":\"13\",\"device_num\":\"13\"},{\"workprocedure_name\":\"包装\",\"device_runningnum\":\"2\",\"device_errornum\":\"0\",\"device_waitingnum\":\"0\",\"shutdownnum\":\"0\",\"device_num\":\"2\"},{\"workprocedure_name\":\"码盘\",\"device_runningnum\":\"0\",\"device_errornum\":\"0\",\"device_waitingnum\":\"1\",\"shutdownnum\":\"0\",\"device_num\":\"1\"}],\"arr2\":[{\"produceschedule_date\":\"2021-05-06\",\"produceorder_code\":\"0506009\",\"workprocedure_name\":\"推弯一体机加工\",\"sysdic_name\":\"弯头工段\",\"worksection_type_scode\":\"01\",\"finishproduce_qty\":\"0\",\"produce_qty\":\"4200\",\"waiting_qty\":\"4200\",\"progress_qty\":\"0\"},{\"produceschedule_date\":\"2020-09-16\",\"produceorder_code\":\"0916014\",\"workprocedure_name\":\"盘管无屑下料\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"3500\",\"produce_qty\":\"3500\",\"waiting_qty\":\"0\",\"progress_qty\":\"100\"},{\"produceschedule_date\":\"2020-12-31\",\"produceorder_code\":\"1231013\",\"workprocedure_name\":\"三通拉伸\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"790\",\"produce_qty\":\"3500\",\"waiting_qty\":\"2710\",\"progress_qty\":\"23\"},{\"produceschedule_date\":\"2020-05-06\",\"produceorder_code\":\"0506009\",\"workprocedure_name\":\"三通拉伸\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"4225\",\"produce_qty\":\"6000\",\"waiting_qty\":\"1775\",\"progress_qty\":\"70\"}],\"jo3\":{\"sumproduce_qty\":\"0\",\"sumfinishproduce_qty\":\"0\",\"sumproducing_qty\":\"0\",\"sumweek_qty\":\"0\"},\"arr4\":[{\"device_name\":\"激光打标机06\",\"devicestatus_name\":\"急停报警\",\"update_date\":\" 00:00:35\"}],\"arr5\":[[\"product\",\"昨日\",\"今日\"],[\"刻字\",\"1\",\"1\"],[\"包装\",\"1\",\"0\"],[\"码盘\",\"0\",\"0\"]],\"jo6\":{\"sumproduce_orderqty\":\"\",\"sumfinishproduce_orderqty\":\"\",\"sumproducing_orderqty\":\"\"},\"arr7\":[{\"count\":\"0\",\"date\":\"07-10\"},{\"count\":\"0\",\"date\":\"07-11\"},{\"count\":\"0\",\"date\":\"07-12\"},{\"count\":\"0\",\"date\":\"07-13\"},{\"count\":\"0\",\"date\":\"07-14\"},{\"count\":\"0\",\"date\":\"07-15\"},{\"count\":\"0\",\"date\":\"07-16\"}]}}"; + str = "{\"code\":\"1\",\"desc\":\"查询成功\",\"result\":{\"screenname\":\"车间刻字包装看板\",\"arr1\":[{\"workprocedure_name\":\"刻字\",\"device_runningnum\":\"0\",\"device_errornum\":\"0\",\"device_waitingnum\":\"0\",\"shutdownnum\":\"13\",\"device_num\":\"13\"},{\"workprocedure_name\":\"包装\",\"device_runningnum\":\"2\",\"device_errornum\":\"0\",\"device_waitingnum\":\"0\",\"shutdownnum\":\"0\",\"device_num\":\"2\"},{\"workprocedure_name\":\"码盘\",\"device_runningnum\":\"0\",\"device_errornum\":\"0\",\"device_waitingnum\":\"1\",\"shutdownnum\":\"0\",\"device_num\":\"1\"}],\"arr2\":[{\"produceschedule_date\":\"2021-05-06\",\"produceorder_code\":\"0506009\",\"workprocedure_name\":\"推弯一体机加工\",\"sysdic_name\":\"弯头工段\",\"worksection_type_scode\":\"01\",\"finishproduce_qty\":\"0\",\"produce_qty\":\"4200\",\"waiting_qty\":\"4200\",\"progress_qty\":\"0\"},{\"produceschedule_date\":\"2020-09-16\",\"produceorder_code\":\"0916014\",\"workprocedure_name\":\"盘管无屑下料\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"3500\",\"produce_qty\":\"3500\",\"waiting_qty\":\"0\",\"progress_qty\":\"100\"},{\"produceschedule_date\":\"2020-12-31\",\"produceorder_code\":\"1231013\",\"workprocedure_name\":\"三通拉伸\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"790\",\"produce_qty\":\"3500\",\"waiting_qty\":\"2710\",\"progress_qty\":\"23\"},{\"produceschedule_date\":\"2020-05-06\",\"produceorder_code\":\"0506009\",\"workprocedure_name\":\"三通拉伸\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"4225\",\"produce_qty\":\"6000\",\"waiting_qty\":\"1775\",\"progress_qty\":\"70\"}],\"jo3\":{\"sumproduce_qty\":\"0\",\"sumfinishproduce_qty\":\"0\",\"sumproducing_qty\":\"0\",\"sumweek_qty\":\"0\"},\"arr4\":[{\"device_name\":\"激光打标机06\",\"devicestatus_name\":\"急停报警\",\"update_date\":\" 00:00:35\"}],\"arr5\":[[\"product\",\"昨日\",\"今日\"],[\"刻字\",\"1\",\"1\"],[\"包装\",\"1\",\"0\"],[\"码盘\",\"0\",\"0\"]],\"jo6\":{\"sumproduce_orderqty\":\"\",\"sumfinishproduce_orderqty\":\"\",\"sumproducing_orderqty\":\"\"},\"arr7\":[{\"count\":\"0\",\"date\":\"07-10\"},{\"count\":\"0\",\"date\":\"07-11\"},{\"count\":\"0\",\"date\":\"07-12\"},{\"count\":\"0\",\"date\":\"07-13\"},{\"count\":\"0\",\"date\":\"07-14\"},{\"count\":\"0\",\"date\":\"07-15\"},{\"count\":\"0\",\"date\":\"07-16\"}]}}"; } return JSONObject.parseObject(str); } + + @Override + public Map queryInfo(Map whereJson, Pageable page) { + String queryType = MapUtils.getString(whereJson, "queryType"); + if (queryType.equals("shopInfo")) { + WQLObject wo_shopInfo = WQLObject.getWQLObject("EXT_BIG_ShopInfo"); + ResultBean rb = wo_shopInfo.pagequery(WqlUtil.getHttpContext(page), " 1 = 1", ""); + final JSONObject json = rb.pageResult(); + return json; + } + if (queryType.equals("todayAndPlanNum")) { + WQLObject wo_plan = WQLObject.getWQLObject("EXT_BIG_TodayAndPlanNum"); + ResultBean rb = wo_plan.pagequery(WqlUtil.getHttpContext(page), " 1 = 1", ""); + final JSONObject json = rb.pageResult(); + return json; + } + if (queryType.equals("stock")) { + WQLObject wo_stock = WQLObject.getWQLObject("EXT_BIG_Stock"); + ResultBean rb = wo_stock.pagequery(WqlUtil.getHttpContext(page), " 1 = 1", ""); + final JSONObject json = rb.pageResult(); + return json; + } + if (queryType.equals("supply")) { + WQLObject wo_supply = WQLObject.getWQLObject("EXT_BIG_Supply"); + ResultBean rb = wo_supply.pagequery(WqlUtil.getHttpContext(page), " 1 = 1", ""); + final JSONObject json = rb.pageResult(); + return json; + } + if (queryType.equals("yearInOut")) { + WQLObject wo_yearInOut = WQLObject.getWQLObject("EXT_BIG_YearInOut"); + ResultBean rb = wo_yearInOut.pagequery(WqlUtil.getHttpContext(page), " 1 = 1", ""); + final JSONObject json = rb.pageResult(); + return json; + } + return null; + } + + @Override + public void add(JSONObject param) throws Exception { + String addType = MapUtils.getString(param, "addType"); + if (addType.equals("shopInfo")) { + WQLObject wo_shopInfo = WQLObject.getWQLObject("EXT_BIG_ShopInfo"); + JSONObject jsonObject = wo_shopInfo.query().uniqueResult(0); + wo_shopInfo.delete(jsonObject); + param.put("shop_id", IdUtil.getSnowflake(1, 1).nextId()); + param.put("data", DateUtil.today()); + wo_shopInfo.insert(param); + } + if (addType.equals("todayAndPlanNum")) { + WQLObject wo_plan = WQLObject.getWQLObject("EXT_BIG_TodayAndPlanNum"); + param.put("pro_id", IdUtil.getSnowflake(1, 1).nextId()); + wo_plan.insert(param); + } + if (addType.equals("stock")) { + WQLObject wo_stock = WQLObject.getWQLObject("EXT_BIG_Stock"); + JSONArray resultJSONArray = wo_stock.query().getResultJSONArray(0); + for (int i = 0; i < resultJSONArray.size(); i++) { + JSONObject jsonObject = resultJSONArray.getJSONObject(i); + wo_stock.delete(jsonObject); + } + Date now = DateUtil.parseDate(DateUtil.today()); + for (int i = 1; i <= 14; i++) { + Date data = DateUtil.offsetDay(now, -i); + String formatbz = DateUtil.formatDate(data); + param.put("date", formatbz); + param.put("id", IdUtil.getSnowflake(1, 1).nextId()); + wo_stock.insert(param); + } + } + if (addType.equals("supply")) { + WQLObject wo_supply = WQLObject.getWQLObject("EXT_BIG_Supply"); + JSONArray resultJSONArray = wo_supply.query().getResultJSONArray(0); + for (int i = 0; i < resultJSONArray.size(); i++) { + JSONObject jsonObject = resultJSONArray.getJSONObject(i); + wo_supply.delete(jsonObject); + } + Date now = DateUtil.parseDate(DateUtil.today()); + for (int i = 1; i <= 14; i++) { + Date data = DateUtil.offsetDay(now, i); + String formatbz = DateUtil.formatDate(data); + param.put("date", formatbz); + param.put("id", IdUtil.getSnowflake(1, 1).nextId()); + wo_supply.insert(param); + } + } + if (addType.equals("yearInOut")) { + WQLObject wo_yearInOut = WQLObject.getWQLObject("EXT_BIG_YearInOut"); + JSONObject jsonObject = wo_yearInOut.query().uniqueResult(0); + wo_yearInOut.delete(jsonObject); + param.put("id", IdUtil.getSnowflake(1, 1).nextId()); + wo_yearInOut.insert(param); + } + this.autoInitial(); + } + + @Override + public void edit(JSONObject param) throws Exception { + String addType = MapUtils.getString(param, "addType"); + if (addType.equals("shopInfo")) { + WQLObject wo_shopInfo = WQLObject.getWQLObject("EXT_BIG_ShopInfo"); + wo_shopInfo.update(param); + } + if (addType.equals("todayAndPlanNum")) { + WQLObject wo_plan = WQLObject.getWQLObject("EXT_BIG_TodayAndPlanNum"); + wo_plan.update(param); + } + if (addType.equals("stock")) { + WQLObject wo_stock = WQLObject.getWQLObject("EXT_BIG_Stock"); + wo_stock.update(param); + } + if (addType.equals("supply")) { + WQLObject wo_supply = WQLObject.getWQLObject("EXT_BIG_Supply"); + wo_supply.update(param); + } + if (addType.equals("yearInOut")) { + WQLObject wo_yearInOut = WQLObject.getWQLObject("EXT_BIG_YearInOut"); + wo_yearInOut.update(param); + } + this.autoInitial(); + } + + @Override + public void del(Long[] ids) throws Exception { + Long id = ids[0]; + JSONObject param = new JSONObject(); + WQLObject wo_shopInfo = WQLObject.getWQLObject("EXT_BIG_ShopInfo"); + wo_shopInfo.delete("shop_id = '"+id+"'"); + + + WQLObject wo_plan = WQLObject.getWQLObject("EXT_BIG_TodayAndPlanNum"); + wo_plan.delete("pro_id = '"+id+"'"); + + + WQLObject wo_stock = WQLObject.getWQLObject("EXT_BIG_Stock"); + wo_stock.delete("id = '"+id+"'"); + + + WQLObject wo_supply = WQLObject.getWQLObject("EXT_BIG_Supply"); + wo_supply.delete("id = '"+id+"'"); + + + WQLObject wo_yearInOut = WQLObject.getWQLObject("EXT_BIG_YearInOut"); + wo_yearInOut.delete("id = '"+id+"'"); + + this.autoInitial(); + } + + @Override + public void autoInitial() throws Exception { + WQLObject wo_plan = WQLObject.getWQLObject("EXT_BIG_TodayAndPlanNum"); + WQLObject wo_shopInfo = WQLObject.getWQLObject("EXT_BIG_ShopInfo"); + WQLObject wo_stock = WQLObject.getWQLObject("EXT_BIG_Stock"); + WQLObject wo_supply = WQLObject.getWQLObject("EXT_BIG_Supply"); + WQLObject wo_yearInOut = WQLObject.getWQLObject("EXT_BIG_YearInOut"); + JSONArray planArray = wo_plan.query().getResultJSONArray(0); + JSONObject jsonObject = wo_shopInfo.query().uniqueResult(0); + JSONArray stockArray = wo_stock.query().getResultJSONArray(0); + JSONArray supplyArray = wo_supply.query().getResultJSONArray(0); + JSONObject yearInOutArray = wo_yearInOut.query().uniqueResult(0); + Random random = new Random(); + if (ObjectUtil.isNotEmpty(jsonObject)) { + shopinfoDtos = JSONObject.toJavaObject(jsonObject, ShopinfoDto.class); + } + if (ObjectUtil.isNotEmpty(planArray)) { + todayandplannumDtos = planArray.toJavaList(TodayandplannumDto.class); + } + if (ObjectUtil.isNotEmpty(stockArray)) { + stockDtos = stockArray.toJavaList(StockDto.class); + Iterator iterator = stockDtos.iterator(); + while (iterator.hasNext()) { + StockDto stockDto = iterator.next(); + stockDto.setRepertory(new BigDecimal(random.nextInt(30) + 170)); + } + } + if (ObjectUtil.isNotEmpty(supplyArray)) { + supplyDtos = supplyArray.toJavaList(SupplyDto.class); + Iterator iterator = supplyDtos.iterator(); + while (iterator.hasNext()) { + SupplyDto supplyDto = iterator.next(); + supplyDto.setNeed_num(new BigDecimal(random.nextInt(2) + 3)); + } + } + if (ObjectUtil.isNotEmpty(yearInOutArray)) { + yearinoutDtos = yearInOutArray.toJavaObject(YearinoutDto.class); + } + + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/wql/bigScreen.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/bigScreen/wql/bigScreen.xls new file mode 100644 index 0000000000000000000000000000000000000000..b49844c74532083300bc5fbd3a6d81afb3fa6c4d GIT binary patch literal 224256 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%0A*SN%j#3#YY?_ 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

+!Nk#{Y@X^RnnXOjBfOVey|Y|7 z4Ent=J~DXkPAn05%{h^(m~WFr9q@~d3O?MgPMxMsniRmJLpEDB3i0sk(E(~HD{&c0 zcrnw|Q%;*@IpxT5l3?4sRq6C~_{xjG%D*vLe=%5T)ePX8dw@-s1SZ7EzXg1>2Ut12 z@-LCL%V0%rkd7cE!fV1}Q>dk$C%wHTK}+42zV9oUSUtIR@^DdPqMzPx2n2E#X@+*mv`$w*w#i7?^&_^SR7gJcF)2AKLPbx8M9kU^jT}8fNII zMx)3la04OW!lz7{$3V}rvcwN}sX1K6{d|=CmAY}wP3b4Z|Z2-=N zJrL=rhNDxZwQQuHn|4hB4(jK^aT?;F0XQn{!T%!|VdVKC91fVUZd!m7-Vh~Z9(1^_ zIO38s;)rzim2iXrZ0oM|$F7fXeqHOI1S4cHR0(-|>4p6t;dNc%p)J~Ao-5%Z@g0gv zq=CPTm*Q{#ByVB31nbQ^7~m{$1$50DD*cwVds}0#LR|D+;Q@~qrit*ZACyeUx3%!j zBX)xBuA+O;Wrg7W6EvA&F(}P1CGjZ$I*fe>9K4DO#`Q(;UXAePh!A?|zd_>u7c_@m zYWbf7tV1k9LEjI`qUL>ExV&5k<$Hz^de2KmwTeiS5s4k{No_-0yc*|6XWeTfM z*o85@utS z)Lv4#!89G#h1CC;i{hehJoO|3K(SL54DSwm9KzQcBzlCB2!^;I2;1N(>|V>Rf!F>l z;OVsuf?@ZXCr!-10Wk@mp4&ML;4Lo5k+w6iuuDo~qI}RBfACag3?^$SZ`Ex;s;|Cr z>iY9}HfSq6>$P_rrL-!V7E?AmAG+pi5Thv4v$3MRwsZHi-(;saF)g-n-)Xz^bP05f zzUkAIua?XBYWKSXWqqP&z7%*`4^T5WU|^~Q*0^8u|{Khy3v?8HX%JB>lR*`?wNRw}?RKrm?V1K1W@_ghQKfH7F#Oe2r9z8@enF%{6 zCzTgh%yw3JGD%3#X>H|2Iyz$Ng@*D~4AR@XBe2aC%!=4-rXDxE3JWB_Y2LS4h;YtM zk}MDgMM7YTED%N;LZDd|2*WKQFi{qW5~aJFl$mO{In!oKG@H_Gv11bwO|c0XwyfBc zgru>tNm&{2ihhF8mS9V~1zIq(qHxI~Xuwo?t;dX<2Spm9lk#HI8RXYL~|u~QtL z^pa|TMH_JoJWyexv#inzujs=;HAp=p1OeAn19QO~q0&)PT2SVUH>VonQ{v5LGY|#< ztkWi>8h{{1TT(*2IVEANbaftobZ?)Fh2Z{gP#g3dvr8R+{0rd2#qnR~^2^{wr^|CN z{<-Y&7wS`FW_0*&+Ku#uE8%T!d}kToLcdf8=f7U|{%aWY(lgev3^;xY#whr1JHD~L zobH_|rrS+=d*8S-X0VTomd``*rPALA%0DA!gM5HJD<^|8Ooll#!Dfd3h8KiSu%;T4 z;jp!ogp{!U+)J$`d4p7aI>y_vAn8jZq_Rq|mFp80mm zc)A=2M`d)%1`wnMYd8eX33$onMXE7|_xxLRT2IIC91+9En}y4iWCHl46jKZj;DSu( z3@e5v^%$DcW2m{u(8R8xog2G{Ct>Zw(CwW`0W_$WaBoHo@B#~$0xk|NC0r`F@Qoui z+%<4%#b-ab>)`T-D*!HBR|$kG2(Er`1;Z5rSAVz$z=e4X6z|BJ|L6YqQD7@0Y;?mh z=cT)Qn1?SN_`e3Z1+WD6Bk%ZVnBY;-jG8bdAZC}qF23bd#9pql`CV$#*XZuz1^xoc zOba@&tHXM?u4(w!583nePi|I|(UH5~M>8AF+hNK@=`s=SsJnB-u(@!@IdLUiXqH+il7>L2sNGno*k z>=HH+2!(PFre>5TNDDOc!PJ?4^QjE(NDG|YU_DmAg)~?V7usAl!iBU!8e!efz$K>* zh84o=HnB^}@mMV|{i4&;Jkf`Fqw9Jf3WcHd6-=MxxsMKhN)def(B8do>^*p%KD_>) zmp^p39({{G?D_G)KM!q(2Q=yK`udIY$NwXQfBQ;Qm|L$!;y6J zE2?N5Ei$xAU}kA`Wtn3+&XOo9XbR1T6Mk!>`RpSf2 z<=N$hPKrPF?y>a%%51s=5O~yD=oG~tG zY$8s(Y2HynoXMO}Y>ov(227s|%>}V3g$V_*=H!HUQ(<9JQ9*G5!uRCl_Mfg>MsQ6o uw2R>8VL} +

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + diff --git a/mes/qd/src/views/wms/bigScreen/stock/index.vue b/mes/qd/src/views/wms/bigScreen/stock/index.vue new file mode 100644 index 00000000..3ed31c89 --- /dev/null +++ b/mes/qd/src/views/wms/bigScreen/stock/index.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/mes/qd/src/views/wms/bigScreen/supply/index.vue b/mes/qd/src/views/wms/bigScreen/supply/index.vue new file mode 100644 index 00000000..b1703567 --- /dev/null +++ b/mes/qd/src/views/wms/bigScreen/supply/index.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/mes/qd/src/views/wms/bigScreen/todayAndPlanNum/index.vue b/mes/qd/src/views/wms/bigScreen/todayAndPlanNum/index.vue new file mode 100644 index 00000000..e8542631 --- /dev/null +++ b/mes/qd/src/views/wms/bigScreen/todayAndPlanNum/index.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/mes/qd/src/views/wms/bigScreen/yearInOut/index.vue b/mes/qd/src/views/wms/bigScreen/yearInOut/index.vue new file mode 100644 index 00000000..ccb3c653 --- /dev/null +++ b/mes/qd/src/views/wms/bigScreen/yearInOut/index.vue @@ -0,0 +1,110 @@ + + + + +