package com.zy.asrs.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.plugins.Page; import com.core.annotations.ManagerAuth; import com.core.common.Cools; import com.core.common.R; import com.zy.asrs.entity.*; import com.zy.asrs.mapper.ReportQueryMapper; import com.zy.asrs.service.LocDetlService; import com.zy.common.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 日志统计控制器层 * @author admin * @date 2018年11月23日 */ @RestController @RequestMapping("/report") public class ReportQueryController extends BaseController { @Autowired private LocDetlService locDetlService; @Autowired private ReportQueryMapper reportQueryMapper; //------------------库位使用统计-------------------------------------- @RequestMapping("/viewStockUseList.action") public R queryViewStockUseListByPages(@RequestParam(defaultValue = "1")Integer curr, @RequestParam(defaultValue = "10")Integer limit, @RequestParam Map param){ ViewStockUseBean bean = new ViewStockUseBean(); bean.setPageSize(limit); bean.setPageNumber(curr); List list= reportQueryMapper.queryViewStockUseList(bean); int count = reportQueryMapper.getViewStockUseCount(bean); Page page = new Page<>(); page.setRecords(list); page.setTotal(count); return R.ok(page); } // 导出 @RequestMapping(value = "/viewStockUseExport.action") @ManagerAuth(memo = "库位使用统计导出") public R viewStockUseExport(@RequestBody JSONObject param){ List fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); List list = reportQueryMapper.getViewStockUseAll(new ViewStockUseBean()); return R.ok(exportSupport(list, fields)); } //------------------库存滞留统计-------------------------------------- @RequestMapping("/viewStayTimeList.action") public Map queryViewStayTimeListByPages(@RequestParam(defaultValue = "1")Integer curr, @RequestParam(defaultValue = "10")Integer limit, @RequestParam Map param){ ViewStayTimeBean bean = new ViewStayTimeBean(); bean.setPageSize(limit); bean.setPageNumber(curr); String locNo = String.valueOf(param.get("loc_no")); if (!Cools.isEmpty(locNo) && !locNo.equals("null")) { bean.setLoc_no(locNo); } List list = reportQueryMapper.queryViewStayTimeList(bean); int count = reportQueryMapper.getViewStayTimeCount(bean); Page page = new Page<>(); page.setRecords(list); page.setTotal(count); return R.ok(page); } // 导出 @RequestMapping(value = "/viewStayTimeExport.action") @ManagerAuth(memo = "库存滞留统计导出") public R viewStayTimeExport(@RequestBody JSONObject param){ List fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); List list = reportQueryMapper.getViewStayTimeAll(new ViewStayTimeBean()); return R.ok(exportSupport(list, fields)); } //-----------------库存MAP图-------------------------------------- @RequestMapping("/viewLocMapList/rows.action") public R queryViewLocMapRows(){ return R.ok().add(reportQueryMapper.getViewLocRowTotal()); } @RequestMapping("/viewLocMapList/layers.action") public R queryViewLocMapLevs(){ return R.ok().add(reportQueryMapper.getViewLocLevTotal()); } @RequestMapping("/viewLocMapList.action") public R queryViewLocMapListByPages( @RequestParam(required = false, defaultValue = "0") Integer row, @RequestParam(required = false) Integer layer) { Map result = new HashMap<>(); List title = new ArrayList<>(); List> body = new ArrayList<>(); if (layer != null && layer > 0) { // ── 按层显示所有排 × 所有列 ─────────────────────────────── // 1. 表头:所有 bay List allBays = reportQueryMapper.getAllBays(); // 或生成 1 到 maxBay title.add(""); // 第一列放排号 title.addAll(allBays); // 2. 获取该层所有库位 List locs = reportQueryMapper.getLocMapByLayer(layer); // 3. 按 row 分组(推荐用 Map 或 Stream 分组) Map> rowMap = locs.stream() .collect(Collectors.groupingBy(ViewLocMapDto::getRow1)); // 4. 遍历所有排,生成每一行 List allRows = reportQueryMapper.getAllRows(); for (Integer currentRow : allRows) { List rowData = rowMap.getOrDefault(currentRow, new ArrayList<>()); // 按 bay 排序并补齐空位 Map bayMap = rowData.stream() .collect(Collectors.toMap(ViewLocMapDto::getBay1, d -> d)); List line = new ArrayList<>(); // 第一列:排号 line.add(new ViewLocMapDto(null, null, String.valueOf(currentRow))); // 填充所有 bay for (String bayStr : allBays) { int bay = Integer.parseInt(bayStr); ViewLocMapDto dto = bayMap.get(bay); if (dto != null) { line.add(dto); } else { // 无库位 → 补空 line.add(new ViewLocMapDto(null, 0, null)); // 或自定义空状态 } } Map map = new HashMap<>(); map.put("loc", line); body.add(map); } } else { // ── 按排模式(原有逻辑) ───────────────────── title = reportQueryMapper.getViewLocBayCount(row); title.add(0, ""); List levs = reportQueryMapper.getViewLocLevCount(row); body = new ArrayList<>(); for (String lev : levs) { List dtos = reportQueryMapper.getViewLocBays(row, Integer.parseInt(lev)); dtos.add(0, new ViewLocMapDto(null, null, lev)); Map map = new HashMap<>(); map.put("loc", dtos); body.add(map); } } result.put("title", title); result.put("body", body); return R.ok(result); } // @RequestMapping("/viewLocMapList.action") // public R queryViewLocMapListByPages(@RequestParam(defaultValue = "0")Integer row){ // // 获取排级数据 // // 表格标题:列 ===>> 升序 // List bays = reportQueryMapper.getViewLocBayCount(row); // // !表格第一列放层级数 // bays.add(0, ""); // // 表格行:层 ====>> 倒序 // List levs = reportQueryMapper.getViewLocLevCount(row); // List> body = new ArrayList<>(); // for (String lev : levs){ // // 获取层级数据 // List dtos = reportQueryMapper.getViewLocBays(row, Integer.parseInt(lev)); // // !表格第一列放层级数 // dtos.add(0, new ViewLocMapDto(null ,null, lev)); // Map map = new HashMap<>(); // map.put("loc", dtos); // body.add(map); // } // Map result = new HashMap<>(); // result.put("title", bays); // result.put("body", body); // return R.ok(result); // } //------------------站点日入出库次数统计-------------------------------------- @RequestMapping("/viewInOutList.action") public Map viewInOutList(@RequestParam(defaultValue = "1")Integer curr, @RequestParam(defaultValue = "10")Integer limit, @RequestParam Map param){ ViewInOutBean bean = new ViewInOutBean(); bean.setPageSize(limit); bean.setPageNumber(curr); List list = reportQueryMapper.queryViewInOutList(bean); int count = reportQueryMapper.getViewInOutCount(bean); Page page = new Page<>(); page.setRecords(list); page.setTotal(count); return R.ok(page); } //excel导出 @RequestMapping("/viewInOutExport.action") @ManagerAuth(memo = "站点日入出库次数统计导出") public R viewInOutExport(@RequestBody JSONObject param){ List fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); List list = reportQueryMapper.getViewInOutAll(new ViewInOutBean()); return R.ok(exportSupport(list, fields)); } //------------------日入库明细统计-------------------------------------- @RequestMapping("/viewWorkInList.action") public Map viewWorkInList(ViewWorkInBean bean){ List list = reportQueryMapper.queryViewWorkInList(bean); int count = reportQueryMapper.getViewWorkInCount(bean); Page page = new Page<>(); page.setRecords(list); page.setTotal(count); return R.ok(page); } /** * 日入库汇总查询 * @return */ @RequestMapping("/viewWorkCountInList.action") public R viewWorkCountInList(@RequestParam(defaultValue = "1")Integer curr, @RequestParam(defaultValue = "10")Integer limit, @RequestParam Map param){ String startTime = "1970.1.2"; String endTime = "2099.1.2"; if (!Cools.isEmpty(param.get("query_date"))) { String queryDate = (String) param.get("query_date"); String[] split = queryDate.split(" - "); startTime= split[0].split(" ")[0].replace("-","."); endTime = split[1].split(" ")[0].replace("-","."); } List allCountIn = reportQueryMapper.selectWorkCountIn(Integer.valueOf((String) param.get("pageNumber")), Integer.valueOf((String) param.get("pageSize")), (String) param.get("matnr"), startTime,endTime); Integer total = reportQueryMapper.selectWorkCountInTotal((String) param.get("matnr"), startTime,endTime); Page page = new Page<>(); page.setRecords(allCountIn); page.setTotal(total); Integer sum = reportQueryMapper.selectWorkCountInSum((String) param.get("matnr"), startTime,endTime); HashMap result = new HashMap<>(); result.put("page",page); result.put("sum",sum); return R.ok(result); } /** * 日出库汇总 */ @RequestMapping("/viewWorkCountOutList.action") public R viewWorkCountOutList(@RequestParam(defaultValue = "1")Integer curr, @RequestParam(defaultValue = "10")Integer limit, @RequestParam Map param){ String startTime = "1970.1.2"; String endTime = "2099.1.2"; if (!Cools.isEmpty(param.get("query_date"))) { String queryDate = (String) param.get("query_date"); String[] split = queryDate.split(" - "); startTime= split[0].split(" ")[0].replace("-","."); endTime = split[1].split(" ")[0].replace("-","."); } List allCountIn = reportQueryMapper.selectWorkCountOut(Integer.valueOf((String) param.get("pageNumber")), Integer.valueOf((String) param.get("pageSize")), (String) param.get("matnr"), startTime,endTime); Integer total = reportQueryMapper.selectWorkCountOutTotal((String) param.get("matnr"), startTime,endTime); Page page = new Page<>(); page.setRecords(allCountIn); page.setTotal(total); Integer sum = reportQueryMapper.selectWorkCountOutSum((String) param.get("matnr"), startTime,endTime); HashMap result = new HashMap<>(); result.put("page",page); result.put("sum",sum); return R.ok(result); } //excel导出 @RequestMapping("/viewWorkInExport.action") @ManagerAuth(memo = "日入库明细统计导出") public R viewWorkInExport(@RequestBody JSONObject param){ List fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); @SuppressWarnings("unchecked") ViewWorkInBean bean = Cools.conver((Map) param.get("exportData"), ViewWorkInBean.class); bean.setQuery_date(bean.getQuery_date()); List list = reportQueryMapper.getViewWorkInAll(bean); return R.ok(exportSupport(list, fields)); } //------------------日出库明细统计-------------------------------------- @RequestMapping("/viewWorkOutList.action") public R viewWorkOutList(ViewWorkInBean bean){ List list = reportQueryMapper.queryViewWorkOutList(bean); int count = reportQueryMapper.getViewWorkOutCount(bean); Page page = new Page<>(); page.setRecords(list); page.setTotal(count); return R.ok(page); } //excel导出 @RequestMapping("/viewWorkOutExport.action") @ManagerAuth(memo = "日出库明细统计导出") public R viewWorkOutExport(@RequestBody JSONObject param){ List fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); @SuppressWarnings("unchecked") ViewWorkInBean bean = Cools.conver((Map) param.get("exportData"), ViewWorkInBean.class); bean.setQuery_date(bean.getQuery_date()); List list = reportQueryMapper.getViewWorkOutAll(bean); return R.ok(exportSupport(list, fields)); } }