3/11 订单加入拆零标记 扫码service代码优化1.0

dev_2.5_ocean
wangwei 4 months ago
parent 9b418eb703
commit b763214354

@ -1218,8 +1218,9 @@ public class IoCodeTempController extends BaseController {
// @Transactional(rollbackFor = Exception.class)
public BaseResponse addDrugOrder(AddOrderRequest addOrderRequest, UdiEntity udiEntity, String code, Integer groupNumber) {
AddCodeResult addCodeResult = new AddCodeResult();
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(addOrderRequest.getAction());
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();
//过期提醒:
if (IntUtil.value(bussinessTypeEntity.getCheckExpire()) == 1 && !addOrderRequest.isIgnoreExpire()) {
if (StrUtil.isNotEmpty(udiEntity.getExpireDate())) {
String expireDate = "20" + udiEntity.getExpireDate();
long expireTime = MsDateUtil.parseDateExpire(expireDate);
if (expireTime - System.currentTimeMillis() < 0) {
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, "当前产品已过期,无法添加!");
}
}
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(addOrderRequest.getAction());
int checkExpire = IntUtil.value(bussinessTypeEntity.getCheckExpire());
BaseResponse response = checkExpireDate(checkExpire,udiEntity,addOrderRequest);
if (response.getCode() != 20000){
return response;
}
UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(udiEntity.getUdi());
//判断层级标识是否正确
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, "当前产品不支持采集该包装层级追溯码!");
}
if (IntUtil.value(udiRelevanceResponse.getPackLevel()) < IntUtil.value(udiRelevanceResponse.getUseLevel())) {
return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!");
}
} 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())) {
}else {
if (!isPackLevelValid(udiRelevanceResponse.getDistributeMaxLevel(),IntUtil.value(udiRelevanceResponse.getPackLevel()), udiRelevanceResponse.getDistributeLevel())) {
return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!");
}
}
//近效期提醒
long recent = 0;
if (udiRelevanceResponse.getRecentDateTime() != null)
recent = udiRelevanceResponse.getRecentDateTime().longValue();
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 + "天,是否确定继续添加?");
}
}
}
BaseResponse checkResponse = checkIsExpired(udiRelevanceResponse,udiEntity,addOrderRequest,bussinessTypeEntity);
if (checkResponse.getCode() == 505){
return checkResponse;
}
//------工位上货相关-----校验工位存量是否存在----
@ -1624,6 +1566,7 @@ public class IoCodeTempController extends BaseController {
orderEntity.setSplitBusType(addOrderRequest.getSplitBusType());
orderEntity.setWorkPlaceQueueCode(queueCode);
orderEntity.setProductType(2);
orderEntity.setFifoSplitTag(addOrderRequest.getFifoSplitTag());
orderService.insertOrder(orderEntity);
}
@ -1797,6 +1740,58 @@ public class IoCodeTempController extends BaseController {
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() {
Integer groupNumber = codeTempService.selectMaxGroupNumber();

@ -542,12 +542,10 @@ public class BasicBussinessTypeEntity {
* @return
*/
public Boolean isUse() {
if (this.action.equals(ConstantType.SPLIT_RETURN) || this.action.equals(ConstantType.SPLIT_OUT)) {
return true;
}
if (this.corpType == 1)
return true;
return false;
return this.action.equals(ConstantType.SPLIT_RETURN) ||
this.action.equals(ConstantType.SPLIT_OUT) ||
this.corpType == 1;
}
}

@ -365,4 +365,11 @@ public class IoOrderEntity {
*/
@TableField(value = "ycBillNo")
private String ycBillNo;
/**
* 0: 1:2:
*/
@TableField(value = "fifoSplitTag")
private Integer fifoSplitTag;
}

@ -1,5 +1,6 @@
package com.glxp.api.req.inout;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
@Data
@ -64,5 +65,11 @@ public class AddOrderRequest {
private String workPlaceQueueCode;
/**
* 0: 1:2:
*/
@TableField(value = "fifoSplitTag")
private Integer fifoSplitTag;
}

@ -5422,3 +5422,7 @@ CREATE TABLE IF NOT EXISTS `inv_product_batch`
COLLATE = utf8mb4_0900_ai_ci
ROW_FORMAT = Dynamic;
CALL Pro_Temp_ColumnWork('io_order', 'fifoSplitTag',
'tinyint NULL DEFAULT b''0''COMMENT ''拆零标记 0:防止空指针 1:拆零上货 2:整取上货''',
1);

Loading…
Cancel
Save