src/main/java/com/zy/asrs/controller/AgvLocDetlController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/controller/OrderLogController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/excel/CloseOrderReadListener.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/excel/ExcelOrder.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/AgvLocDetlController.java
@@ -123,7 +123,8 @@ AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", param.get("loc_no"))); String orderNo = null; if (agvWrkMast != null) { List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectByWrkNo(agvWrkMast.getWrkNo()); //List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectByWrkNo(agvWrkMast.getWrkNo()); List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); if (!agvWrkDetls.isEmpty()) { orderNo = agvWrkDetls.get(0).getOrderNo(); } src/main/java/com/zy/asrs/controller/OrderLogController.java
@@ -9,6 +9,8 @@ import com.core.common.*; import com.zy.asrs.entity.*; import com.zy.asrs.entity.result.WrkTraceVo; import com.zy.asrs.excel.CloseOrderReadListener; import com.zy.asrs.excel.ExcelOrder; import com.zy.asrs.service.*; import com.zy.common.web.BaseController; import lombok.extern.slf4j.Slf4j; @@ -42,6 +44,8 @@ private LocDetlService locDetlService; @Autowired private MatService matService; @Autowired private OrderService orderService; @RequestMapping(value = "/orderLog/nav/list/auth") @ManagerAuth @@ -81,7 +85,9 @@ EntityWrapper<OrderLog> wrapper = new EntityWrapper<>(); excludeTrash(param); convert(param, wrapper); if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else { if (!Cools.isEmpty(orderByField)) { wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType)); } else { wrapper.orderBy("settle").orderBy("create_time", false); } wrapper.eq("status", 1); @@ -93,9 +99,6 @@ public R head(@RequestParam Long orderId){ return R.ok().add(orderDetlLogService.selectList(new EntityWrapper<OrderDetlLog>().eq("order_id", orderId))); } @PostMapping(value = "/orderLog/wrk/trace/auth") @@ -185,7 +188,9 @@ EntityWrapper<OrderLog> wrapper = new EntityWrapper<>(); excludeTrash(param); convert(param, wrapper); if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} if (!Cools.isEmpty(orderByField)) { wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType)); } return R.ok(orderLogService.selectPage(new Page<>(curr, limit), wrapper)); } src/main/java/com/zy/asrs/excel/CloseOrderReadListener.java
New file @@ -0,0 +1,84 @@ package com.zy.asrs.excel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.read.listener.ReadListener; import com.alibaba.excel.util.ListUtils; import com.alibaba.fastjson.JSON; import com.zy.asrs.controller.AgvMobileController; import com.zy.asrs.entity.Order; import com.zy.asrs.service.OrderService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.List; public class CloseOrderReadListener implements ReadListener<ExcelOrder> { private static final Logger log = LoggerFactory.getLogger(CloseOrderReadListener.class); /** * 每隔5条存储数据库,实际使用中可以100条,然后清理list ,方便内存回收 */ private static final int BATCH_COUNT = 300; /** * 缓存的数据 */ private List<ExcelOrder> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT); private OrderService orderService; /** * 如果使用了spring,请使用这个构造方法。每次创建Listener的时候需要把spring管理的类传进来 * * @param orderService */ public CloseOrderReadListener(OrderService orderService) { this.orderService = orderService; } /** * 这个每一条数据解析都会来调用 * * @param data one row value. Is is same as * @param context */ @Override public void invoke(ExcelOrder data, AnalysisContext context) { log.info("解析到一条数据:{}", JSON.toJSONString(data)); cachedDataList.add(data); // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM if (cachedDataList.size() >= BATCH_COUNT) { saveData(); // 存储完成清理 list cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT); } } /** * 所有数据解析完成了 都会来调用 * * @param context */ @Override public void doAfterAllAnalysed(AnalysisContext context) { // 这里也要保存数据,确保最后遗留的数据也存储到数据库 saveData(); log.info("所有数据解析完成!"); } /** * 加上存储数据库 */ private void saveData() { log.info("{}条数据,开始操作数据库!", cachedDataList.size()); for (ExcelOrder excelOrder : cachedDataList) { Order order = orderService.selectByNo(excelOrder.getOrderNo()); if (order != null) { orderService.updateSettle(order.getId(), 6L, 9529L); } } log.info("存储数据库成功!"); } } src/main/java/com/zy/asrs/excel/ExcelOrder.java
New file @@ -0,0 +1,14 @@ package com.zy.asrs.excel; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; import java.io.Serializable; @Data public class ExcelOrder implements Serializable { @ExcelProperty("单据编号") private String orderNo; }