diff --git a/wms_pro/hd/nladmin-system/pom.xml b/wms_pro/hd/nladmin-system/pom.xml
index 12221dd8..de8a13b7 100644
--- a/wms_pro/hd/nladmin-system/pom.xml
+++ b/wms_pro/hd/nladmin-system/pom.xml
@@ -287,7 +287,7 @@
com.yomahub
- tlog-all-spring-boot-starter
+ tlog-core
1.5.0
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/AppRun.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/AppRun.java
index 0065f867..41104537 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/AppRun.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/AppRun.java
@@ -30,7 +30,7 @@ import org.springframework.web.bind.annotation.RestController;
@ServletComponentScan
@EnableTransactionManagement
@MapperScan("org.nl.**.mapper")
-//@EnableDynamicTp
+@EnableDynamicTp
public class AppRun implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(AppRun.class, args);
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/InterationUtil.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/InterationUtil.java
index 8e9e2a7c..d3b07a6f 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/InterationUtil.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/InterationUtil.java
@@ -2,7 +2,9 @@
package org.nl.common.utils;
import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpStatus;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.TableDataInfo;
@@ -34,15 +36,27 @@ public class InterationUtil {
String acsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("wcs_url").getValue();
String url = acsUrl + api;
try {
- String resultMsg = HttpRequest.post(url)
+ HttpResponse execute = HttpRequest.post(url)
.timeout(3000)
.body(String.valueOf(param))
- .execute().body();
- JSONObject response = JSONObject.parseObject(resultMsg);
+ .execute();
+ JSONObject response = JSONObject.parseObject(execute.body());
log.info("ACS相应参数----------------------------------------+"+api+",---"+response.toString());
- String status = response.getString("code");
- if (!status.equals("200")){
- throw new BadRequestException("acs申请任务失败:"+response.getString("message"));
+ if (execute.getStatus() != 200){
+ throw new BadRequestException("acs申请失败:"+response.getString("message"));
+ }
+ if (!response.getString("code").equals("200")){
+ String error = "";
+ if (response.get("data")!=null){
+ JSONArray data = response.getJSONArray("data");
+ for (int i = 0; i < data.size(); i++) {
+ JSONObject item = data.getJSONObject(i);
+ error = error+"_"+item.getString("task_code") + ":" + item.getString("msg");
+ }
+ }else {
+ error = response.getString("msg");
+ }
+ throw new BadRequestException("acs申请任务失败:"+error);
}
return response.toJavaObject(TableDataInfo.class);
} catch (Exception ex) {
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/SecurityUtils.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/SecurityUtils.java
index 1044adf0..05a4c4b8 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/SecurityUtils.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/SecurityUtils.java
@@ -24,9 +24,16 @@ public class SecurityUtils {
*/
public static CurrentUser getCurrentUser() {
try {
- return JSONObject.parseObject(String.valueOf(StpUtil.getExtra("loginInfo")),CurrentUser.class);
+ Object loginInfo = StpUtil.getExtra("loginInfo");
+ if (loginInfo==null){
+ CurrentUser currentUser = new CurrentUser();
+ currentUser.setId("2");
+ currentUser.setPresonName("外部系统用户");
+ currentUser.setUsername("admin");
+ return currentUser;
+ }
+ return JSONObject.parseObject(String.valueOf(loginInfo),CurrentUser.class);
} catch (Exception e) {
- e.printStackTrace();
CurrentUser currentUser = new CurrentUser();
currentUser.setId("2");
currentUser.setPresonName("外部系统用户");
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/chainer/impl/ExecuteDecisionChainer.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/chainer/impl/ExecuteDecisionChainer.java
index c1881195..10c5ea83 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/chainer/impl/ExecuteDecisionChainer.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/chainer/impl/ExecuteDecisionChainer.java
@@ -2,6 +2,7 @@ package org.nl.wms.decision_manage.handler.chainer.impl;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.utils.SpringContextHolder;
import org.nl.wms.decision_manage.handler.chainer.DecisionerChain;
@@ -17,6 +18,7 @@ import java.util.Map;
* 链式调用
*/
@Data
+@Slf4j
public class ExecuteDecisionChainer extends DecisionerChain {
private List decisionerTypes;
@@ -33,6 +35,7 @@ public class ExecuteDecisionChainer extends DecisionerChain {
List list = transfers;
for (String decisionerType : decisionerTypes) {
Decisioner decisioner = decisionerMap.get(decisionerType);
+ log.info("执行出入库规格:"+decisioner.strategyConfig.getStrategy_name());
list = decisioner.handler(list, startPatam);
if (CollectionUtils.isEmpty(list)){
throw new BadRequestException("当前策略"+decisioner.strategyConfig.getStrategy_name()+"无可用货位,分配前数量:"+transfers.size());
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/base/NearbyRuleHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/base/NearbyRuleHandler.java
index 5a13e5bd..08e7f73e 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/base/NearbyRuleHandler.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/base/NearbyRuleHandler.java
@@ -1,7 +1,9 @@
package org.nl.wms.decision_manage.handler.decisioner.impl.base;
import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
import org.nl.common.domain.exception.BadRequestException;
+import org.nl.common.utils.ListOf;
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.decision_manage.handler.decisioner.Decisioner;
@@ -11,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
+import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
@@ -20,6 +23,7 @@ import java.util.List;
* 就近放置策略:根据物料ABC类区分
*/
@Service("nearby")
+@Slf4j
public class NearbyRuleHandler extends Decisioner {
//每个策略的配置信息
/**
@@ -48,83 +52,12 @@ public class NearbyRuleHandler extends Decisioner {
if (CollectionUtils.isEmpty(list)){
throw new BadRequestException("当前分配策略无可用货位");
}
+ List before = list.subList(0, list.size()>10?10:list.size());
+ log.info("就近分配前:"+ before);
list.sort(Comparator.comparingInt(i -> i.getRow_num()+i.getCol_num()+i.getLayer_num()+i.getBlock_num()));
//就近分配区分出库还是入库策略
- return list;
+ List subList = list.subList(0, list.size()>10?10:list.size());
+ log.info("就近分配结果:"+ subList);
+ return subList;
}
-
- /**
- * 入库策略:默认入库顺序数小的一方为靠近出口方向
- * @param attrList :仓位集合
- * @param jsonParam:materialId :物料标识
- * @return List :仓位集合
- */
- private List inHandler(List attrList, JSONObject jsonParam) {
-
- return attrList;
- }
-
- /**
- * 出库策略:默认出库顺序数大的一方为靠近出口方向
- * @param attrList :仓位物料信息
- * @param jsonParam:iostorinvdtlId : 出入库明细标识(此方法只根据时间匹配)
- * @return List :需出库仓位集合
- */
-// private List outHandler(List attrList, JSONObject jsonParam) {
-//
-// // 先进行顺序排序
-//
-// // 查询对应的出入库明细
-// StIvtIostorinvdtlIn dtlDao = iStIvtIostorinvdtlService.getById(jsonParam.getString("iostorinvdtlId"));
-//
-// // 查询传入仓位物料中的数量是否满足明细中的数量
-// List vehicleCodeIn = attrList.stream()
-// .map(StIvtStructattr::getVehicle_code)
-// .distinct()
-// .collect(Collectors.toList());
-//
-// // 查询对应的载具物料
-// List extList = iMdPbStoragevehicleextService.list(
-// new QueryWrapper().lambda()
-// .in(MdPbStoragevehicleext::getStoragevehicle_code, vehicleCodeIn)
-// );
-//
-// double attrQty = extList.stream()
-// .map(MdPbStoragevehicleext::getQty)
-// .reduce(BigDecimal.ZERO, BigDecimal::add)
-// .doubleValue();
-//
-// if (dtlDao.getUnassign_qty().doubleValue() > attrQty) {
-// // 说明不满足所需重量则全部返回
-// return attrList;
-// }
-//
-// // 需返回仓位物料集合
-// List resultList = new ArrayList<>();
-// // 满足所需数量: 根据巷道进行平均分配
-// double unAssingQty = dtlDao.getUnassign_qty().doubleValue();
-//
-// while (unAssingQty > 0) {
-//
-// // 添加需返回的仓位物料
-// StIvtStructattr attrDao = attrList.get(0);
-// resultList.add(attrDao);
-//
-// // 减去未分配重量
-// MdPbStoragevehicleext extDao = extList.stream()
-// .filter(row -> row.getStoragevehicle_code().equals(attrDao.getVehicle_code()))
-// .findFirst().orElse(null);
-//
-// if (ObjectUtil.isEmpty(extDao)) {
-// throw new BadRequestException("未查询到载具对应的物料【"+attrDao.getVehicle_code()+"】");
-// }
-//
-// unAssingQty = NumberUtil.sub(unAssingQty,extDao.getQty().doubleValue());
-//
-// // 移出此仓位物料,方便下一轮进行匹配
-// attrList.remove(attrDao);
-// }
-//
-// return resultList;
-// }
}
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/diy/InventoryRuleHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/diy/InventoryRuleHandler.java
index a8283a3d..384f3337 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/diy/InventoryRuleHandler.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/diy/InventoryRuleHandler.java
@@ -3,6 +3,7 @@ package org.nl.wms.decision_manage.handler.decisioner.impl.diy;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.MapOf;
@@ -68,15 +69,18 @@ public class InventoryRuleHandler extends Decisioner lqw = new LambdaQueryWrapper<>();
- lqw.eq(SchBaseTask::getPoint_code1, LINK_POINT.get(start_point))
- .eq(SchBaseTask::getStatus, StatusEnum.FORM_STATUS.code("生成"));
- SchBaseTask task = taskService.getOne(lqw);
- if (!ObjectUtils.isEmpty(task)) {
- String point_code2 = task.getPoint_code2();
- list = getInventory(list, point_code2);
- if (!CollectionUtils.isEmpty(list)) {
- return list;
+ String target = LINK_POINT.get(start_point);
+ if (StringUtils.isNotEmpty(target)){
+ LambdaQueryWrapper lqw = new LambdaQueryWrapper<>();
+ lqw.eq(SchBaseTask::getPoint_code1, target)
+ .lt(SchBaseTask::getStatus, StatusEnum.FORM_STATUS.code("执行中"));
+ List tasks = taskService.list(lqw);
+ for (SchBaseTask task : tasks) {
+ String point_code2 = task.getPoint_code2();
+ List new_list = getInventory(list, point_code2);
+ if (!CollectionUtils.isEmpty(new_list)) {
+ return new_list;
+ }
}
}
return list;
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/GroupDickInStorageTask.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/GroupDickInStorageTask.java
index fa80e19d..99aafa2e 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/GroupDickInStorageTask.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/GroupDickInStorageTask.java
@@ -62,16 +62,13 @@ public class GroupDickInStorageTask extends AbstractTask {
if (StringUtils.isEmpty(point_code1)){
throw new BadRequestException("申请任务失败:请求参数数据异常");
}
- MdGruopDick mst = iMdGruopDickService
- .getOne(new QueryWrapper().eq("vehicle_code", vehicle_code)
- .lt("status", StatusEnum.FORM_STATUS.code("完成")));
- if (mst == null){
- throw new BadRequestException("申请任务失败:载具"+vehicle_code+"组盘信息不存在");
- }
List item = iMdPbVehicleMaterService.getVehicleMaters(vehicle_code);
+
if (CollectionUtils.isEmpty(item)){
- throw new BadRequestException("申请任务失败:载具"+vehicle_code+"组盘信息不存在");
+ throw new BadRequestException("申请任务失败:载具"+vehicle_code+"载具物料信息信息不存在");
}
+ String groupId = item.get(0).getGroup_id();
+ MdGruopDick mst = iMdGruopDickService.getById(groupId);
SchBaseTask schBaseTask = iSchBaseTaskService.getOne(new QueryWrapper()
.eq("vehicle_code", vehicle_code).select("task_code")
.lt("status",StatusEnum.FORM_STATUS.code("完成")));
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/OutStorageTask.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/OutStorageTask.java
index 0873df8e..bb57a236 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/OutStorageTask.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/OutStorageTask.java
@@ -5,16 +5,16 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.constant.DictConstantPool;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.enums.StatusEnum;
-import org.nl.common.utils.CodeUtil;
-import org.nl.common.utils.IdUtil;
-import org.nl.common.utils.SecurityUtils;
+import org.nl.common.utils.*;
import org.nl.wms.dispatch_manage.task.handler.AbstractTask;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
+import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.DecisionHandler;
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
@@ -22,10 +22,13 @@ import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.system_manage.service.param.ISysParamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
/*
@@ -34,12 +37,13 @@ import java.util.stream.Collectors;
* 出库任务入库任务
*/
@Service
+@Slf4j
public class OutStorageTask extends AbstractTask {
@Autowired
private ISchBaseTaskService taskService;
@Autowired
- private ISysParamService iSysParamService;
+ private MoveStorageTask moveStorageTask;
@Autowired
private IStIvtStructattrService iStIvtStructattrService;
@@ -63,30 +67,37 @@ public class OutStorageTask extends AbstractTask {
if (StringUtils.isEmpty(configTarget)){
throw new BadRequestException("创建任务失败:出库点车间点位对应关系配置异常");
}
- target_point = configTarget;
+ target_point=configTarget;
}
if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(target_point)){
throw new BadRequestException("创建任务失败:方法请求参数不能为空");
}
- List list = taskService.list(new QueryWrapper().eq("vehicle_code", vehicle_code)
+ List list = taskService.list(new QueryWrapper()
+ .eq("vehicle_code", vehicle_code)
+ .ne("task_type",StatusEnum.IOBILL_TYPE_MOVE.code("移库"))
.lt("status", StatusEnum.FORM_STATUS.code("完成")));
if (!CollectionUtils.isEmpty(list)){
throw new BadRequestException("当前载具存在任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
}
StIvtStructattr struct = iStIvtStructattrService.getOne(new QueryWrapper().eq("vehicle_code", vehicle_code));
+ log.info("OutStorgeTask出入分配货位信息:{}",struct.toString());
+ String end_struct_code = struct.getStruct_code();
+ if (struct.getStor_code().equals("FStockId")){
+ end_struct_code = SpringContextHolder.getBean(OutStorageTask.class).DoubleStor(struct);
+ }
SchBaseTask task = new SchBaseTask();
- task.setId(IdUtil.getStringId());
- task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
- task.setStatus(StatusEnum.FORM_STATUS.code("生成"));
- task.setHandle_class(this.getClass().getName());
+ task.setId(IdUtil.getStringId());
+ task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
+ task.setStatus(StatusEnum.FORM_STATUS.code("生成"));
+ task.setHandle_class(this.getClass().getName());
task.setAcs_type(StatusEnum.ACS_TYPE.code("立库"));
- task.setCreate_time(DateUtil.now());
- task.setCreate_name(SecurityUtils.getCurrentNickName());
- task.setTask_type(from.getString("task_type"));
- task.setVehicle_code(vehicle_code);
- task.setPoint_code1(struct.getStruct_code());
- task.setPoint_code2(target_point);
+ task.setCreate_time(DateUtil.now());
+ task.setCreate_name(SecurityUtils.getCurrentNickName());
+ task.setTask_type(from.getString("task_type"));
+ task.setVehicle_code(vehicle_code);
+ task.setPoint_code1(end_struct_code);
+ task.setPoint_code2(target_point);
taskService.save(task);
iMdPbVehicleMaterService.update(new LambdaUpdateWrapper()
.set(MdPbVehicleMater::getTask_code,task.getTask_code())
@@ -100,8 +111,61 @@ public class OutStorageTask extends AbstractTask {
return (JSONObject)JSON.toJSON(task);
}
+ @Transactional(propagation= Propagation.REQUIRES_NEW)
+ public synchronized String DoubleStor(StIvtStructattr struct) {
+ String blockPoint = getZdPoint(struct.getStruct_code());
+ //浅货位
+ log.info("1-----出库分配:{},当前货位:{}",blockPoint,struct.getStruct_code());
+ RedissonUtils.lock(()->{
+
+ },"DoubleStor",1);
+ if (blockPoint.equals(struct.getStruct_code())){
+ /**
+ * 当前为浅位
+ * 1.判断浅位是否存在移库任务
+ * 2.存在则取移库任务终点作为出库起点
+ */
+ SchBaseTask moveTask = taskService.getOne(new QueryWrapper()
+ .eq("task_type",StatusEnum.IOBILL_TYPE_MOVE.code("移库"))
+ .eq("vehcle_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());
+ return moveTask.getPoint_code2();
+ }
+ }else {
+ /**
+ * 1.判断浅位是否存在托盘
+ * 2.如果有则判断是否存在出库任务
+ * 3.如果没有则生成移库任务
+ */
+ StIvtStructattr block = iStIvtStructattrService.getOne(new QueryWrapper()
+ .eq("struct_code", blockPoint)
+ .isNotNull("vehicle_code"));
+ log.info("2-----出库分配:深位查询是否有货:{}",block!=null);
+ if (block!=null){
+ int count = taskService.count(new QueryWrapper()
+ .eq("point_code1", block.getStor_code())
+ .lt("status", StatusEnum.FORM_STATUS.code("完成")));
+ if (count == 0){
+ AtomicReference moveStruct = new AtomicReference<>();
+ RedissonUtils.lock(() -> {
+ System.out.println("---3--" + Thread.currentThread().getName());
+ Map process = SpringContextHolder.getBean(DecisionHandler.class).dispenseTransa(ListOf.of("nearby","depthPriority"), new JSONObject(MapOf.of("stor_code", block.getStor_code())));
+ moveStruct.set(((Map) process.get("form_data")).get("end_struct_code"));
+ }, "1" + block.getStor_code(), 5);
+ Map moveForm = MapOf.of("task_type", StatusEnum.IOBILL_TYPE_MOVE.code("移库")
+ , "is_send", false
+ , "vehicle_code", block.getVehicle_code(), "form_data", new JSONObject(MapOf.of("start_struct_code", block.getStruct_code(), "end_struct_code", moveStruct.get())));
+ log.info("3-----出库分配:生成移库任务:{}",moveForm);
+ moveStorageTask.createTask(new JSONObject(moveForm));
+ }
+ }
+ }
+ return struct.getStruct_code();
+ }
+
@Override
- @Transactional
public void updateStatus(JSONObject data) {
this.updateTask(data);
}
@@ -118,4 +182,20 @@ public class OutStorageTask extends AbstractTask {
public void cancel(JSONObject data) {
this.updateTask(data);
}
+
+
+ private static String getZdPoint(String point_code) {
+ if (point_code == null || point_code.length() != 9) {
+ return null;
+ }
+ 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);
+ }
}
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/PalletInStorageTask.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/PalletInStorageTask.java
index b5849074..4f866bdf 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/PalletInStorageTask.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/PalletInStorageTask.java
@@ -62,33 +62,16 @@ public class PalletInStorageTask extends AbstractTask {
throw new BadRequestException("申请任务失败:载具"+vehicle_code+"物料信息不存在");
}
MdPbVehicleMaterVo vehicleMater = item.get(0);
- //更新载具proc_inst_id
- String currentInstId = vehicleMater.getProc_inst_id();
- if (StringUtils.isEmpty(currentInstId)){
- //触发流程
- BussEventMulticaster.Publish(
- new FlowStartEvent("pallet_in",
- (proc_inst_id,empPlace) -> iMdPbVehicleMaterService.update(new UpdateWrapper()
- .set("proc_inst_id",proc_inst_id)
- .eq("vehicle_code",vehicle_code)
- .eq("is_delete",false))
- ,null)
- .build("md_pb_vehicleMater",vehicleMater.getId(),null,null, (JSONObject) JSONObject.toJSON(vehicleMater))
- );
- }else {
- SchBaseTask schBaseTask = iSchBaseTaskService.getOne(new QueryWrapper()
- .eq("vehicle_code", vehicle_code).select("task_code")
- .lt("status",StatusEnum.FORM_STATUS.code("完成")));
- if (schBaseTask!=null){
- throw new BadRequestException("申请任务失败:载具"+vehicle_code+"已经存任务"+schBaseTask.getTask_code());
- }
- ActRuExecution execution = iActRuExecutionService.getById(currentInstId);
- if (execution == null){
- throw new BadRequestException("申请任务失败:载具"+vehicle_code+"流程信息不存在"+currentInstId);
- }
- FlowContinueEvent continueEvent = new FlowContinueEvent(currentInstId, null, new JSONObject(MapOf.of("start_point", point_code1)));
- BussEventMulticaster.Publish(continueEvent);
- }
+
+ BussEventMulticaster.Publish(
+ new FlowStartEvent("pallet_in",
+ (proc_inst_id,empPlace) -> iMdPbVehicleMaterService.update(new UpdateWrapper()
+ .set("proc_inst_id",proc_inst_id)
+ .eq("vehicle_code",vehicle_code)
+ .eq("is_delete",false))
+ ,null)
+ .build("md_pb_vehicleMater",vehicleMater.getId(),null,null, (JSONObject) JSONObject.toJSON(vehicleMater))
+ );
}
return null;
}
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ToPickPlatformTask.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ToPickPlatformTask.java
index e4d6e285..bff1d9bb 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ToPickPlatformTask.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ToPickPlatformTask.java
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.enums.StatusEnum;
@@ -34,6 +35,7 @@ import java.util.stream.Collectors;
* 出库任务入库任务
*/
@Service
+@Slf4j
public class ToPickPlatformTask extends AbstractTask {
private static volatile String Lask_Point;
@Autowired
@@ -58,6 +60,7 @@ public class ToPickPlatformTask extends AbstractTask {
throw new BadRequestException("当前拣选工位未启用");
}
//轮询
+ log.info("上次拣选平台分配位置:{},拣选平台开放点:{}",Lask_Point,targetPoints);
for (int i = 0; i < targetPoints.size(); i++) {
String code = targetPoints.get(i).getCode();
if (targetPoints.size()>1 && !code.equals(Lask_Point)){
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/impl/SchBaseTaskServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/impl/SchBaseTaskServiceImpl.java
index e198e77d..650710f6 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/impl/SchBaseTaskServiceImpl.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/service/impl/SchBaseTaskServiceImpl.java
@@ -220,14 +220,10 @@ public class SchBaseTaskServiceImpl extends ServiceImpl()
- .set("update_time", DateUtil.now())
- .set("vehicle_code", null)
- .set("lock_type", StatusEnum.LOCK.code("无锁"))
- .eq("struct_code", task.getPoint_code2()));
+ JSONObject struct = rzd(stIvtStructattr, task);
+
return struct;
case "czd":
moveTask(task_code, struct_code, stIvtStructattr);
@@ -257,7 +253,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl()
@@ -267,24 +263,53 @@ public class SchBaseTaskServiceImpl extends ServiceImpl) map.get("form_data")).get("end_struct_code");
-
iActRuExecutionService.update(new UpdateWrapper()
- .set("remark", struct_code + "入满异常重新分配货位" + new_struct_code)
+ .set("remark", stIvtStructattr.getStruct_code() + "入满异常重新分配货位" + new_struct_code)
.eq("proc_inst_id", vehicleCode.getProc_inst_id()));
this.update(new UpdateWrapper()
.set("point_code2", new_struct_code)
- .set("remark", struct_code + "入满异常重新分配货位" + new_struct_code)
+ .set("remark", stIvtStructattr.getStor_code() + "入满异常重新分配货位" + new_struct_code)
.eq("task_code", task_code));
- StIvtStructattr struct = iStIvtStructattrService.getOne(new QueryWrapper().eq("struct_code", task.getPoint_code2()));
-
- if (StringUtils.isEmpty(struct.getVehicle_code())){
+ if (StringUtils.isEmpty(stIvtStructattr.getVehicle_code())){
iStIvtStructattrService.update(new UpdateWrapper()
- .eq("struct_code", struct_code)
+ .eq("struct_code", stIvtStructattr.getStruct_code())
.set("lock_type", StatusEnum.LOCK.code("异常锁定"))
.set("update_time", DateUtil.now())
.set("remark", "入满异常:" + task_code)
- .set("vehicle_code", "YCZJ" + task_code));
+ .set("vehicle_code", "YCZD" + task_code));
}
+ iStIvtStructattrService.update(new UpdateWrapper()
+ .set("update_time", DateUtil.now())
+ .set("vehicle_code", null)
+ .set("lock_type", StatusEnum.LOCK.code("无锁"))
+ .eq("struct_code", task.getPoint_code2()));
+ JSONObject result = new JSONObject();
+ result.put("point_code2", new_struct_code);
+ return result;
+ }
+ private JSONObject rm(StIvtStructattr stIvtStructattr, SchBaseTask task) {
+ String task_code = task.getTask_code();
+ MdPbVehicleMater vehicleCode = iMdPbVehicleMaterService
+ .getOne(new QueryWrapper()
+ .eq("vehicle_code", task.getVehicle_code())
+ .eq("is_delete",false));
+ //查询分配规则
+ Map map = SpringContextHolder.getBean(DecisionHandler.class)
+ .dispenseTransa(ListOf.of("nearby"), new JSONObject(MapOf.of("stor_code", stIvtStructattr.getStor_code())));
+ String new_struct_code = ((Map) map.get("form_data")).get("end_struct_code");
+ iActRuExecutionService.update(new UpdateWrapper()
+ .set("remark", stIvtStructattr.getStruct_code() + "入满异常重新分配货位" + new_struct_code)
+ .eq("proc_inst_id", vehicleCode.getProc_inst_id()));
+ this.update(new UpdateWrapper()
+ .set("point_code2", new_struct_code)
+ .set("remark", stIvtStructattr.getStor_code() + "入满异常重新分配货位" + new_struct_code)
+ .eq("task_code", task_code));
+ iStIvtStructattrService.update(new UpdateWrapper()
+ .eq("struct_code", stIvtStructattr.getStruct_code())
+ .set("lock_type", StatusEnum.LOCK.code("异常锁定"))
+ .set("update_time", DateUtil.now())
+ .set("remark", "入满异常:" + task_code)
+ .set("vehicle_code", "YCZD" + task_code));
JSONObject result = new JSONObject();
result.put("point_code2", new_struct_code);
return result;
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/impl/MdGruopDickServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/impl/MdGruopDickServiceImpl.java
index ad4b94f5..4234169e 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/impl/MdGruopDickServiceImpl.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/impl/MdGruopDickServiceImpl.java
@@ -108,14 +108,14 @@ public class MdGruopDickServiceImpl extends ServiceImpl()
.eq("vehicle_code", vehicle_code)
.eq("is_delete", false));
- String proc_inst_id = one.getProc_inst_id();
- if (!StringUtils.isEmpty(proc_inst_id)){
- String parent_id = iActRuExecutionService.getParentByChild(proc_inst_id);
- ActRuExecution ruExecution = iActRuExecutionService.getOne(new QueryWrapper()
- .eq("proc_inst_id",parent_id)
- .lt("status", StatusEnum.FLOW_STATUS.code("完成")));
- if (ruExecution!=null){
- throw new BadRequestException(String.format("当前载具%s业务流程%s未完成",vehicle_code,parent_id));
+ if (one!=null){
+ String proc_inst_id = one.getProc_inst_id();
+ if (!StringUtils.isEmpty(proc_inst_id)){
+ String parent_id = iActRuExecutionService.getParentByChild(proc_inst_id);
+ ActRuExecution ruExecution = iActRuExecutionService.getOne(new QueryWrapper()
+ .eq("proc_inst_id",parent_id)
+ .lt("status", StatusEnum.FLOW_STATUS.code("完成")));
+ if (ruExecution!=null){
+ throw new BadRequestException(String.format("当前载具%s业务流程%s未完成",vehicle_code,parent_id));
+ }
}
+ iMdPbVehicleMaterService.update(new UpdateWrapper()
+ .set("is_delete",true)
+ .eq("id",one.getId()));
}
- iMdPbVehicleMaterService.update(new UpdateWrapper()
- .set("is_delete",true)
- .eq("id",one.getId()));
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
}
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/palletio/service/PalletIostorinvService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/palletio/service/PalletIostorinvService.java
index c9b01045..dbf36ccf 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/palletio/service/PalletIostorinvService.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/palletio/service/PalletIostorinvService.java
@@ -70,16 +70,16 @@ public class PalletIostorinvService {
vehicleMater.setQty(new BigDecimal(1));
vehicleMater.setUnit_id("16");
iMdPbVehicleMaterService.save(vehicleMater);
- //触发流程
- BussEventMulticaster.Publish(
- new FlowStartEvent("pallet_in",
- (proc_inst_id,empPlace) -> iMdPbVehicleMaterService.update(new UpdateWrapper()
- .set("proc_inst_id",proc_inst_id)
- .eq("vehicle_code",vehicle_code)
- .eq("is_delete",false))
- ,null)
- .build("md_pb_vehicleMater",vehicleMater.getId(),null,null, (JSONObject) JSONObject.toJSON(vehicleMater))
- );
+// //触发流程
+// BussEventMulticaster.Publish(
+// new FlowStartEvent("pallet_in",
+// (proc_inst_id,empPlace) -> iMdPbVehicleMaterService.update(new UpdateWrapper()
+// .set("proc_inst_id",proc_inst_id)
+// .eq("vehicle_code",vehicle_code)
+// .eq("is_delete",false))
+// ,null)
+// .build("md_pb_vehicleMater",vehicleMater.getId(),null,null, (JSONObject) JSONObject.toJSON(vehicleMater))
+// );
};
public void outStorage(JSONObject form){
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java
index 1c7a5cc1..2dc3be7a 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java
@@ -77,20 +77,7 @@ public class PmFormDataServiceImpl extends ServiceImpl result = new ArrayList<>();
- JSONObject sourceData = JSONObject.parseObject(sourceString);
- if (StringUtils.isNotEmpty(one.getConvert_json())) {
- sourceData = sourceData.getJSONObject(one.getConvert_json());
- }
-// JSONObject target = mappingParse(formMapping.getMapping_json(), one, sourceData);
-// Object items = target.remove("item");
-// target.put("id", IdUtil.getStringId());
-// target.put("code", CodeUtil.getNewCode(formMapping.getForm_type()));
-// target.put("create_time", DateUtil.now());
-// target.put("create_name", SecurityUtils.getCurrentNickName());
-// PmFormData mst = target.toJavaObject(PmFormData.class);
-// result.add(mst);
-// if (items != null) {
-// JSONArray items_arr = (JSONArray) items;
+ JSONObject sourceData = JSONObject.parseObject(sourceString).getJSONObject("Model");
List items_arr = mappingParseList(formMapping.getMapping_json(), one, sourceData);
for (int i = 0; i < items_arr.size(); i++) {
JSONObject itemTarget = items_arr.get(i);
@@ -198,20 +185,20 @@ public class PmFormDataServiceImpl extends ServiceImpl fields = ListOf.ofSet(formStruc.getBiz_code(), formStruc.getBiz_id(), formStruc.getBiz_code(), formStruc.getBiz_status(), formStruc.getMaterial_id(), formStruc.getPcsn(), formStruc.getVehicle_code(), formStruc.getVehicle_id(),formStruc.getUnit_id(), formStruc.getQty());
JSONObject data = fieldMapping(fields, fieldMapping, sourceData);
data.put("form_type",formStruc.getForm_type());
- List items = new ArrayList<>();
+ List items = new ArrayList<>();
JSONObject form_param = formStruc.getForm_param();
+ String convertJson = formStruc.getConvert_json();
+
if (form_param != null) {
- JSONObject form_data = fieldMapping(form_param.keySet(), fieldMapping, sourceData);
- if (formStruc.getHas_child()) {
- JSONArray sourceDtls = sourceData.getJSONArray(formStruc.getConvert_json());
- for (int i = 0; i < sourceDtls.size(); i++) {
- JSONObject item = fieldMapping(form_param.keySet(), fieldMapping, sourceDtls.getJSONObject(i));
- item.putAll(form_data);
- JSONObject itemData = new JSONObject(data);
- itemData.put("form_data",item);
- items.add(itemData);
- }
+ JSONArray sourceDtls = (JSONArray)sourceData.remove(convertJson);
+ for (int i = 0; i < sourceDtls.size(); i++) {
+ JSONObject itemJson = sourceDtls.getJSONObject(i);
+ itemJson.putAll(sourceData);
+ JSONObject item = fieldMapping(form_param.keySet(), fieldMapping, itemJson);
+ JSONObject itemData = new JSONObject(data);
+ itemData.put("form_data",item);
+ items.add(itemData);
}
}
return items;
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/controller/StIvtIostorinvOutController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/controller/StIvtIostorinvOutController.java
index 8b22fee6..73de043a 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/controller/StIvtIostorinvOutController.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/controller/StIvtIostorinvOutController.java
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log;
import org.nl.common.domain.entity.PageQuery;
+import org.nl.common.utils.RedissonUtils;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.stor_manage.io.service.dto.StorInvQuery;
import org.nl.wms.stor_manage.io.service.iostor.IStIvtIostorinvService;
@@ -102,7 +103,9 @@ public class StIvtIostorinvOutController {
@PostMapping("/taskOpen")
@Log("出库单作业下发")
public ResponseEntity