自动化立体仓库 - WMS系统
luxiaotao1123
2022-03-25 1c6d48ec373333fcdd0e54efec1b996b39f40515
#杰克缝纫机立库 【入出库明细Dto】
8个文件已修改
2个文件已添加
153 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/MatCodeCountDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WaitPakin.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WrkDetlService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/WorkLogScheduler.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/DetlDto.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/web/WcsController.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/MatCodeCountDto.java
@@ -1,11 +1,16 @@
package com.zy.asrs.entity;
import lombok.Data;
/**
 * Created by vincent on 2020/6/12
 */
@Data
public class MatCodeCountDto {
    private String matNo;
    private String batch;
    private Double count;
@@ -17,19 +22,9 @@
        this.count = count;
    }
    public String getMatNo() {
        return matNo;
    }
    public void setMatNo(String matNo) {
    public MatCodeCountDto(String matNo, String batch, Double count) {
        this.matNo = matNo;
    }
    public Double getCount() {
        return count;
    }
    public void setCount(Double count) {
        this.batch = batch;
        this.count = count;
    }
}
src/main/java/com/zy/asrs/entity/WaitPakin.java
@@ -54,7 +54,7 @@
    private String supplier;
    /**
     * 仓库号
     * 单据编号
     */
    @ApiModelProperty(value= "单据编号")
    private String warehouse;
@@ -91,7 +91,7 @@
    @ApiModelProperty(value= "库位号")
    @TableField("loc_no")
    private Date locNo;
    private String locNo;
    @ApiModelProperty(value= "状态")
    private String status;
src/main/java/com/zy/asrs/service/WrkDetlService.java
@@ -2,12 +2,12 @@
import com.baomidou.mybatisplus.service.IService;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.MatCodeCountDto;
import com.zy.common.model.DetlDto;
import java.util.List;
public interface WrkDetlService extends IService<WrkDetl> {
    void createWorkDetail(Integer workNo, List<MatCodeCountDto> matCodeCountDtos, String barcode, Long userId);
    void createWorkDetail(Integer workNo, List<DetlDto> detlDtos, String barcode, Long userId);
}
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -13,7 +13,6 @@
import com.zy.asrs.entity.param.FullStoreParam;
import com.zy.asrs.entity.param.LocDetlAdjustParam;
import com.zy.asrs.entity.param.StockOutParam;
import com.zy.asrs.entity.result.PakoutVo;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.VersionUtils;
import com.zy.common.model.*;
@@ -115,11 +114,11 @@
            throw new CoolException("保存工作档失败");
        }
        // 生成工作档明细
        List<MatCodeCountDto> matDtos = new ArrayList<>();
        List<DetlDto> detlDtos = new ArrayList<>();
        param.getList().forEach(elem -> {
            matDtos.add(new MatCodeCountDto(elem.getMatNo(), elem.getCount()));
            detlDtos.add(new DetlDto(elem.getMatNo(), elem.getCount()));
        });
        wrkDetlService.createWorkDetail(workNo, matDtos, param.getBarcode(), userId);
        wrkDetlService.createWorkDetail(workNo, detlDtos, param.getBarcode(), userId);
        // 更新源站点信息
        sourceStaNo.setWrkNo(workNo);
        sourceStaNo.setModiUser(userId);
src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
@@ -5,11 +5,11 @@
import com.core.exception.CoolException;
import com.zy.asrs.entity.MatCode;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.MatCodeCountDto;
import com.zy.asrs.mapper.WrkDetlMapper;
import com.zy.asrs.service.MatCodeService;
import com.zy.asrs.service.WrkDetlService;
import com.zy.asrs.utils.VersionUtils;
import com.zy.common.model.DetlDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -25,12 +25,12 @@
    @Override
    @Transactional
    public void createWorkDetail(Integer workNo, List<MatCodeCountDto> matCodeCountDtos, String barcode, Long userId) {
        if (matCodeCountDtos.isEmpty()){
    public void createWorkDetail(Integer workNo, List<DetlDto> detlDtos, String barcode, Long userId) {
        if (detlDtos.isEmpty()){
            return;
        }
        for (MatCodeCountDto dto : matCodeCountDtos) {
            MatCode matCode = matCodeService.selectById(dto.getMatNo());
        for (DetlDto dto : detlDtos) {
            MatCode matCode = matCodeService.selectById(dto.getMatnr());
            if (Cools.isEmpty(matCode)){
                throw new CoolException("物料条码数据为空");
            }
@@ -38,7 +38,7 @@
            WrkDetl wrkDetl = new WrkDetl();
            wrkDetl.setWrkNo(workNo);
            wrkDetl.setIoTime(new Date());
            wrkDetl.setAnfme(dto.getCount()); // 数量
            wrkDetl.setAnfme(dto.getAnfme()); // 数量
            VersionUtils.setWrkDetl(wrkDetl, matCode); // 版本控制
            wrkDetl.setZpallet(barcode); // 托盘条码
            wrkDetl.setAppeUser(userId);
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
New file
@@ -0,0 +1,39 @@
package com.zy.asrs.task;
import com.zy.asrs.service.OrderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
 * Created by vincent on 2020/7/7
 */
@Slf4j
@Component
public class OrderSyncScheduler {
    @Autowired
    private OrderService orderService;
    @Scheduled(cron = "0/3 * * * * ? ")
    private void queryAndSave(){
//        for (WrkMast wrkMast : wrkMasts) {
//            ReturnT<String> result = workLogHandler.start(wrkMast);
//            if (!result.isSuccess()) {
//                log.error("工作档[workNo={}]历史档处理失败", wrkMast.getWrkNo());
//            }
//        }
    }
    @Scheduled(cron = "0/3 * * * * ? ")
    private void completeAndReport(){
//        for (WrkMast wrkMast : wrkMasts) {
//            ReturnT<String> result = workLogHandler.start(wrkMast);
//            if (!result.isSuccess()) {
//                log.error("工作档[workNo={}]历史档处理失败", wrkMast.getWrkNo());
//            }
//        }
    }
}
src/main/java/com/zy/asrs/task/WorkLogScheduler.java
@@ -4,8 +4,7 @@
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.handler.WorkLogHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@@ -15,10 +14,9 @@
/**
 * Created by vincent on 2020/7/7
 */
@Slf4j
@Component
public class WorkLogScheduler {
    private static final Logger log = LoggerFactory.getLogger(WorkLogScheduler.class);
    @Autowired
    private WorkLogHandler workLogHandler;
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -1,10 +1,8 @@
package com.zy.asrs.task.handler;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.SnowflakeIdWorker;
import com.zy.asrs.entity.RequestLog;
import com.zy.asrs.entity.WaitPakin;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.WrkMast;
@@ -24,7 +22,6 @@
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Optional;
@@ -57,14 +54,12 @@
    @Transactional
    public ReturnT<String> start(WrkMast wrkMast) {
        try {
            // 入库
            if (wrkMast.getWrkSts() == 5) {
                // 全板入库
                if (wrkMast.getIoType() == 1) {
                    String docNum = "PU-" + String.valueOf(snowflakeIdWorker.nextId()).substring(0, 15);
                    // 上报给erp
                    // 单据状态变更 作业中 ===>> 已完成
                    List<MatnrDto> matnrDtos = new ArrayList<>();
                    List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
                    for (WrkDetl wrkDetl : wrkDetls) {
@@ -173,6 +168,7 @@
//                exceptionHandle("删除工作明细档[workNo={0}]失败", wrkMast.getWrkNo());
            }
        } catch (Exception e) {
            log.error("", e);
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return FAIL.setMsg(e.getMessage());
src/main/java/com/zy/common/model/DetlDto.java
New file
@@ -0,0 +1,33 @@
package com.zy.common.model;
import lombok.Data;
/**
 * Created by vincent on 2022/3/25
 */
@Data
public class DetlDto {
    private String orderNo;
    private String matnr;
    private String batch;
    private Double anfme;
    public DetlDto() {
    }
    public DetlDto(String matnr, Double anfme) {
        this.matnr = matnr;
        this.anfme = anfme;
    }
    public DetlDto(String orderNo, String matnr, String batch, Double anfme) {
        this.orderNo = orderNo;
        this.matnr = matnr;
        this.batch = batch;
        this.anfme = anfme;
    }
}
src/main/java/com/zy/common/web/WcsController.java
@@ -6,6 +6,7 @@
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.service.*;
import com.zy.common.model.DetlDto;
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.StartupDto;
import com.zy.common.service.CommonService;
@@ -132,21 +133,21 @@
            throw new CoolException("保存工作档失败");
        }
        // 修改通知档
        List<MatCodeCountDto> matDtos = new ArrayList<>();
        waitPakins.forEach(elem -> {
        List<DetlDto> detlDtos = new ArrayList<>();
        waitPakins.forEach(waitPakin -> {
            // todo:luxiaotao 修改通知档
//            matDtos.add(new MatCodeCountDto(elem.getBillNo(), elem.getSeqNo(), elem.getMatNo(), elem.getQty(),elem.getItemBatch(),elem.getOrderNo(),elem.getSpecs()));
//
//            //更新组托数据状态为入库中
//            detlDtos.add(new MatCodeCountDto(waitPakin.getWarehouse(), waitPakin.getMatnr(), waitPakin.getBa(), waitPakin.getAnfme()));
            //更新组托数据状态为入库中
//            Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>().eq("barcode", elem.getBarcode())
//                    .eq("bill_no", elem.getBillNo()).eq("seq_no", elem.getSeqNo()).eq("mat_no", elem.getMatNo());
//            WaitPakin waitPakin = waitPakinService.selectOne(wrapper);
//            waitPakin.setLocNo(dto.getLocNo());
//            waitPakin.setIoStatus(1);//入库中
//            waitPakinService.update(waitPakin, wrapper);
//            WaitPakin one = waitPakinService.selectOne(wrapper);
//            one.setLocNo(dto.getLocNo());
//            one.setIoStatus("Y");//入库中
//            waitPakinService.update(one, wrapper);
        });
        // 生成工作档明细
        wrkDetlService.createWorkDetail(workNo, matDtos, barcode, null);
        wrkDetlService.createWorkDetail(workNo, detlDtos, barcode, null);
        // 更新源站点信息
        sourceStaNo.setWrkNo(workNo);
        sourceStaNo.setModiTime(new Date());