自动化立体仓库 - WMS系统
zjj
2023-09-05 d0fa6b5d514110de8bcc672a08813151efa94fb6
#拣货单
10个文件已修改
134 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OutController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/PakoutController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/ManLocDetl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/OrderDetl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/PakoutService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/PakoutServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/LocDto.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/order/out.js 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/picking/picking.js 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/picking/picking.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OutController.java
@@ -73,8 +73,8 @@
        for (OrderDetl orderDetl : orderDetls) {
            BigDecimal a1 = new BigDecimal(orderDetl.getAnfme()).setScale(2,BigDecimal.ROUND_HALF_UP);
            BigDecimal b1 = new BigDecimal(orderDetl.getQty()).setScale(2,BigDecimal.ROUND_HALF_UP);
            Double c1 = a1.subtract(b1).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
            double issued = Optional.of( c1 ).orElse(0.0D);
            double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D);
            if (issued <= 0.0D) { continue; }
            List<LocDetl> locDetls = locDetlService.queryStock2(orderDetl.getMatnr(), orderDetl.getBatch());
            for (LocDetl locDetl : locDetls) {
@@ -84,7 +84,7 @@
                        sign=true;
                    }
                    LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
                            sign ? locDetl.getAnfme() : issued,locDetl.getOwner(),locDetl.getPayment());
                            sign ? locDetl.getAnfme() : issued);
                    List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(),  sign? 101 : 103);
//                    LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
//                            locDetl.getAnfme(), issued < locDetl.getAnfme()? issued : locDetl.getAnfme());
@@ -103,7 +103,7 @@
                }
            }
            if (issued > 0) {
                LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued,orderDetl.getOwner(),1);
                LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
//                LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), 0.0,issued);
                locDto.setLack(Boolean.TRUE);
                locDtos.add(locDto);
@@ -281,8 +281,6 @@
        manPakOut.setCreateTime(new Date());
        manPakOut.setBatch(locDto.getBatch());
        manPakOut.setUpdateTime(new Date());
        manPakOut.setPayment(locDto.getPayment());
        manPakOut.setOwner(locDto.getOwner());
        manPakOut.setUuid(uuid);
        if (Cools.isEmpty(manPakOutService.selectOne(new EntityWrapper<ManPakOut>().eq("doc_num",locDto.getOrderNo())))){
            manPakOut.setName(locDto.getMaktx());
src/main/java/com/zy/asrs/controller/PakoutController.java
@@ -21,6 +21,7 @@
import com.core.common.R;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@@ -286,12 +287,10 @@
    }
    @RequestMapping(value = "/pakout/delete/auth")
    @ManagerAuth
    public R delete(@RequestParam(value="ids[]") Long[] ids){
         for (Long id : ids){
            pakoutService.deleteById(id);
        }
        return R.ok();
    @ManagerAuth(memo = "手动删除订单")
    public R delete(@RequestParam String docNum){
        pakoutService.deletePakout(docNum);
        return R.ok("拣货单删除成功");
    }
    @RequestMapping(value = "/pakout/export/auth")
src/main/java/com/zy/asrs/entity/ManLocDetl.java
@@ -30,6 +30,7 @@
     * 所属项目
     */
    @ApiModelProperty(value= "所属项目")
    @TableId(value = "host_id", type = IdType.AUTO)
    @TableField("host_id")
    private Long hostId;
src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -506,11 +506,15 @@
    }
    public Double getEnableQty() {
        if (null != this.anfme && this.qty != null) {
            return this.anfme - this.qty;
        Double enableQty = null;
        if (null != this.anfme && this.workQty != null) {
            enableQty = this.anfme  - this.workQty;
           if (enableQty <0){
               enableQty = 0.0D;
        }
        return null;
        }
        return enableQty;
    }
    public void sync(Object source) {
src/main/java/com/zy/asrs/service/PakoutService.java
@@ -5,4 +5,5 @@
public interface PakoutService extends IService<Pakout> {
    void deletePakout(String docNum);
}
src/main/java/com/zy/asrs/service/impl/PakoutServiceImpl.java
@@ -1,12 +1,51 @@
package com.zy.asrs.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.asrs.entity.Order;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.mapper.PakoutMapper;
import com.zy.asrs.entity.Pakout;
import com.zy.asrs.service.OrderDetlService;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.service.PakoutService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service("pakoutService")
public class PakoutServiceImpl extends ServiceImpl<PakoutMapper, Pakout> implements PakoutService {
    @Autowired
    private OrderService orderService;
    @Autowired
    private OrderDetlService orderDetlService;
    @Override
    public void deletePakout(String docNum) {
        Order order = orderService.selectByNo(docNum);
        List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", docNum));
        for (OrderDetl orderDetl: orderDetls){
            if (orderDetl.getQty() > 0.0){
                throw new RuntimeException("拣货单已有出库任务,不可删除!");
            }
            orderDetl.setWorkQty(0.0D);
        }
       if (!orderDetlService.updateBatchById(orderDetls)){
           throw new RuntimeException("订单明细批量更新失败");
       }
       order.setSettle(1L);
       if (!orderService.updateById(order)){
           throw new RuntimeException("订单明细批量更新失败");
       }
      if (!delete(new EntityWrapper<Pakout>().eq("doc_num",docNum))){
          throw new RuntimeException("拣货单删除失败");
      }
    }
}
src/main/java/com/zy/common/model/LocDto.java
@@ -25,8 +25,7 @@
    //实际出库量
    private Double anfme;
    private int owner;
    private int payment;
    //所需出库量
    private Double needQty;
@@ -55,15 +54,14 @@
        this.anfme = anfme;
    }
    public LocDto(String locNo, String matnr, String maktx, String batch, String orderNo, Double anfme,int owner ,int payment) {
    public LocDto(String locNo, String matnr, String maktx, String batch, String orderNo, Double anfme) {
        this.locNo = locNo;
        this.matnr = matnr;
        this.maktx = maktx;
        this.batch = batch;
        this.orderNo = orderNo;
        this.anfme = anfme;
        this.owner = owner;
        this.payment = payment;
    }
    public LocDto(String locNo, String matnr, String maktx, String batch, String orderNo, Double anfme, Double needQty) {
src/main/webapp/static/js/order/out.js
@@ -35,13 +35,10 @@
            ,{field: 'orderNo', align: 'center',title: '单据编号', templet: '#orderNoTpl', width: 160}
            ,{field: 'matnr', align: 'center',title: '商品编码', width: 160}
            ,{field: 'maktx', align: 'center',title: '商品名称', width: 200}
            ,{field: 'owner$', align: 'center',title: '货主'}
            ,{field: 'payment$', align: 'center',title: '货物形态'}
            ,{field: 'owner', align: 'center',title: '货主', hide: true}
            ,{field: 'payment', align: 'center',title: '货物形态', hide: true}
            // ,{field: 'anfme', align: 'center',title: '数量'}
            // ,{field: 'qty', align: 'center',title: '作业数量', style: 'font-weight: bold'}
            ,{field: 'anfme', align: 'center',title: '总数量', style: 'font-weight: bold'}
            ,{field: 'enableQty', align: 'center',title: '待出数量', style: 'font-weight: bold'}
            // ,{field: 'name', align: 'center',title: '名称'}
            // ,{field: 'model', align: 'center',title: '型号'}
            ,{field: 'unit', align: 'center',title: '单位', hide: true}
@@ -267,7 +264,7 @@
                        }
                        ,yes: function(index, layero){
                            //按钮【立即出库】的回调
                            pakout(tableCache, index);
                            //pakout(tableCache, index);
                            pakout2(tableCache, index);
                        }
                        ,btn2: function(index, layero){
src/main/webapp/static/js/picking/picking.js
@@ -1,6 +1,7 @@
var pageCurr;
var printMatCodeNos = [];
var ordernoo = "123";
var insTbCount = 0;
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).use(['table','laydate', 'form', 'admin', 'layer'], function(){
@@ -30,8 +31,6 @@
            ,{align: 'center', title: '二维码', toolbar: '#operate', width: 200 , hide:true}
            ,{align: 'center', title: '明细', toolbar: '#tbLook', minWidth: 160, width: 160}
            ,{field: 'status$', align: 'center',title: '状态'}
            ,{field: 'owner$', align: 'center',title: '货主'}
            ,{field: 'payment$', align: 'center',title: '货物形态'}
            // ,{field: 'custName', align: 'center',title: '客户名称', width: 160}
            ,{field: 'createTime$', align: 'center',title: '操作时间'}
            ,{align: 'center', title: '操作', toolbar: '#operate'}
@@ -96,6 +95,9 @@
            case "btnPrint2":
                btnPrint2(data.wrkNo, data.docNum, 4);
                break;
            case "del":
                doDel(data.docNum);
                break;
            case "look":
                var $a = $(obj.tr).find('a[lay-event="look"]');
                var offset = $a.offset();
@@ -131,10 +133,6 @@
                                ,{field: 'matnr', align: 'center',title: '物料号'}
                                ,{field: 'maktx', align: 'center',title: '商品名称'}
                                ,{field: 'anfme', align: 'center',title: '数量'}
                                ,{field: 'owner$', align: 'center',title: '货主'}
                                ,{field: 'payment$', align: 'center',title: '货物形态'}
                                ,{field: 'owner', align: 'center',title: '货主', hide:true}
                                ,{field: 'payment', align: 'center',title: '货物形态', hide:true}
                                ,{field: 'createTime$', align: 'center',title: '操作时间'}
                                ,{field: 'count', align: 'center',title: '完成数'}
                                ,{field: 'status$', align: 'center',title: '状态'}
@@ -319,6 +317,40 @@
            })
        }
    function doDel(docNum) {
        console.log(docNum)
        layer.confirm('确定要删除吗?', {
            shade: .1,
            skin: 'layui-layer-admin'
        }, function (i) {
            layer.close(i);
            layer.load(2);
            $.ajax({
                url: baseUrl+"/pakout/delete/auth",
                headers: {'token': localStorage.getItem('token')},
                data:{
                    docNum:docNum
                },
                method: 'GET',
                success: function (res) {
                    layer.closeAll('loading');
                    if (res.code === 200){
                        if (insTbCount === 0) {
                            insTb.reload({page: {curr: 1}});
                        } else {
                            $(".layui-laypage-btn")[0].click();
                        }
                        layer.msg(res.msg, {icon: 1});
                    } else if (res.code === 403){
                        top.location.href = baseUrl+"/";
                    }else {
                        layer.msg(res.msg, {icon: 2});
                    }
                }
            })
        });
    }
src/main/webapp/views/picking/picking.html
@@ -75,6 +75,7 @@
    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">完结</a>
    {{# } }}
    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="btnPrint2">打印</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-delete" lay-event="del">删除</a>
 <!--   <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="btnPrint"><img src="../../static/image/nav/fn_3.png" alt="二维码"></a>
-->
</script>