From e28269e80c3d8cdd4b77566263f684532436b489 Mon Sep 17 00:00:00 2001 From: pang.jiabao <pang_jiabao@163.com> Date: 星期五, 21 二月 2025 09:13:53 +0800 Subject: [PATCH] 拣货单管理多选,全选excel导出 --- src/main/java/com/zy/asrs/controller/PakoutController.java | 390 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 376 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/PakoutController.java b/src/main/java/com/zy/asrs/controller/PakoutController.java index 17a8425..812c050 100644 --- a/src/main/java/com/zy/asrs/controller/PakoutController.java +++ b/src/main/java/com/zy/asrs/controller/PakoutController.java @@ -1,28 +1,47 @@ package com.zy.asrs.controller; -import com.alibaba.fastjson.JSONArray; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.plugins.Page; -import com.core.common.DateUtils; -import com.zy.asrs.entity.Pakout; -import com.zy.asrs.service.PakoutService; import com.core.annotations.ManagerAuth; import com.core.common.BaseRes; import com.core.common.Cools; +import com.core.common.DateUtils; import com.core.common.R; +import com.zy.asrs.entity.*; +import com.zy.asrs.entity.param.OrderDomainParam; +import com.zy.asrs.entity.param.PakOutExcelExportParam; +import com.zy.asrs.entity.result.PakoutExcelVo; +import com.zy.asrs.entity.result.PakoutVo; +import com.zy.asrs.service.*; import com.zy.common.web.BaseController; +import com.zy.system.entity.User; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; import java.util.*; +import java.util.stream.Collectors; @RestController public class PakoutController extends BaseController { @Autowired private PakoutService pakoutService; + @Autowired + private OrderService orderService; + @Autowired + private OrderDetlService orderDetlService; + @Autowired + private ManLocDetlService manLocDetlService; + @Autowired + private PlaService plaService; @RequestMapping(value = "/pakout/{id}/auth") @ManagerAuth @@ -40,6 +59,12 @@ EntityWrapper<Pakout> wrapper = new EntityWrapper<>(); excludeTrash(param); convert(param, wrapper); + + User user = getUser(); + if (user.getRoleId() != 2 || user.getRoleId() != 24) { + wrapper.eq("create_by", user.getId()); + } + if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} return R.ok(pakoutService.selectPage(new Page<>(curr, limit), wrapper)); } @@ -52,19 +77,217 @@ wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); } else { - wrapper.like(entry.getKey(), val); + wrapper.eq(entry.getKey(), val); } } } @RequestMapping(value = "/pakout/add/auth") @ManagerAuth - public R add(Pakout pakout) { - pakoutService.insert(pakout); - return R.ok(); + public R add(@RequestBody OrderDomainParam param) { + if (Cools.isEmpty(param)){ + return R.error("鏁版嵁寮傚父"); + } + if (!Cools.isEmpty(param.getOrderNo())){ + Order order = orderService.selectOne(new EntityWrapper<Order>() + .eq("order_no", param.getOrderNo()) + ); + if (Cools.isEmpty(order)){ + return R.error("鍗曟嵁涓嶅瓨鍦�"); + } + List<OrderDetl> orderDetls =orderDetlService.selectList(new EntityWrapper<OrderDetl>() + .eq("order_no", param.getOrderNo()) + ); + if (Cools.isEmpty(orderDetls)){ + return R.error("鍗曟嵁鏄庣粏涓虹┖"); + } + for (OrderDetl orderDetl : orderDetls){ + List<ManLocDetl> manLocDetls=null; + try{ + if (Cools.isEmpty(orderDetl.getBatch())){ + manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>() + .eq("matnr",orderDetl.getMatnr()) + ); + }else { + manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>() + .eq("matnr",orderDetl.getMatnr()) + .eq("batch",orderDetl.getBatch()) + ); + } + }catch (Exception e){ + return R.error("娣诲姞鎷h揣鍗曞け璐�"); + } + + if (!Cools.isEmpty(manLocDetls)){ + for (ManLocDetl manLocDetl:manLocDetls){ + Double statusAnfme = 0.0; + if (Cools.isEmpty(manLocDetl.getStatus())){ + manLocDetl.setStatus(1); + } + try{ + if (manLocDetl.getStatus$().equals("绂佺敤")){ + if (Cools.isEmpty(manLocDetl.getBatch())){ + List<Pakout> manPakOuts = pakoutService.selectList(new EntityWrapper<Pakout>() + .eq("loc_no", manLocDetl.getLocNo()) + .eq("matnr", manLocDetl.getMatnr()) + .eq("status",0) + ); + if (!Cools.isEmpty(manPakOuts)){ + for (Pakout manPakOut:manPakOuts){ + statusAnfme=statusAnfme+manPakOut.getAnfme(); + } + } + }else { + List<Pakout> manPakOuts = pakoutService.selectList(new EntityWrapper<Pakout>() + .eq("loc_no", manLocDetl.getLocNo()) + .eq("matnr", manLocDetl.getMatnr()) + .eq("batch",manLocDetl.getBatch()) + .eq("status",0) + ); + if (!Cools.isEmpty(manPakOuts)){ + for (Pakout manPakOut:manPakOuts){ + statusAnfme=statusAnfme+manPakOut.getAnfme(); + } + } + } + } + }catch (Exception e){ + return R.error("鏌ヨ搴撳瓨绂佺敤鏁伴噺澶辫触"); + } + Wrapper<ManLocDetl> wrapper = new EntityWrapper<ManLocDetl>() + .eq("loc_no", manLocDetl.getLocNo()) + .eq("matnr", manLocDetl.getMatnr()); + if (orderDetl.getAnfme() > manLocDetl.getAnfme()-statusAnfme){ + if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){ + manLocDetl.setStatus(0); + try{ + if (Cools.isEmpty(manLocDetl.getBatch())){ + manLocDetlService.update(manLocDetl,wrapper.eq("modi_time",manLocDetl.getModiTime())); + }else { + manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch())); + } + }catch (Exception e){ + return R.error("鏇存柊搴撳瓨澶辫触"); + } + orderDetl.setAnfme(orderDetl.getAnfme()-manLocDetl.getAnfme()); + }else { + return R.error("娣诲姞鎷h揣鍗曞け璐�"); + } + }else if (orderDetl.getAnfme()-manLocDetl.getAnfme()-statusAnfme==0){ + if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){ + manLocDetl.setStatus(0); + try{ + if (Cools.isEmpty(manLocDetl.getBatch())){ + manLocDetlService.update(manLocDetl,wrapper.eq("modi_time",manLocDetl.getModiTime())); + }else { + manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch())); + } + }catch (Exception e){ + return R.error("鏇存柊搴撳瓨澶辫触"); + } + orderDetl.setAnfme(orderDetl.getAnfme()-manLocDetl.getAnfme()); + }else { + return R.error("娣诲姞鎷h揣鍗曞け璐�"); + } + }else if (orderDetl.getAnfme()<manLocDetl.getAnfme()-statusAnfme){ + Double a=manLocDetl.getAnfme(); + manLocDetl.setAnfme(orderDetl.getAnfme()); + if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){ + orderDetl.setAnfme(orderDetl.getAnfme()-manLocDetl.getAnfme()); + manLocDetl.setStatus(0); + manLocDetl.setAnfme(a); + try{ + if (Cools.isEmpty(manLocDetl.getBatch())){ + manLocDetlService.update(manLocDetl,wrapper.eq("modi_time",manLocDetl.getModiTime())); + }else { + manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch())); + } + }catch (Exception e){ + return R.error("鏇存柊搴撳瓨澶辫触"); + } + + }else { + return R.error("娣诲姞鎷h揣鍗曞け璐�"); + } + }else { + return R.error("绯荤粺鍑洪敊,璇疯仈绯荤鐞嗗憳"); + } + if (orderDetl.getAnfme()==0){ + break; + } + } + if (orderDetl.getAnfme()!=0){ + ManLocDetl manLocDetl=new ManLocDetl(); + manLocDetl.setAnfme(0.0); + manLocDetl.setMatnr(orderDetl.getMatnr()); + manLocDetl.setMaktx(orderDetl.getMaktx()); + manLocDetl.setMemo(orderDetl.getMemo()+"搴撳瓨涓嶈冻"); + if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){ + continue; + }else { + return R.error("娣诲姞鎷h揣鍗曞け璐�"); + } + } + }else { + ManLocDetl manLocDetl=new ManLocDetl(); + manLocDetl.setAnfme(0.0); + manLocDetl.setMatnr(orderDetl.getMatnr()); + manLocDetl.setMaktx(orderDetl.getMaktx()); + manLocDetl.setMemo(orderDetl.getMemo()+"鏃犲簱瀛�"); + if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){ + continue; + }else { + return R.error("娣诲姞鎷h揣鍗曞け璐�"); + } + } + + + } + orderService.updateSettle(order.getId(),(long)2,null); + }else { + return R.error("鍗曟嵁缂栧彿寮傚父"); + } + return R.ok("鎷h揣鍗曟坊鍔犳垚鍔�"); } - @RequestMapping(value = "/pakout/update/auth") + private R addPakOUT(ManLocDetl manLocDetl,String OrderNo){ + Pakout manPakOut=new Pakout(); + manPakOut.setWrkNo(OrderNo+"-"+System.currentTimeMillis()); + manPakOut.setWrkSts((long)1); + manPakOut.setAnfme(manLocDetl.getAnfme()); + manPakOut.setLocNo(manLocDetl.getLocNo()); + manPakOut.setNodeId(manLocDetl.getNodeId()); + manPakOut.setMatnr(manLocDetl.getMatnr()); + manPakOut.setMaktx(manLocDetl.getMaktx()); + manPakOut.setSpecs(manLocDetl.getSpecs()); + manPakOut.setUnit(manLocDetl.getUnit()); + manPakOut.setBarcode(manLocDetl.getBarcode()); + manPakOut.setDocNum(OrderNo); + manPakOut.setStatus(0); + manPakOut.setCreateTime(new Date()); + if (!Cools.isEmpty(manLocDetl.getBatch())){ + manPakOut.setBatch(manLocDetl.getBatch()); + manPakOut.setUpdateTime(new Date()); + }else { + manPakOut.setUpdateTime(manLocDetl.getModiTime());//鐢ㄤ簬璇嗗埆璐х墿 + } + + manPakOut.setMemo(manLocDetl.getMemo()); + if (Cools.isEmpty(pakoutService.selectOne(new EntityWrapper<Pakout>().eq("doc_num",OrderNo)))){ + manPakOut.setName(manLocDetl.getMaktx()); + } + try{ + if (!pakoutService.insert(manPakOut)){ + return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + }catch (Exception e){ + return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + return R.ok(); + + } + + @RequestMapping(value = "/pakout/update/auth") @ManagerAuth public R update(Pakout pakout){ if (Cools.isEmpty(pakout) || null==pakout.getMatnr()){ @@ -75,12 +298,25 @@ } @RequestMapping(value = "/pakout/delete/auth") - @ManagerAuth - public R delete(@RequestParam(value="ids[]") Long[] ids){ - for (Long id : ids){ - pakoutService.deleteById(id); + @ManagerAuth(memo = "鎵嬪姩鍒犻櫎璁㈠崟") + public R delete(@RequestParam String docNum){ + try{ + pakoutService.deletePakout(docNum); + }catch (Exception e){ + return R.error(e+""); } - return R.ok(); + return R.ok("鎷h揣鍗曞垹闄ゆ垚鍔�"); + } + + @RequestMapping(value = "/pakout/deleteDetl/auth") + @ManagerAuth(memo = "鎵嬪姩鍒犻櫎璁㈠崟") + public R deleteDetl(@RequestParam String wrkNo){ + try{ + pakoutService.deletePakoutByWrkNo(wrkNo); + }catch (Exception e){ + return R.error(e+""); + } + return R.ok("鎷h揣鍗曞垹闄ゆ垚鍔�"); } @RequestMapping(value = "/pakout/export/auth") @@ -120,4 +356,130 @@ return R.ok(); } + @RequestMapping(value = "/pakout/printExport/auth") + // @ManagerAuth(memo = "鐩樼偣鍗曞鍑�") + public void export(HttpServletResponse response, @RequestParam String orderNo) throws IOException { + //浠庢暟鎹簱鏌ヨ鏁版嵁 + EntityWrapper<Pakout> locCheckEntityWrapper = new EntityWrapper<>(); + locCheckEntityWrapper.eq("doc_num",orderNo); + List<Pakout> list = pakoutService.selectList(locCheckEntityWrapper); + List<PakoutVo> pakoutVos=new ArrayList<>(); + + for (Pakout pakout: list) { + PakoutVo pakoutVo = new PakoutVo(); + Pla pla = plaService.selectOne(new EntityWrapper<Pla>() + .eq("batch", pakout.getBatch()) + .eq("package_no", pakout.getBarcode()) + .eq("brand", pakout.getMaktx())); + BeanUtils.copyProperties(pla,pakoutVo); + BeanUtils.copyProperties(pakout,pakoutVo); + pakoutVos.add(pakoutVo); + } + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("鎷h揣鍗�", "UTF-8"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName+ orderNo + ".xlsx"); + EasyExcel.write(response.getOutputStream(), PakoutVo.class) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + .sheet("琛�1") + .doWrite(pakoutVos); + } + + @RequestMapping(value = "/pakOut/exportExcel2/auth") + public void exportExcel2(HttpServletResponse response, @RequestParam String orderNo) throws IOException { + + //浠庢暟鎹簱鏌ヨ鏁版嵁 + List<Pakout> list = pakoutService.selectList(new EntityWrapper<Pakout>().eq("doc_num",orderNo).orderBy("maktx")); + + List<PakoutExcelVo> pakOutExcelVos=new ArrayList<>(); + + for (Pakout pakOut: list) { + Pla pla = plaService.selectOne(new EntityWrapper<Pla>() + .eq("batch", pakOut.getBatch()) + .eq("package_no", pakOut.getBarcode()) + .eq("brand", pakOut.getMaktx())); + PakoutExcelVo pakOutVo = new PakoutExcelVo(); + BeanUtils.copyProperties(pla,pakOutVo); + BeanUtils.copyProperties(pakOut,pakOutVo); + pakOutExcelVos.add(pakOutVo); + } + + Map<String, List<PakoutExcelVo>> collect = pakOutExcelVos.stream().collect(Collectors.groupingBy(PakoutExcelVo::getBrand)); + List<PakoutExcelVo> newPakOutExcelVos=new ArrayList<>(); + + for(Map.Entry<String, List<PakoutExcelVo>> entry: collect.entrySet()) { + double sum = entry.getValue().stream().mapToDouble(PakoutExcelVo::getAnfme).sum(); + newPakOutExcelVos.addAll(entry.getValue()); + + PakoutExcelVo pakoutExcelVo = new PakoutExcelVo(); + pakoutExcelVo.setProDate("灏忚锛�"); + pakoutExcelVo.setAnfme(sum); + newPakOutExcelVos.add(pakoutExcelVo); + } + + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("鎷h揣鍗�", "UTF-8"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName+ orderNo + ".xlsx"); + + EasyExcel.write(response.getOutputStream(), PakoutExcelVo.class) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + .sheet("琛�1") + .doWrite(newPakOutExcelVos); + } + + @PostMapping (value = "/pakOut/excelExport3/auth") + @ManagerAuth + public void export(HttpServletResponse response, @RequestBody PakOutExcelExportParam pakOutExcelExportParam) throws IOException { + + EntityWrapper<Pakout> entityWrapper = new EntityWrapper<>(); + + if ("all".equals(pakOutExcelExportParam.getType())) { + PakOutExcelExportParam.QueryWhere queryWhere = pakOutExcelExportParam.getQueryWhere(); + if (!Cools.isEmpty(queryWhere.getCust_name())) { + entityWrapper.eq("cust_name", queryWhere.getCust_name()); + } + if (!Cools.isEmpty(queryWhere.getDoc_num())) { + entityWrapper.eq("doc_num", queryWhere.getDoc_num()); + } + if (queryWhere.getCreate_time().contains(RANGE_TIME_LINK)) { + String[] dates = queryWhere.getCreate_time().split(RANGE_TIME_LINK); + entityWrapper.ge("create_time", DateUtils.convert(dates[0])); + entityWrapper.le("create_time", DateUtils.convert(dates[1])); + } + + // 闄愬埗閿�鍞鑹插彧鑳界湅鑷繁鍒涘缓鐨勫崟瀛愶紙閿�鍞鑹瞚d鍥哄畾21锛屼笉鑳介殢鎰忎慨鏀癸級 + User user = getUser(); + if (user.getRoleId() != 2 && user.getRoleId() != 24) { + entityWrapper.eq("create_by", user.getId()); + } + } else { + entityWrapper.in("doc_num", pakOutExcelExportParam.getDocNumList()); + } + + List<Pakout> list = pakoutService.selectList(entityWrapper); + List<PakoutVo> pakOutVoList = new ArrayList<>(); + + for (Pakout pakOut : list) { + Pla pla = plaService.selectOne(new EntityWrapper<Pla>() + .eq("batch", pakOut.getBatch()) + .eq("package_no", pakOut.getBarcode()) + .eq("brand", pakOut.getMaktx())); + if (pla != null) { + PakoutVo pakOutVo = new PakoutVo(); + BeanUtils.copyProperties(pla, pakOutVo); + BeanUtils.copyProperties(pakOut, pakOutVo); + pakOutVoList.add(pakOutVo); + } + } + + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("鎷h揣鍗�", "UTF-8"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream(), PakoutVo.class) + .sheet("琛�1") + .doWrite(pakOutVoList); + } + } -- Gitblit v1.9.1