From 0c0cd17fb9162c0c949c354adcd422d605aad7b9 Mon Sep 17 00:00:00 2001 From: zyx <zyx123456> Date: 星期一, 15 四月 2024 16:11:32 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/controller/PlaController.java | 324 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 316 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/PlaController.java b/src/main/java/com/zy/asrs/controller/PlaController.java index 6cbdfc6..da4ebed 100644 --- a/src/main/java/com/zy/asrs/controller/PlaController.java +++ b/src/main/java/com/zy/asrs/controller/PlaController.java @@ -1,27 +1,53 @@ 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.Cools; import com.core.common.DateUtils; import com.core.common.R; -import com.zy.asrs.entity.Pla; -import com.zy.asrs.service.PlaService; +import com.core.exception.CoolException; +import com.zy.asrs.entity.*; +import com.zy.asrs.entity.param.GlobleParameter; +import com.zy.asrs.service.*; +import com.zy.asrs.utils.PlaExcelListener; +import com.zy.asrs.utils.SaasUtils; +import com.zy.common.CodeRes; +import com.zy.common.entity.PlaExcel; import com.zy.common.web.BaseController; +import lombok.Synchronized; +import lombok.extern.slf4j.Slf4j; +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 java.util.List; -import java.util.Map; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.*; @RestController +@Slf4j public class PlaController extends BaseController { @Autowired private PlaService plaService; + @Autowired + private PlaQtyService plaQtyService; + @Autowired + private ManPakOutService manPakOutService; + @Autowired + private OrderService orderService; + @Autowired + private OrderDetlService orderDetlService; + @Autowired + private PlaLogService plaLogService; + @Autowired + private MatService matService; @RequestMapping(value = "/pla/list/auth") @ManagerAuth @@ -31,7 +57,19 @@ @RequestParam Map<String, Object> param){ excludeTrash(param); EntityWrapper<Pla> wrapper = new EntityWrapper<>(); + + if(!Cools.isEmpty(param.get("brand"))){ + wrapper.eq("brand",param.get("brand")); + param.remove("brand"); + } + // 娌℃湁閫夋嫨鐨勬椂鍊欓粯璁や笉鏄剧ず宸插嚭搴撶殑鐗╂枡 + if (Cools.isEmpty(param.get("status"))) { + wrapper.ne("status", "鍏ㄩ儴鍑哄簱"); + } + + convert(param, wrapper); + wrapper.orderBy("batch",true).orderBy("package_no" ,true); allLike(Pla.class, param.keySet(), wrapper, condition); return R.ok(plaService.selectPage(new Page<>(curr, limit), wrapper)); } @@ -51,9 +89,252 @@ public R update(@RequestBody List<Pla> plas) { System.out.println(plas.toString()); plas.forEach(pla -> { + Pla plaSave = plaService.selectById(pla.getId()); + pla.setModifyTime(new Date()); plaService.updateById(pla); + + PlaLog plaLog = new PlaLog(); + BeanUtils.copyProperties(plaSave,plaLog); + plaLog.setId(null); + plaLog.setCreateTime(new Date()); + plaLog.setModifyUser(getUser().getUsername()); + plaLogService.insert(plaLog); + }); return R.ok(); + } + + @RequestMapping(value = "/pla/delete/auth") + @ManagerAuth + public R delete(@RequestBody List<Pla> plas) { + System.out.println(plas.toString()); + plas.forEach(pla -> { + if(!pla.getStatus().equals(GlobleParameter.PLA_STATUS_00) && !pla.getStatus().equals(GlobleParameter.PLA_STATUS_0) && !pla.getStatus().equals(GlobleParameter.PLA_STATUS_1)){ + throw new CoolException("宸插叆搴撶殑鏁版嵁鏃犳硶琚垹闄�"); + } + Pla plaSave = plaService.selectById(pla.getId()); + pla.setModifyTime(new Date()); + plaService.deleteById(pla.getId()); + + PlaLog plaLog = new PlaLog(); + BeanUtils.copyProperties(plaSave,plaLog); + plaLog.setId(null); + plaLog.setCreateTime(new Date()); + plaLog.setModifyUser(getUser().getUsername()); + plaLogService.insert(plaLog); + + }); + return R.ok(); + } + + @RequestMapping(value = "/pla/delivery/auth") + @ManagerAuth + public R delivery() { + return R.ok(plaQtyService.getDeliveryDate()); + } + + @RequestMapping(value = "/pla/sellout/auth") + @ManagerAuth + @Transactional + @Synchronized + public R sellout(@RequestBody List<Pla> plas) { + + 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){ + + if(pla.getStockFreeze() == 0){ + throw new CoolException("搴撳瓨宸茶鍐荤粨锛岃閲嶆柊閫夋嫨搴撳瓨"); + } + + allOrderWeight += pla.getOrderWeight(); + + if(pla.getWeightAnfme() - pla.getQtyAnfme() - pla.getOrderWeight() < 0){ + throw new CoolException("鎵瑰彿:" + pla.getBatch() +"锛屽寘鍙�:" + pla.getPackageNo() +" 鍓╀綑鍙嚭搴撻噸閲忎笉瓒筹紝璇疯皟鏁村嚭搴撻噸閲�"); + } + pla.setQtyAnfme(pla.getQtyAnfme() + pla.getOrderWeight()); + pla.setHandlerBy(getUser().getUsername()); + pla.setStatus(GlobleParameter.PLA_STATUS_2); + pla.setModifyTime(new Date()); + 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(); + } + + @RequestMapping(value = "/pla/returned/auth") + @ManagerAuth + public R returned(@RequestBody List<PlaQty> plaQties) { + plaService.returned(plaQties,getUser()); + return R.ok(); + } + + @RequestMapping(value = "/pla/viladate/auth") + @ManagerAuth + public R viladate(@RequestBody List<Pla> plas) { + plaService.viladate(plas,getUser()); + return R.ok(); + } + + @RequestMapping(value = "/pla/rework/auth") + @ManagerAuth + public R rework(@RequestBody List<Pla> plas) { + plas.forEach(pla -> { + Double anfme = pla.getWeightAnfme(); + pla.setStatus("鍏ㄩ儴鍑哄簱"); + pla.setModifyTime(new Date()); + pla.setWeightAnfme(0.0); + plaService.updateById(pla); + SaasUtils.insertLog(1,pla.getLocNo(),pla.getBrand(),anfme,getUser().getUsername(), + null,pla.getBatch(),pla.getPackageNo(),pla.getOwner(),pla.getWorkshop()); + }); + + return R.ok(); + } + + @RequestMapping(value = "/pla/updateStockFreeze") + @Transactional + @ManagerAuth(memo = "搴撲綅鍐荤粨") + public R updateStockFreeze(@RequestBody List<Pla> plas){ + if (Cools.isEmpty(plas)){ + return R.error("鏃犳暟鎹�"); + } + for (Pla pla : plas){ + if (pla.getStockFreeze() == 0){ + throw new CoolException("搴撳瓨宸茶鍐荤粨锛�"); + } + pla.setStockFreeze(0); + pla.setStockFreezeBy(getUser().getUsername()); + pla.setStockFreezeDate(new Date()); + pla.setModifyTime(new Date()); + plaService.updateById(pla); + } + return R.ok("鍐荤粨鎴愬姛"); + } + + @RequestMapping(value = "/pla/updateStockDisFreeze") + @ManagerAuth(memo = "搴撲綅瑙e喕") + public R updateStockDisFreeze(@RequestBody List<Pla> plas){ + if (Cools.isEmpty(plas)){ + return R.error("鏃犳暟鎹�"); + } + for (Pla pla : plas){ + if (pla.getStockFreeze() == 1){ + throw new CoolException("搴撲綅鏈喕缁擄紝鏃犻渶瑙e喕"); + } + if(!Cools.eq(pla.getStockFreezeBy(),getUser().getUsername())){ + throw new CoolException("鏃犳硶瑙e喕鍏朵粬鐢ㄦ埛鍐荤粨鐨勫簱浣�"); + } + pla.setStockFreeze(1); + pla.setStockFreezeBy(getUser().getUsername()); + pla.setStockFreezeDate(new Date()); + pla.setModifyTime(new Date()); + plaService.updateById(pla); + + } + return R.ok("瑙i櫎鍐荤粨鎴愬姛"); + } + + @RequestMapping(value = "/matMaktxQuery/auth") + @ManagerAuth + public R queryMat(String condition) { + EntityWrapper<Mat> wrapper = new EntityWrapper<>(); + wrapper.like("maktx", condition); + Page<Mat> page = matService.selectPage(new Page<>(0, 10), wrapper); + List<Map<String, Object>> result = new ArrayList<>(); + for (Mat mat : page.getRecords()){ + Map<String, Object> map = new HashMap<>(); + map.put("id", mat.getMaktx()); + map.put("value", mat.getMaktx()); + result.add(map); + } + return R.ok(result); + } + + @RequestMapping(value = "/pla/statis/auth") + @ManagerAuth + public R statis(@RequestParam(defaultValue = "1")Integer curr, + @RequestParam(defaultValue = "10")Integer limit, + @RequestParam Map<String, Object> param) { + + Page<Pla> stockStatis = plaService.getStockStatisAll(toPage(curr, limit, param, Pla.class)); + + return R.ok().add(stockStatis); + } + + /** + * 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){ + e.printStackTrace(); + int index = listener.getIndex() - 1; + throw new CoolException("瀵煎叆鐨勬暟鎹牸寮忛敊璇紝鍘熷洜锛�" + e.getMessage() + "锛岀" + index + "锛屾暟鎹牸寮忎笉瀵�"); + } + log.info("瀵煎叆淇敼淇℃伅杈撳嚭锛�" + listener.getRecordLog()); + return R.ok("鎴愬姛鍚屾"+listener.getTotal()+"鏉la鐗╂枡鏁版嵁"); + } + + // 鎵撳嵃 + @RequestMapping(value = "/pla/print/auth") + @ManagerAuth(memo = "pla缂栫爜鎵撳嵃") + public R matCodePrint(@RequestBody List<Pla> plas) { + if(Cools.isEmpty(plas)) { + return R.parse(CodeRes.EMPTY); + } + List<Pla> res = new ArrayList<>(); + for (Pla pla : plas){ + res.add(pla); + } + return R.ok().add(res); } private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ @@ -63,10 +344,37 @@ 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); } } } + private R addPakOUT(PlaQty plaQty){ + ManPakOut manPakOut=new ManPakOut(); + 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() + ""); + manPakOut.setUuid(String.valueOf(System.currentTimeMillis())); + manPakOut.setCreateTime(new Date()); + manPakOut.setUpdateTime(new Date()); + manPakOut.setCount(0.0); + manPakOut.setDocNum(plaQty.getOrderNo()); + manPakOut.setStatus(0); + manPakOut.setDocId(plaQty.getOrderDetlId()); + manPakOut.setNodeId(plaQty.getId()); + manPakOut.setCustName(plaQty.getCustomer()); + //manPakOut.setNodeId(plaQty.getOrderDetlId()); + manPakOutService.insert(manPakOut); + return R.ok(); + } + } -- Gitblit v1.9.1