自动化立体仓库 - WMS系统
pang.jiabao
2025-04-17 391dd89a6583e0f1eceaf1297fd852e3da32bf68
src/main/java/com/zy/asrs/controller/PakoutController.java
@@ -1,30 +1,33 @@
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.ManLocDetl;
import com.zy.asrs.entity.Order;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.entity.Pakout;
import com.zy.asrs.entity.param.OrderDomainParam;
import com.zy.asrs.service.ManLocDetlService;
import com.zy.asrs.service.OrderDetlService;
import com.zy.asrs.service.OrderService;
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.transaction.annotation.Transactional;
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 {
@@ -37,6 +40,8 @@
    private OrderDetlService orderDetlService;
    @Autowired
    private ManLocDetlService manLocDetlService;
    @Autowired
    private PlaService plaService;
    @RequestMapping(value = "/pakout/{id}/auth")
    @ManagerAuth
@@ -54,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));
    }
@@ -66,7 +77,7 @@
                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);
            }
        }
    }
@@ -297,6 +308,17 @@
        return R.ok("拣货单删除成功");
    }
    @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("拣货单删除成功");
    }
    @RequestMapping(value = "/pakout/export/auth")
    @ManagerAuth
    public R export(@RequestBody JSONObject param){
@@ -334,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("拣货单", "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("拣货单", "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]));
            }
            // 限制销售角色只能看自己创建的单子(销售角色id固定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("拣货单", "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        EasyExcel.write(response.getOutputStream(), PakoutVo.class)
                .sheet("表1")
                .doWrite(pakOutVoList);
    }
}