fix:出库分配异常

This commit is contained in:
zhangzq
2024-09-03 00:16:22 +08:00
parent b9d30b3598
commit f823fb465f
2 changed files with 14 additions and 22 deletions

View File

@@ -84,7 +84,9 @@ public class OutStorageTask extends AbstractTask {
String end_struct_code = struct.getStruct_code();
if (struct.getStor_code().equals("FStockId")){
end_struct_code = SpringContextHolder.getBean(OutStorageTask.class).DoubleStor(struct);
synchronized ("FStockId"){
end_struct_code = SpringContextHolder.getBean(OutStorageTask.class).DoubleStor(struct);
}
}
SchBaseTask task = new SchBaseTask();
task.setId(IdUtil.getStringId());
@@ -112,13 +114,10 @@ public class OutStorageTask extends AbstractTask {
}
@Transactional(propagation= Propagation.REQUIRES_NEW)
public synchronized String DoubleStor(StIvtStructattr struct) {
String blockPoint = getZdPoint(struct.getStruct_code());
public String DoubleStor(StIvtStructattr struct) {
String blockPoint = getZdPoint(struct.getRow_num(),struct.getStruct_code());
//浅货位
log.info("1-----出库分配:{},当前货位:{}",blockPoint,struct.getStruct_code());
RedissonUtils.lock(()->{
},"DoubleStor",1);
if (blockPoint.equals(struct.getStruct_code())){
/**
* 当前为浅位
@@ -127,7 +126,7 @@ public class OutStorageTask extends AbstractTask {
*/
SchBaseTask moveTask = taskService.getOne(new QueryWrapper<SchBaseTask>()
.eq("task_type",StatusEnum.IOBILL_TYPE_MOVE.code("移库"))
.eq("vehcle_code",struct.getVehicle_code())
.eq("vehicle_code",struct.getVehicle_code())
.lt("status", StatusEnum.FORM_STATUS.code("完成")));
if (moveTask !=null){
log.info("1-----出库分配:浅位存在移库任务",moveTask.getTask_code()+"_"+moveTask.getVehicle_code()+"_"+moveTask.getPoint_code1()+"_"+moveTask.getPoint_code2());
@@ -183,19 +182,12 @@ public class OutStorageTask extends AbstractTask {
this.updateTask(data);
}
private static String getZdPoint(String point_code) {
if (point_code == null || point_code.length() != 9) {
return null;
private static String getZdPoint(int row,String source_code) {
if (row == 2 || row == 3) {
return source_code;
}
String type = point_code.substring(0, 1);
int row = Integer.parseInt(point_code.substring(1, 3));
String rest = point_code.substring(3);
if (row % 2 == 0) {
row -= 1;
} else {
row += 1;
}
return String.format("%s%02d%s", type, row, rest);
int blockRow = row == 1 ? 2 : 3;
String replace = source_code.replaceFirst("L0" + row, "L0%s");
return String.format(replace, blockRow);
}
}

View File

@@ -7,8 +7,8 @@ spring:
druid:
db-type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://${DB_HOST:192.168.1.218}:${DB_PORT:3306}/${DB_NAME:wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
# url: jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
# url: jdbc:mysql://${DB_HOST:192.168.1.218}:${DB_PORT:3306}/${DB_NAME:wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
url: jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
username: ${DB_USER:root}
password: ${DB_PWD:123456}