#
mrzhssss
2022-03-24 4c1e8761e3fa0516d5e6d316e838e83c8e0f5edf
src/main/java/zy/cloud/wms/manager/controller/OrderController.java
@@ -19,22 +19,33 @@
import zy.cloud.wms.common.utils.QrCode;
import zy.cloud.wms.common.web.BaseController;
import zy.cloud.wms.manager.entity.Order;
import zy.cloud.wms.manager.entity.OrderDetl;
import zy.cloud.wms.manager.entity.Wave;
import zy.cloud.wms.manager.entity.WaveDetl;
import zy.cloud.wms.manager.service.OrderDetlService;
import zy.cloud.wms.manager.service.OrderService;
import zy.cloud.wms.manager.service.WaveDetlService;
import zy.cloud.wms.manager.service.WaveService;
import zy.cloud.wms.manager.utils.AddZero;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.text.SimpleDateFormat;
import java.util.*;
@RestController
public class OrderController extends BaseController {
    @Autowired
    private OrderService orderService;
    @Autowired
    private OrderDetlService orderDetlService;
    @Autowired
    private WaveService waveService;
    @Autowired
    private WaveDetlService waveDetlService;
    @RequestMapping(value = "/order/{id}/auth")
    @ManagerAuth
@@ -107,13 +118,20 @@
    @ManagerAuth
    @Transactional
    public R deleteBatch(@RequestParam(value = "ids[]") Long[] ids){
        if (Cools.isEmpty((Object) ids)){
            return R.error();
        }
        for (Long id : ids){
            if (!orderService.deleteById(id)) {
                throw new CoolException("服务器错误,请联系管理员");
        /***
         * 控管
         */
        for (Long id : ids) {
            Order target = orderService.selectOne(new EntityWrapper<Order>()
                    .eq("id", id));
            if (target.getSettle() == 0 || target.getSettle() == 1) {
                orderService.deleteById(id);
                orderDetlService.delete(new EntityWrapper<OrderDetl>()
                        .eq("order_id",id));
            }else {
                throw new CoolException("仅允许删除'初始化','待处理'状态的订单");
            }
        }
        return R.ok();
    }
@@ -180,4 +198,107 @@
        return R.ok();
    }
    /**
     * 生成波次
     */
    @RequestMapping("/orders/wave/auth")
    @ManagerAuth
    public R createWave(@RequestBody List<Order> orders){
        /**
         * 控管与初始化
         */
        Integer seqNo = 1;
        for (Order order : orders) {
            if (order.getSettle() != 1L) {
                return R.error("仅支持'待处理'状态生成波次");
            }
        }
        /**
         * 生成波次表头
         */
        Wave wave = new Wave();
        wave.setHostId(getHostId());
        String s = UUID.randomUUID().toString().replace("-","");
        wave.setUuid(s);
        String waveNo = "WAVE-" + new SimpleDateFormat("yyyyMMdd").format(new Date())+"-";
        String currNum = waveService.getCurrNum(waveNo);
        if (!Cools.isEmpty(currNum)) {
            String[] split = currNum.split("-");
            if (split.length < 2){
                wave.setWaveNo(waveNo + "0001");
            }
            Integer newNum = Integer.parseInt(split[2]) +1;
            String format = AddZero.addZeroForNum(newNum + "", 4);
            wave.setWaveNo(waveNo + format);
        }else {
            wave.setWaveNo(waveNo + "0001");
        }
        wave.setOrdersQty(orders.size());
        wave.setStatus((short) 0);
        wave.setCreateBy(getUserId());
        wave.setUpdateBy(getUserId());
        waveService.insert(wave);
        /**
         * 生成波次明细
         */
        List<OrderDetl> allOrderDetls = orderDetlService.selectBatchByOrderNo(orders);
        for (OrderDetl allOrderDetl : allOrderDetls) {
            WaveDetl checkWaveDetl = waveDetlService.selectOne(new EntityWrapper<WaveDetl>()
                    .eq("wave_id",wave.getId())
                    .eq("matnr", allOrderDetl.getMatnr())
                    .eq("batch", allOrderDetl.getBatch()));
            if (Cools.isEmpty(checkWaveDetl)) {
                WaveDetl waveDetl = new WaveDetl();
                waveDetl.setHostId(getHostId());
                waveDetl.setWaveId(wave.getId());
                waveDetl.setWaveNo(wave.getWaveNo());
                waveDetl.setSeqNo(seqNo);
                seqNo++;
                waveDetl.setOrderQty(1);
                waveDetl.setOrderNos(allOrderDetl.getOrderNo());
                waveDetl.setAnfme(allOrderDetl.getAnfme());
                waveDetl.setMatnr(allOrderDetl.getMatnr());
                waveDetl.setMaktx(allOrderDetl.getMaktx());
                waveDetl.setSpecs(allOrderDetl.getSpecs());
                waveDetl.setModel(allOrderDetl.getModel());
                waveDetl.setUnit(allOrderDetl.getUnit());
                waveDetl.setStatus(0);
                waveDetl.setBatch(allOrderDetl.getBatch());
                waveDetl.setCreateBy(getUserId());
                waveDetl.setUpdateBy(getUserId());
                waveDetlService.insert(waveDetl);
            }else {
                checkWaveDetl.setOrderQty(checkWaveDetl.getOrderQty()+1);
                checkWaveDetl.setOrderNos(checkWaveDetl.getOrderNos() + "," +allOrderDetl.getOrderNo());
                checkWaveDetl.setAnfme(checkWaveDetl.getAnfme() + allOrderDetl.getAnfme());
                waveDetlService.update(checkWaveDetl,new EntityWrapper<WaveDetl>()
                        .eq("id",checkWaveDetl.getId()));
            }
        }
        /**
         * 控管,出过BUG,只生成表头,不生成表身
         */
        if (Cools.isEmpty(allOrderDetls)) {
            waveService.delete(new EntityWrapper<Wave>()
                    .eq("id",wave.getId()));
            throw new CoolException("找不到出库单细节,请联系管理员");
        }
        /**
         * 反写出库单表头
         */
        for (Order order : orders) {
            order.setWaveNo(wave.getWaveNo());
            order.setSettle(11L);
            orderService.update(order,new EntityWrapper<Order>()
                    .eq("id",order.getId()));
        }
        return R.ok("已生成波次");
    }
}