package com.zy.asrs.task.handler;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.zy.asrs.entity.*;
|
import com.zy.asrs.service.*;
|
import com.zy.asrs.task.AbstractHandler;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* Created by vincent on 2020/7/4
|
*/
|
@Service
|
@Transactional
|
public class WorkMastHandler extends AbstractHandler {
|
|
@Autowired
|
private WrkMastService wrkMastService;
|
@Autowired
|
private WrkDetlService wrkDetlService;
|
@Autowired
|
private LocMastService locMastService;
|
@Autowired
|
private LocDetlService locDetlService;
|
@Autowired
|
private WaitPakinService waitPakinService;
|
|
public void start() {
|
List<WrkMast> wrkMasts = wrkMastService.selectToBeCompleteData();
|
if (wrkMasts.isEmpty()) {
|
return;
|
}
|
for (WrkMast wrkMast : wrkMasts) {
|
// 4.入库完成
|
if (wrkMast.getWrkSts() == 4) {
|
doIn(wrkMast);
|
// 14.出库完成
|
} else if (wrkMast.getWrkSts() == 14) {
|
doOut(wrkMast);
|
}
|
}
|
}
|
|
private void doIn(WrkMast wrkMast){
|
Date now = new Date();
|
LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
|
if (null == locMast) {
|
exceptionHandle(""); // todo
|
return;
|
}
|
switch (wrkMast.getIoType()) {
|
// 空板入库
|
case 10:
|
// 修改库位状态=D
|
if (locMast.getLocType().equals("S") || locMast.getLocType().equals("Q")) {
|
locMast.setLocType("D");
|
locMast.setIoTime(now);
|
locMast.setModiTime(now);
|
if (!locMastService.updateById(locMast)) {
|
exceptionHandle(""); // todo
|
}
|
}
|
break;
|
// 全板入库
|
case 1:
|
// 清除所属库位之前的库存明细
|
List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getLocNo()));
|
if (!locDetls.isEmpty()) {
|
locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getLocNo()));
|
}
|
// 根据工作号,查询工作明细档
|
List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
|
if (wrkDetls.isEmpty()) {
|
exceptionHandle(""); // todo
|
}
|
// 遍历工作明细,更新库存明细和入库通知档
|
for (WrkDetl wrkDetl : wrkDetls) {
|
LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getLocNo()).eq("matnr", wrkDetl.getMatnr()));
|
if (null != locDetl) {
|
boolean res = locDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr());
|
if (!res) {
|
exceptionHandle(""); // todo
|
}
|
} else {
|
locDetl = new LocDetl(
|
wrkMast.getLocNo(), // 库位号
|
wrkDetl.getMatnr(), // 物料号
|
null, // 仓库号
|
null, // 转储请求编号
|
null, // 行项目
|
null, // 物料标签ID
|
wrkDetl.getMaktx(), // 物料描述
|
null, // 工厂
|
wrkDetl.getAnfme(), // 数量
|
wrkDetl.getAltme(), // 单位
|
wrkDetl.getZpallet(), // 托盘条码
|
null, // 用户ID
|
null, // 备注
|
null, // 修改人员
|
now, // 修改时间
|
null, // 创建者
|
now // 添加时间
|
);
|
if (!locDetlService.insert(locDetl)) {
|
exceptionHandle(""); // todo
|
}
|
}
|
// 更新入库通知档 status ===>> Y
|
WaitPakin setParam = new WaitPakin();
|
setParam.setStatus("Y");
|
boolean updateRes = waitPakinService.update(setParam
|
, new EntityWrapper<WaitPakin>().eq("barcode", wrkDetl.getZpallet())
|
.eq("matnr", wrkDetl.getMatnr())
|
.eq("anfme", wrkDetl.getAnfme()));
|
if (!updateRes) {
|
exceptionHandle(""); // todo
|
}
|
}
|
// 修改库位状态 S ====>> F
|
if (locMast.getLocType().equals("S")) {
|
locMast.setLocType("F");
|
locMast.setBarcode(wrkMast.getBarcode());
|
locMast.setIoTime(now);
|
locMast.setModiTime(now);
|
if (!locMastService.updateById(locMast)) {
|
exceptionHandle(""); // todo
|
}
|
}
|
break;
|
// 拣料入库
|
case 53:
|
// 根据工作号,查询工作明细档
|
List<WrkDetl> wrkDetls53 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
|
if (wrkDetls53.isEmpty()) {
|
exceptionHandle(""); // todo
|
}
|
for (WrkDetl wrkDetl:wrkDetls53) {
|
// 修改库存明细数量,如果工作明细数量为0时,删除库存明细
|
LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()).eq("matnr", wrkDetl.getMatnr()));
|
if (null != locDetl) {
|
if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr())) {
|
exceptionHandle(""); // todo
|
}
|
// todo:luxiaotao 3)修改出库通知档 status ==> Y
|
}
|
}
|
// 修改库位状态 Q ====>> F
|
if (locMast.getLocType().equals("Q")) {
|
locMast.setLocType("F");
|
locMast.setBarcode(wrkMast.getBarcode());
|
locMast.setIoTime(now);
|
locMast.setModiTime(now);
|
if (!locMastService.updateById(locMast)) {
|
exceptionHandle(""); // todo
|
}
|
}
|
break;
|
// 并板入库
|
case 54:
|
// 根据工作号,查询工作明细档
|
List<WrkDetl> wrkDetls54 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
|
if (wrkDetls54.isEmpty()) {
|
exceptionHandle(""); // todo
|
}
|
// 修改库存明细数量,如无库存,曾新增
|
for (WrkDetl wrkDetl:wrkDetls54) {
|
LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()).eq("matnr", wrkDetl.getMatnr()));
|
if (null != locDetl) {
|
if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr())) {
|
exceptionHandle(""); // todo
|
}
|
} else {
|
locDetl = new LocDetl(
|
wrkMast.getLocNo(), // 库位号
|
wrkDetl.getMatnr(), // 物料号
|
null, // 仓库号
|
null, // 转储请求编号
|
null, // 行项目
|
null, // 物料标签ID
|
wrkDetl.getMaktx(), // 物料描述
|
null, // 工厂
|
wrkDetl.getAnfme(), // 数量
|
wrkDetl.getAltme(), // 单位
|
wrkDetl.getZpallet(), // 托盘条码
|
null, // 用户ID
|
null, // 备注
|
null, // 修改人员
|
now, // 修改时间
|
null, // 创建者
|
now // 添加时间
|
);
|
if (!locDetlService.insert(locDetl)) {
|
exceptionHandle(""); // todo
|
}
|
}
|
// todo:luxiaotao 3)修改出库通知档 status ==> Y
|
}
|
// 修改库位状态 Q ====>> F
|
if (locMast.getLocType().equals("Q")) {
|
locMast.setLocType("F");
|
locMast.setBarcode(wrkMast.getBarcode());
|
locMast.setIoTime(now);
|
locMast.setModiTime(now);
|
if (!locMastService.updateById(locMast)) {
|
exceptionHandle(""); // todo
|
}
|
}
|
break;
|
// 盘点入库
|
case 57:
|
// 根据工作号,查询工作明细档
|
List<WrkDetl> wrkDetls57 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
|
if (wrkDetls57.isEmpty()) {
|
exceptionHandle(""); // todo
|
}
|
// todo:luxiaotao 3)修改盘点通知档 status ==> Y
|
// 修改库位状态 Q ====>> F
|
if (locMast.getLocType().equals("Q")) {
|
locMast.setLocType("F");
|
locMast.setBarcode(wrkMast.getBarcode());
|
locMast.setIoTime(now);
|
locMast.setModiTime(now);
|
if (!locMastService.updateById(locMast)) {
|
exceptionHandle(""); // todo
|
}
|
}
|
break;
|
// 库位移转
|
case 11:
|
|
break;
|
default:
|
break;
|
}
|
}
|
|
private void doOut(WrkMast wrkMast){
|
|
}
|
|
|
|
|
public static void main(String[] args) {
|
for (int i = 0;i<10;i++) {
|
|
try {
|
|
System.out.println("====" + i);
|
if (i == 5){
|
throw new Exception("dsa");
|
}
|
System.out.println("----" + i);
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
|
|
}
|
}
|
|
}
|