rev:1.出库六个位置在一个出库单上一起出库的时候 报错:‘仓位不足’
2.出库捆扎的时候要进行判断此规格是否只有一个箱子,如果是直接调用acs接口放行 3.捆扎的时候捆扎位如果有一个相同规格的箱子 要优先放在这个位置上 4.生成转库任务时 需要提前确定巷道的位置
This commit is contained in:
@@ -141,6 +141,21 @@ public class TwoLashTask extends AbstractAcsTask {
|
||||
// 完成
|
||||
if (status.equals(TaskStatusEnum.FINISHED.getCode())) {
|
||||
|
||||
// 判断当前任务组的所有任务是否都为完成:如果都为完成则 调用acs接口允许此木箱离开
|
||||
JSONObject groupTask = WQLObject.getWQLObject("sch_base_task").query("task_group_id = '" + taskObj.getString("task_group_id") + "' and is_delete = '0' and task_status <> 07 and task_id <> '"+taskObj.getString("task_id")+"'")
|
||||
.uniqueResult(0);
|
||||
|
||||
if (ObjectUtil.isEmpty(groupTask)) {
|
||||
// 更新点位载具、数量
|
||||
JSONObject pointDao = pointTab.query("point_code = '" + taskObj.getString("point_code2") + "'").uniqueResult(0);
|
||||
pointDao.put("vehicle_code", "");
|
||||
pointDao.put("vehicle_qty",0);
|
||||
WQLObject.getWQLObject("sch_base_point").update(pointDao);
|
||||
|
||||
// TODO 调用acs接口告诉此木箱可以离开
|
||||
|
||||
}
|
||||
|
||||
map.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
}
|
||||
|
||||
@@ -219,6 +234,7 @@ public class TwoLashTask extends AbstractAcsTask {
|
||||
json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||
json.put("point_code1", form.getString("start_device_code"));
|
||||
json.put("point_code2", form.getString("next_device_code"));
|
||||
json.put("task_group_id", form.getString("task_group_id"));
|
||||
json.put("is_auto_issue", form.getString("is_auto_issue"));
|
||||
json.put("handle_class", this.getClass().getName());
|
||||
json.put("create_id", SecurityUtils.getCurrentUserId());
|
||||
|
||||
@@ -110,6 +110,7 @@ public class TwoOutHeapTask extends AbstractAcsTask {
|
||||
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"));
|
||||
|
||||
LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class);
|
||||
bean1.createLashTask(jsonParam);
|
||||
|
||||
@@ -163,13 +163,14 @@ public class TwoOutTask extends AbstractAcsTask {
|
||||
bean.finishTask(jsonTask);
|
||||
|
||||
// 判断此任务组是否全部完成
|
||||
JSONArray resultJSONArray = taskTab.query("task_group_id = '" + jsonTask.getString("task_group_id") + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'")
|
||||
JSONArray resultJSONArray = taskTab.query("task_group_id = '" + jsonTask.getString("task_group_id") + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "' and handle_class = '"+THIS_CLASS+"'")
|
||||
.getResultJSONArray(0);
|
||||
|
||||
// 下发堆垛机至行架任务(2个行架位)
|
||||
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("vehicle_type",jsonTask.getJSONObject("request_param").getString("containerType"));
|
||||
|
||||
LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class);
|
||||
|
||||
@@ -33,6 +33,7 @@ import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.system.service.param.ISysParamService;
|
||||
import org.nl.wms.basedata.st.service.StorattrService;
|
||||
import org.nl.wms.basedata.st.service.dto.StorattrDto;
|
||||
import org.nl.wms.pda.mps.eum.RegionTypeEnum;
|
||||
@@ -102,6 +103,9 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
@Autowired
|
||||
private IBstIvtBoxinfoService iBstIvtBoxinfoService;
|
||||
|
||||
@Autowired
|
||||
private ISysParamService iSysParamService;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public String insertMst(JSONObject whereJson) {
|
||||
@@ -1132,26 +1136,16 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(disDaoList)) {
|
||||
// 相同
|
||||
JSONObject jsonSub1 = subTab.query("package_box_sn = '" + jsonAttr.getString("storagevehicle_code") + "'").uniqueResult(0);
|
||||
JSONObject jsonSub2 = subTab.query("package_box_sn = '" + jsonLow.getString("storagevehicle_code") + "'").uniqueResult(0);
|
||||
|
||||
if (jsonSub1.getString("sale_order_name").equals(jsonSub2.getString("sale_order_name")) &&
|
||||
jsonSub1.getString("box_length").equals(jsonSub2.getString("box_length")) &&
|
||||
jsonSub1.getString("box_width").equals(jsonSub2.getString("box_width")) &&
|
||||
jsonSub1.getString("box_high").equals(jsonSub2.getString("box_high")) &&
|
||||
jsonSub1.getString("product_name").equals(jsonSub2.getString("product_name"))) {
|
||||
// 不为空说明是此单据下的木箱
|
||||
flag = false;
|
||||
} else {
|
||||
// 为空:判断此木箱是否有任务
|
||||
JSONObject jsonTask = taskService.query("vehicle_code = '" + jsonLow.getString("storagevehicle_code") + "' and task_status <> '07' and is_delete = '0'").uniqueResult(0);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(jsonTask)) {
|
||||
flag = false;
|
||||
} else {
|
||||
// 不相同:判断是否有此木箱的任务
|
||||
JSONObject jsonTask = taskService.query("table_fk = '" + iostorinv_id + "' and vehicle_code = '" + jsonLow.getString("storagevehicle_code") + "' and is_delete = '0'").uniqueResult(0);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(jsonTask)) {
|
||||
flag = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (flag) {
|
||||
@@ -1160,7 +1154,36 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
moveParam.put("stor_id", IOSEnum.STOR_ID.code("二期"));
|
||||
moveParam.put("sect_id", RegionTypeEnum.TWO_BZC01.getId());
|
||||
moveParam.put("box_no", jsonLow.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, jsonLow.getString("storagevehicle_code"))
|
||||
);
|
||||
|
||||
String box_high = boxDao.getBox_high();
|
||||
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
|
||||
height = "1";
|
||||
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
|
||||
height = "2";
|
||||
} else {
|
||||
height = "3";
|
||||
}
|
||||
moveParam.put("height", height);
|
||||
moveParam.put("vehicle_type", boxDao.getVehicle_type());
|
||||
moveParam.put("move_block_num", jsonLow.getString("block_num"));
|
||||
|
||||
// 查询物料id
|
||||
StIvtIostorinvdis disDao = iStIvtIostorinvdisService.list(
|
||||
new QueryWrapper<StIvtIostorinvdis>().lambda()
|
||||
.ne(StIvtIostorinvdis::getWork_status,IOSEnum.BILL_STATUS.code("完成"))
|
||||
.eq(StIvtIostorinvdis::getBox_no, jsonLow.getString("storagevehicle_code"))
|
||||
).get(0);
|
||||
|
||||
moveParam.put("material_id", disDao.getMaterial_id());
|
||||
JSONObject jsonMove = inBussManageService.getOneStruct(moveParam);
|
||||
|
||||
// 生成任务
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONAware;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
@@ -119,12 +120,27 @@ public class InBussManageServiceImpl implements InBussManageService {
|
||||
* 判断是否有仓位
|
||||
* 判断条件:库区、仓库、是否启用、是否删除、未锁定、没有载具
|
||||
*/
|
||||
JSONArray attrArry = attrTab.query("IFNULL(storagevehicle_code,'') = '' " +
|
||||
"AND is_used = '" + IOSEnum.IS_NOTANDYES.code("是") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("否") + "' " +
|
||||
"AND lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '" + jsonObject.getString("stor_id") + "' " +
|
||||
"AND storagevehicle_type = '" + jsonObject.getString("vehicle_type") + "'" +
|
||||
"AND height = '" + jsonObject.getString("height") + "'" +
|
||||
"AND sect_id = '" + jsonObject.getString("sect_id") + "'").getResultJSONArray(0);
|
||||
// 是否是移库: 提前确定的巷道
|
||||
String block_num = jsonObject.getString("move_block_num");
|
||||
|
||||
JSONArray attrArry = new JSONArray();
|
||||
if (ObjectUtil.isEmpty(block_num)) {
|
||||
attrArry = attrTab.query("IFNULL(storagevehicle_code,'') = '' " +
|
||||
"AND is_used = '" + IOSEnum.IS_NOTANDYES.code("是") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("否") + "' " +
|
||||
"AND lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '" + jsonObject.getString("stor_id") + "' " +
|
||||
"AND storagevehicle_type = '" + jsonObject.getString("vehicle_type") + "'" +
|
||||
"AND height = '" + jsonObject.getString("height") + "'" +
|
||||
"AND sect_id = '" + jsonObject.getString("sect_id") + "'").getResultJSONArray(0);
|
||||
} else {
|
||||
attrArry = attrTab.query("IFNULL(storagevehicle_code,'') = '' " +
|
||||
"AND is_used = '" + IOSEnum.IS_NOTANDYES.code("是") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("否") + "' " +
|
||||
"AND lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '" + jsonObject.getString("stor_id") + "' " +
|
||||
"AND storagevehicle_type = '" + jsonObject.getString("vehicle_type") + "'" +
|
||||
"AND height = '" + jsonObject.getString("height") + "'" +
|
||||
"AND sect_id = '" + jsonObject.getString("sect_id") + "' AND block_num = '"+block_num+"'")
|
||||
.getResultJSONArray(0);
|
||||
}
|
||||
|
||||
|
||||
if (ObjectUtil.isEmpty(attrArry)) {
|
||||
notInRowList.clear();
|
||||
@@ -143,7 +159,10 @@ public class InBussManageServiceImpl implements InBussManageService {
|
||||
jsonSub.put("vehicle_type", jsonObject.getString("vehicle_type"));
|
||||
jsonSub.put("height", jsonObject.getString("height"));
|
||||
|
||||
String block_num = getMinBlock(jsonSub);
|
||||
// 不是移库则需要找新巷道
|
||||
if (ObjectUtil.isEmpty(block_num)) {
|
||||
block_num = getMinBlock(jsonSub);
|
||||
}
|
||||
/*
|
||||
* 确定哪排:查看每排相同木箱规格等 的数量,找到数量最小的那排
|
||||
*/
|
||||
@@ -156,6 +175,11 @@ public class InBussManageServiceImpl implements InBussManageService {
|
||||
jsonSub.put("row_num", row_num);
|
||||
JSONObject jsonAttr = queryStruct(jsonSub);
|
||||
|
||||
// 如果是移库空并且仓位为空则报错
|
||||
if (ObjectUtil.isNotEmpty(jsonObject.getString("move_block_num")) && ObjectUtil.isEmpty(jsonAttr)) {
|
||||
throw new BadRequestException("仓位不足!");
|
||||
}
|
||||
|
||||
// 为空则新找巷道
|
||||
if (ObjectUtil.isEmpty(jsonAttr)) {
|
||||
|
||||
|
||||
@@ -10,6 +10,8 @@ import org.hibernate.annotations.Source;
|
||||
import org.nl.b_lms.sch.point.dao.SchBasePoint;
|
||||
import org.nl.b_lms.sch.point.dao.mapper.SchBasePointMapper;
|
||||
import org.nl.b_lms.sch.point.service.IschBasePointService;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.nl.b_lms.sch.task.dao.mapper.SchBaseTaskMapper;
|
||||
import org.nl.b_lms.sch.tasks.TwoLashTask;
|
||||
import org.nl.b_lms.sch.tasks.TwoOutHeapTask;
|
||||
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
|
||||
@@ -184,6 +186,7 @@ public class LashManageServiceImpl implements LashManageService {
|
||||
jsonTaskParam.put("task_type", "010707");
|
||||
jsonTaskParam.put("start_device_code", whereJson.getString("device_code"));
|
||||
jsonTaskParam.put("next_device_code", end_point);
|
||||
jsonTaskParam.put("task_group_id", whereJson.getString("task_group_id"));
|
||||
jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code"));
|
||||
jsonTaskParam.put("is_auto_issue", is_move);
|
||||
|
||||
@@ -218,6 +221,7 @@ public class LashManageServiceImpl implements LashManageService {
|
||||
jsonTaskParam.put("task_type", "010720");
|
||||
whereJson.put("containerType", whereJson.getString("vehicle_type"));
|
||||
jsonTaskParam.put("point_code1", whereJson.getString("device_code"));
|
||||
jsonTaskParam.put("task_group_id", whereJson.getString("task_group_id"));
|
||||
jsonTaskParam.put("point_code2", next_device_code);
|
||||
jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code"));
|
||||
jsonTaskParam.put("request_param", whereJson);
|
||||
|
||||
@@ -5,6 +5,9 @@ import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
|
||||
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
|
||||
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.IStIvtIostorinvdtlService;
|
||||
@@ -17,6 +20,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.system.service.param.ISysParamService;
|
||||
import org.nl.wms.pda.mps.eum.RegionTypeEnum;
|
||||
import org.nl.wms.st.inbill.service.StorPublicService;
|
||||
import org.nl.wms.st.instor.service.HandMoveStorService;
|
||||
@@ -72,6 +76,12 @@ public class OutBussManageServiceImpl implements OutBussManageService {
|
||||
@Autowired
|
||||
private HandMoveStorService handMoveStorService;
|
||||
|
||||
@Autowired
|
||||
private ISysParamService iSysParamService;
|
||||
|
||||
@Autowired
|
||||
private IBstIvtBoxinfoService iBstIvtBoxinfoService;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void lockStruct(List<String> param, JSONObject json) {
|
||||
@@ -381,6 +391,29 @@ public class OutBussManageServiceImpl implements OutBussManageService {
|
||||
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";
|
||||
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
|
||||
height = "2";
|
||||
} else {
|
||||
height = "3";
|
||||
}
|
||||
moveParam.put("height", height);
|
||||
moveParam.put("vehicle_type", boxDao.getVehicle_type());
|
||||
// 移库巷道
|
||||
moveParam.put("move_block_num",json.getString("block_num"));
|
||||
|
||||
JSONObject jsonMove = inBussManageService.getOneStruct(moveParam);
|
||||
|
||||
// 查询移出货位的库存物料
|
||||
|
||||
@@ -38,6 +38,7 @@ public interface InBussManageService {
|
||||
* sect_id:库区标识
|
||||
* material_id: 物料标识
|
||||
* box_no:木箱号
|
||||
* move_block_num: 是否移库:提前确定巷道
|
||||
* }
|
||||
* @return JSONObject 仓位对象
|
||||
*/
|
||||
|
||||
@@ -17,6 +17,7 @@ public interface LashManageService {
|
||||
* @param whereJson {
|
||||
* device_code:起点
|
||||
* vehicle_code: 箱号
|
||||
* task_group_id: 任务组
|
||||
*
|
||||
* }
|
||||
*/
|
||||
@@ -28,6 +29,7 @@ public interface LashManageService {
|
||||
* device_code:起点
|
||||
* vehicle_code: 箱号
|
||||
* vehicle_type: 载具类型
|
||||
* task_group_id: 任务组
|
||||
*
|
||||
* }
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user