From 09a482e8fb4d4dac63aed1503fd91e738ddb070d Mon Sep 17 00:00:00 2001 From: whycq <10027870+whycq@user.noreply.gitee.com> Date: 星期四, 04 七月 2024 10:42:24 +0800 Subject: [PATCH] # 并板出库 --- src/main/java/com/zy/asrs/controller/MatController.java | 146 ++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 132 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/MatController.java b/src/main/java/com/zy/asrs/controller/MatController.java index b842a73..3c2bac0 100644 --- a/src/main/java/com/zy/asrs/controller/MatController.java +++ b/src/main/java/com/zy/asrs/controller/MatController.java @@ -1,6 +1,8 @@ package com.zy.asrs.controller; import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -10,11 +12,12 @@ import com.core.annotations.ManagerAuth; import com.core.common.*; import com.core.exception.CoolException; -import com.zy.asrs.entity.Mat; -import com.zy.asrs.entity.MatPrint; -import com.zy.asrs.entity.OrderDetl; +import com.zy.asrs.entity.*; import com.zy.asrs.entity.result.KeyValueVo; +import com.zy.asrs.mapper.TagMapper; +import com.zy.asrs.service.ManPakOutService; import com.zy.asrs.service.MatService; +import com.zy.asrs.service.OrderDetlService; import com.zy.asrs.utils.MatExcelListener; import com.zy.common.CodeRes; import com.zy.common.config.AdminInterceptor; @@ -22,25 +25,34 @@ import com.zy.common.utils.BarcodeUtils; import com.zy.common.utils.QrCode; 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.*; import org.springframework.web.multipart.MultipartFile; +import javax.annotation.Resource; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletResponse; import java.awt.image.BufferedImage; import java.io.IOException; +import java.io.OutputStream; import java.net.URLEncoder; import java.util.*; +import java.util.stream.Collectors; @RestController +@Slf4j public class MatController extends BaseController { @Autowired private MatService matService; @Autowired + private OrderDetlService orderDetlService; + @Autowired private SnowflakeIdWorker snowflakeIdWorker; + @Autowired + private ManPakOutService manPakOutService; @RequestMapping(value = "/mat/auto/matnr/auth") public R autoMatnr(){ @@ -57,6 +69,7 @@ return R.ok().add(mats); } + @RequestMapping(value = "/mat/search/pda/auth") @ManagerAuth public R pdaSearch(@RequestParam(required = false)String condition){ @@ -68,6 +81,16 @@ List<Mat> mats = matService.selectList(wrapper); return R.ok().add(mats); } + @RequestMapping(value = "/mat/list/pda/page/auth") + @ManagerAuth + public R pdaPageList(@RequestParam(required = true)Long tagId, + @RequestParam(defaultValue = "1")Integer curr, + @RequestParam(defaultValue = "10")Integer limit){ + EntityWrapper<Mat> wrapper = new EntityWrapper<>(); + wrapper.eq("tag_id", tagId); + wrapper.orderBy("create_time", false); + return R.ok().add(matService.selectPage(new Page<>(curr, limit), wrapper)); + } @RequestMapping(value = "/mat/{id}/auth") @ManagerAuth @@ -75,7 +98,7 @@ return R.ok(matService.selectById(String.valueOf(id))); } - @RequestMapping(value = "/matCode/auth0") + @RequestMapping(value = "/mat/auth") @ManagerAuth public R find(@RequestParam("matnr") String matnr) { return R.ok(matService.selectOne(new EntityWrapper<Mat>().eq("matnr", matnr))); @@ -95,7 +118,8 @@ return R.ok(matService.getPage(new Page<>(curr, limit) , String.valueOf(tagId) , param.get("matnr") - , param.get("maktx")) + , param.get("maktx") + , param.get("batch")) ); } @@ -157,16 +181,72 @@ } return R.ok(); } + @Resource + private TagMapper tagMapper; @RequestMapping(value = "/mat/export/auth") @ManagerAuth - public R export(@RequestBody JSONObject param){ - EntityWrapper<Mat> wrapper = new EntityWrapper<>(); - List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); - Map<String, Object> map = excludeTrash(param.getJSONObject("mat")); - convert(map, wrapper); - List<Mat> list = matService.selectList(wrapper); - return R.ok(exportSupport(list, fields)); + public void export(@RequestBody JSONObject param, HttpServletResponse response) throws IOException { + //鏂囦欢鍚� + String fileName =String.valueOf(System.currentTimeMillis()); + + OutputStream outputStream =null; + try { + //璁板綍鎬绘暟:瀹為檯涓渶瑕佹牴鎹煡璇㈡潯浠惰繘琛岀粺璁″嵆鍙�:涓�鍏卞灏戞潯 + int totalCount=matService.selectCount(null); + //姣忎竴涓猄heet瀛樻斁100w鏉℃暟鎹� + Integer sheetDataRows = 400000; + //姣忔鍐欏叆鐨勬暟鎹噺20w,姣忛〉鏌ヨ20W + Integer writeDataRows = 200000; + //璁$畻闇�瑕佺殑Sheet鏁伴噺 + Integer sheetNum = totalCount % sheetDataRows == 0 ? (totalCount / sheetDataRows) : (totalCount / sheetDataRows + 1); + //璁$畻涓�鑸儏鍐典笅姣忎竴涓猄heet闇�瑕佸啓鍏ョ殑娆℃暟(涓�鑸儏鍐典笉鍖呭惈鏈�鍚庝竴涓猻heet,鍥犱负鏈�鍚庝竴涓猻heet涓嶇‘瀹氫細鍐欏叆澶氬皯鏉℃暟鎹�) + Integer oneSheetWriteCount = sheetDataRows / writeDataRows; + //璁$畻鏈�鍚庝竴涓猻heet闇�瑕佸啓鍏ョ殑娆℃暟 + Integer lastSheetWriteCount = totalCount % sheetDataRows == 0 ? oneSheetWriteCount : (totalCount % sheetDataRows % writeDataRows == 0 ? (totalCount / sheetDataRows / writeDataRows) : ((totalCount % sheetDataRows) / writeDataRows + 1)); + outputStream = response.getOutputStream(); + //蹇呴』鏀惧埌寰幆澶栵紝鍚﹀垯浼氬埛鏂版祦 + ExcelWriter excelWriter = EasyExcel.write(outputStream).build(); + //寮�濮嬪垎鎵规煡璇㈠垎娆″啓鍏� + for (int i = 0; i < sheetNum; i++) { + //鍒涘缓Sheet + WriteSheet sheet = new WriteSheet(); + sheet.setSheetName("Sheet"+i); + sheet.setSheetNo(i); + //寰幆鍐欏叆娆℃暟: j鐨勮嚜澧炴潯浠舵槸褰撲笉鏄渶鍚庝竴涓猄heet鐨勬椂鍊欏啓鍏ユ鏁颁负姝e父鐨勬瘡涓猄heet鍐欏叆鐨勬鏁�,濡傛灉鏄渶鍚庝竴涓氨闇�瑕佷娇鐢ㄨ绠楃殑娆℃暟lastSheetWriteCount + for (int j = 0; j < (i != sheetNum - 1 ? oneSheetWriteCount : lastSheetWriteCount); j++) { + //鍒嗛〉鏌ヨ涓�娆�20w + Page page1 = new Page(j + 1 + oneSheetWriteCount * i, writeDataRows); + //鏌ヨ鍒嗛〉鍒楄〃---鎸夌収鑷繁鐨勪笟鍔℃煡鍒楄〃锛屽垎椤佃繖涓竴瀹氳浣跨敤杩欎釜锛歱age1.getPageNum(),page1.getPageSize()锛侊紒锛� + List<Mat> list = matService.selectPage(new Page<>(page1.getCurrent(), page1.getLimit())).getRecords(); + List<Tag> tags = tagMapper.selectList(null); + // 鎵�鏈夌被鍒� + Map<Long, String> tagMaps = tags.stream().collect(Collectors.toMap(Tag::getId,Tag::getName,(v1,v2) -> v1)); + // 褰掔被id瀵绘壘褰掔被鍚嶇О + list = list.stream().peek(mat -> mat.setUuid(tagMaps.get(mat.getTagId()))).collect(Collectors.toList()); + //鍐欏叆鍒癳xcel: + /**************z鍙渶瑕侀�夋嫨涓�绉嶆柟寮忓嵆鍙�*****************/ + //杩欓噷鍙互閫氳繃璁剧疆includeColumnFiledNames銆乪xcludeColumnFiledNames瀵煎嚭浠�涔堝瓧娈碉紝鍙互鍔ㄦ�侀厤缃紝鍓嶇浼犺繃鏉ラ偅浜涘垪锛屽氨瀵煎嚭閭d簺鍒� + //鏂瑰紡3銆佷笉鍋氳缃紝鍏ㄩ儴瀵煎嚭 + WriteSheet writeSheet = EasyExcel.writerSheet(i, "Sheet" + (i + 1)).head(Mat.class) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build(); + excelWriter.write(list, writeSheet); + } + } + // 涓嬭浇EXCEL锛岃繑鍥炵粰鍓嶆stream娴� + response.setContentType("application/octet-stream"); + response.setCharacterEncoding("utf-8"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + excelWriter.finish(); + outputStream.flush(); + outputStream.close(); + } catch (Exception e) { + e.printStackTrace(); + }finally { + if (outputStream != null) { + outputStream.close(); + } + } } @RequestMapping(value = "/matQuery/auth") @@ -203,7 +283,7 @@ return R.ok(); } OrderDetl orderDetl = new OrderDetl(); - orderDetl.sync(orderDetl); + orderDetl.sync(mat); orderDetl.setAnfme(0.0D); return R.ok().add(orderDetl); } @@ -256,6 +336,44 @@ return R.ok().add(res); } + @RequestMapping(value = "/order/print/auth") + @ManagerAuth(memo = "璁㈠崟缂栫爜鎵撳嵃") + public R orderPrint(@RequestParam(value = "param[]") String[] param) { + if(Cools.isEmpty(param)) { + return R.parse(CodeRes.EMPTY); + } + List<OrderDetl> res = new ArrayList<>(); + for (String orderNo : param){ + res = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", orderNo)); + } + for (OrderDetl orderDetl: + res) { + orderDetl.setAnfme(orderDetl.getAnfme()-orderDetl.getWorkQty()); + } + return R.ok().add(res); + } + + @RequestMapping(value = "/pakOut/print/auth") + @ManagerAuth(memo = "鎷h揣鍗曠紪鐮佹墦鍗�") + public R pakOutPrint(@RequestParam(value = "param[]") String[] param) { + if(Cools.isEmpty(param)) { + return R.parse(CodeRes.EMPTY); + } + List<ManPakOut> res = new ArrayList<>(); + for (String docNum : param){ + ManPakOut manPakOut = manPakOutService.selectOne(new EntityWrapper<ManPakOut>().eq("doc_num", docNum)); + res.add(manPakOut); + break; + } + return R.ok().add(res); + } + @RequestMapping(value = "/pakOut/show") + public R showQR(){ + List<ManPakOut> manPakOuts = manPakOutService.selectList(null); + return R.ok(manPakOuts); + } + + /*************************************** 鏁版嵁鐩稿叧 ***********************************************/ @@ -299,7 +417,7 @@ for (Mat mat : mats) { KeyValueVo vo = new KeyValueVo(); vo.setName(mat.getMatnr() + " - " + mat.getMaktx()); - vo.setValue(mat.getId()); + vo.setValue(mat.getMatnr()); valueVos.add(vo); } return R.ok().add(valueVos); -- Gitblit v1.9.1