Merge remote-tracking branch 'origin/b_lms' into b_lms
This commit is contained in:
@@ -106,7 +106,7 @@
|
||||
LEFT JOIN sch_base_point point2 ON point1.row_num = point2.row_num
|
||||
WHERE
|
||||
IFNULL( point2.vehicle_code, '' ) != ''
|
||||
AND point2.out_order_seq > point1.out_order_seq
|
||||
AND point1.out_order_seq > point2.out_order_seq
|
||||
|
||||
<if test="point_code != null and point_code != ''">
|
||||
AND point1.point_code= #{point_code}
|
||||
@@ -125,7 +125,7 @@
|
||||
LEFT JOIN sch_base_point point2 ON point1.row_num = point2.row_num
|
||||
WHERE
|
||||
IFNULL( point2.vehicle_code, '' ) = ''
|
||||
AND point2.out_order_seq > point1.out_order_seq
|
||||
AND point1.out_order_seq > point2.out_order_seq
|
||||
|
||||
<if test="point_code != null and point_code != ''">
|
||||
AND point1.point_code= #{point_code}
|
||||
|
||||
@@ -99,7 +99,6 @@ public class TwoInEmpTask extends AbstractAcsTask {
|
||||
JSONObject jsonAttr = attrTab.query("struct_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0);
|
||||
jsonAttr.put("lock_type",IOSEnum.LOCK_TYPE.code("未锁定"));
|
||||
jsonAttr.put("storagevehicle_code",jsonTask.getString("vehicle_code"));
|
||||
jsonAttr.put("storagevehicle_type",jsonTask.getString("vehicle_type"));
|
||||
jsonAttr.put("is_emptyvehicle",IOSEnum.IS_NOTANDYES.code("是"));
|
||||
|
||||
attrTab.update(jsonAttr);
|
||||
|
||||
@@ -23,6 +23,8 @@ import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.sch.AcsTaskDto;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
@@ -85,13 +87,13 @@ public class TwoLashTask extends AbstractAcsTask {
|
||||
}
|
||||
|
||||
JSONObject interaction_json = new JSONObject();
|
||||
interaction_json.put("isLeave",json.getString("is_auto_issue"));
|
||||
interaction_json.put("length",dao.get(0).getBox_length());
|
||||
interaction_json.put("weight",dao.get(0).getBox_width());
|
||||
interaction_json.put("height",dao.get(0).getBox_high());
|
||||
interaction_json.put("template",dao.get(0).getLash_num());
|
||||
interaction_json.put("isLeave", json.getString("is_auto_issue"));
|
||||
interaction_json.put("length", dao.get(0).getBox_length());
|
||||
interaction_json.put("weight", dao.get(0).getBox_width());
|
||||
interaction_json.put("height", dao.get(0).getBox_high());
|
||||
interaction_json.put("template", dao.get(0).getLash_num());
|
||||
//第二次捆扎次数
|
||||
interaction_json.put("bindingTimes","3");
|
||||
interaction_json.put("bindingTimes", "3");
|
||||
interaction_json.put("isBinding", IOSEnum.IS_SEND.code("是"));
|
||||
char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1);
|
||||
AcsTaskDto dto = AcsTaskDto.builder()
|
||||
@@ -121,6 +123,7 @@ public class TwoLashTask extends AbstractAcsTask {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskStatus(JSONObject taskObj, String status) {
|
||||
JSONObject task_jo = WQLObject.getWQLObject("sch_base_task").query("task_code = '"+taskObj.getString("task_code")+"'").uniqueResult(0);
|
||||
// 点位表
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
// 木箱绑定表
|
||||
@@ -140,19 +143,28 @@ 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")+"'")
|
||||
JSONObject groupTask = WQLObject.getWQLObject("sch_base_task").query("task_group_id = '" + task_jo.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接口告诉此木箱可以离开
|
||||
//给捆扎点下发强制放行
|
||||
WmsToAcsService wmsToAcsService = SpringContextHolder.getBean(WmsToAcsService.class);
|
||||
JSONArray action_rows = new JSONArray();
|
||||
JSONObject action_jo = new JSONObject();
|
||||
action_jo.put("device_code", task_jo.getString("point_code2"));
|
||||
action_jo.put("code", "to_command");
|
||||
action_jo.put("product_area", "BLK");
|
||||
action_jo.put("value", "26");
|
||||
action_rows.add(action_jo);
|
||||
wmsToAcsService.action(action_rows);
|
||||
|
||||
// 更新点位载具、数量
|
||||
JSONObject pointDao = pointTab.query("point_code = '" + task_jo.getString("point_code2") + "'").uniqueResult(0);
|
||||
pointDao.put("vehicle_code", "");
|
||||
pointDao.put("vehicle_qty", 0);
|
||||
WQLObject.getWQLObject("sch_base_point").update(pointDao);
|
||||
|
||||
}
|
||||
|
||||
@@ -170,26 +182,26 @@ public class TwoLashTask extends AbstractAcsTask {
|
||||
map.put("is_delete", IOSEnum.IS_NOTANDYES.code("是"));
|
||||
|
||||
// 减去终点点位载具数量
|
||||
JSONObject pointDao = pointTab.query("point_code = '" + taskObj.getString("point_code2") + "'").uniqueResult(0);
|
||||
JSONObject pointDao = pointTab.query("point_code = '" + task_jo.getString("point_code2") + "'").uniqueResult(0);
|
||||
|
||||
pointDao.put("vehicle_qty", NumberUtil.sub(pointDao.getIntValue("vehicle_qty"),1));
|
||||
pointDao.put("vehicle_qty", NumberUtil.sub(pointDao.getIntValue("vehicle_qty"), 1));
|
||||
|
||||
if (pointDao.getIntValue("vehicle_qty") <= 0) {
|
||||
// 清空载具号
|
||||
pointDao.put("vehicle_code", "");
|
||||
pointDao.put("vehicle_qty",0);
|
||||
pointDao.put("vehicle_qty", 0);
|
||||
}
|
||||
pointTab.update(pointDao);
|
||||
|
||||
// 删除木箱绑定数据
|
||||
boxTab.delete("box_no = '"+taskObj.getString("vehicle_code")+"'");
|
||||
boxTab.delete("box_no = '" + task_jo.getString("vehicle_code") + "'");
|
||||
|
||||
}
|
||||
map.put("update_optid", SecurityUtils.getCurrentUserId());
|
||||
map.put("update_optname", SecurityUtils.getCurrentNickName());
|
||||
map.put("update_time", DateUtil.now());
|
||||
|
||||
WQLObject.getWQLObject("SCH_BASE_Task").update(map, "task_id = '" + taskObj.getString("task_id") + "'");
|
||||
WQLObject.getWQLObject("SCH_BASE_Task").update(map, "task_id = '" + task_jo.getString("task_id") + "'");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -17,6 +17,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
|
||||
|
||||
/**
|
||||
* 二期空木箱移库任务类
|
||||
* Created by Lxy on 2024/1/19.
|
||||
@@ -46,6 +48,7 @@ public class TwoMoveBoxTask extends AbstractAcsTask {
|
||||
.task_type(json.getString("acs_task_type"))
|
||||
.start_device_code(json.getString("point_code1"))
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
.route_plan_code(getRoutePlanCode(json.getString("point_code2")))
|
||||
.vehicle_code(json.getString("vehicle_code"))
|
||||
.priority(json.getString("priority"))
|
||||
.class_type(json.getString("task_type"))
|
||||
|
||||
@@ -39,6 +39,8 @@ public class TwoSendOutTask extends AbstractAcsTask {
|
||||
/*
|
||||
* 下发给ACS时需要特殊处理
|
||||
*/
|
||||
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");
|
||||
|
||||
JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0);
|
||||
|
||||
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
|
||||
@@ -60,6 +62,11 @@ public class TwoSendOutTask extends AbstractAcsTask {
|
||||
.remark(json.getString("remark"))
|
||||
.build();
|
||||
resultList.add(dto);
|
||||
|
||||
// 更新任务为下发
|
||||
JSONObject paramMap = new JSONObject();
|
||||
paramMap.put("task_status", TaskStatusEnum.ISSUE.getCode());
|
||||
taskTab.update(paramMap, "task_id ='" + json.getString("task_id") + "'");
|
||||
}
|
||||
return resultList;
|
||||
}
|
||||
@@ -79,7 +86,16 @@ public class TwoSendOutTask extends AbstractAcsTask {
|
||||
jsonTask.put("update_time", DateUtil.now());
|
||||
taskTab.update(jsonTask);
|
||||
|
||||
JSONObject jsonPoint2 = pointTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0);
|
||||
JSONObject jsonPoint2;
|
||||
|
||||
if (ObjectUtil.isNotEmpty(jsonTask.getString("point_code4"))) {
|
||||
// 第一次申请取消
|
||||
jsonPoint2 = pointTab.query("point_code = '" + jsonTask.getString("point_code4") + "'").uniqueResult(0);
|
||||
} else {
|
||||
// 第二次申请取消
|
||||
jsonPoint2 = pointTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0);
|
||||
}
|
||||
|
||||
jsonPoint2.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
|
||||
jsonPoint2.put("vehicle_code", "");
|
||||
pointTab.update(jsonPoint2);
|
||||
@@ -102,11 +118,13 @@ public class TwoSendOutTask extends AbstractAcsTask {
|
||||
jsonTask.put("update_time", DateUtil.now());
|
||||
taskTab.update(jsonTask);
|
||||
|
||||
// 更新暂存区点位状态
|
||||
JSONObject jsonPoint2 = WQLObject.getWQLObject("sch_base_point").query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0);
|
||||
jsonPoint2.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
|
||||
jsonPoint2.put("vehicle_code", jsonTask.getString("vehicle_code"));
|
||||
pointTab.update(jsonPoint2);
|
||||
if (ObjectUtil.isEmpty(jsonTask.getString("point_code4"))) {
|
||||
// 第二次申请任务完成 - 更新点位状态
|
||||
JSONObject jsonPoint2 = WQLObject.getWQLObject("sch_base_point").query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0);
|
||||
jsonPoint2.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
|
||||
jsonPoint2.put("vehicle_code", jsonTask.getString("vehicle_code"));
|
||||
pointTab.update(jsonPoint2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,10 +144,6 @@ public class TwoSendOutTask extends AbstractAcsTask {
|
||||
WQLObject tab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
CutConveyorTask cutConveyorTask = new CutConveyorTask();
|
||||
|
||||
String point_code2 = form.getString("point_code2");
|
||||
if (cutConveyorTask.isSingleTask(point_code2)) {
|
||||
throw new BadRequestException("点位:" + point_code2 + "存在未完成的任务!");
|
||||
}
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("task_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
json.put("task_code", IdUtil.getSnowflake(1, 1).nextId());
|
||||
@@ -138,6 +152,7 @@ public class TwoSendOutTask extends AbstractAcsTask {
|
||||
json.put("point_code1", form.getString("point_code1"));
|
||||
json.put("route_plan_code", getRoutePlanCode(json.getString("point_code1")));
|
||||
json.put("point_code2", form.getString("point_code2"));
|
||||
json.put("point_code4", form.getString("point_code4"));
|
||||
json.put("vehicle_code", form.getString("vehicle_code"));
|
||||
json.put("handle_class", THIS_CLASS);
|
||||
json.put("create_id", SecurityUtils.getCurrentUserId());
|
||||
|
||||
@@ -103,6 +103,9 @@ public enum IOSEnum {
|
||||
OUT_POINT(MapOf.of("1","CK2038", "2","CK2038", "3","CK2042", "4","CK2042" ,"5","CK2046",
|
||||
"6","CK2046", "7","7", "8","8", "9","9", "10","10")),
|
||||
|
||||
// 出库发货等待点
|
||||
OUT_FH_POINT(MapOf.of("1","B_FH_01_0", "2","B_FH_02_0", "3","B_FH_03_0", "4","B_FH_04_0" ,"5","B_FH_05_0",
|
||||
"6","B_FH_06_0")),
|
||||
|
||||
// 行架点位
|
||||
OUT_HANGER(MapOf.of("行架位1", "CK2013","行架位2", "CK2017")),
|
||||
|
||||
@@ -538,6 +538,8 @@ public class OutBoxManageServiceImpl implements OutBoxManageService {
|
||||
JSONObject paramIn = new JSONObject();
|
||||
paramIn.put("stor_id", IOSEnum.STOR_ID.code("二期"));
|
||||
paramIn.put("sect_id", RegionTypeEnum.TWO_BZC01.getId());
|
||||
paramIn.put("vehicle_type", jsonObject.getString("storagevehicle_type"));
|
||||
paramIn.put("height", jsonObject.getString("height"));
|
||||
|
||||
InBoxManageServiceImpl bean = SpringContextHolder.getBean(InBoxManageServiceImpl.class);
|
||||
JSONObject jsonAttr = bean.getStruct(paramIn);
|
||||
|
||||
@@ -61,7 +61,6 @@ public class SendOutManageServiceImpl implements SendOutManageService {
|
||||
* 1)有相同订单号有空位的:相同订单号的放在一排
|
||||
* 2)没有相同订单号的:新开一排
|
||||
* 3)有相同订单号的但是没有空位:新开一排
|
||||
* 2.删除载具对应木箱记录
|
||||
*/
|
||||
CutConveyorTask cutConveyorTask = new CutConveyorTask();
|
||||
|
||||
@@ -72,16 +71,14 @@ public class SendOutManageServiceImpl implements SendOutManageService {
|
||||
.eq(SchBasePoint::getIs_used, IOSEnum.IS_NOTANDYES.code("是"))
|
||||
.eq(SchBasePoint::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
|
||||
);
|
||||
// 1.查询此木箱号的子卷包装关系
|
||||
if(StringUtils.isEmpty(whereJson.getString("vehicle_code"))){
|
||||
throw new BadRequestException("木箱号不能为空!");
|
||||
}
|
||||
|
||||
//木箱号可能用逗号隔开
|
||||
String vehicleCode = Arrays.asList(whereJson.getString("vehicle_code").split(",")).get(0);
|
||||
JSONObject jsonSub = subTab.query("package_box_sn = '" + vehicleCode + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonSub)) {
|
||||
throw new BadRequestException("未查询到该木箱对应的包装关系!");
|
||||
}
|
||||
|
||||
// 2.找相同订单号的所有排
|
||||
jsonSub.put("region_id", RegionTypeEnum.TWO_FH01.getId());
|
||||
List<JSONObject> pointLikeOrder = schBasePointMapper.queryLikeOrderRow(jsonSub);
|
||||
@@ -99,7 +96,7 @@ public class SendOutManageServiceImpl implements SendOutManageService {
|
||||
ObjectUtil.isEmpty(row.getVehicle_code()) &&
|
||||
row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
)
|
||||
.sorted(Comparator.comparing(SchBasePoint::getOut_order_seq))
|
||||
.sorted(Comparator.comparing(SchBasePoint::getIn_order_seq))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
joArr.addAll(rowPointList);
|
||||
@@ -122,19 +119,17 @@ public class SendOutManageServiceImpl implements SendOutManageService {
|
||||
ObjectUtil.isEmpty(row.getVehicle_code()) &&
|
||||
row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
)
|
||||
.sorted(Comparator.comparing(SchBasePoint::getOut_order_seq))
|
||||
.sorted(Comparator.comparing(SchBasePoint::getIn_order_seq))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (rowPointList.size() == 4) {
|
||||
JSONObject jsonNewRow = JSONObject.parseObject(JSON.toJSONString(rowPointList.get(0)));
|
||||
JSONObject jsonNewRow = JSONObject.parseObject(JSON.toJSONString(rowPointList.get(0)));
|
||||
|
||||
if (cutConveyorTask.isSingleTask(jsonNewRow.getString("point_code"))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
point_code = jsonNewRow.getString("point_code");
|
||||
break;
|
||||
if (cutConveyorTask.isSingleTask(jsonNewRow.getString("point_code"))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
point_code = jsonNewRow.getString("point_code");
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
// 校验此货位是否被堵住:1.如果被堵住则判断下一个是否被堵住 2.如果全部被堵住则新开一排
|
||||
@@ -178,19 +173,17 @@ public class SendOutManageServiceImpl implements SendOutManageService {
|
||||
ObjectUtil.isEmpty(row.getVehicle_code()) &&
|
||||
row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
)
|
||||
.sorted(Comparator.comparing(SchBasePoint::getOut_order_seq))
|
||||
.sorted(Comparator.comparing(SchBasePoint::getIn_order_seq))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (rowPointList.size() == 4) {
|
||||
JSONObject jsonNewRow = JSONObject.parseObject(JSON.toJSONString(rowPointList.get(0)));
|
||||
JSONObject jsonNewRow = JSONObject.parseObject(JSON.toJSONString(rowPointList.get(0)));
|
||||
|
||||
if (cutConveyorTask.isSingleTask(jsonNewRow.getString("point_code"))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
point_code = jsonNewRow.getString("point_code");
|
||||
break;
|
||||
if (cutConveyorTask.isSingleTask(jsonNewRow.getString("point_code"))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
point_code = jsonNewRow.getString("point_code");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,8 +193,8 @@ public class SendOutManageServiceImpl implements SendOutManageService {
|
||||
//创建任务
|
||||
JSONObject task_jo = new JSONObject();
|
||||
task_jo.put("point_code1", whereJson.getString("device_code"));
|
||||
task_jo.put("point_code2", "CK2023");
|
||||
task_jo.put("vehicle_code", whereJson.getString("vehicle_code"));
|
||||
task_jo.put("point_code2", point_code);
|
||||
task_jo.put("vehicle_code", vehicleCode);
|
||||
task_jo.put("task_type", "010708");
|
||||
TwoSendOutTask taskBean = new TwoSendOutTask();
|
||||
taskBean.createTask(task_jo);
|
||||
@@ -209,12 +202,260 @@ public class SendOutManageServiceImpl implements SendOutManageService {
|
||||
// 锁住点位
|
||||
ischBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, "CK2023")
|
||||
.eq(SchBasePoint::getPoint_code, point_code)
|
||||
.set(SchBasePoint::getLock_type, IOSEnum.LOCK_TYPE.code("其它"))
|
||||
.set(SchBasePoint::getVehicle_code, whereJson.getString("vehicle_code"))
|
||||
.set(SchBasePoint::getVehicle_code, vehicleCode)
|
||||
);
|
||||
|
||||
// 删除载具对应木箱记录
|
||||
//extTab.delete(jsonExt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createSendOutTaskOne(JSONObject whereJson) {
|
||||
// 子卷包装关系表
|
||||
WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation");
|
||||
// 载具扩展属性表
|
||||
WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
|
||||
/*
|
||||
* 1.找相同订单号的木箱
|
||||
* 1)有相同订单号有空位的:相同订单号的放在一排
|
||||
* 2)没有相同订单号的:新开一排
|
||||
* 3)有相同订单号的但是没有空位:新开一排
|
||||
*/
|
||||
CutConveyorTask cutConveyorTask = new CutConveyorTask();
|
||||
|
||||
// 所有发货区点位
|
||||
List<SchBasePoint> pointDaoList = ischBasePointService.list(
|
||||
new QueryWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getRegion_id, RegionTypeEnum.TWO_FH01.getId())
|
||||
.eq(SchBasePoint::getIs_used, IOSEnum.IS_NOTANDYES.code("是"))
|
||||
.eq(SchBasePoint::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
|
||||
);
|
||||
|
||||
//木箱号可能用逗号隔开
|
||||
String vehicleCode = Arrays.asList(whereJson.getString("vehicle_code").split(",")).get(0);
|
||||
JSONObject jsonSub = subTab.query("package_box_sn = '" + vehicleCode + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonSub)) {
|
||||
throw new BadRequestException("未查询到该木箱对应的包装关系!");
|
||||
}
|
||||
|
||||
// 2.找相同订单号的所有排
|
||||
jsonSub.put("region_id", RegionTypeEnum.TWO_FH01.getId());
|
||||
List<JSONObject> pointLikeOrder = schBasePointMapper.queryLikeOrderRow(jsonSub);
|
||||
|
||||
// 3.找相同订单号的所在排的所有空位
|
||||
String point_code = "";
|
||||
List<SchBasePoint> joArr = new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < pointLikeOrder.size(); i++) {
|
||||
JSONObject json = pointLikeOrder.get(i);
|
||||
|
||||
// 过滤此排的空位
|
||||
List<SchBasePoint> rowPointList = pointDaoList.stream()
|
||||
.filter(row -> row.getRow_num().toString().equals(json.getString("row_num")) &&
|
||||
ObjectUtil.isEmpty(row.getVehicle_code()) &&
|
||||
row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
)
|
||||
.sorted(Comparator.comparing(SchBasePoint::getIn_order_seq))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
joArr.addAll(rowPointList);
|
||||
}
|
||||
|
||||
if (ObjectUtil.isEmpty(joArr)) {
|
||||
//查询新的一排
|
||||
List<JSONObject> newRowPointList = schBasePointMapper.queryNewRow(jsonSub);
|
||||
|
||||
if (ObjectUtil.isEmpty(newRowPointList)) {
|
||||
throw new BadRequestException("未查询到相同销售订单的放货区点位或空的一排!");
|
||||
}
|
||||
|
||||
for (int i = 0; i < newRowPointList.size(); i++) {
|
||||
JSONObject json = newRowPointList.get(i);
|
||||
|
||||
// 找出这一排的所有空位
|
||||
List<SchBasePoint> rowPointList = pointDaoList.stream()
|
||||
.filter(row -> row.getRow_num().toString().equals(json.getString("row_num")) &&
|
||||
ObjectUtil.isEmpty(row.getVehicle_code()) &&
|
||||
row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
)
|
||||
.sorted(Comparator.comparing(SchBasePoint::getIn_order_seq))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
JSONObject jsonNewRow = JSONObject.parseObject(JSON.toJSONString(rowPointList.get(0)));
|
||||
|
||||
if (cutConveyorTask.isSingleTask(jsonNewRow.getString("point_code"))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
point_code = jsonNewRow.getString("point_code");
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
// 校验此货位是否被堵住:1.如果被堵住则判断下一个是否被堵住 2.如果全部被堵住则新开一排
|
||||
for (int i = 0; i < joArr.size(); i++) {
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(joArr.get(i)));
|
||||
|
||||
// 判断是否被挡住
|
||||
JSONObject paramJson = new JSONObject();
|
||||
paramJson.put("point_code", json.getString("point_code"));
|
||||
paramJson.put("region_id", RegionTypeEnum.TWO_FH01.getId());
|
||||
List<JSONObject> isBlock = schBasePointMapper.isBlock(paramJson);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(isBlock)) {
|
||||
// 堵住则判断下一个
|
||||
continue;
|
||||
} else {
|
||||
if (cutConveyorTask.isSingleTask(json.getString("point_code"))) {
|
||||
continue;
|
||||
}
|
||||
// 未堵住: 跳出循环
|
||||
point_code = json.getString("point_code");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (ObjectUtil.isEmpty(point_code)) {
|
||||
//查询新的一排
|
||||
List<JSONObject> newRowPointList = schBasePointMapper.queryNewRow(jsonSub);
|
||||
|
||||
if (ObjectUtil.isEmpty(newRowPointList)) {
|
||||
throw new BadRequestException("未查询到相同销售订单的放货区点位或空的一排!");
|
||||
}
|
||||
|
||||
for (int i = 0; i < newRowPointList.size(); i++) {
|
||||
JSONObject json = newRowPointList.get(i);
|
||||
|
||||
// 找出这一排的所有空位
|
||||
List<SchBasePoint> rowPointList = pointDaoList.stream()
|
||||
.filter(row -> row.getRow_num().toString().equals(json.getString("row_num")) &&
|
||||
ObjectUtil.isEmpty(row.getVehicle_code()) &&
|
||||
row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
)
|
||||
.sorted(Comparator.comparing(SchBasePoint::getIn_order_seq))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
JSONObject jsonNewRow = JSONObject.parseObject(JSON.toJSONString(rowPointList.get(0)));
|
||||
|
||||
if (cutConveyorTask.isSingleTask(jsonNewRow.getString("point_code"))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
point_code = jsonNewRow.getString("point_code");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (ObjectUtil.isEmpty(point_code)) {
|
||||
throw new BadRequestException("未查询到相同销售订单的放货区点位或空的一排!");
|
||||
}
|
||||
|
||||
//创建任务
|
||||
JSONObject task_jo = new JSONObject();
|
||||
task_jo.put("point_code1", whereJson.getString("device_code"));
|
||||
// 根据此排找到对应的等待点
|
||||
String finalPoint_code = point_code;
|
||||
SchBasePoint schBasePoint = pointDaoList.stream()
|
||||
.filter(row -> row.getPoint_code().equals(finalPoint_code))
|
||||
.findFirst().orElse(null);
|
||||
String code = IOSEnum.OUT_FH_POINT.code(schBasePoint.getRow_num().toString());
|
||||
|
||||
task_jo.put("point_code2", code);
|
||||
task_jo.put("point_code4", point_code);
|
||||
task_jo.put("vehicle_code", vehicleCode);
|
||||
task_jo.put("task_type", "010708");
|
||||
TwoSendOutTask taskBean = new TwoSendOutTask();
|
||||
taskBean.createTask(task_jo);
|
||||
|
||||
// 锁住点位
|
||||
ischBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, point_code)
|
||||
.set(SchBasePoint::getLock_type, IOSEnum.LOCK_TYPE.code("其它"))
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createSendOutTaskTwo(JSONObject whereJson) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
|
||||
// 根据任务号找到第一次申请时的任务
|
||||
JSONObject taskJson = taskTab.query("task_code = '" + whereJson.getString("task_code") + "' AND is_delete = '0'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(taskJson)) {
|
||||
throw new BadRequestException("任务号为:"+ whereJson.getString("task_code")+ "的任务不存在!");
|
||||
}
|
||||
|
||||
String point_code4 = "";
|
||||
|
||||
// 所有发货区点位
|
||||
List<SchBasePoint> pointDaoList = ischBasePointService.list(
|
||||
new QueryWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getRegion_id, RegionTypeEnum.TWO_FH01.getId())
|
||||
.eq(SchBasePoint::getIs_used, IOSEnum.IS_NOTANDYES.code("是"))
|
||||
.eq(SchBasePoint::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
|
||||
);
|
||||
|
||||
SchBasePoint pointDao = pointDaoList.stream()
|
||||
.filter(row -> row.getPoint_code().equals(taskJson.getString("point_code4")))
|
||||
.findFirst().orElse(null);
|
||||
|
||||
// 找出这一排所有空位
|
||||
List<SchBasePoint> rowPointList = pointDaoList.stream()
|
||||
.filter(row -> row.getRow_num().toString().equals(pointDao.getRow_num().toString()) &&
|
||||
ObjectUtil.isEmpty(row.getVehicle_code())
|
||||
)
|
||||
.sorted(Comparator.comparing(SchBasePoint::getIn_order_seq))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 判断是否被堵住
|
||||
for (int i = 0; i < rowPointList.size(); i++) {
|
||||
SchBasePoint json = rowPointList.get(i);
|
||||
|
||||
JSONObject paramJson2 = new JSONObject();
|
||||
paramJson2.put("point_code", json.getPoint_code());
|
||||
paramJson2.put("region_id", RegionTypeEnum.TWO_FH01.getId());
|
||||
List<JSONObject> isBlock2 = schBasePointMapper.isBlock(paramJson2);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(isBlock2)) {
|
||||
continue;
|
||||
|
||||
} else {
|
||||
JSONObject jsonNewRow = JSONObject.parseObject(JSON.toJSONString(json));
|
||||
point_code4 = jsonNewRow.getString("point_code");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (ObjectUtil.isEmpty(point_code4)) {
|
||||
throw new BadRequestException("此排没有空位!"+pointDao.getRow_num());
|
||||
}
|
||||
|
||||
// 判断货位是否是第一次申请的货位
|
||||
if (!point_code4.equals(taskJson.getString("point_code4"))) {
|
||||
// 更新现仓位
|
||||
JSONObject jsonUpdate = new JSONObject();
|
||||
jsonUpdate.put("lock_type", IOSEnum.LOCK_TYPE.code("其它"));
|
||||
pointTab.update(jsonUpdate,"point_code = '"+point_code4+"'");
|
||||
|
||||
// 判断此货位是否是最后一个入库的货位 如果是就解锁: 5 / 9
|
||||
if ("5,9".contains(pointDao.getIn_order_seq().toString())) {
|
||||
// 更新原仓位
|
||||
jsonUpdate.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
|
||||
pointTab.update(jsonUpdate,"point_code = '"+taskJson.getString("point_code4")+"'");
|
||||
}
|
||||
}
|
||||
|
||||
// 更新当前点位终点
|
||||
taskJson.put("point_code2", point_code4);
|
||||
taskJson.put("point_code4", "");
|
||||
taskTab.update(taskJson);
|
||||
|
||||
// 返回点位
|
||||
return point_code4;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,4 +21,23 @@ public interface SendOutManageService {
|
||||
*/
|
||||
void createSendOutTask(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 创建发货任务 - 到等待点
|
||||
* @param whereJson {
|
||||
* device_code:起点
|
||||
* vehicle_code: 载具号
|
||||
* }
|
||||
*/
|
||||
void createSendOutTaskOne(JSONObject whereJson);
|
||||
|
||||
|
||||
/**
|
||||
* 创建发货任务 等待点 - 具体点位
|
||||
* @param whereJson {
|
||||
* task_code:任务号(第一次申请时下发的任务号)
|
||||
* }
|
||||
* @return 新点位
|
||||
*/
|
||||
String createSendOutTaskTwo(JSONObject whereJson);
|
||||
|
||||
}
|
||||
|
||||
@@ -129,7 +129,12 @@ public class StoragevehicleinfoServiceImpl implements StoragevehicleinfoService
|
||||
code = "VEHICLE_CODE_GXTP";
|
||||
break;
|
||||
case "0003":
|
||||
code = "VEHICLE_CODE_LK";
|
||||
if (class_jo.getString("class_code").equals("000301")){
|
||||
code = "VEHICLE_CODE_LK";
|
||||
}
|
||||
if (class_jo.getString("class_code").equals("000302")){
|
||||
code = "VEHICLE_CODE_LKB";
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -1943,21 +1943,27 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public JSONObject applySendOutTwo(JSONObject whereJson) {
|
||||
log.info("applySendOutTwo输入参数:---------------------------------------------" + whereJson.toString());
|
||||
|
||||
// 校验
|
||||
if (ObjectUtil.isEmpty(whereJson.getString("device_code"))) {
|
||||
throw new BadRequestException("设备号不能为空!");
|
||||
}
|
||||
|
||||
if (ObjectUtil.isEmpty(whereJson.getString("vehicle_code"))) {
|
||||
throw new BadRequestException("载具号不能为空!");
|
||||
}
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
try {
|
||||
// 调用服务
|
||||
sendOutManageService.createSendOutTask(whereJson);
|
||||
|
||||
try{
|
||||
// 校验是否是二次分配
|
||||
if (ObjectUtil.isEmpty(whereJson.getString("task_code"))) {
|
||||
// 第一次申请
|
||||
if (ObjectUtil.isEmpty(whereJson.getString("device_code"))) {
|
||||
throw new BadRequestException("设备号不能为空!");
|
||||
}
|
||||
|
||||
if (ObjectUtil.isEmpty(whereJson.getString("vehicle_code"))) {
|
||||
throw new BadRequestException("载具号不能为空!");
|
||||
}
|
||||
|
||||
// 调用服务
|
||||
sendOutManageService.createSendOutTaskOne(whereJson);
|
||||
} else {
|
||||
// 第二次申请
|
||||
String point_code = sendOutManageService.createSendOutTaskTwo(whereJson);
|
||||
result.put("data", point_code);
|
||||
}
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "下发成功!");
|
||||
return result;
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
package org.nl.wms.ext.mes.rest;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.logging.annotation.Log;
|
||||
import org.nl.wms.ext.mes.service.LmsToMesService;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
|
||||
@RequestMapping("/CamstarApi")
|
||||
@Slf4j
|
||||
public class BLmsToMesController {
|
||||
private final LmsToMesService lmsToMesService;
|
||||
|
||||
@PostMapping("/momAutoTransterMoveIn")
|
||||
@Log("表处、分切上料反馈接口")
|
||||
public ResponseEntity<Object> momAutoTransterMoveIn(@RequestBody JSONObject jo) {
|
||||
return new ResponseEntity<>(lmsToMesService.momAutoTransterMoveIn(jo), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/momGetPackingInfo")
|
||||
@Log("LMS通过木箱号调用木箱信息")
|
||||
public ResponseEntity<Object> momGetPackingInfo(@RequestBody JSONObject jo) {
|
||||
return new ResponseEntity<>(lmsToMesService.momGetPackingInfo(jo), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/momBoxPackageSubmit")
|
||||
@Log("LMS装箱完成传MES包装关系")
|
||||
public ResponseEntity<Object> momBoxPackageSubmit(@RequestBody JSONObject jo) {
|
||||
return new ResponseEntity<>(lmsToMesService.momBoxPackageSubmit(jo), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
@@ -135,4 +135,10 @@ public interface LmsToMesService {
|
||||
* }
|
||||
*/
|
||||
JSONObject ChildScrapUpdate(JSONObject jo);
|
||||
|
||||
JSONObject momAutoTransterMoveIn(JSONObject jo);
|
||||
|
||||
JSONObject momGetPackingInfo(JSONObject jo);
|
||||
|
||||
JSONObject momBoxPackageSubmit(JSONObject jo);
|
||||
}
|
||||
|
||||
@@ -700,4 +700,52 @@ public class LmsToMesServiceImpl implements LmsToMesService {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject momAutoTransterMoveIn(JSONObject param){ return null;} /*{
|
||||
String from_area = param.getString("from_area");
|
||||
String to_area = param.getString("to_area");
|
||||
String container_name = param.getString("container_name");
|
||||
|
||||
|
||||
log.info("momAutoTransterMoveIn接口输入参数为:-------------------" + param.toString());
|
||||
|
||||
String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_URL").getValue();
|
||||
String api = "CamstarApi/momAutoTransterMoveIn";
|
||||
url = url + api;
|
||||
|
||||
String UserName = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_USERNAME").getValue();
|
||||
String Password = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_PASSWORD").getValue();
|
||||
param.put("UserName", UserName);
|
||||
param.put("Password", Password);
|
||||
|
||||
try {
|
||||
String resultMsg = HttpRequest.post(url)
|
||||
.body(String.valueOf(param))
|
||||
.execute().body();
|
||||
result = JSONObject.parseObject(resultMsg);
|
||||
log.info("LMSPackakge接口输出参数为:-------------------" + result.toString());
|
||||
|
||||
|
||||
String RTYPE = result.getString("RTYPE");
|
||||
if ("E".equals(RTYPE)) {
|
||||
throw new BadRequestException(result.getString("RTMSG"));
|
||||
}
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
throw new BadRequestException("MES提示错误:" + e.getMessage());
|
||||
}
|
||||
return result;
|
||||
}*/
|
||||
|
||||
@Override
|
||||
public JSONObject momGetPackingInfo(JSONObject jo) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject momBoxPackageSubmit(JSONObject jo) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user