add 出库联调

This commit is contained in:
ls
2025-08-07 09:12:23 +08:00
parent 7a9e8fc40a
commit 2426fdc38e
22 changed files with 603 additions and 434 deletions

View File

@@ -341,7 +341,8 @@ public class PdmBiSubpackagerelation extends Model<PdmBiSubpackagerelation> {
private String weight;
@TableField(exist = false)
private String plan_qty;
/**
* 获取主键值
*

View File

@@ -422,6 +422,16 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
if (subList.get(0).getQuanlity_in_box().intValue() != split.length) {
throw new BadRequestException("当前木箱" + subList.get(0).getQuanlity_in_box() + "要装箱的子卷" + split.length + "未装完");
}
String boxSn = subList.get(0).getPackage_box_sn();
PdmBiContainerinbound pdmBiContainerinbound = new PdmBiContainerinbound();
pdmBiContainerinbound.setId(org.nl.common.utils.IdUtil.getStringId());
pdmBiContainerinbound.setContainer_name(containerName);
pdmBiContainerinbound.setBox(boxSn);
Boolean inbound = param.getBoolean("inbound");
if (inbound != null) {
pdmBiContainerinbound.setInbound(inbound);
}
iPdmBiContainerinboundService.save(pdmBiContainerinbound);
PdmProductSpecServiceImpl.doRecord(SpecEnum.ZXRK, null, Boolean.TRUE, null, containerList);
}

View File

@@ -273,7 +273,6 @@ public class SchBasePoint extends Model<SchBasePoint> {
*/
private String material_code;
private String num;
/**

View File

@@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import org.nl.b_lms.sch.point.dao.SchBasePoint;
import org.nl.b_lms.sch.point.dao.mapper.SchBasePointMapper;
@@ -16,6 +17,8 @@ import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.dao.mapper.SchBaseTaskMapper;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.impl.LashManageServiceImpl;
import org.nl.b_lms.storage_manage.md.dao.MdPdStoragevehicleext;
import org.nl.b_lms.storage_manage.md.dao.mapper.MdPdStoragevehicleextMapper;
import org.nl.common.utils.RedissonUtils;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
@@ -31,6 +34,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -49,7 +53,8 @@ public class TwoOutHeapTask extends AbstractAcsTask {
@Autowired
private SchBasePointMapper schPointMapper;
@Autowired
private MdPdStoragevehicleextMapper mdPdStoragevehicleextMapper;
private List<SchBaseTask> sendTask(List<SchBaseTask> taskArrAll) {
@@ -159,46 +164,51 @@ public class TwoOutHeapTask extends AbstractAcsTask {
@Override
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
String task_id = taskObj.getString("task_id");
JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "' and task_status < '07'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonTask)) {
// JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "' and task_status < '07'").uniqueResult(0);
SchBaseTask schBaseTask = schBaseTaskMapper.selectOne(new LambdaQueryWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id,task_id).lt(SchBaseTask::getTask_status, "07"));
if (ObjectUtil.isNotEmpty(schBaseTask)) {
if (status.equals(IOSEnum.IS_NOTANDYES.code(""))) {
// 任务为执行之后就不允许取消
if (jsonTask.getIntValue("task_status") > Integer.parseInt(TaskStatusEnum.ISSUE.getCode())) {
throw new BadRequestException("任务:" + jsonTask.getString("task_code") + "已执行,不可取消");
if (Integer.parseInt(schBaseTask.getTask_status()) > Integer.parseInt(TaskStatusEnum.ISSUE.getCode())) {
throw new BadRequestException("任务:" + schBaseTask.getTask_code() + "已执行,不可取消");
}
JSONObject param = new JSONObject();
param.put("is_delete", "1");
param.put("update_time", DateUtil.now());
taskTab.update(param, "task_id = '" + task_id + "'");
schBaseTask.setIs_delete("1");
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTaskMapper.updateById(schBaseTask);
}
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
JSONObject param = new JSONObject();
param.put("task_status", TaskStatusEnum.EXECUTING.getCode());
param.put("update_time", DateUtil.now());
taskTab.update(param, "task_id = '" + task_id + "'");
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTaskMapper.updateById(schBaseTask);
}
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
// 更新任务完成
JSONObject param = new JSONObject();
param.put("task_status", TaskStatusEnum.FINISHED.getCode());
param.put("update_time", DateUtil.now());
taskTab.update(param, "task_id = '" + task_id + "'");
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTaskMapper.updateById(schBaseTask);
// 如果是异常出库口则不需要下发行架任务
if (jsonTask.getString("point_code2").equals(IOSEnum.EXCEP_OUT.code("异常出库口"))) {
WQLObject veExtTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
JSONObject ext_jo = veExtTab.query("pcsn = '" + jsonTask.getString("vehicle_code") + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(ext_jo)) {
ext_jo.put("pcsn", "");
veExtTab.update(ext_jo);
if (schBaseTask.getPoint_code2().equals(IOSEnum.EXCEP_OUT.code("异常出库口"))) {
MdPdStoragevehicleext mdPdStoragevehicleext = mdPdStoragevehicleextMapper.selectOne(new QueryWrapper<MdPdStoragevehicleext>().eq("storagevehicle_code",schBaseTask.getVehicle_code() ));
if (ObjectUtil.isNotEmpty(mdPdStoragevehicleext)) {
mdPdStoragevehicleext.setPcsn("");
mdPdStoragevehicleextMapper.updateById(mdPdStoragevehicleext);
}
} else {
// 下发桁架任务:捆扎
JSONObject jsonParam = new JSONObject();
jsonParam.put("device_code", jsonTask.getString("point_code2"));
jsonParam.put("vehicle_code", jsonTask.getString("vehicle_code"));
jsonParam.put("task_group_id", jsonTask.getString("task_group_id"));
jsonParam.put("device_code", schBaseTask.getPoint_code2());
jsonParam.put("vehicle_code", schBaseTask.getVehicle_code());
jsonParam.put("task_group_id", schBaseTask.getTask_group_id());
LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class);
bean1.createLashTask(jsonParam);
}
@@ -219,36 +229,41 @@ public class TwoOutHeapTask extends AbstractAcsTask {
@Override
public String createTask(JSONObject form) {
String currentUserId = SecurityUtils.getCurrentUserId();
String currentUsername = SecurityUtils.getCurrentUsername();
JSONObject json = new JSONObject();
json.put("task_id", IdUtil.getSnowflake(1, 1).nextId());
json.put("task_code", IdUtil.getSnowflake(1, 1).nextId());
json.put("task_type", form.getString("task_type"));
json.put("vehicle_code", form.getString("vehicle_code"));
json.put("vehicle_code2", form.getString("vehicle_code2"));
json.put("vehicle_type", form.getString("vehicle_type"));
json.put("task_name", form.getString("task_name"));
json.put("point_code1", form.getString("point_code1"));
json.put("point_code2", form.getString("point_code2"));
json.put("material_id", form.getString("material_id"));
json.put("task_group_id", form.getString("task_group_id"));
json.put("is_auto_issue", form.getString("is_auto_issue"));
json.put("table_fk", form.getString("table_fk"));
json.put("request_param", form.getString("request_param"));
json.put("sort_seq", form.getIntValue("sort_seq"));
json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
json.put("handle_class", THIS_CLASS);
json.put("create_id", currentUserId);
json.put("create_name", currentUsername);
json.put("create_time", DateUtil.now());
json.put("acs_task_type", "7");
WQLObject.getWQLObject("SCH_BASE_Task").insert(json);
SchBaseTask task = new SchBaseTask();
task.setTask_id(IdUtil.getSnowflake(1, 1).nextId() + "");
task.setTask_code(IdUtil.getSnowflake(1, 1).nextId() + "");
task.setTask_type(form.getString("task_type"));
task.setVehicle_code(form.getString("vehicle_code"));
task.setVehicle_code2(form.getString("vehicle_code2"));
task.setVehicle_type(form.getString("vehicle_type"));
task.setTask_name(form.getString("task_name"));
task.setMaterial_id(form.getString("material_id"));
task.setTask_group_id(form.getString("task_group_id"));
task.setIs_auto_issue(form.getString("is_auto_issue"));
task.setTable_fk(form.getString("table_fk"));
task.setRequest_param(form.getString("request_param"));
if (form.getString("sort_seq")!= null) {
BigDecimal decimal = new BigDecimal(form.getString("sort_seq"));
task.setSort_seq(decimal);
}
task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
task.setPoint_code1(form.getString("point_code1"));
task.setPoint_code2(form.getString("point_code2"));
task.setHandle_class(THIS_CLASS);
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentUsername());
task.setCreate_time(DateUtil.now());
task.setAcs_task_type("7");
schBaseTaskMapper.insert(task);
return task.getTask_id();
return json.getString("task_id");
}
@Override

View File

@@ -277,8 +277,7 @@ public class TwoOutTask extends AbstractAcsTask {
@Override
public String createTask(JSONObject form) {
String currentUserId = SecurityUtils.getCurrentUserId();
String currentUsername = SecurityUtils.getCurrentUsername();
SchBaseTask task = new SchBaseTask();
task.setTask_id(IdUtil.getSnowflake(1, 1).nextId() + "");
@@ -298,8 +297,8 @@ public class TwoOutTask extends AbstractAcsTask {
task.setSort_seq(decimal);
}
task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
task.setPoint_code1(form.getString("start_device_code"));
task.setPoint_code2(form.getString("next_device_code"));
task.setPoint_code1(form.getString("point_code1"));
task.setPoint_code2(form.getString("point_code2"));
task.setHandle_class(this.getClass().getName());
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentUsername());

View File

@@ -43,7 +43,7 @@ public enum IOSEnum {
//出库单据类型
OUT_TYPE(MapOf.of("发货出库", "1001", "改切出库", "1003", "调拨出库", "1004", "拆箱出库", "1005",
"返检出库", "1006", "超期报废", "1007", "退货报废", "1008", "质量问题报废", "1010", "其他报废", "1002",
"手工出库", "1009","转单出库", "1020","贴标出库", "1021","管控出库", "1099"
"手工出库", "1009","转单出库", "1020","贴标出库", "1021","管控出库", "1099","换标出库", "1022"
)),
//移库单据类型

View File

@@ -145,4 +145,7 @@ public interface IStIvtIostorinvOutService extends IService<StIvtIostorinv> {
* @return String 任务标识
*/
String taskExceptionalOut(JSONObject whereJson);
public void createForTask(JSONObject json, JSONObject where) ;
}

View File

@@ -1,5 +1,6 @@
package org.nl.b_lms.storage_manage.ios.service.iostorInv.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
@@ -27,6 +28,7 @@ import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.sch.tasks.TwoExcepionalMoveTask;
import org.nl.b_lms.sch.tasks.TwoOutExceptionalTask;
import org.nl.b_lms.sch.tasks.TwoOutTask;
import org.nl.b_lms.sch.tasks.slitter.TrussCallAirShaftTask;
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
import org.nl.b_lms.storage_manage.database.service.IMdpbBoxtypeService;
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
@@ -58,6 +60,7 @@ import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.system.service.param.ISysParamService;
import org.nl.system.service.param.dao.Param;
import org.nl.wms.basedata.st.service.StorattrService;
@@ -149,6 +152,10 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
@Autowired
private IMdpbBoxtypeService iMdpbBoxtypeService;
@Autowired
private TwoOutTask twoOutTask;
/**
* 二期入库业务处理接口
*/
@@ -159,7 +166,9 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
private RedissonClient redissonClient;
@Autowired
private StIvtStructivtService structivtService;
/** 仓位 */
/**
* 仓位
*/
@Autowired
private StIvtStructattrService structattrService;
@Autowired
@@ -172,14 +181,18 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
private StIvtSectattrService sectattrService;
@Autowired
private ISysParamService paramService;
/** 载具扩展属性表 */
/**
* 载具扩展属性表
*/
@Autowired
private IMdPbStoragevehicleextService mdPbStoragevehicleextService;
@Autowired
private IschBasePointService ischBasePointService;
@Autowired
private TwoOutExceptionalTask twoOutExceptionalTask;
/** 事物库区 */
/**
* 事物库区
*/
@Autowired
private StIvtBsrealstorattrService bsrealstorattrService;
@Autowired
@@ -188,6 +201,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
@Autowired
private StIvtStructattrMapper stIvtStructattrMapper;
private TrussCallAirShaftTask trussCallAirShaftTask;
@Override
@Transactional
@@ -652,17 +666,57 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
@Transactional
public void allSetPoint2(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("当前有出库任务正在执行,请稍后在试!");
// }
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()) {
// 调用任务生成处理
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 {
// 下发出库任务:判断当前单据是否有正在执行的的任务
List<SchBaseTask> taskList = schBaseTaskMapper.selectList(new LambdaQueryWrapper<SchBaseTask>().eq(SchBaseTask::getTable_fk, mstDao.getIostorinv_id().toString()).eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode()).eq(SchBaseTask::getIs_delete, "0"));
if (CollUtil.isEmpty(taskList)) {
// twoOutTask.immediateNotifyAcs(null);
}
}
}
@Transactional
public Map<List<String>, List<JSONObject>> basicCheck(JSONObject whereJson) {
// 任务表
WQLObject taskService = WQLObject.getWQLObject("sch_base_task");
// 查询此明细所有未生成的分配明细
List<JSONObject> disDaoList = stIvtIostorinvdisMapper.getNotCreateDis(whereJson);
@@ -670,6 +724,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.根据木箱 长、宽、高、订单号、物料分组
@@ -685,25 +753,15 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
Map<List<String>, List<JSONObject>> groupingDisMap =
disDaoList.stream().collect(Collectors.groupingBy(compositeKey, Collectors.toList()));
for (List<JSONObject> disLikeList : groupingDisMap.values()) {
// 调用任务生成处理
List<JSONObject> taskMangeList = createTaskMange(disLikeList, mstDao.getIostorinv_id().toString());
// 创建任务并下发一组任务
createTask(taskMangeList, disLikeList, whereJson.getString("point_code"));
// 判断是否有异常任务
String exceptionPointCode = exceptionPointCode(disDaoList);
if (ObjectUtil.isNotEmpty(exceptionPointCode)) {
throw new BadRequestException(exceptionPointCode);
}
// 下发任务:判断当前单据是否有正在执行的的任务
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);
}
return groupingDisMap;
}
@Override
public void allSetPoint(JSONObject whereJson) {
@@ -825,7 +883,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
.distinct()
.collect(Collectors.toList());
if (taskIds.size() > 0) {
List<SchBaseTask> tasks = ischBaseTaskService.list(new LambdaQueryWrapper<SchBaseTask>().in(SchBaseTask::getTask_id, taskIds));
List<SchBaseTask> tasks = ischBaseTaskService.list(new LambdaQueryWrapper<SchBaseTask>().in(SchBaseTask::getTask_id, taskIds).ne(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()));
if (ObjectUtil.isNotEmpty(tasks)) {
throw new BadRequestException("有任务未完成,不允许强制确认!");
}
@@ -1011,7 +1069,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 查询任务
SchBaseTask schBaseTask = schBaseTaskMapper.selectOne(new QueryWrapper<SchBaseTask>().eq("task_id", whereJson.getString("task_id")).eq("task_status", TaskStatusEnum.FINISHED.getCode()));
SchBaseTask schBaseTask = schBaseTaskMapper.selectOne(new QueryWrapper<SchBaseTask>().eq("task_id", whereJson.getString("task_id")).ne("task_status", TaskStatusEnum.FINISHED.getCode()));
if (schBaseTask == null) {
@@ -1165,6 +1223,134 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
return task_id;
}
/**
* 事务处理方法
*
* @param json 任务单体
* @param where {
* flag用来确定终点
* is_auto_issue是否下发
* task_group_id任务组id
* disLikeList 所有分配明细集合
* taskList 异常货位任务集合
* }
*/
@Transactional
public void createForTask(JSONObject json, JSONObject where) {
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());
// 判断是否是异常货位
String remark = "";
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);
SchBaseTask javaObject = jsonTask.toJavaObject(SchBaseTask.class);
// 完成
if (javaObject.getTask_status().equals(TaskStatusEnum.FINISHED.getCode())) {
start_device_code = javaObject.getPoint_code2();
is_auto_issue = IOSEnum.IS_SEND.code("");
remark = "异常货位出库!";
} else {
// 未完成只更新分配明细状态不更新任务id
disDaoList.forEach(row -> {
row.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
row.setTask_id(task_group_id);
});
iStIvtIostorinvdisService.updateBatchById(disDaoList);
// 标记任务
javaObject.setIs_auto_issue(IOSEnum.IS_SEND.code(""));
javaObject.setRemark("下发单据时【异常移库任务】未完成,请等待任务完成自动创建出库任务!");
javaObject.setCar_no(disDaoList.get(0).getIostorinv_id());
schBaseTaskMapper.updateById(javaObject);
return;
}
}
// 查询木箱对应的载具
JSONObject jsonVeExt = mdPbStoragevehicleextService.getOneByPcsnToObject(json.getString("storagevehicle_code"));
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);
jsonTaskParam.put("remark", remark);
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);
String task_id = twoOutTask.createTask(jsonTaskParam);
// 更新分配明细
SchBasePoint basePointServiceOne = ischBasePointService.getOne(new QueryWrapper<SchBasePoint>().lambda().eq(SchBasePoint::getPoint_code, end_device_code));
if (ObjectUtil.isEmpty(basePointServiceOne)) {
throw new BadRequestException("出库点位不存在:" + end_device_code);
}
disDaoList.forEach(row -> {
row.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
row.setTask_id(task_id);
row.setPoint_id(basePointServiceOne.getPoint_id());
});
iStIvtIostorinvdisService.updateBatchById(disDaoList);
}
/**
* 创建调拨入库单
*
@@ -1256,6 +1442,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
subpackagerelationService.update(subLam);
}
/**
* 生成任务前处理
*
@@ -1263,7 +1450,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");
@@ -1311,11 +1498,16 @@ 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;
}
/**
* 生成任务前处理
*
@@ -1366,7 +1558,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
}
// 创建移库单下发移库任务
outBussManageService.createMove2(needMoveAttrList, allTransactionConsumer);
outBussManageService.createMove2(needMoveAttrList);
return needCreateAttrList;
}
@@ -1653,21 +1845,17 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
* @param point_code 终点
*/
private void createTask(List<JSONObject> taskMangeList, List<JSONObject> disLikeList, String point_code) {
// 任务表
WQLObject taskService = WQLObject.getWQLObject("sch_base_task");
// 点位表
WQLObject schBasePointService = WQLObject.getWQLObject("sch_base_point");
// 载具扩展属性表
WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
// 查询异常货位任务集合
String TaskCodeIn = taskMangeList.stream()
List<String> TaskCodeIn = taskMangeList.stream()
.filter(row -> row.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("出库异常锁")))
.map(row -> row.getString("task_code"))
.distinct().collect(Collectors.joining("','"));
List<JSONObject> taskList = taskService.query("task_id IN ('" + TaskCodeIn + "') and is_delete = '0'")
.getResultJSONArray(0).toJavaList(JSONObject.class);
.distinct().collect(Collectors.toList());
List<SchBaseTask> taskList = new ArrayList<>();
if (!TaskCodeIn.isEmpty()) {
taskList = schBaseTaskMapper.selectList(new QueryWrapper<SchBaseTask>().lambda().in(SchBaseTask::getTask_id, TaskCodeIn).eq(SchBaseTask::getIs_delete, "0"));
}
// 任务组标识
String task_group_id = IdUtil.getStringId();
@@ -1683,118 +1871,29 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
if (ObjectUtil.isNotEmpty(jsonParam)) {
flag = jsonParam.getString("value");
}
IStIvtIostorinvOutService aopService = SpringContextHolder.getBean(IStIvtIostorinvOutService.class);
for (int i = 0; i < taskMangeList.size(); i++) {
JSONObject json = taskMangeList.get(i);
// 确定起点
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(task_group_id);
});
iStIvtIostorinvdisService.updateBatchById(disDaoList);
// 标记任务
jsonTask.put("is_auto_issue", IOSEnum.IS_SEND.code(""));
taskService.update(jsonTask);
continue;
}
}
// 查询木箱对应的载具
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(task_id);
row.setPoint_id(jsonPoint.getString("point_id"));
});
iStIvtIostorinvdisService.updateBatchById(disDaoList);
// 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);
aopService.createForTask(json, jsonObject);
}
}
/**
* 创建任务(通过仓位集合创建)
* <p>出库口IOSEnum#OUT_POINT/2</p>
* @see IOSEnum#OUT_POINT2
* @see IOSEnum#OUT_POINT
*
* @param taskMangeList仓位集合
* @param disLikeList分配明细集合
* @param point_code 终点
* @see IOSEnum#OUT_POINT2
* @see IOSEnum#OUT_POINT
*/
private void createTask2(List<JSONObject> taskMangeList, List<JSONObject> disLikeList, String point_code, Consumer<String> allTransactionConsumer) {
// 查询异常货位任务集合
@@ -1966,17 +2065,19 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 更新异常货位
List<String> structCodeInList = new ArrayList<>();
for (int i = 0; i < taskList.size(); i++) {
SchBaseTask task = taskList.get(i);
structCodeInList.add(task.getPoint_code1());
structCodeInList.add(task.getPoint_code2());
}
if (CollectionUtil.isNotEmpty(taskList)) {
for (int i = 0; i < taskList.size(); i++) {
SchBaseTask task = taskList.get(i);
structCodeInList.add(task.getPoint_code1());
structCodeInList.add(task.getPoint_code2());
}
LambdaUpdateWrapper<StIvtStructattr> strattLam = new LambdaUpdateWrapper<>();
strattLam.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.set(StIvtStructattr::getTask_code, "")
.in(StIvtStructattr::getStruct_code, structCodeInList);
structattrService.update(strattLam);
LambdaUpdateWrapper<StIvtStructattr> strattLam = new LambdaUpdateWrapper<>();
strattLam.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.set(StIvtStructattr::getTask_code, "")
.in(StIvtStructattr::getStruct_code, structCodeInList);
structattrService.update(strattLam);
}
}
/**

View File

@@ -340,8 +340,8 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
if (boxDao == null) {
throw new BadRequestException("未找到该木箱信息!");
}
jsonObject.put("box_no",boxDao.getBox_no());
jsonObject.put("vehicle_type",boxDao.getVehicle_type());
jsonObject.put("box_no", boxDao.getBox_no());
jsonObject.put("vehicle_type", boxDao.getVehicle_type());
attrParam.put("vehicle_type", boxDao.getVehicle_type());
//根据木箱高度,判断入库仓位的高度
String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
@@ -355,7 +355,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
height = "'3'";
}
attrParam.put("height", height);
StIvtSectattr stIvtSectattr = stIvtSectattrMapper.selectOne(new QueryWrapper<StIvtSectattr>().eq("sect_id",jsonObject.getString("sect_id")));
StIvtSectattr stIvtSectattr = stIvtSectattrMapper.selectOne(new QueryWrapper<StIvtSectattr>().eq("sect_id", jsonObject.getString("sect_id")));
// 判断是否是虚拟区
if (stIvtSectattr.getSect_type_attr().equals(IOSEnum.SECT_TYPE.code("虚拟区"))) {
@@ -368,7 +368,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
attrParam.put("move_block_num", MapUtil.getStr(whereJson, "move_block_num"));
}
JSONObject oneStruct = twoInBussManageService.getOneStruct(attrParam);
if (!ObjectUtil.isEmpty(oneStruct)){
if (!ObjectUtil.isEmpty(oneStruct)) {
stIvtStructattr = oneStruct.toJavaObject(StIvtStructattr.class);
}
@@ -392,7 +392,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
// 判断是否虚拟区
String work_status;
Long task_id = null;
StIvtSectattr stIvtSectattr = stIvtSectattrMapper.selectOne(new QueryWrapper<StIvtSectattr>().eq("sect_id",stIvtStructattr.getSect_id()));
StIvtSectattr stIvtSectattr = stIvtSectattrMapper.selectOne(new QueryWrapper<StIvtSectattr>().eq("sect_id", stIvtStructattr.getSect_id()));
if (stIvtSectattr.getSect_type_attr().equals(IOSEnum.SECT_TYPE.code("虚拟区"))) {
// 虚拟区:执行状态为完成
work_status = IOSEnum.WORK_STATUS.code("完成");
@@ -437,9 +437,9 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
.eq(StIvtIostorinvdtl::getIostorinv_id, mst.getIostorinv_id())
).get(0);
List<LinkedHashMap> disList = iStIvtIostorinvdisService.list(
new QueryWrapper<StIvtIostorinvdis>().lambda()
.eq(StIvtIostorinvdis::getIostorinv_id, mst.getIostorinv_id())
).stream().map(row -> JSONObject.parseObject(JSON.toJSONString(row), LinkedHashMap.class))
new QueryWrapper<StIvtIostorinvdis>().lambda()
.eq(StIvtIostorinvdis::getIostorinv_id, mst.getIostorinv_id())
).stream().map(row -> JSONObject.parseObject(JSON.toJSONString(row), LinkedHashMap.class))
.collect(Collectors.toList());
jsonSend.put("dtl_row", JSONObject.parseObject(JSON.toJSONString(dtlDao)));
jsonSend.put("tableMater", disList);
@@ -591,8 +591,8 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
List<MdPbStoragevehicleext> mdPbStoragevehicleexts = mdPbStoragevehicleextMapper.selectList(new QueryWrapper<MdPbStoragevehicleext>()
.eq("pcsn", jsonDis.get("storagevehicle_code"))
.orderByDesc("UPDATE_TIME"));
if (CollUtil.isEmpty(mdPbStoragevehicleexts)){
throw new BadRequestException("此木箱没有绑定托盘号!"+whereJson.get("vehicle_code"));
if (CollUtil.isEmpty(mdPbStoragevehicleexts)) {
throw new BadRequestException("此木箱没有绑定托盘号!" + whereJson.get("vehicle_code"));
}
MdPbStoragevehicleext mdPbStoragevehicleext = mdPbStoragevehicleexts.get(0);
// 创建任务
@@ -737,9 +737,12 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
throw new BadRequestException("出入库明细不能为空!");
}
JSONObject jsonSub = WQLObject.getWQLObject("pdm_bi_subpackagerelation")
.query("package_box_sn = '" + rows.get(0).getString("package_box_sn") + "'")
.uniqueResult(0);
// JSONObject jsonSub = WQLObject.getWQLObject("pdm_bi_subpackagerelation")
// .query("package_box_sn = '" + rows.get(0).getString("package_box_sn") + "'")
// .uniqueResult(0);
PdmBiSubpackagerelation packageBoxSn = pdmBiSubpackagerelationMapper.selectOne(new LambdaQueryWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getPackage_box_sn, rows.get(0).getString("package_box_sn")));
// 仓库信息
StorattrDto storattrDto = storattrService.findById((String) whereJson.get("stor_id"));
@@ -749,12 +752,12 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
String currentNickName = SecurityUtils.getCurrentNickName();
if (currentUserId.equals(IOSEnum.EXT_ACS.code("acs"))) {
// 如果是外部系统创建人全部写系统参数: 如果包装关系上有创建人就用包装关系上的,如果没有就用默认的
if (ObjectUtil.isEmpty(jsonSub) || ObjectUtil.isEmpty(jsonSub.getString("create_id"))) {
if (ObjectUtil.isEmpty(packageBoxSn) || ObjectUtil.isEmpty(packageBoxSn.getCreate_id())) {
currentUserId = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IOS_CONFIRM_USER").getValue();
currentNickName = IOSEnum.EXT_ACS.code("kc");
} else {
currentUserId = jsonSub.getString("create_id");
currentNickName = jsonSub.getString("create_name");
currentUserId = String.valueOf(packageBoxSn.getCreate_id());
currentNickName = packageBoxSn.getCreate_name();
}
}
@@ -772,7 +775,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
.detail_count(BigDecimal.valueOf(((ArrayList<HashMap>) whereJson.get("tableData")).size()))
.remark(whereJson.get("remark").toString())
.bill_status(whereJson.get("bill_status").toString())
.total_qty(BigDecimal.valueOf(Double.parseDouble(whereJson.get("total_qty").toString())))
.total_qty(whereJson.get("total_qty") == null ? null : BigDecimal.valueOf(Double.parseDouble(whereJson.get("total_qty").toString())))
.create_mode(IOSEnum.CREATE_MODE.code("PC产生"))
.input_optid(currentUserId)
.input_optname(currentNickName)
@@ -1072,7 +1075,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
mstDao.setUpload_time(DateUtil.now());
this.updateById(mstDao);
} catch (Exception e) {
log.info("回传mes失败:"+e.getMessage());
log.info("回传mes失败:" + e.getMessage());
this.updateById(mstDao);
}
}

View File

@@ -125,7 +125,7 @@ public class StIvtIostorinvdtlServiceImpl extends ServiceImpl<StIvtIostorinvdtlM
.bill_status(IOSEnum.BILL_STATUS.code("生成"))
.qty_unit_id(unitDao.getString("measure_unit_id"))
.qty_unit_name(unitDao.getString("unit_name"))
.plan_qty(row.getBigDecimal("plan_qty"))
.plan_qty(row.getBigDecimal("net_weight"))
.source_bill_type(row.getString("source_bill_type"))
.source_bill_code(row.getString("source_bill_code"))
.source_bill_table(row.getString("source_bill_table"))
@@ -134,7 +134,7 @@ public class StIvtIostorinvdtlServiceImpl extends ServiceImpl<StIvtIostorinvdtlM
.base_bill_table(row.getString("base_bill_table"))
.remark(row.getString("remark"))
.assign_qty(BigDecimal.valueOf(0))
.unassign_qty(row.getBigDecimal("plan_qty"))
.unassign_qty(row.getBigDecimal("net_weight"))
.box_no(row.getString("package_box_sn"))
.vbeln(row.getString("vbeln"))
.posnr(row.getString("posnr"))
@@ -165,7 +165,6 @@ public class StIvtIostorinvdtlServiceImpl extends ServiceImpl<StIvtIostorinvdtlM
map.put(dtlDao.getIostorinvdtl_id().toString(),disDaoList);
}
this.saveBatch(dtlDaoList);
return map;

View File

@@ -933,7 +933,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
* 查询所属排的所有木箱
*/
String row_in = rowList.stream()
.map(row -> row.getRow_num())
.map(row ->String.valueOf( row.getRow_num()))
.collect(Collectors.joining("','"));
jsonParam.put("row_in", "('" + row_in + "')");
@@ -954,7 +954,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
StructattrQuerry jsonRow = rowList.get(i);
List<StIvtStructattr> box_num = boxAllList.stream()
.filter(row -> row.getRow_num().equals(jsonRow.getRow_num()))
.filter(row ->String.valueOf( row.getRow_num()).equals(jsonRow.getRow_num()))
.collect(Collectors.toList());
jsonRow.setBox_num(String.valueOf(box_num.size()));
@@ -1051,10 +1051,10 @@ public class InBoxManageServiceImpl implements InBoxManageService {
// 获取此货位对应的浅货位
List<StIvtStructattr> lowAttr = structAllList.stream()
.filter(row -> row.getCol_num().equals(json.getCol_num()) &&
row.getLayer_num().equals(json.getLayer_num()) &&
row.getRow_num().equals(json.getRow_num()) &&
row.getZdepth().equals(IOSEnum.ZDEPTH_STRUCT.code("")))
.filter(row ->String.valueOf(row.getCol_num()).equals(json.getCol_num()) &&
String.valueOf(row.getLayer_num()).equals(json.getLayer_num()) &&
String.valueOf( row.getRow_num()).equals(json.getRow_num()) &&
String.valueOf(row.getZdepth()).equals(IOSEnum.ZDEPTH_STRUCT.code("")))
.collect(Collectors.toList());
if (ObjectUtil.isEmpty(lowAttr) || lowAttr.size() != 1) {
@@ -1080,10 +1080,10 @@ public class InBoxManageServiceImpl implements InBoxManageService {
*/
// 获取此货位对应的深货位
List<StIvtStructattr> darkAttr = structAllList.stream()
.filter(row -> row.getCol_num().equals(json.getCol_num()) &&
row.getLayer_num().equals(json.getLayer_num()) &&
row.getRow_num().equals(json.getRow_num()) &&
row.getZdepth().equals(IOSEnum.ZDEPTH_STRUCT.code("")))
.filter(row ->String.valueOf(row.getCol_num()).equals(json.getCol_num()) &&
String.valueOf(row.getLayer_num()).equals(json.getLayer_num()) &&
String.valueOf( row.getRow_num()).equals(json.getRow_num()) &&
String.valueOf(row.getZdepth()).equals(IOSEnum.ZDEPTH_STRUCT.code("")))
.collect(Collectors.toList());
if (ObjectUtil.isEmpty(darkAttr) || darkAttr.size() != 1) {

View File

@@ -333,7 +333,7 @@ public class InVehicleManageServiceImpl implements InVehicleManageService {
for (int i = 0; i < vehicleStructRow.size(); i++) {
String vehicleStr = vehicleStructRow.get(i);
List<StIvtStructattr> stIvtStructattrList = boxAllList.stream()
.filter(row -> row.getRow_num().equals(vehicleStr))
.filter(row ->String.valueOf( row.getRow_num()).equals(vehicleStr))
.collect(Collectors.toList());
StructattrQuerry structattrQuerry = new StructattrQuerry();
structattrQuerry.setBox_num(String.valueOf(stIvtStructattrList.size()));
@@ -426,9 +426,9 @@ public class InVehicleManageServiceImpl implements InVehicleManageService {
// 获取此货位对应的浅货位
List<StIvtStructattr> lowAttr = allVehicleStruct.stream()
.filter(row -> row.getCol_num().equals(stIvtStructattr.getCol_num()) &&
row.getLayer_num().equals(stIvtStructattr.getLayer_num()) &&
row.getZdepth().equals(IOSEnum.ZDEPTH_STRUCT.code("")))
.filter(row ->String.valueOf(row.getCol_num()).equals(stIvtStructattr.getCol_num()) &&
String.valueOf(row.getLayer_num()).equals(stIvtStructattr.getLayer_num()) &&
String.valueOf(row.getZdepth()).equals(IOSEnum.ZDEPTH_STRUCT.code("")))
.collect(Collectors.toList());
if (CollUtil.isEmpty(lowAttr) || lowAttr.size() != 1) {
@@ -454,9 +454,9 @@ public class InVehicleManageServiceImpl implements InVehicleManageService {
*/
// 获取此货位对应的深货位
List<StIvtStructattr> darkAttr = allVehicleStruct.stream()
.filter(row -> row.getCol_num().equals(stIvtStructattr.getCol_num()) &&
row.getLayer_num().equals(stIvtStructattr.getLayer_num()) &&
row.getZdepth().equals(IOSEnum.ZDEPTH_STRUCT.code("")))
.filter(row ->String.valueOf(row.getCol_num()).equals(stIvtStructattr.getCol_num()) &&
String.valueOf(row.getLayer_num()).equals(stIvtStructattr.getLayer_num()) &&
String.valueOf(row.getZdepth()).equals(IOSEnum.ZDEPTH_STRUCT.code("")))
.collect(Collectors.toList());
if (ObjectUtil.isEmpty(darkAttr) || darkAttr.size() != 1) {

View File

@@ -294,9 +294,9 @@ public class LashManageServiceImpl implements LashManageService {
String bill_type = whereJson.getString("bill_type");
//换标出库或转单出库的rgv任务目的点需要特殊处理
if (bill_type.equals(IOSEnum.OUT_TYPE.code("转单出库")) || bill_type.equals(IOSEnum.OUT_TYPE.code("换标出库"))) {
next_device_code = IOSEnum.CHANGE_OUT.code("换标出库口");
} else {
// if (bill_type.equals(IOSEnum.OUT_TYPE.code("转单出库")) || bill_type.equals(IOSEnum.OUT_TYPE.code("换标出库"))) {
// next_device_code = IOSEnum.CHANGE_OUT.code("换标出库口");
// } else {
// 判断是否是启用状态
// List<JSONObject> jsonList = pointTab.query("region_code = 'BLKCK' AND is_used = '1'")
// .getResultJSONArray(0).toJavaList(JSONObject.class);
@@ -319,7 +319,7 @@ public class LashManageServiceImpl implements LashManageService {
next_device_code = schBasePoints.get(0).getPoint_code();
}
}
// }
// 查询木箱对应的载具
// JSONObject jsonVeExt = extTab.query("pcsn = '" + whereJson.getString("vehicle_code") + "'")

View File

@@ -509,7 +509,7 @@ public class OutBoxManageServiceImpl implements OutBoxManageService {
// 查询某一巷道所有相同规格木箱排的仓位
String row_num_in = allRowList.stream()
.map(row -> row.getRow_num())
.map(row ->String.valueOf( row.getRow_num()))
.collect(Collectors.joining("','"));
whereJson.put("flag", "2");
@@ -526,7 +526,7 @@ public class OutBoxManageServiceImpl implements OutBoxManageService {
StructattrQuerry jsonRow = allRowList.get(i);
List<StIvtStructattr> blockAttrNum = likeAttrList.stream()
.filter(row -> row.getRow_num().equals(jsonRow.getRow_num()))
.filter(row ->String.valueOf( row.getRow_num()).equals(jsonRow.getRow_num()))
.collect(Collectors.toList());
jsonRow.setBlock_num(jsonRow.getBlock_num());
@@ -621,9 +621,9 @@ public class OutBoxManageServiceImpl implements OutBoxManageService {
*/
// 获取此货位对应的浅货位
List<StIvtStructattr> lowAttr = structAllList.stream()
.filter(row -> row.getCol_num().equals(json.getCol_num()) &&
row.getLayer_num().equals(json.getLayer_num()) &&
row.getZdepth().equals(IOSEnum.ZDEPTH_STRUCT.code("")))
.filter(row ->String.valueOf(row.getCol_num()).equals(json.getCol_num()) &&
String.valueOf(row.getLayer_num()).equals(json.getLayer_num()) &&
String.valueOf(row.getZdepth()).equals(IOSEnum.ZDEPTH_STRUCT.code("")))
.collect(Collectors.toList());
if (ObjectUtil.isEmpty(lowAttr) || lowAttr.size() != 1) {

View File

@@ -38,6 +38,7 @@ import org.nl.common.utils.IdUtil;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.system.service.param.ISysParamService;
import org.nl.wms.pda.mps.eum.RegionTypeEnum;
import org.nl.wms.st.inbill.service.StorPublicService;
@@ -543,140 +544,32 @@ public class OutBussManageServiceImpl implements OutBussManageService {
}
@Override
public void createMove2(List<JSONObject> list, Consumer<String> allTransactionConsumer) {
public void createMove2(List<JSONObject> list) {
// 获取子卷包装集合
List<String> boxs = list.stream()
.map(row -> row.getString("storagevehicle_code"))
.collect(Collectors.toList());
List<JSONObject> subList = subpackagerelationService.getSubInfoByBoxNosToObject(boxs);
// 查询物料集合
List<String> materialCodes = subList.stream()
.map(row -> row.getString("product_name"))
.collect(Collectors.toList());
List<JSONObject> materList = materialbaseService.getMaterialAllByCodes(materialCodes);
OutBussManageService myService = SpringContextHolder.getBean(OutBussManageService.class);
for (int i = 0; i < list.size(); i++) {
JSONObject json = list.get(i);
allTransactionConsumer.accept(json.getString("struct_code"));
// 生成移库单传入参数
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 = mdPbStoragevehicleextService.getOneByPcsnToObject(json.getString("storagevehicle_code"));
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);
myService.createForMove(json,subList,materList);
}
}
@Override
@Transactional
public JSONObject taskExceptional(JSONObject jsonObject) {
@@ -705,6 +598,130 @@ public class OutBussManageServiceImpl implements OutBussManageService {
return result;
}
/**
* 移库事务处理
* @param json 移库仓位个体
* @param subList 子卷包装关系集合
* @param materList 物料集合
*/
@Transactional
public void createForMove(JSONObject json, List<JSONObject> subList, List<JSONObject> materList) {
// 生成移库单传入参数
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 = mdPbStoragevehicleextService.getOneByPcsnToObject(json.getString("storagevehicle_code"));
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 jsonObject {task_code : 任务编码}

View File

@@ -428,7 +428,7 @@ public class OutVehicleManageServiceImpl implements OutVehicleManageService {
String structRow = outVehicleStructRow.get(i);
List<StIvtStructattr> stIvtStructattrs = boxAllList.stream()
.filter(row -> row.getRow_num().equals(structRow))
.filter(row ->String.valueOf( row.getRow_num()).equals(structRow))
.collect(Collectors.toList());
StructattrQuerry structattrQuerry = new StructattrQuerry();
structattrQuerry.setRow_num(structRow);
@@ -486,9 +486,9 @@ public class OutVehicleManageServiceImpl implements OutVehicleManageService {
*/
// 获取此货位对应的浅货位
List<StIvtStructattr> lowAttr = allVehicleStruct.stream()
.filter(row -> row.getCol_num().equals(stIvtStructattr.getCol_num()) &&
row.getLayer_num().equals(stIvtStructattr.getLayer_num()) &&
row.getZdepth().equals(IOSEnum.ZDEPTH_STRUCT.code("")))
.filter(row ->String.valueOf(row.getCol_num()).equals(stIvtStructattr.getCol_num()) &&
String.valueOf(row.getLayer_num()).equals(stIvtStructattr.getLayer_num()) &&
String.valueOf(row.getZdepth()).equals(IOSEnum.ZDEPTH_STRUCT.code("")))
.collect(Collectors.toList());
if (ObjectUtil.isEmpty(lowAttr) || lowAttr.size() != 1) {

View File

@@ -99,7 +99,7 @@ public class SendOutManageServiceImpl implements SendOutManageService {
// 过滤此排的空位
List<SchBasePoint> rowPointList = pointDaoList.stream()
.filter(row -> row.getRow_num().toString().equals(json.getString("row_num")) &&
.filter(row ->String.valueOf( row.getRow_num()).toString().equals(json.getString("row_num")) &&
ObjectUtil.isEmpty(row.getVehicle_code()) &&
row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))
)
@@ -122,7 +122,7 @@ public class SendOutManageServiceImpl implements SendOutManageService {
// 找出这一排的所有空位
List<SchBasePoint> rowPointList = pointDaoList.stream()
.filter(row -> row.getRow_num().toString().equals(json.getString("row_num")) &&
.filter(row ->String.valueOf( row.getRow_num()).toString().equals(json.getString("row_num")) &&
ObjectUtil.isEmpty(row.getVehicle_code()) &&
row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))
)
@@ -176,7 +176,7 @@ public class SendOutManageServiceImpl implements SendOutManageService {
// 找出这一排的所有空位
List<SchBasePoint> rowPointList = pointDaoList.stream()
.filter(row -> row.getRow_num().toString().equals(json.getString("row_num")) &&
.filter(row ->String.valueOf( row.getRow_num()).toString().equals(json.getString("row_num")) &&
ObjectUtil.isEmpty(row.getVehicle_code()) &&
row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))
)
@@ -259,7 +259,7 @@ public class SendOutManageServiceImpl implements SendOutManageService {
// 过滤此排的空位
List<SchBasePoint> rowPointList = pointDaoList.stream()
.filter(row -> row.getRow_num().toString().equals(json.getString("row_num")) &&
.filter(row ->String.valueOf( row.getRow_num()).toString().equals(json.getString("row_num")) &&
ObjectUtil.isEmpty(row.getVehicle_code()) &&
row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))
)
@@ -282,7 +282,7 @@ public class SendOutManageServiceImpl implements SendOutManageService {
// 找出这一排的所有空位
List<SchBasePoint> rowPointList = pointDaoList.stream()
.filter(row -> row.getRow_num().toString().equals(json.getString("row_num")) &&
.filter(row ->String.valueOf( row.getRow_num()).toString().equals(json.getString("row_num")) &&
ObjectUtil.isEmpty(row.getVehicle_code()) &&
row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))
)
@@ -340,7 +340,7 @@ public class SendOutManageServiceImpl implements SendOutManageService {
// 找出这一排的所有空位
List<SchBasePoint> rowPointList = pointDaoList.stream()
.filter(row -> row.getRow_num().toString().equals(json.getString("row_num")) &&
.filter(row ->String.valueOf( row.getRow_num()).toString().equals(json.getString("row_num")) &&
ObjectUtil.isEmpty(row.getVehicle_code()) &&
row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))
)
@@ -419,7 +419,7 @@ public class SendOutManageServiceImpl implements SendOutManageService {
// 找出这一排所有空位
List<SchBasePoint> rowPointList = pointDaoList.stream()
.filter(row -> row.getRow_num().toString().equals(pointDao.getRow_num().toString()) &&
.filter(row ->String.valueOf( row.getRow_num()).toString().equals(pointDao.getRow_num().toString()) &&
ObjectUtil.isEmpty(row.getVehicle_code())
)
.sorted(Comparator.comparing(SchBasePoint::getIn_order_seq))

View File

@@ -255,20 +255,20 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
for (int i = 0; i < stIvtStructattrs.size(); i++) {
StIvtStructattr stIvtStructattr = stIvtStructattrs.get(i);
// 判断伸位
if (stIvtStructattr.getZdepth().equals(IOSEnum.ZDEPTH_STRUCT.code(""))) {
if (String.valueOf(stIvtStructattr.getZdepth()).equals(IOSEnum.ZDEPTH_STRUCT.code(""))) {
// 无需深度
stIvtStructattrReturn = stIvtStructattr;
break;
} else if (stIvtStructattr.getZdepth().equals(IOSEnum.ZDEPTH_STRUCT.code(""))) {
} else if (String.valueOf(stIvtStructattr.getZdepth()).equals(IOSEnum.ZDEPTH_STRUCT.code(""))) {
/*
* 深货位:判断浅是否阻挡
*/
// 获取此货位对应的浅货位
List<StIvtStructattr> lowAttr = allStruct.stream()
.filter(row -> row.getCol_num().equals(String.valueOf(stIvtStructattr.getCol_num())) &&
row.getLayer_num().equals(String.valueOf(stIvtStructattr.getLayer_num())) &&
row.getRow_num().equals(String.valueOf(stIvtStructattr.getRow_num())) &&
row.getZdepth().equals(IOSEnum.ZDEPTH_STRUCT.code(""))).collect(Collectors.toList());
.filter(row ->String.valueOf(row.getCol_num()).equals(String.valueOf(stIvtStructattr.getCol_num())) &&
String.valueOf(row.getLayer_num()).equals(String.valueOf(stIvtStructattr.getLayer_num())) &&
String.valueOf( row.getRow_num()).equals(String.valueOf(stIvtStructattr.getRow_num())) &&
String.valueOf(row.getZdepth()).equals(IOSEnum.ZDEPTH_STRUCT.code(""))).collect(Collectors.toList());
if (ObjectUtil.isEmpty(lowAttr) || lowAttr.size() != 1) {
notInBlockList.clear();
@@ -284,16 +284,16 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
} else {
continue;
}
} else if (stIvtStructattr.getZdepth().equals(IOSEnum.ZDEPTH_STRUCT.code(""))) {
} else if (String.valueOf(stIvtStructattr.getZdepth()).equals(IOSEnum.ZDEPTH_STRUCT.code(""))) {
/*
* 浅货位:判断深货位是否空洞
*/
// 获取此货位对应的深货位
List<StIvtStructattr> darkAttr = allStruct.stream()
.filter(row -> row.getCol_num().equals(String.valueOf(stIvtStructattr.getCol_num())) &&
row.getLayer_num().equals(String.valueOf(stIvtStructattr.getLayer_num())) &&
row.getRow_num().equals(String.valueOf(stIvtStructattr.getRow_num())) &&
row.getZdepth().equals(IOSEnum.ZDEPTH_STRUCT.code(""))).collect(Collectors.toList());
.filter(row ->String.valueOf(row.getCol_num()).equals(String.valueOf(stIvtStructattr.getCol_num())) &&
String.valueOf(row.getLayer_num()).equals(String.valueOf(stIvtStructattr.getLayer_num())) &&
String.valueOf( row.getRow_num()).equals(String.valueOf(stIvtStructattr.getRow_num())) &&
String.valueOf(row.getZdepth()).equals(IOSEnum.ZDEPTH_STRUCT.code(""))).collect(Collectors.toList());
if (ObjectUtil.isEmpty(darkAttr) || darkAttr.size() != 1) {
notInBlockList.clear();
@@ -367,10 +367,10 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
// 找对应的浅货位
StIvtStructattr darkJson = stIvtStructattrs.stream()
.filter(row -> row.getCol_num().equals(json.getCol_num()) &&
row.getLayer_num().equals(json.getLayer_num()) &&
row.getRow_num().equals(json.getRow_num()) &&
row.getZdepth().equals(IOSEnum.ZDEPTH_STRUCT.code("")))
.filter(row ->String.valueOf(row.getCol_num()).equals(json.getCol_num()) &&
String.valueOf(row.getLayer_num()).equals(json.getLayer_num()) &&
String.valueOf( row.getRow_num()).equals(json.getRow_num()) &&
String.valueOf(row.getZdepth()).equals(IOSEnum.ZDEPTH_STRUCT.code("")))
.findFirst().orElse(null);
if (ObjectUtil.isEmpty(darkJson)) {

View File

@@ -51,7 +51,7 @@ public interface OutBussManageService {
* @return List<StIvtIostorinvdis>: 分配明细集合
*/
List<StIvtIostorinvdis> manualDivIvt(StIvtIostorinvdtl dtlDao, List<JSONObject> ivtList);
/**
* 更新库存
@@ -71,7 +71,7 @@ public interface OutBussManageService {
* 创建移库单
* @param list 需要创建移库单的仓位
*/
void createMove2(List<JSONObject> list, Consumer<String> allTransactionConsumer);
void createMove2(List<JSONObject> list);
/**
* 任务异常处理(1.满入 2.浅货位有货-放货时)
@@ -81,4 +81,6 @@ public interface OutBussManageService {
* @return point_code: 货位编码
*/
JSONObject taskExceptional(JSONObject whereJson);
void createForMove(JSONObject json, List<JSONObject> subList, List<JSONObject> materList);
}

View File

@@ -56,15 +56,15 @@
</foreach>
</if>
<if test="param.row_in != null ">
AND attr.row_num in
<foreach collection="param.row_in" open="(" close=")" separator="," index="row_num">
#{row_num}
</foreach>
</if>
<!-- <if test="param.row_in != null ">-->
<!-- AND attr.row_num in-->
<!-- <foreach collection="param.row_in" open="(" close=")" separator="," index="row_num">-->
<!-- #{row_num}-->
<!-- </foreach>-->
<!-- </if>-->
<if test="param.block_num != '' || param.block_num != null ">
AND attr.block_num == #{param.block_num}
AND attr.block_num = #{param.block_num}
</if>
<if test="param.row_num != '' || param.row_num != null ">
AND attr.row_num != #{param.row_num}
@@ -90,29 +90,29 @@
AND box.is_packing = '1'
<if test="param.material_id != '' || param.material_id != null ">
AND mater.material_id == #{param.material_id}
AND mater.material_id = #{param.material_id}
</if>
<if test="param.customer_name != '' || param.customer_name != null ">
AND sub.customer_name == #{param.customer_name}
AND sub.customer_name = #{param.customer_name}
</if>
<if test="param.customer_name != '' || param.customer_name != null ">
AND sub.customer_name == #{param.customer_name}
AND sub.customer_name = #{param.customer_name}
</if>
<if test="param.sale_order_name != '' || param.sale_order_name != null ">
AND sub.sale_order_name == #{param.sale_order_name}
AND sub.sale_order_name = #{param.sale_order_name}
</if>
<if test="param.box_length != '' || param.box_length != null ">
AND sub.box_length == #{param.box_length}
AND sub.box_length = #{param.box_length}
</if>
<if test="param.box_width != '' || param.box_width != null ">
AND sub.box_width == #{param.box_width}
AND sub.box_width = #{param.box_width}
</if>
<if test="param.box_high != '' || param.box_high != null ">
AND sub.box_high == #{param.box_high}
AND sub.box_high = #{param.box_high}
</if>
@@ -156,23 +156,23 @@
</foreach>
<if test="param.block_num != '' || param.block_num != null ">
AND attr.block_num == #{param.block_num}
AND attr.block_num = #{param.block_num}
</if>
<if test="param.product_name != '' || param.product_name != null ">
AND sub.product_name == #{param.product_name}
AND sub.product_name = #{param.product_name}
</if>
<if test="param.sale_order_name != '' || param.sale_order_name != null ">
AND sub.sale_order_name == #{param.sale_order_name}
AND sub.sale_order_name = #{param.sale_order_name}
</if>
<if test="param.box_length != '' || param.box_length != null ">
AND sub.box_length == #{param.box_length}
AND sub.box_length = #{param.box_length}
</if>
<if test="param.box_width != '' || param.box_width != null ">
AND sub.box_width == #{param.box_width}
AND sub.box_width = #{param.box_width}
</if>
<if test="param.box_high != '' || param.box_high != null ">
AND sub.box_high == #{param.box_high}
AND sub.box_high = #{param.box_high}
</if>
order by attr.col_num,attr.layer_num ASC
@@ -189,7 +189,7 @@
AND attr.sect_id = #{param.sect_id}
<if test="param.block_num != '' || param.block_num != null ">
AND attr.block_num == #{param.block_num}
AND attr.block_num = #{param.block_num}
</if>
</select>
@@ -212,7 +212,7 @@
#{height}
</foreach>
<if test="param.block_num != '' || param.block_num != null ">
AND attr.block_num == #{param.block_num}
AND attr.block_num = #{param.block_num}
</if>
@@ -247,7 +247,7 @@
#{height}
</foreach>
<if test="param.block_num != '' || param.block_num != null ">
AND attr.block_num == #{param.block_num}
AND attr.block_num = #{param.block_num}
</if>
</select>
@@ -875,7 +875,7 @@
AND box.material_code = #{param.material_code}
</if>
<if test="param.num != null and param.num != ''">
AND box.num = #{输入.num}
AND box.num = #{param.num}
</if>
</select>
<select id="getStructsByBlockNum" resultType="org.nl.b_lms.storage_manage.st.dao.StIvtStructattr">

View File

@@ -1283,7 +1283,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
} else {
String pcsn = mdPdStoragevehicleext.getPcsn();
if (StringUtils.isNotEmpty(pcsn)) {
List<StIvtStructattr> storagevehicleCode = stIvtStructattrMapper.selectList(new QueryWrapper<StIvtStructattr>().eq("storagevehicle_code", pcsn));
if (storagevehicleCode != null && storagevehicleCode.size() > 0) {
errorMsg.add("载具" + whereJson.getString("vehicle_code") + "已绑定" + pcsn);

View File

@@ -115,7 +115,7 @@ public class CheckOutBillController {
@PostMapping("/allSetPoint")
@Log("一键设置")
public ResponseEntity<Object> allSetPoint(@RequestBody JSONObject whereJson) {
iStIvtIostorinvOutService.allSetPoint(whereJson);
iStIvtIostorinvOutService.allSetPoint2(whereJson);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@PostMapping("/confirm")
@@ -172,4 +172,25 @@ public class CheckOutBillController {
checkOutBillService.issueTask(whereJson);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@Log("删除出库单")
//@PreAuthorize("@el.check('checkoutbill:del')")
@DeleteMapping
public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
iStIvtIostorinvOutService.deleteAll(ids);
// checkOutBillService.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
@PutMapping
@Log("修改出库单")
public ResponseEntity<Object> update(@RequestBody JSONObject whereJson) {
iStIvtIostorinvOutService.update(whereJson);
// checkOutBillService.update(whereJson);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
}