rev: 成品出库功能修改

This commit is contained in:
2023-04-04 14:39:12 +08:00
parent 2b34529494
commit 16fe28ce3b
7 changed files with 63 additions and 47 deletions

View File

@@ -58,6 +58,12 @@ public enum StatusEnum {
POINT_STATUS_EMPTY("1", "空位", ""),
POINT_STATUS_FULL("2", "有料", ""),
POINT_STATUS_EMPTY_VEHICLE("3", "空载具", ""),
// 出入库分配明细状态
IOS_NOCREATE("00","为生成",""),
IOS_CREATE("01","生成",""),
IOS_RUNNING("02","执行中",""),
IOS_FINISH("99","完成",""),
;
private String code;
private String desc;

View File

@@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.core.bean.WQLObject;
@@ -50,7 +51,7 @@ public class ProductInTask extends AbstractAcsTask {
map.put("task_status", TaskStatusEnum.EXECUTING.getCode());
//更新入库单分配任务状态
HashMap<String, String> dis_map = new HashMap<>();
dis_map.put("work_status", "02");
dis_map.put("work_status", StatusEnum.IOS_RUNNING.getCode());
dis_map.put("is_issued", "1");
WQLObject.getWQLObject("ST_IVT_IOStorInvDis").update(dis_map, "task_id = '" + taskObj.getString("task_id") + "'");
}
@@ -76,7 +77,7 @@ public class ProductInTask extends AbstractAcsTask {
// 解锁货位
JSONObject jsonPoint1 = pointTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0);
jsonPoint1.put("lock_type", "1");
jsonPoint1.put("lock_type", StatusEnum.LOCK_OFF.getCode());
pointTab.update(jsonPoint1);
// 判断物料是否超长: 超长解锁对应点位
@@ -88,7 +89,7 @@ public class ProductInTask extends AbstractAcsTask {
if (material_length > material_length_up) {
JSONObject jsonPoint2 = pointTab.query("point_id = '" + jsonPoint1.getString("control_point") + "'").uniqueResult(0);
jsonPoint2.put("lock_type","1");
jsonPoint2.put("lock_type",StatusEnum.LOCK_OFF.getCode());
pointTab.update(jsonPoint2);
}
@@ -131,7 +132,7 @@ public class ProductInTask extends AbstractAcsTask {
// 更新分配明细为:未生成:00,清空对应字段
JSONObject disMap = new JSONObject();
disMap.put("work_status", "00");
disMap.put("work_status", StatusEnum.IOS_NOCREATE.getCode());
disMap.put("point_id", "");
disMap.put("task_id", "");
disMap.put("struct_id", "");

View File

@@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.core.bean.WQLObject;
@@ -42,20 +43,20 @@ public class ProductOutTask extends AbstractAcsTask {
}
// 更新删除字段
jsonTask.put("is_delete","1");
jsonTask.put("is_delete",StatusEnum.STATUS_TRUE.getCode());
jsonTask.put("update_time", DateUtil.now());
taskTab.update(jsonTask);
// 更新分配明细为:未生成
JSONObject map = new JSONObject();
map.put("work_status", "00");
map.put("work_status", StatusEnum.IOS_NOCREATE.getCode());
map.put("point_id", "");
disTab.update(map,"task_id = '"+task_id+"'");
// 解锁终点点位
JSONObject jsonPoint = pointTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0);
jsonPoint.put("lock_type", "1");
jsonPoint.put("lock_type", StatusEnum.LOCK_OFF.getCode());
pointTab.update(jsonPoint);
}

View File

@@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
@@ -20,6 +21,7 @@ import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.basedata.st.service.StorattrService;
import org.nl.wms.basedata.st.service.StructattrService;
import org.nl.wms.basedata.st.service.dto.StructattrDto;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.service.PointService;
import org.nl.wms.sch.service.dto.PointDto;
import org.nl.wms.sch.tasks.ProductInTask;
@@ -430,12 +432,12 @@ public class ProductInServiceImpl implements ProductInService {
//锁定货位
JSONObject jsonPoint1 = pointTab.query("point_id = '" + point_id + "'").uniqueResult(0);
jsonPoint1.put("lock_type", "2");
jsonPoint1.put("lock_type", StatusEnum.LOCK_ON.getCode());
pointTab.update(jsonPoint1);
// 判断是否需要锁定两个货位
if (StrUtil.equals(is_length, "1")) {
JSONObject jsonPoint2 = pointTab.query("point_id = '" + jsonPoint1.getString("control_point") + "'").uniqueResult(0);
jsonPoint2.put("lock_type", "2");
jsonPoint2.put("lock_type", StatusEnum.LOCK_ON.getCode());
pointTab.update(jsonPoint2);
}
@@ -503,7 +505,7 @@ public class ProductInServiceImpl implements ProductInService {
//解锁原货位点位
JSONObject jsonPoint1 = point_table.query("point_code = '" + whereJson.getString("struct_code") + "'").uniqueResult(0);
jsonPoint1.put("lock_type", "1");
jsonPoint1.put("lock_type", StatusEnum.LOCK_OFF.getCode());
point_table.update(jsonPoint1);
// 判断此物料是否超长
@@ -516,7 +518,7 @@ public class ProductInServiceImpl implements ProductInService {
if (material_length > material_length_up) {
// 超长则解锁对应点位
JSONObject jsonPoint2 = point_table.query("point_id = '" + jsonPoint1.getString("control_point") + "'").uniqueResult(0);
jsonPoint2.put("lock_type","1");
jsonPoint2.put("lock_type", StatusEnum.LOCK_OFF.getCode());
point_table.update(jsonPoint2);
}
@@ -640,7 +642,7 @@ public class ProductInServiceImpl implements ProductInService {
JSONObject json = pointArr.getJSONObject(i);
// 查询此点位对应的点位是否是无货未锁定状态
JSONObject jsonControlPoint = pointTab.query("point_id = '" + json.getString("control_point") +
"' and is_delete = '0' and is_used = '1' and point_status = '1' and lock_type = '1'").uniqueResult(0);
"' and is_delete = '0' and is_used = '1' and point_status = '1' and lock_type = '0'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonControlPoint)) {
json.put("is_length", "1");
@@ -748,9 +750,9 @@ public class ProductInServiceImpl implements ProductInService {
String placement_type2 = empty_row.getString("placement_type");
if (placement_type.equals("02")) {
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num2 + "' AND row_num = '" + row_num2 + "' AND placement_type = '" + placement_type2 + "' AND is_delete = '0' AND is_used = '1' AND lock_type = '1' order by out_order_seq ASC").uniqueResult(0);
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '0' AND block_num = '" + block_num2 + "' AND row_num = '" + row_num2 + "' AND placement_type = '" + placement_type2 + "' AND is_delete = '0' AND is_used = '1' AND lock_type = '0' order by out_order_seq ASC").uniqueResult(0);
} else {
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num2 + "' AND row_num = '" + row_num2 + "' AND placement_type = '" + placement_type2 + "'AND is_delete = '0' AND is_used = '1' AND lock_type = '1' order by out_order_seq DESC").uniqueResult(0);
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '0' AND block_num = '" + block_num2 + "' AND row_num = '" + row_num2 + "' AND placement_type = '" + placement_type2 + "'AND is_delete = '0' AND is_used = '1' AND lock_type = '0' order by out_order_seq DESC").uniqueResult(0);
}
} else {
@@ -764,11 +766,11 @@ public class ProductInServiceImpl implements ProductInService {
//判断该排是左边为空,还是右边为空
JSONObject right_str = WQLObject.getWQLObject("st_ivt_structattr").query("block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' order by out_order_seq").uniqueResult(0);
JSONObject left_str = WQLObject.getWQLObject("st_ivt_structattr").query("block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' order by out_order_seq desc").uniqueResult(0);
if (StrUtil.isNotEmpty(right_str.getString("storagevehicle_code")) || !right_str.getString("lock_type").equals("1")) {
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq").uniqueResult(0);
if (StrUtil.isNotEmpty(right_str.getString("storagevehicle_code")) || !right_str.getString("lock_type").equals("0")) {
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '0' AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq").uniqueResult(0);
}
if (StrUtil.isNotEmpty(left_str.getString("storagevehicle_code")) || !left_str.getString("lock_type").equals("1")) {
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq desc").uniqueResult(0);
if (StrUtil.isNotEmpty(left_str.getString("storagevehicle_code")) || !left_str.getString("lock_type").equals("0")) {
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '0' AND block_num = '" + block_num3 + "' AND row_num = '" + row_num3 + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq desc").uniqueResult(0);
}
}
@@ -830,12 +832,12 @@ public class ProductInServiceImpl implements ProductInService {
//原货位解锁,新货位加锁
HashMap unlock_map = new HashMap();
unlock_map.put("lock_type", "1");
unlock_map.put("lock_type", StatusEnum.LOCK_OFF.getCode());
point_table.update(unlock_map, "point_code = '" + whereJson.get("struct_code") + "'");
struct_table.update(unlock_map, "struct_code = '" + whereJson.get("struct_code") + "'");
HashMap lock_map = new HashMap();
lock_map.put("lock_type", "2");
lock_map.put("lock_type", StatusEnum.LOCK_ON.getCode());
point_table.update(lock_map, "point_code = '" + whereJson.get("new_struct_code") + "'");
struct_table.update(lock_map, "struct_code = '" + whereJson.get("new_struct_code") + "'");
@@ -961,8 +963,8 @@ public class ProductInServiceImpl implements ProductInService {
//更新终点
JSONObject jsonPoint1 = pointTab.query("point_id = '" + dis_row.getString("struct_id") + "'").uniqueResult(0);
jsonPoint1.put("vehicle_code", dis_row.getString("storagevehicle_code"));
jsonPoint1.put("lock_type", "1");
jsonPoint1.put("point_status", "2");
jsonPoint1.put("lock_type", StatusEnum.LOCK_OFF.getCode());
jsonPoint1.put("point_status", StatusEnum.POINT_STATUS_FULL.getCode());
pointTab.update(jsonPoint1);
// 判断此物料是否占用了两个货位
JSONObject jsonMater = materTab.query("material_id = '" + dis_row.getString("material_id") + "'").uniqueResult(0);
@@ -975,8 +977,8 @@ public class ProductInServiceImpl implements ProductInService {
// 找对应货位并更新
JSONObject jsonPoint2 = pointTab.query("point_id = '" + jsonPoint1.getString("control_point") + "'").uniqueResult(0);
jsonPoint2.put("vehicle_code", dis_row.getString("storagevehicle_code"));
jsonPoint2.put("lock_type", "1");
jsonPoint2.put("point_status", "2");
jsonPoint2.put("lock_type", StatusEnum.LOCK_OFF.getCode());
jsonPoint2.put("point_status", StatusEnum.POINT_STATUS_FULL.getCode());
pointTab.update(jsonPoint2);
}

View File

@@ -14,6 +14,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
@@ -356,7 +357,7 @@ public class ProductOutServiceImpl implements ProductOutService {
jsonDis.put("struct_name", jsonIvt.getString("struct_name"));
jsonDis.put("material_id", jsonIvt.getString("material_id"));
jsonDis.put("pcsn", jsonIvt.getString("pcsn"));
jsonDis.put("work_status", "00");
jsonDis.put("work_status", StatusEnum.IOS_NOCREATE.getCode());
jsonDis.put("storagevehicle_code", jsonIvt.getString("vehicle_code"));
jsonDis.put("qty_unit_id", dtl.getLongValue("qty_unit_id"));
jsonDis.put("qty_unit_name", dtl.getString("qty_unit_name"));
@@ -365,7 +366,7 @@ public class ProductOutServiceImpl implements ProductOutService {
// 锁定点位
JSONObject jsonUpdataPoint = new JSONObject();
jsonUpdataPoint.put("lock_type","3");
jsonUpdataPoint.put("lock_type",StatusEnum.LOCK_ON.getCode());
wo_point.update(jsonUpdataPoint,"vehicle_code = '"+jsonIvt.getString("vehicle_code")+"'");
@@ -469,7 +470,7 @@ public class ProductOutServiceImpl implements ProductOutService {
// 锁定点位
JSONObject jsonUpdataPoint = new JSONObject();
jsonUpdataPoint.put("lock_type","3");
jsonUpdataPoint.put("lock_type", StatusEnum.LOCK_ON.getCode());
wo_point.update(jsonUpdataPoint,"vehicle_code = '"+jsonIvt.getString("vehicle_code")+"'");
@@ -579,7 +580,7 @@ public class ProductOutServiceImpl implements ProductOutService {
// 解锁点位
JSONObject jsonUpdataPoint = new JSONObject();
jsonUpdataPoint.put("lock_type","1");
jsonUpdataPoint.put("lock_type",StatusEnum.LOCK_OFF.getCode());
wo_point.update(jsonUpdataPoint,"vehicle_code = '"+dis.getString("storagevehicle_code")+"'");
//更新主表状态
@@ -672,19 +673,19 @@ public class ProductOutServiceImpl implements ProductOutService {
//任务号不为空
if (ObjectUtil.isNotEmpty(dis.getString("task_id"))) {
//更新对应任务为删除
map.put("is_delete", "1");
map.put("is_delete", StatusEnum.STATUS_TRUE.getCode());
wo_Task.update(map, "task_id='" + dis.getString("task_id") + "'");
}
//解锁起点仓位点位
JSONObject from_start = new JSONObject();
from_start.put("struct_id", dis.getString("struct_id"));
from_start.put("lock_type", "1");
from_start.put("lock_type", StatusEnum.LOCK_OFF.getCode());
storPublicService.updateStructAndPoint2(from_start);
//解锁终点仓位点位
if (StrUtil.isNotEmpty(dis.getString("point_code"))) {
JSONObject from_end = new JSONObject();
from_end.put("point_code", dis.getString("point_code"));
from_end.put("lock_type", "1");
from_end.put("lock_type", StatusEnum.LOCK_OFF.getCode());
storPublicService.updateStructAndPoint2(from_end);
}
} else {//仓位载具扔有冻结数,需改任务类型为拣选出库
@@ -747,11 +748,11 @@ public class ProductOutServiceImpl implements ProductOutService {
String task_id = task.createTask(jsonTask);
// 锁定终点
jsonSendOut.put("lock_type","3");
jsonSendOut.put("lock_type",StatusEnum.LOCK_ON.getCode());
wo_Point.update(jsonSendOut);
// 修改明细状态
jsonDis.put("work_status", "01");
jsonDis.put("work_status", StatusEnum.IOS_CREATE.getCode());
jsonDis.put("point_id", jsonSendOut.getString("point_id"));
jsonDis.put("task_id", task_id);
wo_dis.update(jsonDis);
@@ -942,9 +943,9 @@ public class ProductOutServiceImpl implements ProductOutService {
// 如果所属仓位是虚拟区 则将分配明细状态变为生成
JSONObject jsonSect = wo_sect.query("sect_id = '" + ivt.getString("sect_id") + "'").uniqueResult(0);
if (StrUtil.equals(jsonSect.getString("sect_type_attr"), "09")) {
json.put("work_status", "01");
json.put("work_status", StatusEnum.IOS_CREATE.getCode());
} else {
json.put("work_status", "00");
json.put("work_status", StatusEnum.IOS_NOCREATE.getCode());
}
wo_dis.insert(json);
@@ -967,7 +968,7 @@ public class ProductOutServiceImpl implements ProductOutService {
//锁定起点仓位点位
JSONObject from_start = new JSONObject();
from_start.put("struct_id", Struct.getString("struct_id"));
from_start.put("lock_type", "3");
from_start.put("lock_type", StatusEnum.LOCK_ON.getCode());
from_start.put("inv_type", jo_mst.getString("bill_type"));
from_start.put("inv_id", jo_mst.getString("iostorinv_id"));
from_start.put("inv_code", jo_mst.getString("bill_code"));
@@ -1052,25 +1053,25 @@ public class ProductOutServiceImpl implements ProductOutService {
//解锁起点
JSONObject from_start = new JSONObject();
from_start.put("lock_type", "1");
from_start.put("point_status", "1");
from_start.put("lock_type", StatusEnum.LOCK_OFF.getCode());
from_start.put("point_status", StatusEnum.POINT_STATUS_EMPTY.getCode());
from_start.put("vehicle_code", "");
pointTab.update(from_start,"vehicle_code = '"+dis.getString("storagevehicle_code")+"'");
// 解锁终点增加库存
JSONObject jsonPoint = pointTab.query("point_id = '" + dis.getString("point_id") + "'").uniqueResult(0);
jsonPoint.put("lock_type", "1");
jsonPoint.put("point_status", "2");
jsonPoint.put("lock_type", StatusEnum.LOCK_OFF.getCode());
jsonPoint.put("point_status", StatusEnum.POINT_STATUS_FULL.getCode());
jsonPoint.put("vehicle_code", dis.getString("storagevehicle_code"));
pointTab.update(jsonPoint);
// 更新分配明细执行状态为 - 99
JSONObject jsonDis = wo_dis.query("iostorinvdis_id = '" + dis.getString("iostorinvdis_id") + "'").uniqueResult(0);
jsonDis.put("work_status", "99");
jsonDis.put("work_status", StatusEnum.IOS_FINISH.getCode());
wo_dis.update(jsonDis);
// 更新对应任务为完成
JSONObject jsonTask = taskTab.query("task_id = '" + jsonDis.getString("task_id") + "' and task_status < '7'").uniqueResult(0);
JSONObject jsonTask = taskTab.query("task_id = '" + jsonDis.getString("task_id") + "' and task_status < '"+TaskStatusEnum.FINISHED.getCode()+"'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonTask)) {
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
taskTab.update(jsonTask);
@@ -1476,7 +1477,12 @@ public class ProductOutServiceImpl implements ProductOutService {
public JSONObject findSendOut() {
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
JSONObject jsonPoint = pointTab.query("point_status = '1' and region_code = 'FH01' and lock_type = '1' and is_delete = '0' and is_used = '1' and IFNULL(vehicle_code,'') = '' order by point_code").uniqueResult(0);
JSONObject jsonPoint = pointTab.query("point_status = '"+StatusEnum.POINT_STATUS_EMPTY.getCode()
+"' and lock_type = '"+StatusEnum.LOCK_OFF.getCode()
+"' and is_delete = '"+StatusEnum.STATUS_FLASE.getCode()
+"' and is_used = '"+StatusEnum.STATUS_TRUE.getCode()
+"' and region_code = 'FH01' and IFNULL(vehicle_code,'') = '' order by point_code").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonPoint)) {
throw new BadRequestException("发货区无可用点位");

View File

@@ -49,7 +49,7 @@
sch_base_point point
LEFT JOIN sch_base_region region ON point.region_code = region.region_code
WHERE
point.lock_type = '1'
point.lock_type = '0'
AND point.point_status = '1'
AND point.is_delete = '0'
AND point.is_used = '1'
@@ -79,7 +79,7 @@
sch_base_point point
LEFT JOIN sch_base_region region ON point.region_code = region.region_code
WHERE
point.lock_type = '1'
point.lock_type = '0'
AND point.point_status = '1'
AND point.is_delete = '0'
AND point.is_used = '1'
@@ -107,7 +107,7 @@
sch_base_point point
LEFT JOIN sch_base_region region ON point.region_code = region.region_code
WHERE
point.lock_type = '1'
point.lock_type = '0'
AND point.point_status = '1'
AND point.is_delete = '0'
AND point.is_used = '1'

View File

@@ -166,7 +166,7 @@
LEFT JOIN md_pb_measureunit unit ON unit.measure_unit_id = ivt.qty_unit_id
WHERE
ivt.canuse_qty > 0
AND point.lock_type = '1'
AND point.lock_type = '0'
AND IFNULL(point.vehicle_code,'') <> ''
OPTION 输入.product_area <> ""