自动化立体仓库 - WMS系统
#
18516761980
2021-09-17 cbde8633bc21bd2f64a35c25e05d9e9470313b74
#
1个文件已添加
1个文件已修改
175 ■■■■■ 已修改文件
src/main/java/com/zy/ints/controller/WaitMatchkController.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/ints/task/ERPApiScheduler.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/ints/controller/WaitMatchkController.java
@@ -18,7 +18,9 @@
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.MatCodeService;
import com.zy.common.web.BaseController;
import com.zy.ints.entity.IoComplete;
import com.zy.ints.entity.WaitMatchk;
import com.zy.ints.service.IoCompleteService;
import com.zy.ints.service.WaitMatchkLogService;
import com.zy.ints.service.WaitMatchkService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -40,6 +42,8 @@
    private LocDetlService locDetlService;
    @Autowired
    private MatCodeService matCodeService;
    @Autowired
    private IoCompleteService ioCompleteService;
    //盘点通知档
@@ -143,11 +147,59 @@
                        if(!locDetlService.delete(wrapperDetl)){
                            throw new CoolException("删除数量为0明细出错[locNo:"+locDetl.getLocNo()+"],[matNo:"+locDetl.getMatNo()+"]");
                        }
                        //盘点结果插入回报档
                        IoComplete ioComplete = new IoComplete();
                        ioComplete.setBillNo(entity.getBillNo());
                        ioComplete.setSeqNo(entity.getSeqNo());
                        ioComplete.setTaskType(4);  //盘亏
                        ioComplete.setLocNo(entity.getLocNo());
                        ioComplete.setMatNo(entity.getMatNo());
                        ioComplete.setMatName(locDetl.getMatName());
                        ioComplete.setZpallet(locDetl.getZpallet());
                        ioComplete.setQty(locDetl.getQty());
                        ioComplete.setUpdStatus(0);
                        ioComplete.setModiUser(getUserId());
                        ioComplete.setModiTime(now);
                        ioComplete.setAppeUser(getUserId());
                        ioComplete.setAppeTime(now);
                        if(!ioCompleteService.insert(ioComplete)){
                            throw new CoolException("插入回报档出错[locNo:"+locDetl.getLocNo()+"],[matNo:"+locDetl.getMatNo()+"]");
                        }
                    }else{
                        if(!entity.getCheckQty().equals(locDetl.getQty())){ //库存数量与盘点数量相同不用更新
                            locDetl.setQty(entity.getCheckQty());
                            if(!locDetlService.update(locDetl,wrapperDetl)){
                                throw new CoolException("更新库存明细出错[locNo:"+locDetl.getLocNo()+"],[matNo:"+locDetl.getMatNo()+"]");
                            }
                            //盘点结果插入回报档
                            Double qty = 0D;
                            int type = 0;
                            if(entity.getCheckQty()>locDetl.getQty()){//盘盈
                                qty = entity.getCheckQty() - locDetl.getQty();
                                type = 3;
                            } else { //盘亏
                                qty = locDetl.getQty() - entity.getCheckQty();
                                type = 4;
                            }
                            IoComplete ioComplete = new IoComplete();
                            ioComplete.setBillNo(entity.getBillNo());
                            ioComplete.setSeqNo(entity.getSeqNo());
                            ioComplete.setTaskType(type);
                            ioComplete.setLocNo(entity.getLocNo());
                            ioComplete.setMatNo(entity.getMatNo());
                            ioComplete.setMatName(locDetl.getMatName());
                            ioComplete.setZpallet(locDetl.getZpallet());
                            ioComplete.setQty(qty);
                            ioComplete.setUpdStatus(0);
                            ioComplete.setModiUser(getUserId());
                            ioComplete.setModiTime(now);
                            ioComplete.setAppeUser(getUserId());
                            ioComplete.setAppeTime(now);
                            if(!ioCompleteService.insert(ioComplete)){
                                throw new CoolException("插入回报档出错[locNo:"+locDetl.getLocNo()+"],[matNo:"+locDetl.getMatNo()+"]");
                            }
                        }
@@ -180,6 +232,25 @@
                    if(!locDetlService.insert(one)){
                        throw new CoolException("插入库存明细出错[locNo:"+entity.getLocNo()+"],[matNo:"+entity.getMatNo()+"]");
                    }
                    //盘点结果插入回报档
                    IoComplete ioComplete = new IoComplete();
                    ioComplete.setBillNo(entity.getBillNo());
                    ioComplete.setSeqNo(entity.getSeqNo());
                    ioComplete.setTaskType(3);  //盘盈
                    ioComplete.setLocNo(entity.getLocNo());
                    ioComplete.setMatNo(entity.getMatNo());
                    ioComplete.setMatName(one.getMatName());
                    ioComplete.setZpallet(one.getZpallet());
                    ioComplete.setQty(entity.getCheckQty());
                    ioComplete.setUpdStatus(0);
                    ioComplete.setModiUser(getUserId());
                    ioComplete.setModiTime(now);
                    ioComplete.setAppeUser(getUserId());
                    ioComplete.setAppeTime(now);
                    if(!ioCompleteService.insert(ioComplete)){
                        throw new CoolException("插入回报档出错[locNo:"+entity.getLocNo()+"],[matNo:"+entity.getMatNo()+"]");
                    }
                }
                entity.setVerifyStatus(1);
src/main/java/com/zy/ints/task/ERPApiScheduler.java
New file
@@ -0,0 +1,104 @@
package com.zy.ints.task;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.Cools;
import com.zy.ints.entity.IoComplete;
import com.zy.ints.entity.StockSync;
import com.zy.ints.service.IoCompleteService;
import com.zy.ints.service.StockSyncService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * erp任务控制器
 * Created by vincent on 2020/11/27
 */
@Slf4j
@Component
public class ERPApiScheduler {
    @Autowired
    private IoCompleteService ioCompleteService;
    @Autowired
    private StockSyncService stockSyncService;
    /**
     * ERP接口是否启用
     */
    @Value("${erp.enabled}")
    private Boolean erpEnabled;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    /**
     * 提取回报档资料,上报ERP处理
     */
    @Scheduled(cron = "0/3 * * * * ? ")
    public void ioCompleteExecute(){
        if(!erpEnabled) return;
        Date now = new Date();
        boolean res = false;
        String errMsg = "";//上报返回异常信息
        Wrapper<IoComplete> wrapper = new EntityWrapper<IoComplete>().ne("upd_status",1).last("order by upd_status,modi_time asc");
        List<IoComplete> ioCompletes = ioCompleteService.selectList(wrapper);
//        IoComplete ioComplete = ioCompleteService.selectOne(wrapper);
        if(null != ioCompletes && ioCompletes.size() > 0){
            IoComplete ioComplete = ioCompletes.get(0);
            ////////////上报ERP接口
            ///////////调ERP接口后,需要插入接口日志表ints_erpreq_log
            if(res){
                ioComplete.setUpdStatus(1);
                ioComplete.setModiTime(now);
                ioCompleteService.updateById(ioComplete);
            } else {
                ioComplete.setUpdStatus(2);
                ioComplete.setErrorMemo(errMsg);
                ioComplete.setModiTime(now);
                ioCompleteService.updateById(ioComplete);
            }
        }
    }
    /**
     * 提取库存同步表资料,上报ERP库存同步
     */
    @Scheduled(cron = "0/3 * * * * ? ")
    public void stockSyncExecute() {
        if (!erpEnabled) return;
        Date now = new Date();
        boolean res = false;
        String errMsg = "";//上报返回异常信息
        String sql = "select top 10 mat_no as matNo,mat_name as matName,qty from ints_stock_sync where upd_status<>1 order by upd_status,modi_time asc";
        List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
        if(null != maps){
            for (Map map: maps) {
                StockSync stockSync = Cools.conver(map, StockSync.class);
                ////////////上报ERP接口
                ///////////调ERP接口后,需要插入接口日志表ints_erpreq_log
                if (res) {
                    stockSync.setUpdStatus(1);
                    stockSync.setModiTime(now);
                    stockSyncService.update(stockSync,new EntityWrapper<StockSync>().eq("mat_no",stockSync.getMatNo()));
                } else {
                    stockSync.setUpdStatus(2);
                    stockSync.setErrorMemo(errMsg);
                    stockSync.setModiTime(now);
                    stockSyncService.update(stockSync,new EntityWrapper<StockSync>().eq("mat_no",stockSync.getMatNo()));
                }
            }
        }
    }
}