add:acstolms 接口

This commit is contained in:
2024-02-22 19:11:38 +08:00
parent 64e3d286cc
commit 621fe7362e
13 changed files with 600 additions and 10 deletions

View File

@@ -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("取消"));
}
}

View File

@@ -34,7 +34,7 @@ public class BstIvtBoxinfoServiceImpl extends ServiceImpl<BstIvtBoxinfoMapper, B
.insert_time(DateUtil.now())
.build();
//TODO 根据木箱规格判断木箱的捆扎次数
//TODO 根据木箱规格判断木箱的捆扎次数(定义规则)
// 截取子卷号
String description = whereJson.getString("Description");

View File

@@ -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;

View File

@@ -107,7 +107,7 @@ public interface IStIvtIostorinvService extends IService<StIvtIostorinv> {
* checked是否自动分类true、false -- 用不到
* }
*/
void setPoint(Map whereJson);
String setPoint(Map whereJson);
/**
* 下发任务

View File

@@ -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"));

View File

@@ -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 {

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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;
}
}

View File

@@ -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);
}
}