| src/main/java/com/zy/asrs/controller/OpenController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/controller/WrkMastController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/config/AdminInterceptor.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/config/RequestBodyCacheFilter.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/service/CommonService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/static/js/wrkBatchOut/wrkBatchOut.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/views/wrkBatchOut/wrkBatchOut.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -35,7 +35,6 @@ import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -112,42 +111,11 @@ if (param == null) { return R.error("参数不能为空"); } List<CreateOutTaskParam> taskList = param.getTaskList(); if (taskList == null || taskList.size() == 0) { return R.error("任务列表不能为空"); boolean result = commonService.createOutTaskBatch(param); if (result) { return R.ok(); } List<CreateOutTaskParam> sortedTaskList = new ArrayList<>(taskList); sortedTaskList.sort(Comparator.nullsLast(Comparator .comparing(this::getSortableBatch, Comparator.nullsLast(String::compareTo)) .thenComparing(this::getSortableBatchSeq, Comparator.nullsLast(Integer::compareTo)))); for (CreateOutTaskParam createOutTaskParam : sortedTaskList) { if (createOutTaskParam == null) { throw new CoolException("任务参数不能为空"); } commonService.createOutTask(createOutTaskParam); } return R.ok(); } private String getSortableBatch(CreateOutTaskParam param) { if (param == null) { return null; } String batch = param.getBatch(); if (batch == null || batch.trim().isEmpty()) { return null; } return batch; } private Integer getSortableBatchSeq(CreateOutTaskParam param) { if (param == null) { return null; } return param.getBatchSeq(); return R.error("生成批量出库任务失败"); } @PostMapping("/completeTask") src/main/java/com/zy/asrs/controller/WrkMastController.java
@@ -6,11 +6,16 @@ import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.R; import com.zy.asrs.domain.param.CreateOutTaskBatchParam; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.WrkMastService; import com.zy.common.service.CommonService; import com.zy.common.web.BaseController; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; 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.RequestParam; import org.springframework.web.bind.annotation.RestController; @@ -23,6 +28,8 @@ @Autowired private WrkMastService wrkMastService; @Autowired private CommonService commonService; @RequestMapping(value = "/wrkMast/list/auth") @ManagerAuth @@ -47,6 +54,20 @@ return R.ok(wrkMastService.page(new Page<>(curr, limit), wrapper)); } @PostMapping(value = "/wrkBatchOut/create/auth") @ManagerAuth(memo = "生成出库任务") @Transactional public R createBatchOutTask(@RequestBody CreateOutTaskBatchParam param) { if (param == null) { return R.error("参数不能为空"); } boolean result = commonService.createOutTaskBatch(param); if (result) { return R.ok(); } return R.error("生成批量出库任务失败"); } private <T> void convert(Map<String, Object> map, QueryWrapper<T> wrapper){ for (Map.Entry<String, Object> entry : map.entrySet()){ String val = String.valueOf(entry.getValue()); src/main/java/com/zy/common/config/AdminInterceptor.java
@@ -16,9 +16,12 @@ import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.util.ContentCachingRequestWrapper; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.lang.reflect.Method; import java.util.Date; import java.util.LinkedHashMap; @@ -99,6 +102,7 @@ return; } OperateLog operateLog = (OperateLog) obj; operateLog.setRequest(buildRequestContent(request)); operateLog.setResponse(buildResponseContent(response, ex)); try { operateLogService.save(operateLog); @@ -188,11 +192,38 @@ operateLog.setAction(Cools.isEmpty(memo) ? request.getRequestURI() : memo); operateLog.setIp(request.getRemoteAddr()); operateLog.setUserId(userId); operateLog.setRequest(JSON.toJSONString(request.getParameterMap())); operateLog.setCreateTime(new Date()); request.setAttribute(ATTR_OPERATE_LOG, operateLog); } private String buildRequestContent(HttpServletRequest request) { String body = readCachedBody(request); if (!Cools.isEmpty(body)) { return body; } return JSON.toJSONString(request.getParameterMap()); } private String readCachedBody(HttpServletRequest request) { if (!(request instanceof ContentCachingRequestWrapper)) { return null; } ContentCachingRequestWrapper wrapper = (ContentCachingRequestWrapper) request; byte[] content = wrapper.getContentAsByteArray(); if (content == null || content.length == 0) { return null; } Charset charset = StandardCharsets.UTF_8; if (!Cools.isEmpty(wrapper.getCharacterEncoding())) { try { charset = Charset.forName(wrapper.getCharacterEncoding()); } catch (Exception ignored) { } } String body = new String(content, charset).trim(); return body.isEmpty() ? null : body; } private String buildResponseContent(HttpServletResponse response, Exception ex) { Map<String, Object> result = new LinkedHashMap<>(); result.put("status", response.getStatus()); src/main/java/com/zy/common/config/RequestBodyCacheFilter.java
New file @@ -0,0 +1,29 @@ package com.zy.common.config; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import org.springframework.web.filter.OncePerRequestFilter; import org.springframework.web.util.ContentCachingRequestWrapper; import java.io.IOException; @Component @Order(Ordered.HIGHEST_PRECEDENCE) public class RequestBodyCacheFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { if (request instanceof ContentCachingRequestWrapper) { filterChain.doFilter(request, response); return; } ContentCachingRequestWrapper requestWrapper = new ContentCachingRequestWrapper(request); filterChain.doFilter(requestWrapper, response); } } src/main/java/com/zy/common/service/CommonService.java
@@ -21,6 +21,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Comparator; import java.util.Date; import java.util.List; import java.util.Random; @@ -481,6 +482,48 @@ return true; } public boolean createOutTaskBatch(CreateOutTaskBatchParam param) { if (param == null) { throw new CoolException("参数不能为空"); } List<CreateOutTaskParam> taskList = param.getTaskList(); if (taskList == null || taskList.isEmpty()) { throw new CoolException("任务列表不能为空"); } List<CreateOutTaskParam> sortedTaskList = new ArrayList<>(taskList); sortedTaskList.sort(Comparator.nullsLast(Comparator .comparing(this::getSortableBatch, Comparator.nullsLast(String::compareTo)) .thenComparing(this::getSortableBatchSeq, Comparator.nullsLast(Integer::compareTo)))); for (CreateOutTaskParam createOutTaskParam : sortedTaskList) { if (createOutTaskParam == null) { throw new CoolException("任务参数不能为空"); } createOutTask(createOutTaskParam); } return true; } private String getSortableBatch(CreateOutTaskParam param) { if (param == null) { return null; } String batch = param.getBatch(); if (batch == null || batch.trim().isEmpty()) { return null; } return batch; } private Integer getSortableBatchSeq(CreateOutTaskParam param) { if (param == null) { return null; } return param.getBatchSeq(); } public FindCrnNoResult findCrnNoByLocNo(String locNo) { List<BasCrnp> basCrnps = basCrnpService.list(new QueryWrapper<>()); for (BasCrnp basCrnp : basCrnps) { src/main/webapp/static/js/wrkBatchOut/wrkBatchOut.js
@@ -336,7 +336,7 @@ vm.submitting = true; $.ajax({ url: baseUrl + "/openapi/createOutTaskBatch", url: baseUrl + "/wrkBatchOut/create/auth", contentType: "application/json", headers: { token: localStorage.getItem("token") }, data: JSON.stringify({ taskList: taskList }), src/main/webapp/views/wrkBatchOut/wrkBatchOut.html
@@ -484,5 +484,5 @@ <script type="text/javascript" src="../../static/js/common.js?v=20260309_i18n_fix1"></script> <script type="text/javascript" src="../../static/vue/js/vue.min.js"></script> <script type="text/javascript" src="../../static/vue/element/element.js"></script> <script type="text/javascript" src="../../static/js/wrkBatchOut/wrkBatchOut.js?v=20260321_batch_outbound_table_v5"></script> <script type="text/javascript" src="../../static/js/wrkBatchOut/wrkBatchOut.js?v=20260321_batch_outbound_table_v6"></script> </html>