自动化立体仓库 - WMS系统
野心家
2023-04-27 c327ae2c32c988c43d6881c9caf196e42bab3f8c
修复订单系统
4个文件已修改
119 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/OrderDetlMapper.xml 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/order/order.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -153,58 +153,35 @@
            }
        // 关联组托
        } else {
            for (CombParam.CombMat combMat : param.getCombMats()) {
                Integer sum = orderDetlService.sameOrderComb(param.getOrderNo(), combMat.getMatnr(),combMat.getBatch());
                OrderDetl orderDetl = orderDetlService.selectItem(param.getOrderNo(), combMat.getMatnr(), combMat.getBatch());
                if (orderDetl == null) {
                    throw new CoolException("找不到组托的单据明细");
                }
                Double anfme = orderDetl.getAnfme();
                if ( anfme > (anfme - sum)) {
                    throw new CoolException("组托数量已超出订单需求量,请检查是否有其他的组托已完成");
                }
            }
            // 生成入库通知档
            Order order = orderService.selectByNo(param.getOrderNo());
            if (order.getSettle() > 2) {
                throw new CoolException("单据编号已过期");
            }
            // 生成入库通知档
            List<DetlDto> detlDtos = new ArrayList<>();
            for (CombParam.CombMat elem : param.getCombMats()) {
                // 订单明细数量校验
                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch());
                if(orderDetl == null){
                    throw new CoolException("该单据中不存在该物料明细:" + elem);
            for (CombParam.CombMat combMat : param.getCombMats()) {
                OrderDetl orderDetl = orderDetlService.selectItem(param.getOrderNo(), combMat.getMatnr(), combMat.getBatch());
                if (orderDetl == null) {
                    throw new CoolException("找不到组托的单据明细");
                }
                if (elem.getAnfme() > orderDetl.getEnableQty()) {
                    throw new CoolException(orderDetl.getMatnr() + "入库数量不合法");
                //订单数-工作中的数量-组托数量
                if ( orderDetl.getAnfme() - orderDetl.getWorkQty() - combMat.getAnfme()<0) {
                    throw new CoolException("组托数量已超出订单需求量,请检查是否有其他的组托已完成");
                }
                // 修改订单作业数量
                if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) {
                if (!orderDetlService.increaseWorkQty(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme())) {
                    throw new CoolException("修改单据作业数量失败");
                }
                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
                if (DetlDto.has(detlDtos, detlDto)) {
                    DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
                    assert one != null;
                    one.setAnfme(one.getAnfme() + detlDto.getAnfme());
                } else {
                }
            }
            for (DetlDto detlDto : detlDtos) {
                Mat mat = matService.selectByMatnr(detlDto.getMatnr());
                Mat mat = matService.selectByMatnr(combMat.getMatnr());
                if (Cools.isEmpty(mat)) {
                    throw new CoolException(detlDto.getMatnr() + "商品档案不存在");
                    throw new CoolException(combMat.getMatnr() + "商品档案不存在");
                }
                WaitPakin waitPakin = new WaitPakin();
                waitPakin.sync(mat);
                waitPakin.setOrderNo(order.getOrderNo());   // 单据编号
                waitPakin.setBatch(detlDto.getBatch());     // 序列码
                waitPakin.setBatch(combMat.getBatch());     // 序列码
                waitPakin.setZpallet(param.getBarcode());   // 托盘码
                waitPakin.setIoStatus("N");     // 入出状态
                waitPakin.setAnfme(detlDto.getAnfme());  // 数量
                waitPakin.setAnfme(combMat.getAnfme());  // 数量
                waitPakin.setStatus("Y");    // 状态
                waitPakin.setAppeUser(userId);
                waitPakin.setAppeTime(now);
@@ -213,6 +190,14 @@
                if (!waitPakinService.insert(waitPakin)) {
                    throw new CoolException("保存入库通知档失败");
                }
//                DetlDto detlDto = new DetlDto(combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme());
//                if (DetlDto.has(detlDtos, detlDto)) {
//                    DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
//                    assert one != null;
//                    one.setAnfme(one.getAnfme() + detlDto.getAnfme());
//                } else {
//                }
            }
            orderService.updateSettle(order.getId(), 2L, userId);
        }
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -576,7 +576,7 @@
        String jsonLocNo = (String) json.get("locNo");
        Node node = nodeService.selectOne(new EntityWrapper<Node>()
                .eq("name", jsonLocNo));
       //查订单
        String jsonOrderNo = (String) json.get("orderNo");
        Order order = orderService.selectOne(new EntityWrapper<Order>()
                .eq("order_no", jsonOrderNo));
@@ -584,15 +584,23 @@
            return R.error("参数为空");
        }
        //判断订单类型是否是入库
        DocType docType=docTypeService.selectById(order.getDocType());
        if(docType.getPakin()!=1 || docType.getStatus()!=1){
            return R.error("该订单是出库订单,无法入库");
        }
        JSONArray combMats = json.getJSONArray("combMats");
        for (int i = 0; i < combMats.size(); i++) {
            OrderDetl jsonOrderDetl = combMats.getObject(i, OrderDetl.class);
            OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>()
                    .eq("order_no", jsonOrderNo));
                    .eq("order_no", jsonOrderNo)
                    .and()
                    .eq("maktx",jsonOrderDetl.getMaktx()));
            if (Cools.isEmpty(orderDetl)) {
                return R.error("单据明细有误,请检查");
            }
            if (orderDetl.getAnfme() - (jsonOrderDetl.getAnfme() + orderDetl.getQty()) < 0) {
            if (orderDetl.getAnfme() - (jsonOrderDetl.getAnfme() + orderDetl.getWorkQty()) < 0) {
                return R.error("入库数量大于可入数量");
            }
            ManLocDetl checkManLocDetl = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>()
@@ -604,23 +612,34 @@
                manLocDetl.setLocNo(node.getName());
                manLocDetl.setNodeId(node.getId());
                manLocDetl.setMatnr(orderDetl.getMatnr());
                manLocDetl.setMaktx(orderDetl.getMaktx());
                manLocDetl.setAnfme(orderDetl.getAnfme());
                manLocDetl.setMaktx(jsonOrderDetl.getMaktx());
                manLocDetl.setAnfme(jsonOrderDetl.getAnfme());
                manLocDetl.setModiTime(date);
                manLocDetl.setCreateTime(date);
                manLocDetlService.insert(manLocDetl);
            } else {
                checkManLocDetl.setAnfme(checkManLocDetl.getAnfme() + orderDetl.getAnfme());
                checkManLocDetl.setAnfme(checkManLocDetl.getAnfme() + jsonOrderDetl.getAnfme());
                checkManLocDetl.setModiTime(date);
                manLocDetlService.update(checkManLocDetl, new EntityWrapper<ManLocDetl>()
                        .eq("loc_no", jsonLocNo)
                        .eq("matnr", orderDetl.getMatnr()));
            }
            orderDetl.setQty(orderDetl.getQty() + jsonOrderDetl.getAnfme());
            orderDetl.setWorkQty(orderDetl.getWorkQty() + jsonOrderDetl.getAnfme());
            orderDetl.setUpdateTime(date);
            orderDetlService.updateById(orderDetl);
            //更新订单状态
            //工作中的数量小于总订单数时,订单状态改为2,作业中
            if(orderDetl.getWorkQty() + jsonOrderDetl.getAnfme() < orderDetl.getAnfme()){
                order.setSettle(2L);
            }else{
                //工作中的数量等于总订单数时,订单状态改为4,完成
                order.setSettle(4L);
            }
            if(!orderService.updateById(order)){
                return R.error("更新订单状态失败");
            }
        }
        orderService.checkComplete(order.getOrderNo());
@@ -639,6 +658,12 @@
        String jsonOrderNo = (String) json.get("orderNo");
        Order order = orderService.selectOne(new EntityWrapper<Order>()
                .eq("order_no", jsonOrderNo));
        //判断订单类型是否是入库
        DocType docType=docTypeService.selectById(order.getDocType());
        if(docType.getPakout()!=1 || docType.getStatus()!=1){
            return R.error("该订单是出库订单,无法入库");
        }
        if (Cools.isEmpty(node, order)) {
            return R.error("参数为空");
        }
@@ -680,6 +705,18 @@
            orderDetl.setUpdateTime(date);
            orderDetlService.updateById(orderDetl);
            //更新订单状态
            //工作中的数量小于总订单数时,订单状态改为2,作业中
            if(orderDetl.getWorkQty() + jsonOrderDetl.getAnfme() < orderDetl.getAnfme()){
                order.setSettle(2L);
            }else{
                //工作中的数量等于总订单数时,订单状态改为4,完成
                order.setSettle(4L);
            }
            if(!orderService.updateById(order)){
                return R.error("更新订单状态失败");
            }
            orderService.checkComplete(order.getOrderNo());
        }
        return R.ok("下架完成");
src/main/resources/mapper/OrderDetlMapper.xml
@@ -133,7 +133,14 @@
            and order_no like '%' + #{orderNo} + '%'
        </if>
        and matnr = #{matnr}
        and batch = #{batch}
        <choose>
            <when test="batch != null and batch!=''  ">
                and batch = #{batch}
            </when>
            <otherwise>
                and (batch IS NULL OR batch = '')
            </otherwise>
        </choose>
    </select>
    <update id="increase">
src/main/webapp/views/order/order.html
@@ -252,7 +252,7 @@
</script>
<!-- 模板引擎 -->
<!-- 模板3 -->
<script type="text/template" id="templatePreview3" class="template-qrcode">
<script type="text/template" id="templatePreview3" class="template-qrcode">/orderDetl/list/auth
    {{#each data}}
    <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;">
        <thead></thead>