自动化立体仓库 - WMS系统
#
lsh
2024-10-26 9dd23778d5b9a97da390abc4e6f785e60767acf4
#
10个文件已修改
239 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/OrderDetlGift.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/StockOutParam.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/result/OrderGiftProofreadingVo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WorkService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/OrderGiftProofreadingExcelListener.java 93 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/entity/OrderGiftProofreadingExcel.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/LocDto.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/orderGift/orderGift.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/orderGift/orderGift.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/OrderDetlGift.java
@@ -8,6 +8,7 @@
import com.core.common.Cools;
import com.core.common.SpringUtils;
import com.zy.asrs.service.OrderService;
import com.zy.common.utils.Synchro;
import com.zy.system.entity.User;
import com.zy.system.service.UserService;
import io.swagger.annotations.ApiModelProperty;
@@ -484,5 +485,8 @@
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
    }
    public void sync(Object source) {
        Synchro.Copy(source, this);
    }
}
src/main/java/com/zy/asrs/entity/param/StockOutParam.java
@@ -53,6 +53,8 @@
        // 木箱中铜箔数量
        private Double count;
        private Double volume;
        private Double price;
        private String color;
        public void setAnfme(Double anfme){
src/main/java/com/zy/asrs/entity/result/OrderGiftProofreadingVo.java
@@ -18,18 +18,20 @@
    @ExcelProperty(value = "卷号")
    private String model="";
    @ExcelProperty(value = "长度")
    private String price="";
    private Double price;
    @ExcelProperty(value = "净重")
    private String weight="";
    private Double weight;
    @ExcelProperty(value = "毛重")
    private String volume="";
    private Double volume;
    @ExcelProperty(value = "接头")
    private String specs;
    @ExcelProperty(value = "备注")
    private String memo="";
    public OrderGiftProofreadingVo() {
    }
    public OrderGiftProofreadingVo(String orderNo, String matnr, String batch, String model, String price, String weight, String volume, String memo) {
    public OrderGiftProofreadingVo(String orderNo, String matnr, String batch, String model, Double price, Double weight, Double volume, String memo) {
        this.orderNo = orderNo;
        this.matnr = matnr;
        this.batch = batch;
src/main/java/com/zy/asrs/service/WorkService.java
@@ -31,6 +31,7 @@
     * 出库作业
     */
    void startupFullTakeStoreOrder(StockOutParam param, Long userId);
    void startupFullTakeStoreOrderGift(StockOutParam param, Long userId);
    /**
     * 出库作业
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -80,6 +80,10 @@
    private SlaveProperties slaveProperties;
    @Autowired
    private WaitPakinService waitPakinService;
    @Autowired
    private OrderGiftService orderGiftService;
    @Autowired
    private OrderDetlGiftService orderDetlGiftService;
    @Override
    @Transactional
@@ -286,6 +290,105 @@
    }
    @Override
    @Transactional
    public void startupFullTakeStoreOrderGift(StockOutParam param, Long userId) {
        if (Cools.isEmpty(param) || Cools.isEmpty(param.getLocDetls())){
            throw new CoolException("参数为空");
        }
        if (Cools.isEmpty(param.getOrderNo())){
            throw new CoolException("订单号参数为空");
        }
        DocType docType = docTypeService.selectOrAdd("手动出库单", Boolean.FALSE);
        OrderGift order = orderGiftService.selectByNo(param.getOrderNo());
        if (Cools.isEmpty(order)){
            Date now = new Date();
            order = new OrderGift(
                    String.valueOf(snowflakeIdWorker.nextId()),    // 编号[非空]
                    param.getOrderNo(),    // 订单编号
                    DateUtils.convert(now),    // 单据日期
                    docType.getDocId(),    // 单据类型
                    null,    // 项目编号
                    null,    //
                    null,    // 调拨项目编号
                    null,    // 初始票据号
                    null,    // 票据号
                    null,    // 客户编号
                    null,    // 客户
                    null,    // 联系方式
                    null,    // 操作人员
                    null,    // 合计金额
                    null,    // 优惠率
                    null,    // 优惠金额
                    null,    // 销售或采购费用合计
                    null,    // 实付金额
                    null,    // 付款类型
                    null,    // 业务员
                    null,    // 结算天数
                    null,    // 邮费支付类型
                    null,    // 邮费
                    null,    // 付款时间
                    null,    // 发货时间
                    null,    // 物流名称
                    null,    // 物流单号
//                    2L,    // 订单状态
                    1L,    // 订单状态
                    1,    // 状态
                    userId,    // 添加人员
                    now,    // 添加时间
                    userId,    // 修改人员
                    now,    // 修改时间
                    null    // 备注
            );
            if (!orderGiftService.insert(order)) {
                throw new CoolException("保存订单主档失败");
            }
            // 单据明细档
            List<DetlDto> list = new ArrayList<>();
            List<StockOutParam.LocDetl> locDetls = param.getLocDetls();
            int i=0;
            for (StockOutParam.LocDetl locDetl : locDetls) {
                i++;
                Mat mat = matService.selectByMatnr(locDetl.getMatnr());
                if (Cools.isEmpty(mat)) {
                    throw new CoolException(locDetl.getMatnr() + "物料编码检索失败,请先添加商品");
                }
                OrderDetlGift orderDetl = new OrderDetlGift();
                orderDetl.sync(mat);
                orderDetl.setSuppCode(String.valueOf(i));  // 行号
                orderDetl.setManu(locDetl.getLocNo());  //库位号
                orderDetl.setBatch(locDetl.getBatch()); //木箱编码
                orderDetl.setAnfme(locDetl.getAnfme());//出库数量
                orderDetl.setModel(locDetl.getModel());//批次
                orderDetl.setSpecs(locDetl.getSpecs());//规格
                orderDetl.setBrand(locDetl.getBrand());//木箱类型
                orderDetl.setBarcode(locDetl.getZpallet());//木箱类型
                orderDetl.setWeight(locDetl.getWeight());
                orderDetl.setVolume(locDetl.getVolume());
                orderDetl.setPrice(locDetl.getPrice());
//                orderDetl.setWorkQty(locDetl.getAnfme());
                orderDetl.setWorkQty(0.0);
                orderDetl.setOrderId(order.getId());
                orderDetl.setOrderNo(order.getOrderNo());
                orderDetl.setOrigin(locDetl.getOrigin());
                orderDetl.setCreateBy(userId);
                orderDetl.setCreateTime(now);
                orderDetl.setUpdateBy(userId);
                orderDetl.setUpdateTime(now);
                orderDetl.setStatus(1);
                orderDetl.setQty(0.0D);
                orderDetl.setMemo(locDetl.getMemo());
                if (!orderDetlGiftService.insert(orderDetl)) {
                    throw new CoolException("生成单据明细失败,请联系管理员");
                }
            }
        } else {
            throw new CoolException("订单号重复,订单"+param.getOrderNo()+"已存在!!!");
        }
    }
    @Override
    @Transactional
src/main/java/com/zy/asrs/utils/OrderGiftProofreadingExcelListener.java
@@ -4,19 +4,21 @@
import com.alibaba.excel.event.AnalysisEventListener;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.StockOutParam;
import com.zy.asrs.service.LocDetlService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.WorkService;
import com.zy.common.entity.OutLocBoxExcel;
import com.zy.common.entity.OrderGiftProofreadingExcel;
import com.zy.common.model.DetlDto;
import com.zy.common.model.LocDto;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -24,13 +26,12 @@
 * Created by vincent on 2019-11-25
 */
@Slf4j
public class OrderGiftProofreadingExcelListener extends AnalysisEventListener<OutLocBoxExcel> {
public class OrderGiftProofreadingExcelListener extends AnalysisEventListener<OrderGiftProofreadingExcel> {
    private int total = 0;
    private String orderOneNo = null;
    private String cstmrName = null;
    private Long userId;
    List<String[]> OutLocBoxCs = new ArrayList<>();
    List<OrderGiftProofreadingExcel> OrderGiftProofreadingCs = new ArrayList<>();
    public OrderGiftProofreadingExcelListener() {
    }
@@ -44,7 +45,7 @@
     */
    private static final int BATCH_COUNT = 50;
    private final List<OutLocBoxExcel> list = new ArrayList<>();
    private final List<OrderGiftProofreadingExcel> list = new ArrayList<>();
    /**
     * 这里会一行行的返回头
@@ -57,11 +58,7 @@
     * 这个每一条数据解析都会来调用
     */
    @Override
    public void invoke(OutLocBoxExcel excel, AnalysisContext ctx) {
        String batch = excel.getBatch();
        String orderNo = excel.getOrderNo();
//        String cstmrName = excel.getCstmrName();
        String memo = excel.getMemo();
    public void invoke(OrderGiftProofreadingExcel excel, AnalysisContext ctx) {
        if (Cools.isEmpty(orderOneNo)){
            if (!Cools.isEmpty(excel.getOrderNo())){
                orderOneNo = excel.getOrderNo();
@@ -69,19 +66,7 @@
                throw new CoolException("订单号参数为空");
            }
        }
        if (Cools.isEmpty(cstmrName)){
            if (!Cools.isEmpty(excel.getCstmrName())){
                cstmrName = excel.getCstmrName();
            } else {
                throw new CoolException("客户名称参数为空");
            }
        }
        String[] s=new String[4];
        s[0] = batch;
        s[1] = orderOneNo;
        s[2] = cstmrName;
        s[3] = memo;
        OutLocBoxCs.add(s);
        OrderGiftProofreadingCs.add(excel);
        total++;
    }
@@ -91,53 +76,11 @@
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext ctx) {
        if (!Cools.isEmpty(OutLocBoxCs) && OutLocBoxCs.size() != 0) {
            LocDetlService locDetlService = SpringUtils.getBean(LocDetlService.class);
            LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
        if (!Cools.isEmpty(OrderGiftProofreadingCs) && !OrderGiftProofreadingCs.isEmpty()) {
            WorkService workService = SpringUtils.getBean(WorkService.class);
            List<LocDto> locDtos = new ArrayList<>();
            List<String[]> outLocBoxCList = new ArrayList<>();
            List<String> outLocBoxCNew = new ArrayList<>();
            for (String[] outLocBoxC:OutLocBoxCs){
                total--;
                if (!outLocBoxCNew.contains(outLocBoxC[0])){
                    LocDetl locDetlSou = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("batch", outLocBoxC[0]));
                    if (Cools.isEmpty(locDetlSou)){
                        throw new CoolException("箱号:"+outLocBoxC[0]+" 未查询到数据!!!");
                    }
                    LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlSou.getLocNo()));
                    if (Cools.isEmpty(locMast)){
                        throw new CoolException("箱号:"+outLocBoxC[0]+" 所在库位不满足出库条件!!!未查询到此箱号所在库位");
                    }
                    if (!locMast.getLocSts().equals("F")){
                        throw new CoolException("箱号:"+outLocBoxC[0]+" 所在库位不满足出库条件!!!库位状态不为F!!!库位状态:"+locMast.getLocSts$());
                    }
                    List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
                            .eq("loc_no", locDetlSou.getLocNo()).eq("origin", locDetlSou.getOrigin()));
                    for (LocDetl locDetl:locDetls){
                        total++;
                        String[] locDetlNow=new String[4];
                        locDetlNow[0] = locDetl.getBatch();
                        locDetlNow[1] = outLocBoxC[1];
                        locDetlNow[2] = outLocBoxC[2];
                        locDetlNow[3] = outLocBoxC[3];
                        outLocBoxCList.add(locDetlNow);
                        outLocBoxCNew.add(outLocBoxC[0]);
                    }
                }
            }
            for (String[] outLocBoxC:outLocBoxCList){
                LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("batch", outLocBoxC[0]));
                if (Cools.isEmpty(locDetl)){
                    total--;
                    continue;
                }
//                LocDto locDto = new LocDto(locDetl.getManu(), locDetl.getMatnr(), locDetl.getMaktx(),locDetl.getModel(),locDetl.getSpecs(),
//                        locDetl.getBatch(),locDetl.getBrand(),locDetl.getBarcode(), outLocBoxC[1],locDetl.getAnfme());
//                locDto.setOrigin(locDetl.getOrigin());
//                locDto.setWeight(locDetl.getWeight());
                locDetl.setMemo(outLocBoxC[3]);
                LocDto locDto = new LocDto(locDetl);
            for (OrderGiftProofreadingExcel orderGiftProofreadingExcel:OrderGiftProofreadingCs){
                LocDto locDto = new LocDto(orderGiftProofreadingExcel);
                locDtos.add(locDto);
            }
@@ -164,20 +107,18 @@
                locDetl.setOrigin(locDto.getOrigin());
                locDetl.setWeight(locDto.getWeight());
                locDetl.setMemo(locDto.getMemo());
                locDetl.setVolume(locDto.getVolume());
                locDetl.setPrice(locDto.getPrice());
                locDetls.add(locDetl);
            }
            param.setLocDetls(locDetls);
            param.setOrderNo(orderOneNo);
            param.setCstmrName(cstmrName);
            if (total>0){
                workService.startupFullTakeStoreOrder(param,9999L);
                workService.startupFullTakeStoreOrderGift(param,9999L);
            }
        }
        log.info("出库{}条箱号!", total);
        log.info("导入{}条核对单据明细!", total);
    }
    public int getTotal() {
src/main/java/com/zy/common/entity/OrderGiftProofreadingExcel.java
@@ -18,9 +18,10 @@
    private String matnr;
    private String batch;
    private String model;
    private String price;
    private String weight;
    private String volume;
    private Double price;
    private Double weight;
    private Double volume;
    private String specs;
    private String memo;
}
src/main/java/com/zy/common/model/LocDto.java
@@ -2,6 +2,7 @@
import com.core.common.Cools;
import com.zy.asrs.entity.LocDetl;
import com.zy.common.entity.OrderGiftProofreadingExcel;
import lombok.Data;
import java.util.List;
@@ -51,6 +52,18 @@
    public LocDto() {
    }
    public LocDto(OrderGiftProofreadingExcel excel) {
        this.matnr = excel.getMatnr();
        this.model = excel.getModel();
        this.orderNo = excel.getOrderNo();
        this.batch = excel.getBatch();
        this.memo = excel.getMemo();
        this.weight = excel.getWeight();
        this.volume = excel.getVolume();
        this.price = excel.getPrice();
        this.specs = excel.getSpecs();
    }
    public LocDto(String locNo, String matnr, String batch, Double anfme) {
        this.locNo = locNo;
        this.matnr = matnr;
src/main/webapp/static/js/orderGift/orderGift.js
@@ -1,5 +1,6 @@
var insTbCount = 0;
var tableCache2 = [];
var admin;
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).extend({
@@ -11,7 +12,7 @@
    var table = layui.table;
    var util = layui.util;
    var upload = layui.upload;
    var admin = layui.admin;
    admin = layui.admin;
    var xmSelect = layui.xmSelect;
    var layDate = layui.laydate;
    var laytpl = layui.laytpl;
@@ -891,7 +892,6 @@
// excel导入
function importExcel() {
    console.log("导入")
    $("#importExcel").trigger("click");
}
function upload(obj){
src/main/webapp/views/orderGift/orderGift.html
@@ -90,6 +90,7 @@
            <table id="order" lay-filter="order"></table>
        </div>
    </div>
    <span style="display: none"><input id="importExcel" type="file" onchange="upload(this)">启动出库</span>
    <div class="layui-card">
        <div class="layui-card-body">
<!--            入库通知单:由ERP提供单据编号、类型、单据时间及物料明细,生成入库作业单,为维护系统高可用,用户可自行添加入库通知单数据,完成独立的入库作业。-->
@@ -98,7 +99,6 @@
        </div>
    </div>
</div>
<div id="myModal"  style="display: none">
    <div style="padding: 10px">
        <div class="layui-upload">