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 com.zy.asrs.task.core.ReturnT;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
@Slf4j
|
@Service
|
@Transactional
|
public class WrkMastAgvHandler extends AbstractHandler<String>{
|
@Autowired
|
private BasAgvMastService basAgvMastService;
|
@Autowired
|
private BasAgvLocDetlService basAgvLocDetlService;
|
@Autowired
|
private BasAgvWrkDetlService basAgvWrkDetlService;
|
@Autowired
|
private LocMastService locMastService;
|
@Autowired
|
private LocDetlService locDetlService;
|
|
|
public ReturnT<String> start(BasAgvMast basAgvMast) {
|
try {
|
Date now = new Date();
|
switch (basAgvMast.getIoType()){
|
case 0:
|
LocMast sourceLoc0 = locMastService.selectById(basAgvMast.getSourceLocNo());
|
locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", sourceLoc0.getLocNo()));
|
sourceLoc0.setLocSts("O");
|
sourceLoc0.setBarcode("");
|
sourceLoc0.setModiTime(now);
|
sourceLoc0.setIoTime(now);
|
if (!locMastService.updateById(sourceLoc0)) {
|
// exceptionHandle("全板出库 ===>> 修改源库位状态失败;[workNo={0}],[sourceLocNo={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
return FAIL.setMsg("出库 ===>> 修改源库位状态失败; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getSourceLocNo() + "]");
|
}
|
|
basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo()));
|
basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
|
basAgvMast.setStatus(3);
|
basAgvMastService.updateById(basAgvMast);
|
break;
|
case 1:
|
LocMast sourceLoc1 = locMastService.selectById(basAgvMast.getSourceLocNo());
|
|
|
|
LocMast locMast1 = locMastService.selectById(basAgvMast.getLocNo());
|
List<LocDetl> locDetls1 = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
|
if (!locDetls1.isEmpty()) {
|
locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
|
}
|
|
// 修改目标库位状态 ==> .locSts
|
locMast1.setLocSts("F");
|
locMast1.setIoTime(now);
|
locMast1.setModiTime(now);
|
if (!locMastService.updateById(locMast1)) {
|
// exceptionHandle("库位移转 ===>> 修改目标库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
return FAIL.setMsg("库位移转 ===>> 修改目标库位状态失败; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]");
|
}
|
|
|
try{
|
// 转移库存明细数据: 库存号 由工作档源库位变为目标库位
|
locDetlService.updateLocNo(basAgvMast.getLocNo(), basAgvMast.getSourceLocNo());
|
// if (!) {
|
// exceptionHandle("库位移转 ===>> 转移库存明细数据失败;[源库位={0}],[目标库位={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo());
|
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
// return FAIL.setMsg("库位移转 ===>> 转移库存明细数据失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
|
// }
|
} catch (Exception e) {
|
|
}
|
|
|
if (null != sourceLoc1) {
|
sourceLoc1.setBarcode("");
|
sourceLoc1.setLocSts("O");
|
sourceLoc1.setModiTime(now);
|
sourceLoc1.setIoTime(now);
|
if (!locMastService.updateById(sourceLoc1)) {
|
// exceptionHandle("库位移转 ===>> 修改源库位状态失败;[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
return FAIL.setMsg("库位移转 ===>> 修改源库位状态失败; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]");
|
}
|
}
|
|
basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo()));
|
basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
|
basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
|
basAgvMast.setStatus(3);
|
basAgvMastService.updateById(basAgvMast);
|
break;
|
case 2:
|
List<LocDetl> locDetls2 = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
|
if (!locDetls2.isEmpty()) {
|
locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
|
}
|
List<LocDetl> locDetlList1 = new ArrayList<>();
|
List<LocDetl> locDetlList2 = new ArrayList<>();
|
List<BasAgvLocDetl> basAgvLocDetlList = basAgvLocDetlService.selectList(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo()));
|
List<BasAgvWrkDetl> basAgvWrkDetlList = basAgvWrkDetlService.selectList(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
|
if (!basAgvLocDetlList.isEmpty()) {
|
for (BasAgvLocDetl basAgvLocDetl : basAgvLocDetlList){
|
LocDetl locDetl = new LocDetl();
|
locDetl.sync(basAgvLocDetl);
|
locDetlList1.add(locDetl);
|
}
|
} else if (!basAgvWrkDetlList.isEmpty()){
|
for (BasAgvWrkDetl wrkDetl : basAgvWrkDetlList){
|
|
LocDetl locDetl = locDetlService.selectItem(basAgvMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand()
|
,wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3());
|
if (null != locDetl) {
|
if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), basAgvMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3()
|
,wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3())) {
|
// exceptionHandle("全板入库 ===>> 更新库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
return FAIL.setMsg("全板入库 ===>> 更新库存明细失败; [workNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]");
|
}
|
} else {
|
locDetl = new LocDetl();
|
locDetl.sync(wrkDetl);
|
locDetl.setLocNo(basAgvMast.getLocNo()); // 库位号
|
locDetl.setAnfme(wrkDetl.getAnfme()); // 数量
|
locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码
|
locDetl.setModiTime(now);
|
locDetl.setAppeTime(now);
|
locDetl.setOrigin("在库");
|
if (!locDetlService.insert(locDetl)) {
|
// exceptionHandle("全板入库 ===>> 添加库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
return FAIL.setMsg("入库 ===>> 添加库存明细失败; [workNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]");
|
}
|
}
|
|
}
|
}
|
|
LocMast locMast2 = locMastService.selectById(basAgvMast.getLocNo());
|
|
|
// 修改库位状态 S ====>> F
|
if (locMast2.getLocSts().equals("S")) {
|
locMast2.setLocSts("F");
|
locMast2.setIoTime(now);
|
locMast2.setModiTime(now);
|
if (!locMastService.updateById(locMast2)) {
|
// exceptionHandle("全板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
return FAIL.setMsg("全入库 ===>> 修改库位状态失败; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]");
|
}
|
}
|
|
|
if (!locDetlList1.isEmpty()){
|
for (LocDetl locDetl : locDetlList1) {
|
locDetlService.insert(locDetl);
|
}
|
}
|
if (!locDetlList2.isEmpty()){
|
for (LocDetl locDetl : locDetlList2) {
|
locDetlService.insert(locDetl);
|
}
|
}
|
|
basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
|
basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
|
basAgvMast.setStatus(3);
|
basAgvMastService.updateById(basAgvMast);
|
break;
|
case 3:
|
basAgvMast.setStatus(3);
|
basAgvMastService.updateById(basAgvMast);
|
break;
|
default:
|
return FAIL.setMsg("暂不支持该类型");
|
}
|
|
} catch (Exception e) {
|
log.error("fail", e);
|
e.printStackTrace();
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
return FAIL.setMsg(e.getMessage());
|
}
|
return SUCCESS;
|
}
|
}
|