add:acstolms 接口
This commit is contained in:
@@ -0,0 +1,169 @@
|
||||
package org.nl.b_lms.sch.tasks;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
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.wms.sch.AcsTaskDto;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 二期空托盘出库任务类
|
||||
* Created by Lxy on 2024/1/19.
|
||||
*/
|
||||
public class TwoEmpExcepTask extends AbstractAcsTask {
|
||||
|
||||
/**
|
||||
* 处理类
|
||||
*/
|
||||
private final String THIS_CLASS = TwoEmpExcepTask.class.getName();
|
||||
|
||||
@Override
|
||||
public List<AcsTaskDto> addTask() {
|
||||
/*
|
||||
* 下发给ACS时需要特殊处理
|
||||
*/
|
||||
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<>();
|
||||
for (int i = 0; i < arr.size(); i++) {
|
||||
JSONObject json = arr.getJSONObject(i);
|
||||
|
||||
char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1);
|
||||
AcsTaskDto dto = AcsTaskDto.builder()
|
||||
.ext_task_id(json.getString("task_id"))
|
||||
.task_code(json.getString("task_code"))
|
||||
.task_type(json.getString("acs_task_type"))
|
||||
.start_device_code(json.getString("point_code1"))
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
.vehicle_code(json.getString("vehicle_code"))
|
||||
.priority(json.getString("priority"))
|
||||
.class_type(json.getString("task_type"))
|
||||
.dtl_type(String.valueOf(dtl_type))
|
||||
.remark(json.getString("remark"))
|
||||
.build();
|
||||
resultList.add(dto);
|
||||
}
|
||||
return resultList;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskStatus(JSONObject taskObj, String status) {
|
||||
|
||||
// 更新任务的参数
|
||||
JSONObject map = new JSONObject();
|
||||
|
||||
/*
|
||||
* 1-执行中, 2-完成 ,0-acs取消
|
||||
*/
|
||||
// 执行中
|
||||
if (status.equals(TaskStatusEnum.EXECUTING.getCode())) {
|
||||
|
||||
map.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
||||
}
|
||||
|
||||
// 完成
|
||||
if (status.equals(TaskStatusEnum.FINISHED.getCode())) {
|
||||
|
||||
map.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
|
||||
}
|
||||
|
||||
// 取消
|
||||
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
||||
|
||||
if (taskObj.getIntValue("task_status") > Integer.valueOf(TaskStatusEnum.ISSUE.getCode())) {
|
||||
throw new BadRequestException("任务已执行不能取消");
|
||||
}
|
||||
|
||||
// 更新任务表删除字段
|
||||
map.put("is_delete", IOSEnum.IS_NOTANDYES.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") + "'");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findStartPoint() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findNextPoint() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String createTask(JSONObject form) {
|
||||
|
||||
if (StrUtil.isBlank(form.getString("task_type"))) {
|
||||
throw new BadRequestException("业务类型不能为空!");
|
||||
}
|
||||
|
||||
if (StrUtil.isBlank(form.getString("start_device_code"))) {
|
||||
throw new BadRequestException("起点不能为空!");
|
||||
}
|
||||
|
||||
if (StrUtil.isBlank(form.getString("next_device_code"))) {
|
||||
throw new BadRequestException("终点不能为空!");
|
||||
}
|
||||
|
||||
if (StrUtil.isBlank(form.getString("vehicle_code"))) {
|
||||
throw new BadRequestException("托盘号不能为空!");
|
||||
}
|
||||
|
||||
if (StrUtil.isBlank(form.getString("vehicle_type"))) {
|
||||
throw new BadRequestException("托盘类型不能为空!");
|
||||
}
|
||||
|
||||
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_type", form.getString("vehicle_type"));
|
||||
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("handle_class", this.getClass().getName());
|
||||
json.put("create_id", SecurityUtils.getCurrentUserId());
|
||||
json.put("create_name", SecurityUtils.getCurrentUsername());
|
||||
json.put("create_time", DateUtil.now());
|
||||
json.put("priority", "1");
|
||||
json.put("acs_task_type", "7");
|
||||
|
||||
WQLObject.getWQLObject("SCH_BASE_Task").insert(json);
|
||||
// 下发任务
|
||||
this.immediateNotifyAcs(null);
|
||||
return json.getString("task_id");
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void forceFinish(String task_id) {
|
||||
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_id) {
|
||||
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
this.updateTaskStatus(taskObj, IOSEnum.ACS_RESULT.code("取消"));
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,7 @@ public class BstIvtBoxinfoServiceImpl extends ServiceImpl<BstIvtBoxinfoMapper, B
|
||||
.insert_time(DateUtil.now())
|
||||
.build();
|
||||
|
||||
//TODO 根据木箱规格判断木箱的捆扎次数
|
||||
//TODO 根据木箱规格判断木箱的捆扎次数(定义规则)
|
||||
|
||||
// 截取子卷号
|
||||
String description = whereJson.getString("Description");
|
||||
|
||||
@@ -76,6 +76,9 @@ public enum IOSEnum {
|
||||
//库区类型
|
||||
SECT_TYPE(MapOf.of("主存区", "00","暂存区","01","虚拟区","09")),
|
||||
|
||||
//库区
|
||||
SECT_ID(MapOf.of("二期主存区", "1748219897940414464")),
|
||||
|
||||
//库存变动类型
|
||||
IVT_CHANGE(MapOf.of("加待入", "31","加库存","33","减待入","32","加冻结","11","减冻结","12","减库存","21")),
|
||||
|
||||
@@ -87,6 +90,9 @@ public enum IOSEnum {
|
||||
|
||||
//外部系统
|
||||
EXT_SYSTEM(MapOf.of("mes", "mes","sap","sap","crm","crm")),
|
||||
|
||||
//acs申请任务
|
||||
ACSTOLMS_TYPE(MapOf.of("成品入库任务", "1","空盘入库","2","空盘出库","3","异常处理位","4","贴标","1","捆扎","2")),
|
||||
;
|
||||
|
||||
private Map<String, String> code;
|
||||
|
||||
@@ -107,7 +107,7 @@ public interface IStIvtIostorinvService extends IService<StIvtIostorinv> {
|
||||
* checked:是否自动分类(true、false) -- 用不到
|
||||
* }
|
||||
*/
|
||||
void setPoint(Map whereJson);
|
||||
String setPoint(Map whereJson);
|
||||
|
||||
/**
|
||||
* 下发任务
|
||||
|
||||
@@ -351,6 +351,34 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
|
||||
mst.setDis_optname(SecurityUtils.getCurrentNickName());
|
||||
mst.setDis_time(DateUtil.now());
|
||||
this.updateById(mst);
|
||||
|
||||
// 判断是否自动下发任务
|
||||
if (jsonObject.getString("is_send").equals(IOSEnum.IS_NOTANDYES.code("是")) && ObjectUtil.isNotEmpty(jsonObject.getString("is_send"))) {
|
||||
JSONObject jsonSend = new JSONObject();
|
||||
|
||||
StIvtIostorinvdtl dtlDao = iStIvtIostorinvdtlService.list(
|
||||
new QueryWrapper<StIvtIostorinvdtl>().lambda()
|
||||
.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))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
jsonSend.put("dtl_row",JSONObject.parseObject(JSON.toJSONString(dtlDao)));
|
||||
jsonSend.put("tableMater", disList);
|
||||
jsonSend.put("point_code", jsonObject.getString("point_code"));
|
||||
jsonSend.put("stor_id", mst.getStor_id());
|
||||
|
||||
String task_id1 = this.setPoint(jsonSend);
|
||||
|
||||
// 下发任务
|
||||
JSONObject sendJson = new JSONObject();
|
||||
sendJson.put("task_id",task_id1);
|
||||
this.reIssueTask(sendJson);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -423,7 +451,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void setPoint(Map whereJson) {
|
||||
public String setPoint(Map whereJson) {
|
||||
|
||||
// 分配明细集合
|
||||
ArrayList<HashMap> list = (ArrayList<HashMap>) whereJson.get("tableMater");
|
||||
@@ -445,7 +473,6 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
|
||||
|
||||
// 创建任务
|
||||
JSONObject jsonTaskParam = new JSONObject();
|
||||
// TODO 任务类型
|
||||
jsonTaskParam.put("task_type", "010501");
|
||||
jsonTaskParam.put("start_device_code", pointDto.getPoint_code());
|
||||
jsonTaskParam.put("next_device_code", jsonDis.getString("struct_code"));
|
||||
@@ -465,6 +492,8 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
|
||||
.eq(StIvtIostorinvdis::getIostorinv_id, mstDao.getIostorinv_id())
|
||||
.eq(StIvtIostorinvdis::getStruct_code, jsonDis.getString("struct_code"))
|
||||
);
|
||||
|
||||
return task_id;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -494,7 +523,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
|
||||
//更新任务为下发
|
||||
JSONObject task_map = new JSONObject();
|
||||
task_map.put("task_id", task_id);
|
||||
task.updateTaskStatus(task_map, TaskStatusEnum.EXECUTING.getCode());
|
||||
task.updateTaskStatus(task_map, TaskStatusEnum.ISSUE.getCode());
|
||||
|
||||
} else {
|
||||
throw new BadRequestException("任务下发失败:" + result.getString("message"));
|
||||
|
||||
@@ -1,14 +1,24 @@
|
||||
package org.nl.b_lms.storage_manage.ios.service.iostorInv.util.impl;
|
||||
|
||||
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.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvService;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdisService;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdtlService;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinv;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdis;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdtl;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InBussManageService;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -27,6 +37,15 @@ import java.util.stream.Collectors;
|
||||
@Service
|
||||
public class InBussManageServiceImpl implements InBussManageService {
|
||||
|
||||
@Autowired
|
||||
private IStIvtIostorinvService iStIvtIostorinvService;
|
||||
|
||||
@Autowired
|
||||
private IStIvtIostorinvdtlService iStIvtIostorinvdtlService;
|
||||
|
||||
@Autowired
|
||||
private IStIvtIostorinvdisService iStIvtIostorinvdisService;
|
||||
|
||||
/**
|
||||
* 不需要查询的排集合
|
||||
*/
|
||||
@@ -157,6 +176,97 @@ public class InBussManageServiceImpl implements InBussManageService {
|
||||
return jsonAttr;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void inTask(JSONObject jsonObject) {
|
||||
// 子卷包装关系表
|
||||
WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation");
|
||||
|
||||
// 处理子卷号
|
||||
String material_barcode = jsonObject.getString("material_barcode");
|
||||
|
||||
if (ObjectUtil.isEmpty(material_barcode)) {
|
||||
throw new BadRequestException("子卷号不能为空!");
|
||||
}
|
||||
|
||||
if (ObjectUtil.isEmpty(jsonObject.getString("device_code"))) {
|
||||
throw new BadRequestException("设备号不能为空!");
|
||||
}
|
||||
|
||||
List<String> pcsnList = Arrays.asList(material_barcode.split(","));
|
||||
|
||||
// 查询子卷包装关系
|
||||
List<JSONObject> subList = subTab.query("container_name in ('"+String.join("','", pcsnList)+"') and status = '0'")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
|
||||
if (ObjectUtil.isEmpty(subList)) {
|
||||
throw new BadRequestException("未查询到子卷包装信息!");
|
||||
}
|
||||
|
||||
// 主表
|
||||
JSONObject mst = new JSONObject();
|
||||
mst.put("stor_id", IOSEnum.STOR_ID.code("二期"));
|
||||
mst.put("bill_status", IOSEnum.BILL_STATUS.code("生成"));
|
||||
mst.put("total_qty", subList.stream().map(row -> row.getDoubleValue("net_weight")).reduce(Double::sum).orElse(0.00));
|
||||
mst.put("detail_count", subList.size());
|
||||
mst.put("bill_type", IOSEnum.IN_TYPE.code("生产入库"));
|
||||
mst.put("biz_date", DateUtil.today());
|
||||
mst.put("remark", "");
|
||||
|
||||
// 明细
|
||||
ArrayList<LinkedHashMap> tableData = new ArrayList<>();
|
||||
for (int i = 0; i < subList.size(); i++) {
|
||||
JSONObject json = subList.get(i);
|
||||
|
||||
LinkedHashMap<String, Object> jsonDtl = new LinkedHashMap<>();
|
||||
|
||||
jsonDtl.put("package_box_sn", json.getString("package_box_sn"));
|
||||
jsonDtl.put("thickness", json.getString("thickness"));
|
||||
jsonDtl.put("plan_qty", json.getString("net_weight"));
|
||||
jsonDtl.put("customer_description", json.getString("customer_description"));
|
||||
jsonDtl.put("quanlity_in_box", json.getString("quanlity_in_box"));
|
||||
jsonDtl.put("product_name", json.getString("product_name"));
|
||||
jsonDtl.put("net_weight", json.getString("net_weight"));
|
||||
jsonDtl.put("container_name", json.getString("container_name"));
|
||||
jsonDtl.put("width", json.getString("width"));
|
||||
jsonDtl.put("sap_pcsn", json.getString("sap_pcsn"));
|
||||
jsonDtl.put("customer_name", json.getString("customer_name"));
|
||||
jsonDtl.put("sale_order_name", json.getString("sale_order_name"));
|
||||
jsonDtl.put("product_description", json.getString("product_description"));
|
||||
jsonDtl.put("quality_scode", IOSEnum.QUALITY_SCODE.code("合格品"));
|
||||
jsonDtl.put("is_active", IOSEnum.IS_SEND.code("是"));
|
||||
tableData.add(jsonDtl);
|
||||
}
|
||||
mst.put("tableData",tableData);
|
||||
|
||||
// 调用服务创建
|
||||
String iostorinv_id = iStIvtIostorinvService.insertMst(mst);
|
||||
|
||||
// 调用分配货位并下发
|
||||
JSONObject jsonDiv = new JSONObject();
|
||||
|
||||
StIvtIostorinvdtl dtlDao = iStIvtIostorinvdtlService.list(
|
||||
new QueryWrapper<StIvtIostorinvdtl>().lambda()
|
||||
.eq(StIvtIostorinvdtl::getIostorinv_id, iostorinv_id)
|
||||
).get(0);
|
||||
|
||||
List<LinkedHashMap> disList = iStIvtIostorinvdisService.list(
|
||||
new QueryWrapper<StIvtIostorinvdis>().lambda()
|
||||
.eq(StIvtIostorinvdis::getIostorinv_id, iostorinv_id)
|
||||
).stream().map(row -> JSONObject.parseObject(JSON.toJSONString(row), LinkedHashMap.class))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
jsonDiv.put("dtl_row",JSONObject.parseObject(JSON.toJSONString(dtlDao)));
|
||||
jsonDiv.put("tableMater", disList);
|
||||
jsonDiv.put("checked", true);
|
||||
jsonDiv.put("is_send", IOSEnum.IS_SEND.code("是"));
|
||||
jsonDiv.put("point_code", jsonObject.getString("device_code"));
|
||||
jsonDiv.put("sect_id", IOSEnum.SECT_ID.code("二期主存区"));
|
||||
jsonDiv.put("stor_id", IOSEnum.STOR_ID.code("二期"));
|
||||
|
||||
iStIvtIostorinvService.divStruct(jsonDiv);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取最小巷道
|
||||
* @param jsonSub {
|
||||
|
||||
@@ -50,13 +50,17 @@ public class SendOutManageServiceImpl implements SendOutManageService {
|
||||
@Override
|
||||
@Transactional
|
||||
public void createSendOutTask(JSONObject whereJson) {
|
||||
// 子卷包装关系表
|
||||
WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation");
|
||||
// 载具扩展属性表
|
||||
WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
|
||||
/*
|
||||
* 1.找相同订单号的木箱
|
||||
* 1)有相同订单号有空位的:相同订单号的放在一排
|
||||
* 2)没有相同订单号的:新开一排
|
||||
* 3)有相同订单号的但是没有空位:新开一排
|
||||
* 1)有相同订单号有空位的:相同订单号的放在一排
|
||||
* 2)没有相同订单号的:新开一排
|
||||
* 3)有相同订单号的但是没有空位:新开一排
|
||||
* 2.删除载具对应木箱记录
|
||||
*/
|
||||
WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation");
|
||||
CutConveyorTask cutConveyorTask = new CutConveyorTask();
|
||||
|
||||
// 所有发货区点位
|
||||
@@ -67,8 +71,14 @@ public class SendOutManageServiceImpl implements SendOutManageService {
|
||||
.eq(SchBasePoint::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
|
||||
);
|
||||
|
||||
// 根据载具号找到对应的木箱号
|
||||
JSONObject jsonExt = extTab.query("storagevehicle_code = '" + whereJson.getString("vehicle_code") + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonExt)) {
|
||||
throw new BadRequestException("此载具上没有木箱,请检查!"+whereJson.getString("vehicle_code"));
|
||||
}
|
||||
|
||||
// 1.查询此木箱号的子卷包装关系
|
||||
JSONObject jsonSub = subTab.query("package_box_sn = '" + whereJson.getString("vehicle_code") + "'").uniqueResult(0);
|
||||
JSONObject jsonSub = subTab.query("package_box_sn = '" + jsonExt.getString("pcsn") + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonSub)) {
|
||||
throw new BadRequestException("未查询到该木箱对应的包装关系!");
|
||||
}
|
||||
@@ -204,5 +214,8 @@ public class SendOutManageServiceImpl implements SendOutManageService {
|
||||
.set(SchBasePoint::getLock_type, IOSEnum.LOCK_TYPE.code("其它"))
|
||||
.set(SchBasePoint::getVehicle_code, whereJson.getString("vehicle_code"))
|
||||
);
|
||||
|
||||
// 删除载具对应木箱记录
|
||||
extTab.delete(jsonExt);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,4 +43,14 @@ public interface InBussManageService {
|
||||
*/
|
||||
JSONObject getOneStruct(JSONObject jsonObject);
|
||||
|
||||
/**
|
||||
* 申请入库任务
|
||||
* @param jsonObject {
|
||||
* device_code: 起点
|
||||
* vehicle_code: 载具号
|
||||
* material_barcode: 子卷号: a,b,c
|
||||
* }
|
||||
*/
|
||||
void inTask(JSONObject jsonObject);
|
||||
|
||||
}
|
||||
|
||||
@@ -149,5 +149,26 @@ public class AcsToWmsController {
|
||||
return new ResponseEntity<>(acsToWmsService.sendProductToFirstFloor(json), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/applyTwo")
|
||||
@Log(value = "二期入库申请任务", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> applyTwo(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(acsToWmsService.applyTwo(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/applySendOutTwo")
|
||||
@Log(value = "二期发货申请任务", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> applySendOutTwo(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(acsToWmsService.applySendOutTwo(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/deviceApplyTwo")
|
||||
@Log(value = "二期发货申请捆扎、贴标", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> deviceApplyTwo(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(acsToWmsService.deviceApplyTwo(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -121,4 +121,38 @@ public interface AcsToWmsService {
|
||||
JSONObject sendProductToFirstFloor(JSONObject whereJson);
|
||||
|
||||
|
||||
/**
|
||||
* 二期入库任务申请
|
||||
* @param whereJson {
|
||||
* type:任务类型(1-成品入库任务 2-空盘入库 3-空盘出库 4-异常处理位)
|
||||
* device_code:设备号
|
||||
* vehicle_code:载具号
|
||||
* material_barcode:子卷编码(a,b,c)
|
||||
* container_type:托盘类型(1-小托盘 2-大托盘)
|
||||
*
|
||||
* }
|
||||
* @return JSONObject 反馈状态
|
||||
*/
|
||||
JSONObject applyTwo(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 二期发货申请任务
|
||||
* @param whereJson {
|
||||
* device_code: 设备号
|
||||
* vehicle_code: 载具号
|
||||
* }
|
||||
* @return JSONObject: 反馈状态
|
||||
*/
|
||||
JSONObject applySendOutTwo(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 二期申请捆扎、贴标
|
||||
* @param whereJson {
|
||||
* device_code: 设备号
|
||||
* vehicle_code: 载具号
|
||||
* type: 任务类型(1-贴标 2-捆扎)
|
||||
* }
|
||||
* @return
|
||||
*/
|
||||
JSONObject deviceApplyTwo(JSONObject whereJson);
|
||||
}
|
||||
|
||||
@@ -27,7 +27,13 @@ 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.task.service.IschBaseTaskService;
|
||||
import org.nl.b_lms.sch.task.service.impl.SchBaseTaskServiceImpl;
|
||||
import org.nl.b_lms.sch.tasks.TwoEmpExcepTask;
|
||||
import org.nl.b_lms.sch.tasks.packingArea.MzhcwTask;
|
||||
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InBussManageService;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InVehicleManageService;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.OutVehicleManageService;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.SendOutManageService;
|
||||
import org.nl.common.enums.PackageInfoIvtEnum;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
@@ -86,6 +92,25 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
|
||||
private final ISysNoticeService noticeService;
|
||||
|
||||
/**
|
||||
* 入库处理类服务
|
||||
*/
|
||||
private final InBussManageService inBussManageService;
|
||||
|
||||
/**
|
||||
* 空载具入库处理服务
|
||||
*/
|
||||
private final InVehicleManageService inVehicleManageService;
|
||||
|
||||
/**
|
||||
* 空载具出库处理服务
|
||||
*/
|
||||
private final OutVehicleManageService outVehicleManageService;
|
||||
|
||||
/**
|
||||
* 发货处理服务
|
||||
*/
|
||||
private final SendOutManageService sendOutManageService;
|
||||
|
||||
@Resource
|
||||
private IschBaseTaskService taskService;
|
||||
@@ -1756,4 +1781,165 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@SneakyThrows
|
||||
public JSONObject applyTwo(JSONObject whereJson) {
|
||||
log.info("applyTwo请求参数:---------------------------------------------" + whereJson.toString());
|
||||
JSONObject result = new JSONObject();
|
||||
|
||||
String type = whereJson.getString("type");
|
||||
RLock lock = redissonClient.getLock("acs_to_wms_two_a:" + type);
|
||||
boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS);
|
||||
|
||||
try {
|
||||
if (tryLock) {
|
||||
// 基础校验
|
||||
if (ObjectUtil.isEmpty(whereJson.getString("device_code"))) {
|
||||
throw new BadRequestException("设备不能为空!");
|
||||
}
|
||||
|
||||
if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("空盘入库")) || type.equals(IOSEnum.ACSTOLMS_TYPE.code("异常处理位"))) {
|
||||
if (ObjectUtil.isEmpty(whereJson.getString("container_type"))) {
|
||||
throw new BadRequestException("载具类型不能为空!");
|
||||
}
|
||||
|
||||
if (ObjectUtil.isEmpty(whereJson.getString("vehicle_code"))) {
|
||||
throw new BadRequestException("载具不能为空!");
|
||||
}
|
||||
}
|
||||
|
||||
// 1-成品入库任务
|
||||
if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("成品入库任务"))) {
|
||||
|
||||
// 调用服务处理
|
||||
if (ObjectUtil.isEmpty(whereJson.getString("material_barcode"))) {
|
||||
throw new BadRequestException("子卷号不能为空!");
|
||||
}
|
||||
|
||||
inBussManageService.inTask(whereJson);
|
||||
|
||||
} else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("空盘入库"))) {
|
||||
|
||||
// 2-空盘入库
|
||||
whereJson.put("vehicle_type",whereJson.getString("container_type"));
|
||||
inVehicleManageService.inVehicle(whereJson);
|
||||
|
||||
} else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("空盘出库"))) {
|
||||
|
||||
// 3-空盘出库
|
||||
if (ObjectUtil.isEmpty(whereJson.getString("container_type"))) {
|
||||
throw new BadRequestException("载具类型不能为空!");
|
||||
}
|
||||
|
||||
whereJson.put("vehicle_type",whereJson.getString("container_type"));
|
||||
outVehicleManageService.outVehicle(whereJson);
|
||||
|
||||
} else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("异常处理位"))) {
|
||||
|
||||
// 4-异常处理
|
||||
JSONObject jsonTaskParam = new JSONObject();
|
||||
jsonTaskParam.put("task_type", "010504");
|
||||
jsonTaskParam.put("start_device_code", whereJson.getString("device_code"));
|
||||
jsonTaskParam.put("next_device_code", "");
|
||||
jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code"));
|
||||
jsonTaskParam.put("vehicle_type", whereJson.getString("container_type"));
|
||||
|
||||
TwoEmpExcepTask taskBean = new TwoEmpExcepTask();
|
||||
taskBean.createTask(jsonTaskParam);
|
||||
}
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "下发成功!");
|
||||
log.info("applyTwo返回参数:---------------------------------------------" + result.toString());
|
||||
return result;
|
||||
}
|
||||
} finally {
|
||||
if (tryLock) {
|
||||
lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
result.put("status", HttpStatus.BAD_REQUEST.value());
|
||||
result.put("message", "申请任务超时!" + type);
|
||||
log.info("applyTwo返回参数:---------------------------------------------" + result.toString());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@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);
|
||||
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "下发成功!");
|
||||
return result;
|
||||
} catch (Exception e) {
|
||||
result.put("status", HttpStatus.BAD_REQUEST.value());
|
||||
result.put("message", e.getMessage());
|
||||
}
|
||||
|
||||
log.info("applySendOutTwo返回参数:---------------------------------------------" + result.toString());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@SneakyThrows
|
||||
public JSONObject deviceApplyTwo(JSONObject whereJson) {
|
||||
log.info("deviceApplyTwo请求参数:---------------------------------------------" + whereJson.toString());
|
||||
JSONObject result = new JSONObject();
|
||||
|
||||
String type = whereJson.getString("type");
|
||||
RLock lock = redissonClient.getLock("acs_to_wms_two_b:" + type);
|
||||
boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS);
|
||||
|
||||
try {
|
||||
if (tryLock) {
|
||||
// 校验
|
||||
if (ObjectUtil.isEmpty(whereJson.getString("device_code"))) {
|
||||
throw new BadRequestException("设备号不能为空!");
|
||||
}
|
||||
|
||||
if (ObjectUtil.isEmpty(whereJson.getString("vehicle_code"))) {
|
||||
throw new BadRequestException("载具号不能为空!");
|
||||
}
|
||||
|
||||
// 1-贴标
|
||||
if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("贴标"))) {
|
||||
|
||||
} else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("贴标"))) {
|
||||
// 2-捆扎
|
||||
}
|
||||
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "下发成功!");
|
||||
log.info("deviceApplyTwo返回参数:---------------------------------------------" + result.toString());
|
||||
return result;
|
||||
}
|
||||
} finally {
|
||||
if (tryLock) {
|
||||
lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
result.put("status", HttpStatus.BAD_REQUEST.value());
|
||||
result.put("message", "申请任务超时!" + type);
|
||||
log.info("deviceApplyTwo返回参数:---------------------------------------------" + result.toString());
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,7 +5,9 @@ import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvOutService;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvService;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.impl.*;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InBussManageService;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.LashManageService;
|
||||
import org.nl.modules.logging.annotation.Log;
|
||||
import org.nl.wms.st.inbill.service.CheckOutBillService;
|
||||
@@ -38,6 +40,8 @@ public class CheckOutBillController {
|
||||
|
||||
private final LashManageService lashManageService;
|
||||
|
||||
private final InBussManageService inBussManageService;
|
||||
|
||||
private final SendOutManageServiceImpl sendOutManageService;
|
||||
|
||||
@GetMapping
|
||||
@@ -409,4 +413,11 @@ public class CheckOutBillController {
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/testIn")
|
||||
@Log("申请入库")
|
||||
public ResponseEntity<Object> testIn(@RequestBody JSONObject whereJson) {
|
||||
inBussManageService.inTask(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -414,6 +414,7 @@ export default {
|
||||
this.divBtn = true
|
||||
this.form.sect_id = this.sect_id
|
||||
this.form.stor_id = this.stor_id
|
||||
this.form.is_send = ''
|
||||
crudRawAssist.divStruct(this.form).then(res => {
|
||||
crudRawAssist.getIODtl({ 'bill_code': this.form.dtl_row.bill_code, 'open_flag': '1' }).then(res => {
|
||||
this.openParam = res
|
||||
|
||||
Reference in New Issue
Block a user