#
luxiaotao1123
2021-03-22 bcd583668d6dc95993075354a8e7b0935e92eefd
#
16个文件已修改
164 ■■■■ 已修改文件
src/main/java/zy/cloud/wms/common/service/MainService.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/common/service/asrs/AsrsService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/common/service/asrs/entity/Result.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/entity/CustOrder.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/entity/StoPreTab.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/entity/param/StockTransferParam.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/mapper/CustOrderMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/service/CustOrderService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/service/LocDetlService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/service/impl/CustOrderServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/CustOrderMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/custOrder/custOrder.js 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/custOrder/custOrder.html 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/common/service/MainService.java
@@ -7,18 +7,19 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import zy.cloud.wms.common.config.CodeCoolException;
import zy.cloud.wms.common.model.OrderStoDto;
import zy.cloud.wms.common.service.asrs.AsrsService;
import zy.cloud.wms.common.service.asrs.entity.Result;
import zy.cloud.wms.common.utils.VersionUtils;
import zy.cloud.wms.manager.entity.*;
import zy.cloud.wms.manager.entity.param.StockTransferParam;
import zy.cloud.wms.manager.service.CustOrderService;
import zy.cloud.wms.manager.service.LocDetlService;
import zy.cloud.wms.manager.service.MatService;
import zy.cloud.wms.manager.service.PakoutService;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.*;
/**
 * Created by vincent on 2021/3/1
@@ -37,15 +38,28 @@
    private CustOrderService custOrderService;
    @Autowired
    private SnowflakeIdWorker snowflakeIdWorker;
    @Autowired
    private AsrsService asrsService;
    @Transactional
    public List<StoPreTab> stockOutPreview(OrderStoDto dto) {
        if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getCustOrders())) {
            throw new CoolException("数据异常,请联系管理员");
        }
        List<StoPreTab> res = new ArrayList<>();
        // 检查库存是否足够
        locDetlService.checkLocDetlCount(dto.getNumber());
        List<StoPreTab> result = new ArrayList<>();
        List<StockTransferParam> transferParams = locDetlService.checkLocDetlCountOfRes(dto.getNumber());
        if (!Cools.isEmpty(transferParams)) {
            // 查看立库库存
            Result result = asrsService.stockTransferPrew(transferParams);
            if (result.getCode() == 500) {
                throw new CodeCoolException("20001-" + String.valueOf(result.getData()));
            }
            if (result.getCode() == 200) {
                res = (List<StoPreTab>) result.getData();
            }
        }
        for (CustOrder custOrder : dto.getCustOrders()) {
            // 判断物料是否存在
            Mat mat = matService.selectByMatnr(custOrder.getUserCode());
@@ -72,14 +86,22 @@
                    tab.setRemQty(tab.getTotal() - tab.getReduce());
                    tab.setPrior(locDetlService.isPrior(locDetl.getNodeId(), mat.getMatnr()));
                    tab.setPrior$(tab.getPrior()?"✔":"×");
                    result.add(tab);
                    tab.setType(1);
                    res.add(tab);
                    // 剩余待出数量递减
                    issued = issued - locDetl.getAnfme();
                }
            }
        }
        return result;
        res.sort(new Comparator<StoPreTab>() {
            @Override
            public int compare(StoPreTab o1, StoPreTab o2) {
//                return o1.getMatnr().length() - o2.getMatnr().length();
                return (int) (o1.getAnfme() - o2.getAnfme());
            }
        });
        return res;
    }
    @Transactional
src/main/java/zy/cloud/wms/common/service/asrs/AsrsService.java
@@ -19,6 +19,21 @@
    @Value("${asrs.baseUrl}")
    private String asrsBaseUrl;
    public Result stockTransferPrew(List<StockTransferParam> params) {
        try {
            String response = new HttpHandler.Builder()
                    .setUri(asrsBaseUrl)
                    .setPath("/open/api/stockOut/prew")
                    .setJson(JSON.toJSONString(params))
                    .build()
                    .doPost();
            return JSON.parseObject(response, Result.class);
        } catch (IOException e) {
            e.printStackTrace();
            return new Result(500, "服务器异常", null);
        }
    }
    public Boolean stockTransfer(List<StockTransferParam> params) {
        try {
            String response = new HttpHandler.Builder()
src/main/java/zy/cloud/wms/common/service/asrs/entity/Result.java
@@ -1,6 +1,9 @@
package zy.cloud.wms.common.service.asrs.entity;
import lombok.Data;
import zy.cloud.wms.manager.entity.StoPreTab;
import java.util.List;
/**
 * Created by vincent on 2021/3/20
@@ -12,6 +15,14 @@
    private String msg;
    private Object data;
    private List<StoPreTab> data;
    public Result() {
    }
    public Result(Integer code, String msg, List<StoPreTab> data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }
}
src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java
@@ -311,6 +311,7 @@
                                    data.getETypeID(),    // 经手人编号[非空]
                                    detl0.getUserCode(),    // 商品编号
                                    detl0.getQty(),    // 商品数量
                                    detl0.getQty(),    // 总数量
                                    detl0.getPrice(),    // 商品单价
                                    detl0.getComment(),    // 商品备注[非空]
                                    0,    // 状态
@@ -372,7 +373,7 @@
                            // 表体
                            GetOrderResultDetl0 detl0 = new GetOrderResultDetl0();
                            detl0.setUserCode(custOrder.getUserCode());
                            detl0.setQty(custOrder.getQty());
                            detl0.setQty(custOrder.getTotal());
                            detl0.setPrice(custOrder.getPrice());
                            detl0.setComment(custOrder.getComment());
                            list.add(detl0);
src/main/java/zy/cloud/wms/manager/entity/CustOrder.java
@@ -55,6 +55,12 @@
    private Double qty;
    /**
     * 总数量
     */
    @ApiModelProperty(value= "总数量")
    private Double total;
    /**
     * 商品单价
     */
    @ApiModelProperty(value= "商品单价")
@@ -94,13 +100,14 @@
    public CustOrder() {}
    public CustOrder(String number,String billDate,String bTypeId,String eTypeId,String userCode,Double qty,Double price,String comment,Integer status,Date createTime,Date updateTime,String memo) {
    public CustOrder(String number,String billDate,String bTypeId,String eTypeId,String userCode,Double qty,Double total,Double price,String comment,Integer status,Date createTime,Date updateTime,String memo) {
        this.number = number;
        this.billDate = billDate;
        this.bTypeId = bTypeId;
        this.eTypeId = eTypeId;
        this.userCode = userCode;
        this.qty = qty;
        this.total = total;
        this.price = price;
        this.comment = comment;
        this.status = status;
@@ -172,6 +179,14 @@
        this.qty = qty;
    }
    public Double getTotal() {
        return total;
    }
    public void setTotal(Double total) {
        this.total = total;
    }
    public Double getPrice() {
        return price;
    }
src/main/java/zy/cloud/wms/manager/entity/StoPreTab.java
@@ -30,4 +30,6 @@
    private String prior$;
    private Integer type;
}
src/main/java/zy/cloud/wms/manager/entity/param/StockTransferParam.java
@@ -12,5 +12,7 @@
    private Double anfme;
    private Double total;
}
src/main/java/zy/cloud/wms/manager/mapper/CustOrderMapper.java
@@ -16,4 +16,8 @@
    @Update("delete from man_cust_order where number=#{number}")
    int delete(@Param("number") String number);
    @Update("update man_cust_order_log set qty = #{qty} where number=#{number} and user_code=#{userCode}")
    int updateQty(@Param("number") String number, @Param("userCode") String userCode, @Param("qty") Double qty);
}
src/main/java/zy/cloud/wms/manager/service/CustOrderService.java
@@ -7,4 +7,6 @@
    boolean updateStatus(String number, Integer status);
    boolean updateQty(String number, String userCode, Double anfme);
}
src/main/java/zy/cloud/wms/manager/service/LocDetlService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import zy.cloud.wms.manager.entity.LocDetl;
import zy.cloud.wms.manager.entity.param.StockTransferParam;
import java.util.List;
@@ -20,6 +21,8 @@
     */
    void checkLocDetlCount(String number);
    List<StockTransferParam> checkLocDetlCountOfRes(String number);
    /**
     * 减少库存
     */
src/main/java/zy/cloud/wms/manager/service/impl/CustOrderServiceImpl.java
@@ -13,4 +13,9 @@
    public boolean updateStatus(String number, Integer status) {
        return this.baseMapper.updateStatus(number, status) > 0;
    }
    @Override
    public boolean updateQty(String number, String userCode, Double anfme) {
        return this.baseMapper.updateQty(number, userCode, anfme) > 0;
    }
}
src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java
@@ -11,6 +11,7 @@
import zy.cloud.wms.manager.entity.LocDetl;
import zy.cloud.wms.manager.entity.Mat;
import zy.cloud.wms.manager.entity.Prior;
import zy.cloud.wms.manager.entity.param.StockTransferParam;
import zy.cloud.wms.manager.mapper.LocDetlMapper;
import zy.cloud.wms.manager.service.CustOrderService;
import zy.cloud.wms.manager.service.LocDetlService;
@@ -84,6 +85,28 @@
    }
    @Override
    public List<StockTransferParam> checkLocDetlCountOfRes(String number) {
        List<CustOrder> custOrders = custOrderService.selectList(new EntityWrapper<CustOrder>().eq("number", number).eq("status", 1));
        boolean asrs = false;
        List<StockTransferParam> params = new ArrayList<>();
        for (CustOrder custOrder : custOrders) {
            Double count = this.baseMapper.selectCountByMatnr(custOrder.getUserCode());
            if (count == null) {
                count = 0.0D;
            }
            if (count < custOrder.getQty()) {
                if (!asrs) { asrs = true; }
                StockTransferParam param = new StockTransferParam();
                param.setMatnr(custOrder.getUserCode());
                param.setAnfme(custOrder.getQty() - count);
                param.setTotal(custOrder.getQty());
                params.add(param);
            }
        }
        return params;
    }
    @Override
    public Boolean reduceStock(Long nodeId, String matnr, Double anfme) {
        return this.baseMapper.reduceStock(nodeId, matnr, anfme)>0;
    }
src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
@@ -317,6 +317,7 @@
                    null,    // 经手人编号[空]
                    dto.getMatnr(),    // 商品编号
                    dto.getCount(),    // 商品数量
                    dto.getCount(),    // 总数量
                    Cools.isEmpty(mat.getName())?0.0D:Double.parseDouble(mat.getName()),    // 商品单价
                    null,    // 商品备注[空]
                    1,    // 状态
@@ -332,9 +333,10 @@
    }
    @Override
    @Transactional
    public R stockTransfer(String number, Long userId) {
        List<CustOrder> custOrders = custOrderService.selectList(new EntityWrapper<CustOrder>().eq("number", number).eq("status", 1));
        boolean error = false;
        boolean asrs = false;
        List<StockTransferParam> params = new ArrayList<>();
        for (CustOrder custOrder : custOrders) {
            Double count = locDetlService.selectCountByMatnr(custOrder.getUserCode());
@@ -342,17 +344,21 @@
                count = 0.0D;
            }
            if (count < custOrder.getQty()) {
                if (!error) {
                    error = true;
                }
                if (!asrs) { asrs = true; }
                StockTransferParam param = new StockTransferParam();
                param.setMatnr(custOrder.getUserCode());
                param.setAnfme(custOrder.getQty() - count);
                params.add(param);
            }
        }
        if (error) {
        if (asrs) {
            if (asrsService.stockTransfer(params)) {
                for (StockTransferParam param : params) {
                    // 修改销售订单待出数量
                    if (!custOrderService.updateQty(number, param.getMatnr(), param.getAnfme())) {
                        throw new CoolException("修改销售订单待出数量失败");
                    }
                }
                return R.ok("库存调拨成功");
            } else {
                return R.error("立库调拨失败,请联系管理员");
src/main/resources/mapper/CustOrderMapper.xml
@@ -10,6 +10,7 @@
        <result column="eType_id" property="eTypeId" />
        <result column="user_code" property="userCode" />
        <result column="qty" property="qty" />
        <result column="total" property="total" />
        <result column="price" property="price" />
        <result column="comment" property="comment" />
        <result column="status" property="status" />
src/main/webapp/static/js/custOrder/custOrder.js
@@ -206,7 +206,7 @@
                                ,closeBtn: false
                                ,offset: '100px'
                                // ,area: ['800px','450px']
                                ,area: '800px'
                                ,area: '1000px'
                                ,shade: 0.5
                                ,shadeClose: true
                                ,id: 'LAY_layuipro'
@@ -224,15 +224,16 @@
                                        height: 432,
                                        cols: [[
                                            {field: 'title', title: '商品', align: 'center'},
                                            {field: 'anfme', title: '总数量', align: 'center', style: 'font-weight: bold', width: 80},
                                            {field: 'anfme', title: '总数量', align: 'center', style: 'font-weight: bold', width: 90},
                                            {field: 'type', title: '仓库', align: 'center', templet: '#typeTpl', width: 90},
                                            {field: 'locNo', title: '货位', align: 'center'},
                                            {field: 'prior$', title: '推荐货位', align: 'center', width: 100},
                                            {field: 'reduce', title: '数量', align: 'center', width: 80, style: 'font-weight: bold'},
                                            {field: 'reduce', title: '数量', align: 'center', width: 90, style: 'font-weight: bold'},
                                            // {field: 'remQty', title: '余量', align: 'center', width: 80},
                                            {field: 'total', title: '总量', align: 'center', width: 80},
                                            {field: 'total', title: '总量', align: 'center', width: 90},
                                        ]],
                                        done: function () {
                                            tableX.merges('stoPreTab', [0,1]);
                                            tableX.merges('stoPreTab', [0,1,2]);
                                            $('.layui-table-body.layui-table-main').css("overflow", "auto")
                                        }
                                    });
src/main/webapp/views/custOrder/custOrder.html
@@ -86,6 +86,15 @@
    >{{d.status$}}</span>
</script>
<script type="text/html" id="typeTpl">
    <span name="type"
          {{# if( d.type === 1){ }}
          class="layui-badge layui-badge-blue" ><span style="display: none">{{d.number}}</span>平仓</span>
          {{# } else if(d.type === 2){ }}
          class="layui-badge layui-badge-red" ><span style="display: none">{{d.number}}</span>立库</span>
          {{# } }}
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/js/jquery/jQuery.print.js"></script>
<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>