init:海亮测试数据库88主85从
This commit is contained in:
@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.google.gson.JsonObject;
|
||||
import lombok.SneakyThrows;
|
||||
import org.nl.b_lms.pdm_manage.enums.SUBEnum;
|
||||
import org.nl.b_lms.sch.tasks.TwoExcepionalMoveTask;
|
||||
@@ -603,21 +604,11 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void allSetPoint2(JSONObject whereJson) {
|
||||
public Map<List<String>, List<JSONObject>> basicCheck(JSONObject whereJson) {
|
||||
// 任务表
|
||||
WQLObject taskService = WQLObject.getWQLObject("sch_base_task");
|
||||
|
||||
StIvtIostorinv mstDao = this.getById(whereJson.getLongValue("iostorinv_id"));
|
||||
|
||||
//判断是否有正在执行中的任务
|
||||
// List<JSONObject> arr = taskService.query("handle_class = '" + TwoOutTask.class.getName() + "' and task_status = '" + TaskStatusEnum.EXECUTING.getCode() + "' and is_delete ='0'")
|
||||
// .getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
//
|
||||
// if (ObjectUtil.isNotEmpty(arr)) {
|
||||
// throw new BadRequestException("当前有出库任务正在执行,请稍后在试!");
|
||||
// }
|
||||
// 查询此明细所有未生成的分配明细
|
||||
List<JSONObject> disDaoList = stIvtIostorinvdisMapper.getNotCreateDis(whereJson);
|
||||
|
||||
@@ -625,6 +616,20 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
throw new BadRequestException("当前没有可设置的分配明细!");
|
||||
}
|
||||
|
||||
// 校验是否有木箱规格没有维护
|
||||
boxCheck(whereJson.getString("iostorinv_id"));
|
||||
|
||||
//判断是否有正在执行中的任务
|
||||
List<JSONObject> arr2 = taskService.query("handle_class = '" + TwoOutTask.class.getName() + "' and task_status < '" + TaskStatusEnum.FINISHED.getCode() + "' and is_delete ='0'")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
|
||||
Map<String, List<JSONObject>> taskGroup = arr2.stream()
|
||||
.collect(Collectors.groupingBy(row -> row.getString("task_group_id")));
|
||||
|
||||
if (taskGroup.size() >= 3) {
|
||||
throw new BadRequestException("当前有三种不同规格的木箱正在出库,请稍后在试!");
|
||||
}
|
||||
|
||||
/*
|
||||
* 下发任务
|
||||
* 1.根据木箱 长、宽、高、订单号、物料分组
|
||||
@@ -633,29 +638,79 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
// 定义一个函数,将需要分组的元素映射到一个建的集合里
|
||||
Function<JSONObject, List<String>> compositeKey = row ->
|
||||
Arrays.asList(row.getString("box_length"), row.getString("box_width"),
|
||||
row.getString("box_high"),row.getString("sale_order_name"),
|
||||
row.getString("material_id")
|
||||
row.getString("box_high"),row.getString("sale_order_name"),
|
||||
row.getString("material_id")
|
||||
);
|
||||
|
||||
Map<List<String>, List<JSONObject>> groupingDisMap =
|
||||
disDaoList.stream().collect(Collectors.groupingBy(compositeKey, Collectors.toList()));
|
||||
|
||||
// 判断是否有异常任务
|
||||
String exceptionPointCode = exceptionPointCode(disDaoList);
|
||||
if (ObjectUtil.isNotEmpty(exceptionPointCode)) {
|
||||
throw new BadRequestException(exceptionPointCode);
|
||||
}
|
||||
return groupingDisMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void allSetPoint2(JSONObject whereJson) {
|
||||
// 任务表
|
||||
WQLObject taskService = WQLObject.getWQLObject("sch_base_task");
|
||||
StIvtIostorinv mstDao = this.getById(whereJson.getLongValue("iostorinv_id"));
|
||||
|
||||
Map<List<String>, List<JSONObject>> groupingDisMap = this.basicCheck(whereJson);
|
||||
|
||||
// 所有分配明细集合
|
||||
List<JSONObject> disTaskMangeList = new ArrayList<>();
|
||||
// 需移库集合
|
||||
List<JSONObject> moveTaskMangeList = new ArrayList<>();
|
||||
// 需出库集合
|
||||
Map<String, List<JSONObject>> outTaskMangeMap = new HashMap<>();
|
||||
|
||||
for (List<JSONObject> disLikeList : groupingDisMap.values()) {
|
||||
// 调用任务生成处理
|
||||
List<JSONObject> taskMangeList = createTaskMange(disLikeList,mstDao.getIostorinv_id().toString());
|
||||
|
||||
// 创建任务并下发一组任务
|
||||
createTask(taskMangeList,disLikeList,whereJson.getString("point_code"));
|
||||
JSONObject taskMange = createTaskMange(disLikeList, mstDao.getIostorinv_id().toString());
|
||||
moveTaskMangeList.addAll(taskMange.getJSONArray("move").toJavaList(JSONObject.class));
|
||||
// TODO --
|
||||
outTaskMangeMap.put(IdUtil.getStringId(), taskMange.getJSONArray("out").toJavaList(JSONObject.class));
|
||||
disTaskMangeList.addAll(disLikeList);
|
||||
// TODO --
|
||||
// 创建任务
|
||||
// createTask(taskMange.getJSONArray("out").toJavaList(JSONObject.class),disLikeList,whereJson.getString("point_code"));
|
||||
}
|
||||
|
||||
// 下发任务:判断当前单据是否有正在执行的的任务
|
||||
// 下发移库任务
|
||||
if (ObjectUtil.isNotEmpty(moveTaskMangeList)) {
|
||||
outBussManageService.createMove2(moveTaskMangeList);
|
||||
}
|
||||
|
||||
// TODO --
|
||||
// 创建出库任务
|
||||
try {
|
||||
for (List<JSONObject> outTaskMangeList : outTaskMangeMap.values()) {
|
||||
createTask(outTaskMangeList,disTaskMangeList,whereJson.getString("point_code"));
|
||||
}
|
||||
} finally {
|
||||
// 下发出库任务:判断当前单据是否有正在执行的的任务
|
||||
JSONArray disArr = taskService.query("table_fk = '" + mstDao.getIostorinv_id().toString() + "' and is_delete = '0' and task_status = '" + TaskStatusEnum.EXECUTING.getCode() + "'")
|
||||
.getResultJSONArray(0);
|
||||
|
||||
if (ObjectUtil.isEmpty(disArr)) {
|
||||
TwoOutTask twoOutTask = new TwoOutTask();
|
||||
twoOutTask.immediateNotifyAcs(null);
|
||||
}
|
||||
}
|
||||
// TODO --
|
||||
|
||||
/* // 下发任务:判断当前单据是否有正在执行的的任务
|
||||
JSONArray disArr = taskService.query("table_fk = '" + mstDao.getIostorinv_id().toString() + "' and is_delete = '0' and task_status = '" + TaskStatusEnum.EXECUTING.getCode() + "'")
|
||||
.getResultJSONArray(0);
|
||||
|
||||
if (ObjectUtil.isEmpty(disArr)) {
|
||||
TwoOutTask twoOutTask = new TwoOutTask();
|
||||
twoOutTask.immediateNotifyAcs(null);
|
||||
}
|
||||
}*/
|
||||
|
||||
}
|
||||
|
||||
@@ -1090,42 +1145,8 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public String taskExceptionalOut(JSONObject jsonObject) {
|
||||
// 任务表
|
||||
WQLObject taskService = WQLObject.getWQLObject("sch_base_task");
|
||||
// 仓位表
|
||||
WQLObject attrTab = WQLObject.getWQLObject("ST_IVT_StructAttr");
|
||||
|
||||
JSONObject jsonTask = taskService.query("task_code = '" + jsonObject.getString("task_code") + "'").uniqueResult(0);
|
||||
|
||||
// 找出对应的浅货位
|
||||
JSONObject jsonAttrOrder = attrTab.query("struct_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0);
|
||||
|
||||
JSONObject jsonAttrNow = attrTab.query("row_num = '" + jsonAttrOrder.getString("row_num") + "' AND layer_num = '" + jsonAttrOrder.getString("layer_num") + "' AND col_num = '" + jsonAttrOrder.getString("col_num") + "' and zdepth = '" + IOSEnum.ZDEPTH_STRUCT.code("浅") + "' and stor_id = '" + jsonAttrOrder.getString("stor_id") + "' and is_delete = '0' and is_used = '1'")
|
||||
.uniqueResult(0);
|
||||
|
||||
if (ObjectUtil.isEmpty(jsonAttrNow)) {
|
||||
throw new BadRequestException("对应浅货位不存在或未启用!" + jsonTask.getString("point_code1"));
|
||||
}
|
||||
|
||||
// 锁住仓位
|
||||
jsonAttrNow.put("lock_type", IOSEnum.LOCK_TYPE.code("货位异常出库锁"));
|
||||
attrTab.update(jsonAttrNow);
|
||||
|
||||
// 生成任务
|
||||
JSONObject taskParam = new JSONObject();
|
||||
taskParam.put("start_device_code", jsonAttrNow.getString("struct_code"));
|
||||
taskParam.put("next_device_code", IOSEnum.OUT_POINT.code(jsonAttrNow.getString("row_num")));
|
||||
taskParam.put("task_type", "010712");
|
||||
taskParam.put("car_no", "此货位LMS系统未有库存,请待出至【CK2001】点位后确认实物并重新手工入回库!");
|
||||
taskParam.put("vehicle_code",IOSEnum.IS_NOTANDYES.code("否"));
|
||||
|
||||
TwoExcepionalMoveTask taskBean = new TwoExcepionalMoveTask();
|
||||
String task_id = taskBean.createTask(taskParam);
|
||||
taskBean.immediateNotifyAcs(null);
|
||||
|
||||
return task_id;
|
||||
public String taskExceptionalOut(JSONObject whereJson) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1231,7 +1252,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
* @param iostorinv_id: 单据标识
|
||||
* @return List<JSONObject> 生成任务的集合
|
||||
*/
|
||||
private List<JSONObject> createTaskMange(List<JSONObject> disLikeList, String iostorinv_id) {
|
||||
private JSONObject createTaskMange(List<JSONObject> disLikeList, String iostorinv_id) {
|
||||
// 仓位表
|
||||
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
|
||||
|
||||
@@ -1279,9 +1300,13 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
}
|
||||
|
||||
// 创建移库单下发移库任务
|
||||
outBussManageService.createMove(needMoveAttrList);
|
||||
// outBussManageService.createMove(needMoveAttrList);
|
||||
|
||||
return needCreateAttrList;
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("move", needMoveAttrList);
|
||||
jsonObject.put("out", needCreateAttrList);
|
||||
|
||||
return jsonObject;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1350,7 +1375,8 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
* @param iostorinv_id 单据标识
|
||||
* @return JSONObject 需要移库的仓位
|
||||
*/
|
||||
private JSONObject ifBoxStop(JSONObject jsonAttr, List<JSONObject> attrRowList, String iostorinv_id) {
|
||||
@Transactional
|
||||
public JSONObject ifBoxStop(JSONObject jsonAttr, List<JSONObject> attrRowList, String iostorinv_id) {
|
||||
// 仓位表
|
||||
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
|
||||
// 子卷包装关系表
|
||||
@@ -1472,6 +1498,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
// 更新移入货位为出库异常货位
|
||||
jsonMove.put("lock_type",IOSEnum.LOCK_TYPE.code("出库异常锁"));
|
||||
jsonMove.put("inv_code", jsonLow.getString("storagevehicle_code"));
|
||||
jsonLow.put("task_code", task_id);
|
||||
attrTab.update(jsonMove);
|
||||
}
|
||||
@@ -1629,7 +1656,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
* @param disLikeList:分配明细集合
|
||||
* @param point_code : 终点
|
||||
*/
|
||||
private void createTask(List<JSONObject> taskMangeList,List<JSONObject> disLikeList, String point_code) {
|
||||
public void createTask(List<JSONObject> taskMangeList,List<JSONObject> disLikeList, String point_code) {
|
||||
// 任务表
|
||||
WQLObject taskService = WQLObject.getWQLObject("sch_base_task");
|
||||
// 点位表
|
||||
@@ -1661,12 +1688,20 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
}
|
||||
for (int i = 0; i < taskMangeList.size(); i++) {
|
||||
JSONObject json = taskMangeList.get(i);
|
||||
|
||||
// TODO ---
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("flag",flag);
|
||||
jsonObject.put("disLikeList",disLikeList);
|
||||
jsonObject.put("taskList",taskList);
|
||||
jsonObject.put("is_auto_issue",is_auto_issue);
|
||||
jsonObject.put("task_group_id",task_group_id);
|
||||
createForTask(json,jsonObject);
|
||||
// TODO ---
|
||||
/*
|
||||
// 确定起点
|
||||
start_device_code = json.getString("struct_code");
|
||||
|
||||
// 确定终点: 根据仓位所在排确定终点
|
||||
|
||||
String end_device_code = "";
|
||||
if("1".equals(flag)){
|
||||
end_device_code = IsEndCode2(json);
|
||||
@@ -1682,11 +1717,11 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
// 判断是否是异常货位
|
||||
if (json.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("出库异常锁"))) {
|
||||
/*
|
||||
*//*
|
||||
* 判断异常货位上的任务是否完成
|
||||
* 完成:生成完成任务的point_code2 当做起点的任务
|
||||
* 未完成:只更新分配明细状态为生成
|
||||
*/
|
||||
*//*
|
||||
JSONObject jsonTask = taskList.stream()
|
||||
.filter(row -> row.getString("task_id").equals(json.getString("task_code")))
|
||||
.collect(Collectors.toList()).get(0);
|
||||
@@ -1760,10 +1795,136 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
row.setTask_id(Long.parseLong(task_id));
|
||||
row.setPoint_id(jsonPoint.getLongValue("point_id"));
|
||||
});
|
||||
iStIvtIostorinvdisService.updateBatchById(disDaoList);
|
||||
iStIvtIostorinvdisService.updateBatchById(disDaoList);*/
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 事务处理方法
|
||||
* @param json 任务单体
|
||||
* @param where {
|
||||
* flag:用来确定终点
|
||||
* is_auto_issue:是否下发
|
||||
* task_group_id:任务组id
|
||||
* disLikeList: 所有分配明细集合
|
||||
* taskList: 异常货位任务集合
|
||||
* }
|
||||
*/
|
||||
@Transactional
|
||||
public void createForTask(JSONObject json, JSONObject where) {
|
||||
// 任务表
|
||||
WQLObject taskService = WQLObject.getWQLObject("sch_base_task");
|
||||
// 点位表
|
||||
WQLObject schBasePointService = WQLObject.getWQLObject("sch_base_point");
|
||||
// 载具扩展属性表
|
||||
WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
|
||||
|
||||
String flag = where.getString("flag");
|
||||
String is_auto_issue = where.getString("is_auto_issue");
|
||||
String task_group_id = where.getString("task_group_id");
|
||||
List<JSONObject> disLikeList = where.getJSONArray("disLikeList").toJavaList(JSONObject.class);
|
||||
List<JSONObject> taskList = where.getJSONArray("taskList").toJavaList(JSONObject.class);
|
||||
|
||||
// 确定起点
|
||||
String start_device_code = json.getString("struct_code");
|
||||
|
||||
// 确定终点: 根据仓位所在排确定终点
|
||||
String end_device_code = "";
|
||||
if("1".equals(flag)){
|
||||
end_device_code = IsEndCode2(json);
|
||||
}else{
|
||||
end_device_code = IsEndCode(json);
|
||||
}
|
||||
|
||||
// 过滤此仓位的分配明细
|
||||
List<StIvtIostorinvdis> disDaoList = disLikeList.stream()
|
||||
.filter(row -> row.getString("struct_code").equals(json.getString("struct_code")))
|
||||
.map(row -> JSONObject.parseObject(JSONObject.toJSONString(row), StIvtIostorinvdis.class))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 判断是否是异常货位
|
||||
if (json.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("出库异常锁"))) {
|
||||
/*
|
||||
* 判断异常货位上的任务是否完成
|
||||
* 完成:生成完成任务的point_code2 当做起点的任务
|
||||
* 未完成:只更新分配明细状态为生成
|
||||
*/
|
||||
JSONObject jsonTask = taskList.stream()
|
||||
.filter(row -> row.getString("task_id").equals(json.getString("task_code")))
|
||||
.collect(Collectors.toList()).get(0);
|
||||
|
||||
|
||||
// 完成
|
||||
if (jsonTask.getString("task_status").equals(TaskStatusEnum.FINISHED.getCode())) {
|
||||
start_device_code = jsonTask.getString("point_code2");
|
||||
is_auto_issue = IOSEnum.IS_SEND.code("否");
|
||||
} else {
|
||||
// 未完成:只更新分配明细状态不更新任务id
|
||||
disDaoList.forEach(row -> {
|
||||
row.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
|
||||
row.setTask_id(Long.parseLong(task_group_id));
|
||||
});
|
||||
iStIvtIostorinvdisService.updateBatchById(disDaoList);
|
||||
|
||||
// 标记任务
|
||||
jsonTask.put("is_auto_issue",IOSEnum.IS_SEND.code("否"));
|
||||
taskService.update(jsonTask);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 查询木箱对应的载具
|
||||
JSONObject jsonVeExt = extTab.query("pcsn = '" + json.getString("storagevehicle_code") + "'")
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonVeExt)) {
|
||||
throw new BadRequestException("此木箱没有绑定托盘号!"+json.getString("storagevehicle_code"));
|
||||
}
|
||||
|
||||
// 生成任务
|
||||
JSONObject jsonTaskParam = new JSONObject();
|
||||
jsonTaskParam.put("task_type", "010711");
|
||||
jsonTaskParam.put("point_code1", start_device_code);
|
||||
jsonTaskParam.put("point_code2", end_device_code);
|
||||
jsonTaskParam.put("vehicle_code", json.getString("storagevehicle_code"));
|
||||
jsonTaskParam.put("vehicle_code2", jsonVeExt.getString("storagevehicle_code"));
|
||||
jsonTaskParam.put("containerType", json.getString("storagevehicle_type"));
|
||||
jsonTaskParam.put("task_group_id", task_group_id);
|
||||
jsonTaskParam.put("is_auto_issue", is_auto_issue);
|
||||
JSONObject request_param = new JSONObject();
|
||||
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
|
||||
new QueryWrapper<BstIvtBoxinfo>().lambda()
|
||||
.eq(BstIvtBoxinfo::getBox_no, json.getString("storagevehicle_code"))
|
||||
);
|
||||
request_param.put("containerType", boxDao.getVehicle_type());
|
||||
jsonTaskParam.put("request_param", request_param);
|
||||
jsonTaskParam.put("table_fk", disDaoList.get(0).getIostorinv_id().toString());
|
||||
|
||||
if (json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("浅")) ||
|
||||
json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("无")))
|
||||
{
|
||||
jsonTaskParam.put("sort_seq", Integer.parseInt(IOSEnum.ZDEPTH_STRUCT.code("浅")));
|
||||
} else {
|
||||
jsonTaskParam.put("sort_seq", Integer.parseInt(IOSEnum.ZDEPTH_STRUCT.code("深")));
|
||||
}
|
||||
jsonTaskParam.put("request_param", jsonTaskParam);
|
||||
|
||||
TwoOutTask twoOutTask = new TwoOutTask();
|
||||
String task_id = twoOutTask.createTask(jsonTaskParam);
|
||||
|
||||
// 更新分配明细
|
||||
JSONObject jsonPoint = schBasePointService.query("point_code = '" + end_device_code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonPoint)) {
|
||||
throw new BadRequestException("出库点位不存在:"+end_device_code);
|
||||
}
|
||||
|
||||
disDaoList.forEach(row -> {
|
||||
row.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
|
||||
row.setTask_id(Long.parseLong(task_id));
|
||||
row.setPoint_id(jsonPoint.getLongValue("point_id"));
|
||||
});
|
||||
iStIvtIostorinvdisService.updateBatchById(disDaoList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建任务
|
||||
* @param taskMangeList:仓位集合
|
||||
|
||||
@@ -501,6 +501,278 @@ public class OutBussManageServiceImpl implements OutBussManageService {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createMove2(List<JSONObject> list) {
|
||||
//子卷包装关系表
|
||||
WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation");
|
||||
|
||||
//物料表
|
||||
WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase");
|
||||
// 载具扩展属性表
|
||||
WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
|
||||
|
||||
// 获取子卷包装集合
|
||||
String vehilcle_in = list.stream()
|
||||
.map(row -> row.getString("storagevehicle_code"))
|
||||
.collect(Collectors.joining("','"));
|
||||
|
||||
List<JSONObject> subList = subTab.query("package_box_sn IN ('" + vehilcle_in + "')")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
|
||||
// 查询物料集合
|
||||
String materialCode_in = subList.stream()
|
||||
.map(row -> row.getString("product_name"))
|
||||
.collect(Collectors.joining("','"));
|
||||
|
||||
List<JSONObject> materList = materTab.query("material_code IN ('" + materialCode_in + "')")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
|
||||
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
JSONObject json = list.get(i);
|
||||
// TODO--
|
||||
createForMove(json,subList,materList);
|
||||
// TODO--
|
||||
/*
|
||||
// 生成移库单传入参数
|
||||
JSONObject mapParam = new JSONObject();
|
||||
// 明细参数
|
||||
JSONArray table = new JSONArray();
|
||||
|
||||
mapParam.put("bill_type", IOSEnum.MOVE_TYPE.code("出库移库"));
|
||||
mapParam.put("buss_type", IOSEnum.MOVE_TYPE.code("出库移库"));
|
||||
mapParam.put("bill_status", IOSEnum.MOVE_STATUS.code("提交"));
|
||||
mapParam.put("biz_date", DateUtil.today());
|
||||
mapParam.put("stor_code", json.getString("stor_code"));
|
||||
mapParam.put("stor_id", json.getString("stor_id"));
|
||||
mapParam.put("stor_name", json.getString("stor_name"));
|
||||
mapParam.put("is_task", IOSEnum.IS_NOTANDYES.code("是"));
|
||||
|
||||
// 过滤对应物料
|
||||
JSONObject jsonSub = subList.stream()
|
||||
.filter(row -> row.getString("package_box_sn").equals(json.getString("storagevehicle_code")))
|
||||
.collect(Collectors.toList()).get(0);
|
||||
|
||||
JSONObject jsonMater = materList.stream()
|
||||
.filter(row -> row.getString("material_code").equals(jsonSub.getString("product_name")))
|
||||
.collect(Collectors.toList()).get(0);
|
||||
|
||||
// 查询移入货位
|
||||
JSONObject moveParam = new JSONObject();
|
||||
moveParam.put("stor_id", json.getString("stor_id"));
|
||||
moveParam.put("sect_id", RegionTypeEnum.TWO_BZC01.getId());
|
||||
moveParam.put("box_no", json.getString("storagevehicle_code"));
|
||||
moveParam.put("material_id", jsonMater.getString("material_id"));
|
||||
//根据木箱高度,判断入库仓位的高度、
|
||||
String height = "";
|
||||
String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
|
||||
String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
|
||||
// 查询木箱信息
|
||||
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
|
||||
new QueryWrapper<BstIvtBoxinfo>().lambda()
|
||||
.eq(BstIvtBoxinfo::getBox_no, json.getString("storagevehicle_code"))
|
||||
);
|
||||
|
||||
String box_high = boxDao.getBox_high();
|
||||
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
|
||||
height = "('1','2','3')";
|
||||
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
|
||||
height = "('2','3')";
|
||||
} else {
|
||||
height = "('3')";
|
||||
}
|
||||
moveParam.put("height", height);
|
||||
moveParam.put("vehicle_type", boxDao.getVehicle_type());
|
||||
// 移库巷道
|
||||
moveParam.put("move_block_num",json.getString("block_num"));
|
||||
|
||||
// TODO JSONObject jsonMove = inBussManageService.getOneStruct(moveParam);
|
||||
JSONObject jsonMove = twoInBussManageService.getOneStruct(moveParam);
|
||||
|
||||
// 查询移出货位的库存物料
|
||||
JSONObject jsonMoveIvt = WQL.getWO("ST_OUTIVT03")
|
||||
.addParam("flag", "6")
|
||||
.addParam("struct_id", json.getString("struct_id"))
|
||||
.process().uniqueResult(0);
|
||||
|
||||
// 移库单明细
|
||||
JSONObject jsonMoveDtl = new JSONObject();
|
||||
jsonMoveDtl.put("is_task", "2");
|
||||
jsonMoveDtl.put("turnout_sect_id", json.getLongValue("sect_id"));
|
||||
jsonMoveDtl.put("turnout_sect_code", json.getString("sect_code"));
|
||||
jsonMoveDtl.put("turnout_sect_name", json.getString("sect_name"));
|
||||
jsonMoveDtl.put("turnout_struct_id", json.getLongValue("struct_id"));
|
||||
jsonMoveDtl.put("turnout_struct_code", json.getString("struct_code"));
|
||||
jsonMoveDtl.put("turnout_struct_name", json.getString("struct_name"));
|
||||
jsonMoveDtl.put("material_id", jsonMoveIvt.getLongValue("material_id"));
|
||||
jsonMoveDtl.put("pcsn", jsonMoveIvt.getString("pcsn"));
|
||||
jsonMoveDtl.put("quality_scode", IOSEnum.QUALITY_SCODE.code("合格品"));
|
||||
jsonMoveDtl.put("qty_unit_id", jsonMoveIvt.getLongValue("qty_unit_id"));
|
||||
jsonMoveDtl.put("qty_unit_name", jsonMoveIvt.getString("unit_name"));
|
||||
jsonMoveDtl.put("qty", jsonMoveIvt.getDoubleValue("canuse_qty"));
|
||||
jsonMoveDtl.put("storagevehicle_code", json.getString("storagevehicle_code"));
|
||||
jsonMoveDtl.put("turnin_sect_id", jsonMove.getLongValue("sect_id"));
|
||||
jsonMoveDtl.put("turnin_sect_code", jsonMove.getString("sect_code"));
|
||||
jsonMoveDtl.put("turnin_sect_name", jsonMove.getString("sect_name"));
|
||||
jsonMoveDtl.put("turnin_struct_id", jsonMove.getLongValue("struct_id"));
|
||||
jsonMoveDtl.put("turnin_struct_code", jsonMove.getString("struct_code"));
|
||||
jsonMoveDtl.put("turnin_struct_name", jsonMove.getString("struct_name"));
|
||||
|
||||
// 查询木箱对应的载具
|
||||
JSONObject jsonVeExt = extTab.query("pcsn = '" + json.getString("storagevehicle_code") + "'")
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonVeExt)) {
|
||||
throw new BadRequestException("此木箱没有绑定托盘号!"+json.getString("storagevehicle_code"));
|
||||
}
|
||||
|
||||
// 生成任务
|
||||
JSONObject param2 = new JSONObject();
|
||||
param2.put("task_type", "010709");
|
||||
param2.put("vehicle_code", json.getString("storagevehicle_code"));
|
||||
param2.put("vehicle_code2", jsonVeExt.getString("storagevehicle_code"));
|
||||
param2.put("point_code1", json.getString("struct_code"));
|
||||
param2.put("point_code2", jsonMove.getString("struct_code"));
|
||||
|
||||
HandMoveStorAcsTask handMoveStorAcsTask = new HandMoveStorAcsTask();
|
||||
String move_task_id = handMoveStorAcsTask.createTask(param2);
|
||||
|
||||
// 回显移库明细任务id
|
||||
jsonMoveDtl.put("task_id", move_task_id);
|
||||
table.add(jsonMoveDtl);
|
||||
|
||||
mapParam.put("tableData", table);
|
||||
// 调用移库单新增方法
|
||||
handMoveStorService.insertDtl2(mapParam);
|
||||
|
||||
// 下发任务
|
||||
handMoveStorAcsTask.immediateNotifyAcs(null);*/
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 移库事务处理
|
||||
* @param json 移库仓位个体
|
||||
* @param subList 子卷包装关系集合
|
||||
* @param materList 物料集合
|
||||
*/
|
||||
@Transactional
|
||||
public void createForMove(JSONObject json, List<JSONObject> subList, List<JSONObject> materList) {
|
||||
// 载具扩展属性表
|
||||
WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
|
||||
// 生成移库单传入参数
|
||||
JSONObject mapParam = new JSONObject();
|
||||
// 明细参数
|
||||
JSONArray table = new JSONArray();
|
||||
|
||||
mapParam.put("bill_type", IOSEnum.MOVE_TYPE.code("出库移库"));
|
||||
mapParam.put("buss_type", IOSEnum.MOVE_TYPE.code("出库移库"));
|
||||
mapParam.put("bill_status", IOSEnum.MOVE_STATUS.code("提交"));
|
||||
mapParam.put("biz_date", DateUtil.today());
|
||||
mapParam.put("stor_code", json.getString("stor_code"));
|
||||
mapParam.put("stor_id", json.getString("stor_id"));
|
||||
mapParam.put("stor_name", json.getString("stor_name"));
|
||||
mapParam.put("is_task", IOSEnum.IS_NOTANDYES.code("是"));
|
||||
|
||||
// 过滤对应物料
|
||||
JSONObject jsonSub = subList.stream()
|
||||
.filter(row -> row.getString("package_box_sn").equals(json.getString("storagevehicle_code")))
|
||||
.collect(Collectors.toList()).get(0);
|
||||
|
||||
JSONObject jsonMater = materList.stream()
|
||||
.filter(row -> row.getString("material_code").equals(jsonSub.getString("product_name")))
|
||||
.collect(Collectors.toList()).get(0);
|
||||
|
||||
// 查询移入货位
|
||||
JSONObject moveParam = new JSONObject();
|
||||
moveParam.put("stor_id", json.getString("stor_id"));
|
||||
moveParam.put("sect_id", RegionTypeEnum.TWO_BZC01.getId());
|
||||
moveParam.put("box_no", json.getString("storagevehicle_code"));
|
||||
moveParam.put("material_id", jsonMater.getString("material_id"));
|
||||
//根据木箱高度,判断入库仓位的高度、
|
||||
String height = "";
|
||||
String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
|
||||
String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
|
||||
// 查询木箱信息
|
||||
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
|
||||
new QueryWrapper<BstIvtBoxinfo>().lambda()
|
||||
.eq(BstIvtBoxinfo::getBox_no, json.getString("storagevehicle_code"))
|
||||
);
|
||||
|
||||
String box_high = boxDao.getBox_high();
|
||||
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
|
||||
height = "('1','2','3')";
|
||||
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
|
||||
height = "('2','3')";
|
||||
} else {
|
||||
height = "('3')";
|
||||
}
|
||||
moveParam.put("height", height);
|
||||
moveParam.put("vehicle_type", boxDao.getVehicle_type());
|
||||
// 移库巷道
|
||||
moveParam.put("move_block_num",json.getString("block_num"));
|
||||
|
||||
// TODO JSONObject jsonMove = inBussManageService.getOneStruct(moveParam);
|
||||
JSONObject jsonMove = twoInBussManageService.getOneStruct(moveParam);
|
||||
|
||||
// 查询移出货位的库存物料
|
||||
JSONObject jsonMoveIvt = WQL.getWO("ST_OUTIVT03")
|
||||
.addParam("flag", "6")
|
||||
.addParam("struct_id", json.getString("struct_id"))
|
||||
.process().uniqueResult(0);
|
||||
|
||||
// 移库单明细
|
||||
JSONObject jsonMoveDtl = new JSONObject();
|
||||
jsonMoveDtl.put("is_task", "2");
|
||||
jsonMoveDtl.put("turnout_sect_id", json.getLongValue("sect_id"));
|
||||
jsonMoveDtl.put("turnout_sect_code", json.getString("sect_code"));
|
||||
jsonMoveDtl.put("turnout_sect_name", json.getString("sect_name"));
|
||||
jsonMoveDtl.put("turnout_struct_id", json.getLongValue("struct_id"));
|
||||
jsonMoveDtl.put("turnout_struct_code", json.getString("struct_code"));
|
||||
jsonMoveDtl.put("turnout_struct_name", json.getString("struct_name"));
|
||||
jsonMoveDtl.put("material_id", jsonMoveIvt.getLongValue("material_id"));
|
||||
jsonMoveDtl.put("pcsn", jsonMoveIvt.getString("pcsn"));
|
||||
jsonMoveDtl.put("quality_scode", IOSEnum.QUALITY_SCODE.code("合格品"));
|
||||
jsonMoveDtl.put("qty_unit_id", jsonMoveIvt.getLongValue("qty_unit_id"));
|
||||
jsonMoveDtl.put("qty_unit_name", jsonMoveIvt.getString("unit_name"));
|
||||
jsonMoveDtl.put("qty", jsonMoveIvt.getDoubleValue("canuse_qty"));
|
||||
jsonMoveDtl.put("storagevehicle_code", json.getString("storagevehicle_code"));
|
||||
jsonMoveDtl.put("turnin_sect_id", jsonMove.getLongValue("sect_id"));
|
||||
jsonMoveDtl.put("turnin_sect_code", jsonMove.getString("sect_code"));
|
||||
jsonMoveDtl.put("turnin_sect_name", jsonMove.getString("sect_name"));
|
||||
jsonMoveDtl.put("turnin_struct_id", jsonMove.getLongValue("struct_id"));
|
||||
jsonMoveDtl.put("turnin_struct_code", jsonMove.getString("struct_code"));
|
||||
jsonMoveDtl.put("turnin_struct_name", jsonMove.getString("struct_name"));
|
||||
|
||||
// 查询木箱对应的载具
|
||||
JSONObject jsonVeExt = extTab.query("pcsn = '" + json.getString("storagevehicle_code") + "'")
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonVeExt)) {
|
||||
throw new BadRequestException("此木箱没有绑定托盘号!"+json.getString("storagevehicle_code"));
|
||||
}
|
||||
|
||||
// 生成任务
|
||||
JSONObject param2 = new JSONObject();
|
||||
param2.put("task_type", "010709");
|
||||
param2.put("vehicle_code", json.getString("storagevehicle_code"));
|
||||
param2.put("vehicle_code2", jsonVeExt.getString("storagevehicle_code"));
|
||||
param2.put("point_code1", json.getString("struct_code"));
|
||||
param2.put("point_code2", jsonMove.getString("struct_code"));
|
||||
|
||||
HandMoveStorAcsTask handMoveStorAcsTask = new HandMoveStorAcsTask();
|
||||
String move_task_id = handMoveStorAcsTask.createTask(param2);
|
||||
|
||||
// 回显移库明细任务id
|
||||
jsonMoveDtl.put("task_id", move_task_id);
|
||||
table.add(jsonMoveDtl);
|
||||
|
||||
mapParam.put("tableData", table);
|
||||
// 调用移库单新增方法
|
||||
handMoveStorService.insertDtl2(mapParam);
|
||||
|
||||
// 下发任务
|
||||
handMoveStorAcsTask.immediateNotifyAcs(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createMove2(List<JSONObject> list, Consumer<String> allTransactionConsumer) {
|
||||
//子卷包装关系表
|
||||
|
||||
@@ -67,6 +67,12 @@ public interface OutBussManageService {
|
||||
*/
|
||||
void createMove(List<JSONObject> list);
|
||||
|
||||
/**
|
||||
* 创建移库单2
|
||||
* @param list 需要创建移库单的仓位
|
||||
*/
|
||||
void createMove2(List<JSONObject> list);
|
||||
|
||||
/**
|
||||
* 创建移库单
|
||||
* @param list 需要创建移库单的仓位
|
||||
|
||||
@@ -4,7 +4,6 @@ import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.b_lms.sch.tasks.TwoSendOutTask;
|
||||
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvOutService;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvService;
|
||||
@@ -52,8 +51,6 @@ public class CheckOutBillController {
|
||||
|
||||
private final OutBoxManageService outBoxManageService;
|
||||
|
||||
private final TwoSendOutTask twoSendOutTask;
|
||||
|
||||
|
||||
@GetMapping
|
||||
@Log("查询出库单")
|
||||
@@ -211,11 +208,12 @@ public class CheckOutBillController {
|
||||
|
||||
@PostMapping("/allSetPoint")
|
||||
@Log("一键设置")
|
||||
|
||||
public ResponseEntity<Object> allSetPoint(@RequestBody JSONObject whereJson) {
|
||||
if (whereJson.getString("stor_id").equals(IOSEnum.STOR_ID.code("二期"))) {
|
||||
iStIvtIostorinvOutService.allSetPoint(whereJson);
|
||||
iStIvtIostorinvOutService.allSetPoint2(whereJson);
|
||||
} else {
|
||||
checkOutBillService.allSetPointByNoTran(whereJson);
|
||||
checkOutBillService.allSetPoint(whereJson);
|
||||
}
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
@@ -440,20 +438,6 @@ public class CheckOutBillController {
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/testSendOut2")
|
||||
@Log("发货区测试2")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> testSendOut2(@RequestBody JSONObject whereJson) {
|
||||
//创建任务
|
||||
JSONObject task_jo = new JSONObject();
|
||||
task_jo.put("point_code1", whereJson.getString("point1"));
|
||||
task_jo.put("point_code2", whereJson.getString("point2"));
|
||||
task_jo.put("vehicle_code", whereJson.getString("vehicle_code"));
|
||||
task_jo.put("task_type", "010708");
|
||||
twoSendOutTask.createTask(task_jo);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/testIn")
|
||||
@Log("申请入库")
|
||||
public ResponseEntity<Object> testIn(@RequestBody JSONObject whereJson) {
|
||||
|
||||
Reference in New Issue
Block a user