From c7ecd3e8727f4b3029c17db1162785884fe30bce Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期一, 23 三月 2026 14:03:47 +0800
Subject: [PATCH] 优化平库明细导出逻辑
---
src/main/java/com/zy/asrs/controller/ManLocDetlController.java | 155 +++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 131 insertions(+), 24 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/ManLocDetlController.java b/src/main/java/com/zy/asrs/controller/ManLocDetlController.java
index 4e377e6..6e254a7 100644
--- a/src/main/java/com/zy/asrs/controller/ManLocDetlController.java
+++ b/src/main/java/com/zy/asrs/controller/ManLocDetlController.java
@@ -1,13 +1,20 @@
package com.zy.asrs.controller;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.annotations.ManagerAuth;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.R;
+import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.ManLocDetl;
+import com.zy.asrs.entity.Mat;
import com.zy.asrs.entity.param.LocDetlAdjustParam;
import com.zy.asrs.service.ManLocDetlService;
+import com.zy.asrs.service.MatService;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
@@ -15,6 +22,12 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
import java.util.Map;
@RestController
@@ -22,6 +35,81 @@
@Autowired
private ManLocDetlService manLocDetlService;
+ @Autowired
+ private MatService matService;
+
+ @RequestMapping("/manLocDetl/matnr/count")
+ public R getCount(@RequestBody Map<String, String> param){
+ String matnr = param.get("matnr");
+ Double sum = 0.0;
+ if (Cools.isEmpty(matnr)){
+ sum = manLocDetlService.sum();
+ }else {
+ sum = manLocDetlService.getSumAnfme(matnr);
+ }
+
+ return R.ok(sum);
+ }
+
+ @RequestMapping(value = "/manLocDetl/export/auth")
+ @ManagerAuth(memo = "搴撲綅鏄庣粏瀵煎嚭")
+ public R export(@RequestBody JSONObject param){
+ List<String> fields = param.getJSONArray("fields") == null
+ ? Collections.emptyList()
+ : JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+ Map<String, Object> searchParam = param.getJSONObject("locDetl") == null
+ ? new HashMap<>()
+ : excludeTrash(param.getJSONObject("locDetl"));
+ String condition = searchParam.get("condition") == null ? null : String.valueOf(searchParam.remove("condition"));
+ List<ManLocDetl> list = manLocDetlService.selectList(buildWrapper(searchParam, condition));
+ return R.ok(exportSupport(list, fields));
+ }
+
+ @RequestMapping(value = "/manLocDetl/statis/export")
+// @ManagerAuth
+ public void statisExport(HttpServletResponse response) throws IOException {
+ List<ManLocDetl> excel = manLocDetlService.getStockStatisExcel();
+ for (ManLocDetl locDetl : excel) {
+ Mat mat = matService.selectByMatnr(locDetl.getMatnr());
+ if (mat != null) {
+ locDetl.sync(mat);
+ }
+ }
+ response.setContentType("application/vnd.ms-excel");
+ response.setCharacterEncoding("utf-8");
+ String fileName = URLEncoder.encode("骞冲簱搴撳瓨鏄庣粏缁熻鎶ヨ〃", "UTF-8");
+ response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+ EasyExcel.write(response.getOutputStream(), LocDetl.class)
+ .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+ .sheet("琛�1")
+ .doWrite(excel);
+ }
+
+ /**
+ * 鑾峰彇搴撳瓨鎬绘暟
+ * @return
+ */
+ @RequestMapping("/manLocDetl/count")
+ public R getAllCount(){
+ Double sum = manLocDetlService.sum();
+ return R.ok(sum);
+ }
+
+
+ @RequestMapping(value = "/manLocDetl/statis/auth")
+ @ManagerAuth
+ public R statis(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam Map<String, Object> param) {
+ Page<ManLocDetl> stockStatis = manLocDetlService.getStockStatis(toPage(curr, limit, param, ManLocDetl.class));
+ for (ManLocDetl locDetl : stockStatis.getRecords()) {
+ Mat mat = matService.selectByMatnr(locDetl.getMatnr());
+ if (mat != null) {
+ locDetl.sync(mat);
+ }
+ }
+ return R.ok().add(stockStatis);
+ }
@RequestMapping(value = "/manLocDetl/list/auth")
@ManagerAuth
@@ -29,31 +117,12 @@
@RequestParam(defaultValue = "10")Integer limit,
@RequestParam(required = false)String orderByField,
@RequestParam(required = false)String orderByType,
+ @RequestParam(required = false)String condition,
@RequestParam Map<String, Object> param){
- Long hostId = getHostId();
- if (hostId != null) {
- param.put("host_id", hostId);
- }
- Object nodeId = param.get("node_id");
- if (Cools.isEmpty(nodeId)) {
- nodeId = getOriginNode().getId();
- param.put("node_id", String.valueOf(nodeId));
- }
- Object tagId = param.get("tag_id");
- if (Cools.isEmpty(tagId)) {
- tagId = getOriginTag().getId();
- param.put("tag_id", String.valueOf(tagId));
- }
- if (!Cools.isEmpty(param.get("update_time"))){
- String val = String.valueOf(param.get("update_time"));
- if (val.contains(RANGE_TIME_LINK)) {
- String[] dates = val.split(RANGE_TIME_LINK);
- param.put("startTime", DateUtils.convert(dates[0]));
- param.put("endTime", DateUtils.convert(dates[1]));
- param.remove("update_time");
- }
- }
- return R.ok(manLocDetlService.getPage(toPage(curr, limit, param, ManLocDetl.class)));
+ EntityWrapper<ManLocDetl> wrapper = buildWrapper(param, condition);
+ if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+
+ return R.ok(manLocDetlService.selectPage(new Page<>(curr, limit), wrapper));
}
@@ -77,5 +146,43 @@
return R.ok("搴撳瓨璋冩暣鎴愬姛");
}
+// @RequestMapping(value = "/manLocDetl/asrsAndSaas/list")
+// @ManagerAuth
+// public R list(@RequestParam(defaultValue = "1")Integer curr,
+// @RequestParam(defaultValue = "10")Integer limit,
+// @RequestParam(required = false)String orderByField,
+// @RequestParam(required = false)String orderByType,
+// @RequestParam(required = false)String condition,
+// @RequestParam Map<String, Object> param){
+//
+// Page<ManLocDetl> manLocDetlPage = toPage(curr, limit, param, ManLocDetl.class);
+// Page<ManLocDetl> all = manLocDetlService.selectAllPage(manLocDetlPage);
+// return R.ok().add(all);
+// }
+ private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+ for (Map.Entry<String, Object> entry : map.entrySet()){
+ String val = String.valueOf(entry.getValue());
+ if (val.contains(RANGE_TIME_LINK)){
+ String[] dates = val.split(RANGE_TIME_LINK);
+ wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+ wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+ } else {
+ if (entry.getKey().equals("locNo")) {
+ wrapper.eq("loc_no", String.valueOf(entry.getValue()));
+ } else {
+ wrapper.like(entry.getKey(), String.valueOf(entry.getValue()));
+ }
+ }
+ }
+ }
+
+ private EntityWrapper<ManLocDetl> buildWrapper(Map<String, Object> param, String condition) {
+ EntityWrapper<ManLocDetl> wrapper = new EntityWrapper<>();
+ excludeTrash(param);
+ convert(param, wrapper);
+ allLike(ManLocDetl.class, param.keySet(), wrapper, condition);
+ return wrapper;
+ }
+
}
--
Gitblit v1.9.1