|
|
@ -1218,8 +1218,9 @@ public class IoCodeTempController extends BaseController {
|
|
|
|
// @Transactional(rollbackFor = Exception.class)
|
|
|
|
// @Transactional(rollbackFor = Exception.class)
|
|
|
|
public BaseResponse addDrugOrder(AddOrderRequest addOrderRequest, UdiEntity udiEntity, String code, Integer groupNumber) {
|
|
|
|
public BaseResponse addDrugOrder(AddOrderRequest addOrderRequest, UdiEntity udiEntity, String code, Integer groupNumber) {
|
|
|
|
AddCodeResult addCodeResult = new AddCodeResult();
|
|
|
|
AddCodeResult addCodeResult = new AddCodeResult();
|
|
|
|
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(addOrderRequest.getAction());
|
|
|
|
|
|
|
|
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode(addOrderRequest.getInvCode());
|
|
|
|
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode(addOrderRequest.getInvCode());
|
|
|
|
|
|
|
|
UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(udiEntity.getUdi());
|
|
|
|
|
|
|
|
|
|
|
|
//批次号校验
|
|
|
|
//批次号校验
|
|
|
|
//判断此产品是否开启允许无批次号
|
|
|
|
//判断此产品是否开启允许无批次号
|
|
|
@ -1238,88 +1239,29 @@ public class IoCodeTempController extends BaseController {
|
|
|
|
String orderId = addOrderRequest.getBillNo();
|
|
|
|
String orderId = addOrderRequest.getBillNo();
|
|
|
|
|
|
|
|
|
|
|
|
//过期提醒:
|
|
|
|
//过期提醒:
|
|
|
|
if (IntUtil.value(bussinessTypeEntity.getCheckExpire()) == 1 && !addOrderRequest.isIgnoreExpire()) {
|
|
|
|
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(addOrderRequest.getAction());
|
|
|
|
if (StrUtil.isNotEmpty(udiEntity.getExpireDate())) {
|
|
|
|
int checkExpire = IntUtil.value(bussinessTypeEntity.getCheckExpire());
|
|
|
|
String expireDate = "20" + udiEntity.getExpireDate();
|
|
|
|
BaseResponse response = checkExpireDate(checkExpire,udiEntity,addOrderRequest);
|
|
|
|
long expireTime = MsDateUtil.parseDateExpire(expireDate);
|
|
|
|
if (response.getCode() != 20000){
|
|
|
|
if (expireTime - System.currentTimeMillis() < 0) {
|
|
|
|
return response;
|
|
|
|
return ResultVOUtils.error(504, "当前产品已过期,是否确定继续添加?");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (IntUtil.value(bussinessTypeEntity.getCheckExpire()) == 2) {
|
|
|
|
|
|
|
|
if (StrUtil.isNotEmpty(udiEntity.getExpireDate())) {
|
|
|
|
|
|
|
|
String expireDate = "20" + udiEntity.getExpireDate();
|
|
|
|
|
|
|
|
long expireTime = MsDateUtil.parseDateExpire(expireDate);
|
|
|
|
|
|
|
|
if (expireTime - System.currentTimeMillis() < 0) {
|
|
|
|
|
|
|
|
return ResultVOUtils.error(604, "当前产品已过期,无法添加!");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(udiEntity.getUdi());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//判断层级标识是否正确
|
|
|
|
//判断层级标识是否正确
|
|
|
|
if (bussinessTypeEntity.isUse()) {
|
|
|
|
if (bussinessTypeEntity.isUse()) {
|
|
|
|
if (udiRelevanceResponse.getUseMaxLevel() != null && IntUtil.value(udiRelevanceResponse.getUseMaxLevel()) < IntUtil.value(udiRelevanceResponse.getPackLevel())) {
|
|
|
|
if (!isPackLevelValid(udiRelevanceResponse.getUseMaxLevel(),IntUtil.value(udiRelevanceResponse.getPackLevel()), udiRelevanceResponse.getUseLevel())) {
|
|
|
|
return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (udiRelevanceResponse.getUseMaxLevel() == null && IntUtil.value(udiRelevanceResponse.getPackLevel()) > 1) {
|
|
|
|
|
|
|
|
return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!");
|
|
|
|
return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (IntUtil.value(udiRelevanceResponse.getPackLevel()) < IntUtil.value(udiRelevanceResponse.getUseLevel())) {
|
|
|
|
}else {
|
|
|
|
return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!");
|
|
|
|
if (!isPackLevelValid(udiRelevanceResponse.getDistributeMaxLevel(),IntUtil.value(udiRelevanceResponse.getPackLevel()), udiRelevanceResponse.getDistributeLevel())) {
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
if (udiRelevanceResponse.getDistributeMaxLevel() != null && IntUtil.value(udiRelevanceResponse.getDistributeMaxLevel()) < IntUtil.value(udiRelevanceResponse.getPackLevel())) {
|
|
|
|
|
|
|
|
return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (udiRelevanceResponse.getDistributeMaxLevel() == null && IntUtil.value(udiRelevanceResponse.getPackLevel()) > 1) {
|
|
|
|
|
|
|
|
return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (IntUtil.value(udiRelevanceResponse.getPackLevel()) < IntUtil.value(udiRelevanceResponse.getDistributeLevel())) {
|
|
|
|
|
|
|
|
return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!");
|
|
|
|
return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//近效期提醒
|
|
|
|
//近效期提醒
|
|
|
|
long recent = 0;
|
|
|
|
BaseResponse checkResponse = checkIsExpired(udiRelevanceResponse,udiEntity,addOrderRequest,bussinessTypeEntity);
|
|
|
|
if (udiRelevanceResponse.getRecentDateTime() != null)
|
|
|
|
if (checkResponse.getCode() == 505){
|
|
|
|
recent = udiRelevanceResponse.getRecentDateTime().longValue();
|
|
|
|
return checkResponse;
|
|
|
|
if (IntUtil.value(bussinessTypeEntity.getCheckVailDate()) == 1 && recent > 0 && !addOrderRequest.isIgnoreRecentExpire() && udiRelevanceResponse.getIsDateBy() == 2) {
|
|
|
|
|
|
|
|
if (StrUtil.isNotEmpty(udiEntity.getExpireDate())) {
|
|
|
|
|
|
|
|
String expireDate = "20" + udiEntity.getExpireDate();
|
|
|
|
|
|
|
|
long expireTime = MsDateUtil.parseDateExpire(expireDate);
|
|
|
|
|
|
|
|
long recentTieme = Math.abs(recent * 24 * 60 * 60 * 1000);
|
|
|
|
|
|
|
|
long resultTime = expireTime - System.currentTimeMillis();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (resultTime > 0) {
|
|
|
|
|
|
|
|
long time = resultTime / (60 * 60 * 1000);
|
|
|
|
|
|
|
|
if (resultTime < recentTieme) {
|
|
|
|
|
|
|
|
return ResultVOUtils.error(505, "当前产品临近过期,距过期还剩" + time + "时,是否确定继续添加?");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (IntUtil.value(bussinessTypeEntity.getCheckVailDate()) == 1 && recent > 0 && !addOrderRequest.isIgnoreRecentExpire() && udiRelevanceResponse.getIsDateBy() == 1) {
|
|
|
|
|
|
|
|
if (StrUtil.isNotEmpty(udiEntity.getExpireDate())) {
|
|
|
|
|
|
|
|
String expireDate = "20" + udiEntity.getExpireDate();
|
|
|
|
|
|
|
|
long expireTime = MsDateUtil.parseDateExpire(expireDate);
|
|
|
|
|
|
|
|
long recentTieme = Math.abs(recent * 24 * 60 * 60 * 1000);
|
|
|
|
|
|
|
|
long resultTime = expireTime - System.currentTimeMillis();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (resultTime > 0) {
|
|
|
|
|
|
|
|
long time = resultTime / (24 * 60 * 60 * 1000);
|
|
|
|
|
|
|
|
if (resultTime < recentTieme) {
|
|
|
|
|
|
|
|
return ResultVOUtils.error(505, "当前产品临近过期,距过期还剩" + time + "天,是否确定继续添加?");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//------工位上货相关-----校验工位存量是否存在----
|
|
|
|
//------工位上货相关-----校验工位存量是否存在----
|
|
|
@ -1624,6 +1566,7 @@ public class IoCodeTempController extends BaseController {
|
|
|
|
orderEntity.setSplitBusType(addOrderRequest.getSplitBusType());
|
|
|
|
orderEntity.setSplitBusType(addOrderRequest.getSplitBusType());
|
|
|
|
orderEntity.setWorkPlaceQueueCode(queueCode);
|
|
|
|
orderEntity.setWorkPlaceQueueCode(queueCode);
|
|
|
|
orderEntity.setProductType(2);
|
|
|
|
orderEntity.setProductType(2);
|
|
|
|
|
|
|
|
orderEntity.setFifoSplitTag(addOrderRequest.getFifoSplitTag());
|
|
|
|
orderService.insertOrder(orderEntity);
|
|
|
|
orderService.insertOrder(orderEntity);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -1797,6 +1740,58 @@ public class IoCodeTempController extends BaseController {
|
|
|
|
return ResultVOUtils.success(addCodeResult);
|
|
|
|
return ResultVOUtils.success(addCodeResult);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private BaseResponse checkIsExpired(UdiRelevanceResponse udiRelevanceResponse, UdiEntity udiEntity, AddOrderRequest addOrderRequest,BasicBussinessTypeEntity bussinessTypeEntity) {
|
|
|
|
|
|
|
|
long recent = udiRelevanceResponse.getRecentDateTime() != null ? udiRelevanceResponse.getRecentDateTime().longValue() : 0;
|
|
|
|
|
|
|
|
if (IntUtil.value(bussinessTypeEntity.getCheckVailDate()) == 1 && recent > 0 && !addOrderRequest.isIgnoreRecentExpire()){
|
|
|
|
|
|
|
|
if (StrUtil.isNotEmpty(udiEntity.getExpireDate())) {
|
|
|
|
|
|
|
|
String expireDate = "20" + udiEntity.getExpireDate();
|
|
|
|
|
|
|
|
long expireTime = MsDateUtil.parseDateExpire(expireDate);
|
|
|
|
|
|
|
|
long recentTime = Math.abs(recent * 24 * 60 * 60 * 1000);
|
|
|
|
|
|
|
|
long resultTime = expireTime - System.currentTimeMillis();
|
|
|
|
|
|
|
|
if (resultTime > 0 && resultTime < recentTime) {
|
|
|
|
|
|
|
|
long time = udiRelevanceResponse.getIsDateBy() == 2
|
|
|
|
|
|
|
|
? resultTime / (60 * 60 * 1000) // 单位:小时
|
|
|
|
|
|
|
|
: resultTime / (24 * 60 * 60 * 1000); // 单位:天
|
|
|
|
|
|
|
|
String unit = udiRelevanceResponse.getIsDateBy() == 2 ? "时" : "天";
|
|
|
|
|
|
|
|
return ResultVOUtils.error(505, "当前产品临近过期,距过期还剩" + time + unit + ",是否确定继续添加?");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return ResultVOUtils.success();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private BaseResponse checkExpireDate(int checkExpire,UdiEntity udiEntity, AddOrderRequest addOrderRequest) {
|
|
|
|
|
|
|
|
if (StrUtil.isNotEmpty(udiEntity.getExpireDate())) {
|
|
|
|
|
|
|
|
String expireDate = "20" + udiEntity.getExpireDate();
|
|
|
|
|
|
|
|
long expireTime = MsDateUtil.parseDateExpire(expireDate);
|
|
|
|
|
|
|
|
long currentTimeMillis = System.currentTimeMillis();
|
|
|
|
|
|
|
|
if (expireTime < currentTimeMillis) {
|
|
|
|
|
|
|
|
if (checkExpire == 1 && !addOrderRequest.isIgnoreExpire()) {
|
|
|
|
|
|
|
|
return ResultVOUtils.error(504, "当前产品已过期,是否确定继续添加?");
|
|
|
|
|
|
|
|
} else if (checkExpire == 2) {
|
|
|
|
|
|
|
|
return ResultVOUtils.error(604, "当前产品已过期,无法添加!");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return ResultVOUtils.success();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private boolean isPackLevelValid(Integer maxLevel, Integer packLevel, Integer compareLevel) {
|
|
|
|
|
|
|
|
//maxLevel 当业务使用单据类型的时候 为使用允许采集最大层级 不适用的时候 为流通允许采集的最大层级
|
|
|
|
|
|
|
|
//compareLevel 当业务类型使用单据类型的时候 为使用层级 不使用的为流通
|
|
|
|
|
|
|
|
//packLevel 包装层级
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (maxLevel != null && packLevel > maxLevel) {
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (maxLevel == null && packLevel > 1 ) {
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return packLevel >= compareLevel;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Integer getMaxGroupNumber() {
|
|
|
|
public Integer getMaxGroupNumber() {
|
|
|
|
Integer groupNumber = codeTempService.selectMaxGroupNumber();
|
|
|
|
Integer groupNumber = codeTempService.selectMaxGroupNumber();
|
|
|
|