package com.zy.asrs.task.handler;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.mapper.Wrapper;
|
import com.core.common.Arith;
|
import com.core.common.Cools;
|
import com.core.exception.CoolException;
|
import com.zy.asrs.entity.*;
|
import com.zy.asrs.service.*;
|
import com.zy.asrs.task.AbstractHandler;
|
import com.zy.asrs.task.core.ReturnT;
|
import com.zy.asrs.utils.Utils;
|
import com.zy.common.model.LocTypeDto;
|
import com.zy.common.model.StartupDto;
|
import com.zy.common.properties.SlaveProperties;
|
import com.zy.common.service.CommonService;
|
import lombok.extern.slf4j.Slf4j;
|
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 Monkey D. Luffy on 2023.11.21
|
* 徐工汉云..............以下.............上饶江铜.............工作档生成RGV小车任务
|
*/
|
@Slf4j
|
@Service
|
@Transactional
|
public class WrkMastCrnHandler extends AbstractHandler<String> {
|
@Autowired
|
private WrkMastCrnService wrkMastCrnService;
|
@Autowired
|
private LocMastService locMastService;
|
@Autowired
|
private WrkMastService wrkMastService;
|
@Autowired
|
private RgvOneSignService rgvOneSignService;
|
|
@Transactional
|
public ReturnT<String> start(WrkMast wrkMast,WrkMast wrkMastOther) {
|
try {
|
Date now = new Date();
|
LocTypeDto locTypeDto = new LocTypeDto();
|
locTypeDto.setLocType1((short)1);
|
Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>().eq("crn_no", wrkMast.getCrnNo())
|
.eq("row1", wrkMast.getCrnNo() * 4-3)
|
.eq("loc_sts", "O");
|
Wrapper<LocMast> wrapperOther = new EntityWrapper<LocMast>().eq("crn_no", wrkMast.getCrnNo())
|
.eq("row1", wrkMast.getCrnNo() * 4)
|
.eq("loc_sts", "O");
|
int row1 = locMastService.selectCount(wrapper);
|
int row2 = locMastService.selectCount(wrapperOther);
|
List<LocMast> locMastList = null;
|
if (row1>=row2){
|
locMastList = locMastService.selectList(wrapper.orderBy("lev1", true)
|
.orderBy("bay1", true));
|
}else {
|
locMastList = locMastService.selectList(wrapperOther.orderBy("lev1", true)
|
.orderBy("bay1", true));
|
}
|
|
if (locMastList.isEmpty()){
|
return FAIL;
|
}
|
for (LocMast locMast1 : locMastList){
|
String[] strings = staNoOther(locMast1.getLocNo());
|
if (Cools.isEmpty(strings) || Cools.isEmpty(strings[0]) || Cools.isEmpty(strings[1])){
|
continue;
|
}
|
wrkMast.setLocNo(strings[0]);
|
wrkMastOther.setLocNo(strings[1]);
|
|
WrkMastCrn wrkMastCrn = new WrkMastCrn(wrkMast,wrkMastOther,now);
|
|
|
// 更新目标库位状态
|
LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
|
if (locMast.getLocSts().equals("O")){
|
locMast.setLocSts("S"); // S.入库预约
|
locMast.setModiTime(now);
|
} else {
|
continue;
|
}
|
|
|
// 更新目标库位状态
|
LocMast locMastOther = locMastService.selectById(wrkMastOther.getLocNo());
|
if (locMastOther.getLocSts().equals("O")){
|
locMastOther.setLocSts("S"); // S.入库预约
|
locMastOther.setModiTime(now);
|
} else {
|
continue;
|
}
|
|
if (!locMastService.updateById(locMast)){
|
return FAIL;
|
}
|
|
if (!locMastService.updateById(locMastOther)){
|
return FAIL;
|
}
|
wrkMastService.updateById(wrkMast);
|
wrkMastService.updateById(wrkMastOther);
|
|
wrkMastCrnService.insert(wrkMastCrn);
|
return SUCCESS;
|
}
|
|
}catch (Exception e){
|
log.error("异常!!!"+e);
|
return FAIL;
|
}
|
return SUCCESS;
|
}
|
|
public ReturnT<String> start(WrkMast wrkMast,boolean sign) {
|
try {
|
Date now = new Date();
|
LocTypeDto locTypeDto = new LocTypeDto();
|
locTypeDto.setLocType1((short)1);
|
|
String deepLocOther = getDeepLoc2(wrkMast.getSourceLocNo(), Utils.getRow(wrkMast.getSourceLocNo()));
|
if (Cools.isEmpty(deepLocOther)){
|
return FAIL;
|
}
|
WrkMast wrkMastOther = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_loc_no", deepLocOther).eq("wrk_sts", 11L));
|
if (!Cools.isEmpty(wrkMastOther)){
|
// if (!sign) {
|
// RgvOneSign trunSma = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","TrunSma"+wrkMast.getStaNo()));
|
// trunSma.setRgvOneSign(trunSma.getRgvOneSign()+1);
|
// rgvOneSignService.updateById(trunSma);
|
// }
|
// if ((wrkMastOther.getIoType()==101 || wrkMastOther.getIoType() == 110) && wrkMastOther.booleanStaNoSign() && wrkMastOther.booleanStaNoSignOther()){
|
// if (sign){
|
// RgvOneSign rgvOneSign = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","LineUp"+wrkMastOther.getStaNo()));
|
// if (Cools.isEmpty(rgvOneSign)){
|
// return FAIL;
|
// }
|
// RgvOneSign trunSma = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","TrunSma"+wrkMastOther.getStaNo()));
|
// if (Cools.isEmpty(trunSma)){
|
// return FAIL;
|
// }
|
// int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no", wrkMastOther.getStaNo()).eq("wrk_sts",12L));
|
// int wrkCountCrn = wrkMastCrnService.selectCount(new EntityWrapper<WrkMastCrn>().eq("sta_no", wrkMastOther.getStaNo()));
|
// if (wrkCountCrn*2+wrkCount+rgvOneSign.getRgvOneSign()+trunSma.getRgvOneSign()>1){
|
// return FAIL;
|
// }
|
// int wrkCountGt = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no", wrkMastOther.getStaNo()).gt("wrk_sts",11L));
|
// if (wrkCountGt > 1){
|
// return FAIL;
|
// }
|
// trunSma.setRgvOneSign(trunSma.getRgvOneSign()+1);
|
// rgvOneSignService.updateById(trunSma);
|
// } else {
|
// RgvOneSign trunSma = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","TrunSma"+wrkMastOther.getStaNo()));
|
// trunSma.setRgvOneSign(trunSma.getRgvOneSign()+1);
|
// rgvOneSignService.updateById(trunSma);
|
// }
|
// }
|
WrkMastCrn wrkMastCrn = new WrkMastCrn(wrkMast,wrkMastOther,now);
|
wrkMastCrnService.insert(wrkMastCrn);
|
}else {
|
return FAIL;
|
}
|
}catch (Exception e){
|
log.error("异常!!!"+e);
|
return FAIL;
|
}
|
return SUCCESS;
|
}
|
|
public String[] staNoOther(String locNo){
|
String[] strings = new String[2];
|
int row = Utils.getRow(locNo);
|
if (row==1 || row==5 ){
|
strings[0] = locNo;
|
strings[1] = getDeepLoc2(locNo,row);
|
return strings;
|
} else if (row == 4 || row == 8){
|
strings[0] = getDeepLoc2(locNo,row);
|
strings[1] = locNo;
|
return strings;
|
}else {
|
return null;
|
}
|
}
|
|
// /**
|
// * 获取 浅库位对应的深库位号
|
// */
|
// public static String getDeepLoc(String shallowLoc,int row) {
|
// if (row == 2 || row == 6) {
|
// return Utils.zerofill(String.valueOf(row-1), 2) + shallowLoc.substring(2);
|
// } else if (row == 3 || row == 7) {
|
// return Utils.zerofill(String.valueOf(row+1), 2) + shallowLoc.substring(2);
|
// }else {
|
// return shallowLoc;
|
// }
|
// }
|
|
/**
|
* 获取 深库位对应的浅库位号
|
*/
|
public static String getDeepLoc2(String shallowLoc,int row) {
|
if (row == 1 || row == 5) {
|
return Utils.zerofill(String.valueOf(row+1), 2) + shallowLoc.substring(2);
|
} else if (row == 4 || row == 8) {
|
return Utils.zerofill(String.valueOf(row-1), 2) + shallowLoc.substring(2);
|
}else {
|
return null;
|
}
|
}
|
|
}
|