| | |
| | | |
| | | 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 com.core.annotations.ManagerAuth; |
| | | import com.core.common.R; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | 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; |
| | | |
| | | /** |
| | | * 日志统计控制器层 |
| | |
| | | @RequestMapping("/report") |
| | | public class ReportQueryController extends BaseController { |
| | | |
| | | @Autowired |
| | | private LocDetlService locDetlService; |
| | | @Autowired |
| | | private ReportQueryMapper reportQueryMapper; |
| | | |
| | |
| | | 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<ViewStayTimeBean> list = reportQueryMapper.queryViewStayTimeList(bean); |
| | | int count = reportQueryMapper.getViewStayTimeCount(bean); |
| | | Page<ViewStayTimeBean> page = new Page<>(); |
| | |
| | | } |
| | | |
| | | //-----------------库存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(defaultValue = "1")Integer row){ |
| | | // 获取排级数据 |
| | | // 表格标题:列 ===>> 升序 |
| | | List<String> bays = reportQueryMapper.getViewLocBayCount(row); |
| | | // !表格第一列放层级数 |
| | | bays.add(0, ""); |
| | | // 表格行:层 ====>> 倒序 |
| | | List<String> levs = reportQueryMapper.getViewLocLevCount(row); |
| | | List<Map<String, Object>> body = new ArrayList<>(); |
| | | for (String lev : levs){ |
| | | // 获取层级数据 |
| | | List<ViewLocMapDto> dtos = reportQueryMapper.getViewLocBays(row, Integer.parseInt(lev)); |
| | | // !表格第一列放层级数 |
| | | dtos.add(0, new ViewLocMapDto(null ,null, lev)); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("loc", dtos); |
| | | body.add(map); |
| | | } |
| | | public R queryViewLocMapListByPages( |
| | | @RequestParam(required = false, defaultValue = "0") Integer row, |
| | | @RequestParam(required = false) Integer layer) { |
| | | |
| | | Map<String, Object> result = new HashMap<>(); |
| | | result.put("title", bays); |
| | | List<String> title = new ArrayList<>(); |
| | | List<Map<String, Object>> body = new ArrayList<>(); |
| | | |
| | | if (layer != null && layer > 0) { |
| | | // ── 按层显示所有排 × 所有列 ─────────────────────────────── |
| | | |
| | | // 1. 表头:所有 bay |
| | | List<String> allBays = reportQueryMapper.getAllBays(); // 或生成 1 到 maxBay |
| | | title.add(""); // 第一列放排号 |
| | | title.addAll(allBays); |
| | | |
| | | // 2. 获取该层所有库位 |
| | | List<ViewLocMapDto> locs = reportQueryMapper.getLocMapByLayer(layer); |
| | | |
| | | // 3. 按 row 分组(推荐用 Map 或 Stream 分组) |
| | | Map<Integer, List<ViewLocMapDto>> rowMap = locs.stream() |
| | | .collect(Collectors.groupingBy(ViewLocMapDto::getRow1)); |
| | | |
| | | // 4. 遍历所有排,生成每一行 |
| | | List<Integer> allRows = reportQueryMapper.getAllRows(); |
| | | for (Integer currentRow : allRows) { |
| | | List<ViewLocMapDto> rowData = rowMap.getOrDefault(currentRow, new ArrayList<>()); |
| | | |
| | | // 按 bay 排序并补齐空位 |
| | | Map<Integer, ViewLocMapDto> bayMap = rowData.stream() |
| | | .collect(Collectors.toMap(ViewLocMapDto::getBay1, d -> d)); |
| | | |
| | | List<ViewLocMapDto> 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<String, Object> map = new HashMap<>(); |
| | | map.put("loc", line); |
| | | body.add(map); |
| | | } |
| | | } |
| | | else { |
| | | // ── 按排模式(原有逻辑) ───────────────────── |
| | | title = reportQueryMapper.getViewLocBayCount(row); |
| | | title.add(0, ""); |
| | | |
| | | List<String> levs = reportQueryMapper.getViewLocLevCount(row); |
| | | body = new ArrayList<>(); |
| | | |
| | | for (String lev : levs) { |
| | | List<ViewLocMapDto> dtos = reportQueryMapper.getViewLocBays(row, Integer.parseInt(lev)); |
| | | dtos.add(0, new ViewLocMapDto(null, null, lev)); |
| | | Map<String, Object> 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<String> bays = reportQueryMapper.getViewLocBayCount(row); |
| | | // // !表格第一列放层级数 |
| | | // bays.add(0, ""); |
| | | // // 表格行:层 ====>> 倒序 |
| | | // List<String> levs = reportQueryMapper.getViewLocLevCount(row); |
| | | // List<Map<String, Object>> body = new ArrayList<>(); |
| | | // for (String lev : levs){ |
| | | // // 获取层级数据 |
| | | // List<ViewLocMapDto> dtos = reportQueryMapper.getViewLocBays(row, Integer.parseInt(lev)); |
| | | // // !表格第一列放层级数 |
| | | // dtos.add(0, new ViewLocMapDto(null ,null, lev)); |
| | | // Map<String, Object> map = new HashMap<>(); |
| | | // map.put("loc", dtos); |
| | | // body.add(map); |
| | | // } |
| | | // Map<String, Object> result = new HashMap<>(); |
| | | // result.put("title", bays); |
| | | // result.put("body", body); |
| | | // return R.ok(result); |
| | | // } |
| | | |
| | | |
| | | //------------------站点日入出库次数统计-------------------------------------- |
| | |
| | | |
| | | //------------------日入库明细统计-------------------------------------- |
| | | @RequestMapping("/viewWorkInList.action") |
| | | public Map<String,Object> viewWorkInList(@RequestParam(defaultValue = "1")Integer curr, |
| | | @RequestParam(defaultValue = "10")Integer limit, |
| | | @RequestParam Map<String, Object> param){ |
| | | ViewWorkInBean bean = new ViewWorkInBean(); |
| | | bean.setPageSize(limit); |
| | | bean.setPageNumber(curr); |
| | | public Map<String,Object> viewWorkInList(ViewWorkInBean bean){ |
| | | List<ViewWorkInBean> list = reportQueryMapper.queryViewWorkInList(bean); |
| | | int count = reportQueryMapper.getViewWorkInCount(bean); |
| | | Page<ViewWorkInBean> page = new Page<>(); |
| | |
| | | return R.ok(page); |
| | | } |
| | | |
| | | /** |
| | | * 日入库汇总查询 |
| | | * @return |
| | | */ |
| | | @RequestMapping("/viewWorkCountInList.action") |
| | | public R viewWorkCountInList(@RequestParam(defaultValue = "1")Integer curr, |
| | | @RequestParam(defaultValue = "10")Integer limit, |
| | | @RequestParam Map<String, Object> 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<ViewWorkCountInView> 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<ViewWorkCountInView> page = new Page<>(); |
| | | page.setRecords(allCountIn); |
| | | page.setTotal(total); |
| | | Integer sum = reportQueryMapper.selectWorkCountInSum((String) param.get("matnr"), startTime,endTime); |
| | | HashMap<String, Object> 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<String, Object> 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<ViewWorkCountInView> 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<ViewWorkCountInView> page = new Page<>(); |
| | | page.setRecords(allCountIn); |
| | | page.setTotal(total); |
| | | Integer sum = reportQueryMapper.selectWorkCountOutSum((String) param.get("matnr"), startTime,endTime); |
| | | HashMap<String, Object> 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<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); |
| | | List<ViewWorkInBean> list = reportQueryMapper.getViewWorkInAll(new ViewWorkInBean()); |
| | | @SuppressWarnings("unchecked") |
| | | ViewWorkInBean bean = Cools.conver((Map<? extends String, ?>) param.get("exportData"), ViewWorkInBean.class); |
| | | bean.setQuery_date(bean.getQuery_date()); |
| | | List<ViewWorkInBean> list = reportQueryMapper.getViewWorkInAll(bean); |
| | | return R.ok(exportSupport(list, fields)); |
| | | } |
| | | |
| | | //------------------日出库明细统计-------------------------------------- |
| | | @RequestMapping("/viewWorkOutList.action") |
| | | public R viewWorkOutList(@RequestParam(defaultValue = "1")Integer curr, |
| | | @RequestParam(defaultValue = "10")Integer limit, |
| | | @RequestParam Map<String, Object> param){ |
| | | ViewWorkInBean bean = new ViewWorkInBean(); |
| | | bean.setPageSize(limit); |
| | | bean.setPageNumber(curr); |
| | | public R viewWorkOutList(ViewWorkInBean bean){ |
| | | List<ViewWorkInBean> list = reportQueryMapper.queryViewWorkOutList(bean); |
| | | int count = reportQueryMapper.getViewWorkOutCount(bean); |
| | | Page<ViewWorkInBean> page = new Page<>(); |
| | |
| | | @ManagerAuth(memo = "日出库明细统计导出") |
| | | public R viewWorkOutExport(@RequestBody JSONObject param){ |
| | | List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); |
| | | List<ViewWorkInBean> list = reportQueryMapper.getViewWorkOutAll(new ViewWorkInBean()); |
| | | @SuppressWarnings("unchecked") |
| | | ViewWorkInBean bean = Cools.conver((Map<? extends String, ?>) param.get("exportData"), ViewWorkInBean.class); |
| | | bean.setQuery_date(bean.getQuery_date()); |
| | | List<ViewWorkInBean> list = reportQueryMapper.getViewWorkOutAll(bean); |
| | | return R.ok(exportSupport(list, fields)); |
| | | } |
| | | |