From 25314b5ee613c48e7db31138d7fcb8abc4c536be Mon Sep 17 00:00:00 2001 From: zyx <zyx123456> Date: 星期日, 14 一月 2024 20:15:05 +0800 Subject: [PATCH] # 功能完善 --- src/main/java/com/zy/asrs/controller/PlaController.java | 105 +++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 90 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/PlaController.java b/src/main/java/com/zy/asrs/controller/PlaController.java index f8978f1..815f418 100644 --- a/src/main/java/com/zy/asrs/controller/PlaController.java +++ b/src/main/java/com/zy/asrs/controller/PlaController.java @@ -1,26 +1,30 @@ package com.zy.asrs.controller; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.core.annotations.ManagerAuth; import com.core.common.DateUtils; import com.core.common.R; import com.core.exception.CoolException; -import com.zy.asrs.entity.ManPakOut; -import com.zy.asrs.entity.Pla; -import com.zy.asrs.entity.PlaQty; -import com.zy.asrs.service.ManPakOutService; -import com.zy.asrs.service.PlaQtyService; -import com.zy.asrs.service.PlaService; +import com.zy.asrs.entity.*; +import com.zy.asrs.service.*; +import com.zy.asrs.utils.PlaExcelListener; import com.zy.asrs.utils.SaasUtils; +import com.zy.common.entity.PlaExcel; import com.zy.common.web.BaseController; +import lombok.Synchronized; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -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 org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; @@ -34,6 +38,12 @@ private PlaQtyService plaQtyService; @Autowired private ManPakOutService manPakOutService; + @Autowired + private OrderService orderService; + @Autowired + private OrderDetlService orderDetlService; + @Autowired + private PlaLogService plaLogService; @RequestMapping(value = "/pla/list/auth") @ManagerAuth @@ -44,6 +54,7 @@ excludeTrash(param); EntityWrapper<Pla> wrapper = new EntityWrapper<>(); convert(param, wrapper); + wrapper.orderBy("pakin_time",false); allLike(Pla.class, param.keySet(), wrapper, condition); return R.ok(plaService.selectPage(new Page<>(curr, limit), wrapper)); } @@ -63,6 +74,11 @@ public R update(@RequestBody List<Pla> plas) { System.out.println(plas.toString()); plas.forEach(pla -> { + Pla plaSave = plaService.selectById(pla.getId()); + PlaLog plaLog = new PlaLog(); + BeanUtils.copyProperties(plaSave,plaLog); + plaLog.setId(null); + plaLogService.insert(plaLog); plaService.updateById(pla); }); return R.ok(); @@ -76,29 +92,52 @@ @RequestMapping(value = "/pla/sellout/auth") @ManagerAuth + @Transactional + @Synchronized public R sellout(@RequestBody List<Pla> plas) { - plas.forEach(pla -> { + String orderNo = plas.get(0).getOrderNo(); + String maktx = plas.get(0).getBrand(); + Double allOrderWeight = 0.0; + Order order = orderService.selectByNo(orderNo); + OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMaktx(orderNo, maktx); + + for (Pla pla : plas){ + + allOrderWeight += pla.getOrderWeight(); if(pla.getWeightAnfme() - pla.getQtyAnfme() - pla.getOrderWeight() < 0){ - throw new CoolException("璇ュ簱瀛樺墿浣欓噸閲忎笉瓒筹紝璇疯皟鏁村嚭搴撻噸閲�"); + throw new CoolException("鎵瑰彿:" + pla.getBatch() +"锛屽寘鍙�:" + pla.getPackageNo() +" 鍓╀綑鍙嚭搴撻噸閲忎笉瓒筹紝璇疯皟鏁村嚭搴撻噸閲�"); } pla.setQtyAnfme(pla.getQtyAnfme() + pla.getOrderWeight()); pla.setHandlerBy(getUser().getUsername()); pla.setStatus("寰呭嚭搴�"); pla.setPakoutTime(pla.getPakoutTime().split("\\(")[0]); + //鐢熸垚姝ゆ浣滀笟淇℃伅 PlaQty plaQty = new PlaQty(); BeanUtils.copyProperties(pla,plaQty); plaQty.setCreateTime(new Date()); plaQty.setId(null); - + plaQty.setTransfer(order.getDocType$()); + plaQty.setOrderDetlId(orderDetl.getId()); plaService.updateById(pla); plaQtyService.insert(plaQty); - //鐢熸垚鎷h揣鍗� addPakOUT(plaQty); - }); + }; + + //淇敼鍗曟嵁淇℃伅 + if(orderDetl.getAnfme()-orderDetl.getWorkQty()-allOrderWeight < 0){ + throw new CoolException("璇ヨ鍗曞嚭搴撴暟閲忓ぇ浜庤鍗曞緟鍑烘暟閲忥紝璇烽噸鏂伴�夋嫨鍑哄簱鏁伴噺"); + } + if(order.getStatus() < 2){ + orderService.updateSettle(order.getId(),2L,getUserId()); + } + + orderDetl.setWorkQty(orderDetl.getWorkQty() + allOrderWeight); + orderDetlService.updateById(orderDetl); + return R.ok(); } @@ -125,6 +164,36 @@ return R.ok(); } + /** + * excel瀵煎叆妯℃澘涓嬭浇 + */ + @RequestMapping(value = "/pla/excel/import/mould") + public void plaExcelImportMould(HttpServletResponse response) throws IOException { + List<PlaExcel> excels = new ArrayList<>(); + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("鑱氫钩閰窫xcel瀵煎叆妯℃澘", "UTF-8"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream(), PlaExcel.class) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + .sheet("sheet1") + .doWrite(excels); + } + + // excel瀵煎叆 + @PostMapping(value = "/pla/excel/import/auth") + @ManagerAuth(memo = "pla妗f鏁版嵁瀵煎叆") + @Transactional + public R matExcelImport(MultipartFile file) throws IOException { + PlaExcelListener listener = new PlaExcelListener(getUserId()); + try { + EasyExcel.read(file.getInputStream(), PlaExcel.class, listener).sheet().doRead(); + }catch (Exception e){ + throw new CoolException("瀵煎叆鐨勬暟鎹牸寮忛敊璇紝鍘熷洜锛�" + e.getMessage()); + } + return R.ok("鎴愬姛鍚屾"+listener.getTotal()+"鏉la鐗╂枡鏁版嵁"); + } + 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()); @@ -132,6 +201,10 @@ 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().contains("Min")){ + wrapper.ge(entry.getKey().substring(0,entry.getKey().length()-3),val); + }else if (entry.getKey().contains("Max")){ + wrapper.le(entry.getKey().substring(0,entry.getKey().length()-3),val); } else { wrapper.like(entry.getKey(), val); } @@ -143,6 +216,7 @@ manPakOut.setWrkNo(plaQty.getOrderNo()+"-"+System.currentTimeMillis()); manPakOut.setWrkSts((long)1); manPakOut.setAnfme(plaQty.getOrderWeight()); + manPakOut.setMaktx(plaQty.getBrand()); manPakOut.setLocNo(plaQty.getLocNo()); manPakOut.setBatch(plaQty.getBatch()); manPakOut.setBarcode(plaQty.getPackageNo()); @@ -152,6 +226,7 @@ manPakOut.setCount(0.0); manPakOut.setDocNum(plaQty.getOrderNo()); manPakOut.setStatus(0); + manPakOut.setDocId(plaQty.getOrderDetlId()); manPakOut.setNodeId(plaQty.getId()); //manPakOut.setNodeId(plaQty.getOrderDetlId()); manPakOutService.insert(manPakOut); -- Gitblit v1.9.1