diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/dailyStructivt/dao/mapper/StIvtStructivtDailyMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/dailyStructivt/dao/mapper/StIvtStructivtDailyMapper.java index 4ac6e96c..94e7158f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/dailyStructivt/dao/mapper/StIvtStructivtDailyMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/dailyStructivt/dao/mapper/StIvtStructivtDailyMapper.java @@ -1,5 +1,6 @@ package org.nl.wms.masterdata_manage.storage.service.dailyStructivt.dao.mapper; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -20,5 +21,12 @@ public interface StIvtStructivtDailyMapper extends BaseMapper selectStructivt(@Param("table") String table); + + /** + * 大屏数据 - 近一周工段产量 + * @param list / + * @return / + */ + List getHistoryivt(@Param("chanList") List list, @Param("query") Map json); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/dailyStructivt/dao/mapper/xml/StIvtStructivtDailyMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/dailyStructivt/dao/mapper/xml/StIvtStructivtDailyMapper.xml index fd4511cc..43dda196 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/dailyStructivt/dao/mapper/xml/StIvtStructivtDailyMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/dailyStructivt/dao/mapper/xml/StIvtStructivtDailyMapper.xml @@ -1,5 +1,32 @@ + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/stata_manage/rest/HistoryivtController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/stata_manage/rest/HistoryivtController.java new file mode 100644 index 00000000..150361f0 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/stata_manage/rest/HistoryivtController.java @@ -0,0 +1,48 @@ + +package org.nl.wms.stata_manage.rest; + + +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.wms.stata_manage.service.HistoryivtService; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + * @author Liuxy + * @date 2022-06-28 + **/ +@RestController +@RequiredArgsConstructor +@Api(tags = "历史库存统计分析") +@RequestMapping("/api/historyivt") +@Slf4j +public class HistoryivtController { + + private final HistoryivtService historyivtService; + + @GetMapping + @ApiOperation("库存查询") + public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(historyivtService.queryAll(whereJson, page), HttpStatus.OK); + } + + @GetMapping("/getHeader") + @ApiOperation("获取表头") + public ResponseEntity getHeader() { + return new ResponseEntity<>(historyivtService.getHeader(), HttpStatus.OK); + } + + @PostMapping("/autoWeb") + @ApiOperation("线性图") + public ResponseEntity autoWeb(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(historyivtService.autoWeb(whereJson), HttpStatus.OK); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/stata_manage/service/HistoryivtService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/stata_manage/service/HistoryivtService.java new file mode 100644 index 00000000..ee848525 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/stata_manage/service/HistoryivtService.java @@ -0,0 +1,39 @@ + +package org.nl.wms.stata_manage.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.nl.common.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.springframework.data.domain.Pageable; + +import java.util.Map; + +/** + * @author Liuxy + * @description 服务接口 + * @date 2022-06-28 + **/ +public interface HistoryivtService { + + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param page 分页参数 + * @return Map + */ + Map queryAll(Map whereJson, Pageable page); + + /** + * 获取表头 + */ + JSONArray getHeader(); + + /** + * 线形图数据获取 + * @return / + */ + JSONObject autoWeb( JSONObject whereJson ); + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/stata_manage/service/impl/HistoryivtServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/stata_manage/service/impl/HistoryivtServiceImpl.java new file mode 100644 index 00000000..c9f65e57 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/stata_manage/service/impl/HistoryivtServiceImpl.java @@ -0,0 +1,211 @@ + +package org.nl.wms.stata_manage.service.impl; + + +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.modules.common.utils.PageUtil; +import org.nl.wms.masterdata_manage.storage.service.dailyStructivt.dao.mapper.StIvtStructivtDailyMapper; +import org.nl.wms.stata_manage.service.HistoryivtService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author Liuxy + * @description 服务实现 + * @date 2022-06-28 + **/ +@Service +@RequiredArgsConstructor +@Slf4j +public class HistoryivtServiceImpl implements HistoryivtService { + + @Autowired + private StIvtStructivtDailyMapper stIvtStructivtDailyMapper; + + @Override + public Map queryAll(Map whereJson, Pageable page) { + + String endTime = DateUtil.today(); + DateTime toDay = DateUtil.parse(endTime); + + String startTime = DateUtil.offsetDay(toDay, -6).toString().substring(0, 10); + + // 7天时间集合 + List timeList = + DateUtil.rangeToList(DateUtil.parse(startTime), DateUtil.parse(endTime), DateField.DAY_OF_YEAR) + .stream() + .map(row -> row.toString().substring(0,10)) + .collect(Collectors.toList()); + + List ivtList = stIvtStructivtDailyMapper.getHistoryivt(timeList, whereJson); + + // 处理数据 + JSONArray data = new JSONArray(); + + Map> ivt = ivtList.stream().collect(Collectors.groupingBy( + row -> row.getString("material_code") + )); + + for (String material_coed: ivt.keySet()) { + + // 找出相同数据 + List findList = ivtList.stream() + .filter(row -> row.getString("material_code").equals(material_coed)) + .collect(Collectors.toList()); + + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("1", findList.get(0).getString("material_code")); + jsonObject.put("2", findList.get(0).getString("material_name")); + jsonObject.put("3", findList.get(0).getString("material_spec")); + + for (JSONObject json : findList) { + jsonObject.put(json.getString("create_time"), NumberUtil.round(json.getDoubleValue("canuse_qty"), 3)); + } + + data.add(jsonObject); + } + + // 处理分页 + Map json = PageUtil.toPage( + PageUtil.toPage(page.getPageNumber(), page.getPageSize(), data), + data.size() + ); + + return json; + } + + @Override + public JSONArray getHeader() { + JSONArray jsonResultArr = new JSONArray(); + + // 获取日期: 当前日期前7天 + String todayStr = DateUtil.today(); + DateTime toDay = DateUtil.parse(todayStr); + + for (int i = 6; i >=0; i--) { + DateTime dateTime = DateUtil.offsetDay(toDay, -i); + + JSONObject json = new JSONObject(); + json.put("prop", dateTime.toString().substring(0, 10)); + json.put("label", dateTime.toString().substring(0, 10)); + jsonResultArr.add(json); + } + return jsonResultArr; + } + + @Override + public JSONObject autoWeb(JSONObject whereJson) { + /* + * 处理数据 + * 1.legend:每条线的名称 + * 2.xAxis:所有日期 + * 3.series:具体数据 + */ + + // 3.具体数据 + List allList = publicMethodQuery(whereJson); + + // 1.每条线的名称 + List legendList = allList.stream() + .map(row -> row.getString("name")) + .collect(Collectors.toList()); + + // 2.所有日期 + JSONArray headerArr = getHeader(); + + List xAxisList = headerArr.stream() + .map(row -> ((JSONObject) row).getString("prop")) + .collect(Collectors.toList()); + + // 整理数据 + JSONObject result = new JSONObject(); + result.put("legenda",legendList); + result.put("xAxisa",xAxisList); + result.put("seriesa",allList); + return result; + } + + /** + * 查询共用方法 + * @param whereJson 、 + * @return 、 + */ + private List publicMethodQuery(Map whereJson) { + + String endTime = DateUtil.today(); + DateTime toDay = DateUtil.parse(endTime); + + String startTime = DateUtil.offsetDay(toDay, -6).toString().substring(0, 10); + + // 7天时间集合 + List timeList = + DateUtil.rangeToList(DateUtil.parse(startTime), DateUtil.parse(endTime), DateField.DAY_OF_YEAR) + .stream() + .map(row -> row.toString().substring(0,10)) + .collect(Collectors.toList()); + + List ivtList = stIvtStructivtDailyMapper.getHistoryivt(timeList, whereJson); + + // 处理数据 + List alldataList = new ArrayList<>(); + + Map> ivt = ivtList.stream().collect(Collectors.groupingBy( + row -> row.getString("material_code") + )); + + for (String material_coed: ivt.keySet()) { + + // 找出相同数据 + List findList = ivtList.stream() + .filter(row -> row.getString("material_code").equals(material_coed)) + .collect(Collectors.toList()); + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("name", findList.get(0).getString("material_code")); + jsonObject.put("type", "line"); + jsonObject.put("stack", "Total"); + + JSONArray data = new JSONArray(); + + JSONArray headerArr = getHeader(); + List xAxisList = headerArr.stream() + .map(row -> ((JSONObject) row).getString("prop")) + .collect(Collectors.toList()); + + xAxisList.forEach(row -> { + for (JSONObject json : findList) { + + if (json.getString("create_time").equals(row)) { + data.add(NumberUtil.round(json.getDoubleValue("canuse_qty"), 3)); + } else { + data.add(0); + } + } + }); + + jsonObject.put("data", data); + + alldataList.add(jsonObject); + } + return alldataList; + } + +} diff --git a/mes/qd/src/views/wms/stata_manage/historyivt/LinChart.vue b/mes/qd/src/views/wms/stata_manage/historyivt/LinChart.vue new file mode 100644 index 00000000..de88338d --- /dev/null +++ b/mes/qd/src/views/wms/stata_manage/historyivt/LinChart.vue @@ -0,0 +1,102 @@ + + + diff --git a/mes/qd/src/views/wms/stata_manage/historyivt/historyivt.js b/mes/qd/src/views/wms/stata_manage/historyivt/historyivt.js new file mode 100644 index 00000000..379717f8 --- /dev/null +++ b/mes/qd/src/views/wms/stata_manage/historyivt/historyivt.js @@ -0,0 +1,42 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/historyivt', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/historyivt/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/historyivt', + method: 'put', + data + }) +} + +export function getHeader() { + return request({ + url: 'api/historyivt/getHeader', + method: 'get' + }) +} + +export function autoWeb(data) { + return request({ + url: 'api/historyivt/autoWeb', + method: 'post', + data + }) +} + +export default { add, edit, del, getHeader, autoWeb } diff --git a/mes/qd/src/views/wms/stata_manage/historyivt/index.vue b/mes/qd/src/views/wms/stata_manage/historyivt/index.vue new file mode 100644 index 00000000..876fa7b5 --- /dev/null +++ b/mes/qd/src/views/wms/stata_manage/historyivt/index.vue @@ -0,0 +1,216 @@ + + + + +