opt:一楼盘点出入库、二楼action->任务
This commit is contained in:
@@ -51,6 +51,13 @@ public class VehicleTwoController {
|
||||
return new ResponseEntity<>(vehicleTwoService.twoVehicleIn(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/inventoryCheckIn")
|
||||
@Log("盘点入库")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> inventoryCheckIn(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(vehicleTwoService.inventoryCheckIn(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/boxIn")
|
||||
@Log("木箱入库")
|
||||
@SaIgnore
|
||||
|
||||
@@ -20,6 +20,17 @@ public interface VehicleTwoService {
|
||||
*/
|
||||
JSONObject twoVehicleIn(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param whereJson {
|
||||
* vehicle_code: 载具号
|
||||
* point_code: 点位
|
||||
* box_no: 木箱号
|
||||
* }
|
||||
* @return :JSONObject:返回前端参数
|
||||
*/
|
||||
JSONObject inventoryCheckIn(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 一楼入库空载具入库
|
||||
* @param whereJson {
|
||||
|
||||
@@ -21,6 +21,7 @@ import org.nl.b_lms.sch.point.service.IschBasePointService;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
|
||||
import org.nl.b_lms.sch.tasks.TwoInEmpExcepTask;
|
||||
import org.nl.b_lms.sch.tasks.boxstack.BoxSSXTask;
|
||||
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
|
||||
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
|
||||
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
|
||||
@@ -32,6 +33,7 @@ import org.nl.b_lms.storage_manage.md.dao.MdPdStorageVehicleInfo;
|
||||
import org.nl.b_lms.storage_manage.md.dao.MdPdStoragevehicleext;
|
||||
import org.nl.b_lms.storage_manage.md.dao.mapper.MdPdStoragevehicleextMapper;
|
||||
import org.nl.b_lms.storage_manage.md.dao.mapper.MdStorageVehicleInfoMapper;
|
||||
import org.nl.b_lms.storage_manage.st.dao.StIvtStructattr;
|
||||
import org.nl.common.enums.SpecEnum;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.common.utils.RedisUtils;
|
||||
@@ -43,6 +45,7 @@ import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.basedata.st.service.StructattrService;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.ext.mes.service.LmsToMesService;
|
||||
import org.nl.wms.sch.manage.AutoSendFeiShu;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -50,10 +53,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@@ -122,6 +122,9 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
|
||||
@Resource
|
||||
private IschBaseTaskService taskService;
|
||||
|
||||
@Autowired
|
||||
private BoxSSXTask boxSSXTask;
|
||||
|
||||
|
||||
/**
|
||||
* 空载具出库处理服务
|
||||
@@ -227,6 +230,107 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public JSONObject inventoryCheckIn(JSONObject whereJson) {
|
||||
JSONObject result = new JSONObject();
|
||||
|
||||
String point_code = whereJson.getString("point_code");
|
||||
|
||||
// 判断起点是否存在
|
||||
SchBasePoint pointDao = ischBasePointService.getOne(
|
||||
new QueryWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, point_code)
|
||||
.eq(SchBasePoint::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
|
||||
.eq(SchBasePoint::getIs_used, IOSEnum.IS_NOTANDYES.code("是"))
|
||||
);
|
||||
|
||||
if (ObjectUtil.isEmpty(pointDao)) {
|
||||
throw new BadRequestException("点位:" + point_code + "不存在或未启用!");
|
||||
}
|
||||
|
||||
int count = taskService.count(new QueryWrapper<SchBaseTask>()
|
||||
.eq("point_code1", point_code)
|
||||
.eq("vehicle_code2", whereJson.getString("vehicle_code"))
|
||||
.eq("is_delete", "0")
|
||||
.lt("task_status", TaskStatusEnum.EXECUTING.getCode()));
|
||||
|
||||
MdPdStorageVehicleInfo mdPdStorageVehicleInfo = mdStorageVehicleInfoMapper.selectOne(new QueryWrapper<MdPdStorageVehicleInfo>().eq("storagevehicle_code", whereJson.getString("vehicle_code")));
|
||||
if (ObjectUtil.isEmpty(mdPdStorageVehicleInfo)) {
|
||||
throw new BadRequestException("载具不存在!");
|
||||
}
|
||||
|
||||
MdPdStoragevehicleext mdPdStoragevehicleext = mdPdStoragevehicleextMapper.selectOne(new QueryWrapper<MdPdStoragevehicleext>().eq("storagevehicle_code", mdPdStorageVehicleInfo.getStoragevehicle_code()));
|
||||
|
||||
if (ObjectUtil.isEmpty(mdPdStoragevehicleext)) {
|
||||
|
||||
MdPdStoragevehicleext mdPdStoragevehicleextInsert = new MdPdStoragevehicleext();
|
||||
mdPdStoragevehicleextInsert.setStoragevehicleext_id(org.nl.common.utils.IdUtil.getStringId());
|
||||
mdPdStoragevehicleextInsert.setStoragevehicle_code(mdPdStorageVehicleInfo.getStoragevehicle_code());
|
||||
mdPdStoragevehicleextInsert.setStoragevehicle_id(mdPdStorageVehicleInfo.getStoragevehicle_id());
|
||||
mdPdStoragevehicleextInsert.setStoragevehicle_type(mdPdStorageVehicleInfo.getStoragevehicle_type());
|
||||
mdPdStoragevehicleextInsert.setPcsn(whereJson.getString("box_no"));
|
||||
mdPdStoragevehicleextInsert.setDevice_uuid(org.nl.common.utils.IdUtil.getLongId());
|
||||
mdPdStoragevehicleextInsert.setUpdate_time(DateUtil.now());
|
||||
mdPdStoragevehicleextInsert.setQty("1");
|
||||
mdPdStoragevehicleextMapper.insert(mdPdStoragevehicleextInsert);
|
||||
|
||||
} else {
|
||||
String pcsn = mdPdStoragevehicleext.getPcsn();
|
||||
if (StringUtils.isNotEmpty(pcsn)) {
|
||||
JSONArray stIvtStructattr = WQLObject.getWQLObject("st_ivt_structattr").query("storagevehicle_code = '" + pcsn + "'").getResultJSONArray(0);
|
||||
if (stIvtStructattr != null && stIvtStructattr.size() > 0) {
|
||||
throw new BadRequestException("当前托盘" + whereJson.getString("vehicle_code") + "已经绑定木箱" + pcsn);
|
||||
}
|
||||
}
|
||||
|
||||
if(StringUtils.isBlank(mdPdStoragevehicleext.getQty())){
|
||||
mdPdStoragevehicleext.setQty("1");
|
||||
}
|
||||
mdPdStoragevehicleext.setPcsn(whereJson.getString("box_no"));
|
||||
mdPdStoragevehicleext.setDevice_uuid(org.nl.common.utils.IdUtil.getLongId());
|
||||
mdPdStoragevehicleext.setUpdate_time(DateUtil.now());
|
||||
mdPdStoragevehicleextMapper.updateById(mdPdStoragevehicleext);
|
||||
}
|
||||
|
||||
if (count > 0) {
|
||||
throw new BadRequestException(whereJson.getString("vehicle_code") + "存在任务");
|
||||
}
|
||||
|
||||
if(!mdPdStoragevehicleext.getPcsn().equals(whereJson.getString("box_no"))){
|
||||
throw new BadRequestException("输入的箱号有误,请确认!");
|
||||
}
|
||||
|
||||
List<PdmBiSubpackagerelation> subList = ipdmBiSubpackagerelationService.list(new LambdaQueryWrapper<PdmBiSubpackagerelation>()
|
||||
.eq(PdmBiSubpackagerelation::getPackage_box_sn, mdPdStoragevehicleext.getPcsn())
|
||||
.eq(PdmBiSubpackagerelation::getStatus, "3"));
|
||||
|
||||
if (null == subList || subList.size() == 0) {
|
||||
throw new BadRequestException("已出库的子卷包装关系不存在,箱号:" + mdPdStoragevehicleext.getPcsn());
|
||||
}
|
||||
|
||||
List<String> material_barcode = subList.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.map(PdmBiSubpackagerelation::getContainer_name)
|
||||
.filter(str -> str != null && !str.trim().isEmpty())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
whereJson.put("material_barcode", material_barcode);
|
||||
whereJson.put("bill_type", IOSEnum.IN_TYPE.code("盘点入库"));
|
||||
if (whereJson.getString("vehicle_code").startsWith("YNY")) {
|
||||
whereJson.put("move_block_num", "4");
|
||||
}
|
||||
if (!whereJson.containsKey("point_code")) {
|
||||
whereJson.put("point_code", whereJson.getString("device_code"));
|
||||
}
|
||||
whereJson.put("device_code", whereJson.getString("point_code"));
|
||||
inBussManageService.inTask(whereJson);
|
||||
result.put("message", "入库成功!");
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public JSONObject vehicleOut(JSONObject whereJson) {
|
||||
@@ -260,6 +364,14 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
|
||||
whereJson.put("point_code","RK2026");
|
||||
}
|
||||
|
||||
if("RK2005".equals(whereJson.getString("point_code"))){
|
||||
whereJson.put("point_code","RK2027");
|
||||
}
|
||||
|
||||
if("RK2008".equals(whereJson.getString("point_code"))){
|
||||
whereJson.put("point_code","RK2028");
|
||||
}
|
||||
|
||||
String point_code = whereJson.getString("point_code");
|
||||
String vehicle_type = whereJson.getString("vehicle_type");
|
||||
if( whereJson.getIntValue("layer") >4 || whereJson.getIntValue("layer")<1){
|
||||
@@ -478,7 +590,9 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
|
||||
if (bill_type.equals("0001") || bill_type.equals("0009")) {
|
||||
|
||||
//此时执行临时方案
|
||||
if (IOSEnum.SPECIAL_POINTS.code("2楼手工生产点位").equals(whereJson.getString("point_code"))
|
||||
if (IOSEnum.SPECIAL_POINTS.code("2楼异常点位").equals(whereJson.getString("point_code"))
|
||||
||IOSEnum.SPECIAL_POINTS.code("2楼装箱入库点1").equals(whereJson.getString("point_code"))
|
||||
||IOSEnum.SPECIAL_POINTS.code("2楼装箱入库点2").equals(whereJson.getString("point_code"))
|
||||
||IOSEnum.VEHICLE_TYPE_SCAN_POINT.code("1").equals(whereJson.getString("point_code"))) {
|
||||
return reBackIn(whereJson);
|
||||
}
|
||||
@@ -553,6 +667,7 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
|
||||
mdPdStoragevehicleextInsert.setDevice_uuid(org.nl.common.utils.IdUtil.getLongId());
|
||||
mdPdStoragevehicleextInsert.setUpdate_time(DateUtil.now());
|
||||
mdPdStoragevehicleextInsert.setRemark("reBackIn");
|
||||
mdPdStoragevehicleextInsert.setQty("1");
|
||||
mdPdStoragevehicleextMapper.insert(mdPdStoragevehicleextInsert);
|
||||
|
||||
} else {
|
||||
@@ -563,6 +678,9 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
|
||||
throw new BadRequestException("当前托盘" + whereJson.getString("vehicle_code") + "已经绑定木箱" + pcsn);
|
||||
}
|
||||
}
|
||||
if (StringUtils.isBlank(mdPdStoragevehicleext.getQty())) {
|
||||
mdPdStoragevehicleext.setQty("1");
|
||||
}
|
||||
mdPdStoragevehicleext.setPcsn(whereJson.getString("box_no"));
|
||||
mdPdStoragevehicleext.setDevice_uuid(org.nl.common.utils.IdUtil.getLongId());
|
||||
mdPdStoragevehicleext.setUpdate_time(DateUtil.now());
|
||||
@@ -574,40 +692,71 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
|
||||
whereJson.put("device_code","RK2026");
|
||||
}
|
||||
|
||||
JSONArray rows = new JSONArray();
|
||||
if("RK2005".equals(whereJson.getString("device_code"))){
|
||||
whereJson.put("device_code","RK2027");
|
||||
}
|
||||
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("device_code", whereJson.getString("device_code"));
|
||||
jsonObject.put("code", "to_back_up_1");
|
||||
jsonObject.put("value", "4");
|
||||
jsonObject.put("product_area", "BLK");
|
||||
rows.add(jsonObject);
|
||||
if("RK2008".equals(whereJson.getString("device_code"))){
|
||||
whereJson.put("device_code","RK2028");
|
||||
}
|
||||
|
||||
JSONObject jsonObject1 = new JSONObject();
|
||||
jsonObject1.put("device_code", whereJson.getString("device_code"));
|
||||
jsonObject1.put("code", "to_container_type");
|
||||
jsonObject1.put("value", mdPdStorageVehicleInfo.getStoragevehicle_type().substring(mdPdStorageVehicleInfo.getStoragevehicle_type().length() - 1));
|
||||
jsonObject1.put("product_area", "BLK");
|
||||
if(!"RK2026".equals(whereJson.getString("device_code"))
|
||||
&& !"RK2027".equals(whereJson.getString("device_code"))
|
||||
&& !"RK2028".equals(whereJson.getString("device_code"))) {
|
||||
JSONArray rows = new JSONArray();
|
||||
|
||||
rows.add(jsonObject1);
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("device_code", whereJson.getString("device_code"));
|
||||
jsonObject.put("code", "to_back_up_1");
|
||||
jsonObject.put("value", "4");
|
||||
jsonObject.put("product_area", "BLK");
|
||||
rows.add(jsonObject);
|
||||
|
||||
JSONObject jsonObject2 = new JSONObject();
|
||||
jsonObject2.put("device_code", whereJson.getString("device_code"));
|
||||
jsonObject2.put("code", "material_barcode");
|
||||
jsonObject2.put("value", whereJson.getString("box_no") +"-" + whereJson.getString("bill_type").replace("0",""));
|
||||
jsonObject2.put("product_area", "BLK");
|
||||
JSONObject jsonObject1 = new JSONObject();
|
||||
jsonObject1.put("device_code", whereJson.getString("device_code"));
|
||||
jsonObject1.put("code", "to_container_type");
|
||||
jsonObject1.put("value", mdPdStorageVehicleInfo.getStoragevehicle_type().substring(mdPdStorageVehicleInfo.getStoragevehicle_type().length() - 1));
|
||||
jsonObject1.put("product_area", "BLK");
|
||||
|
||||
rows.add(jsonObject2);
|
||||
rows.add(jsonObject1);
|
||||
|
||||
JSONObject jsonObject3 = new JSONObject();
|
||||
jsonObject3.put("device_code", whereJson.getString("device_code"));
|
||||
jsonObject3.put("code", "barcode");
|
||||
jsonObject3.put("value", whereJson.getString("vehicle_code"));
|
||||
jsonObject3.put("product_area", "BLK");
|
||||
JSONObject jsonObject2 = new JSONObject();
|
||||
jsonObject2.put("device_code", whereJson.getString("device_code"));
|
||||
jsonObject2.put("code", "material_barcode");
|
||||
jsonObject2.put("value", whereJson.getString("box_no") + "-" + whereJson.getString("bill_type").replace("0", ""));
|
||||
jsonObject2.put("product_area", "BLK");
|
||||
|
||||
rows.add(jsonObject3);
|
||||
rows.add(jsonObject2);
|
||||
|
||||
JSONObject jsonObject3 = new JSONObject();
|
||||
jsonObject3.put("device_code", whereJson.getString("device_code"));
|
||||
jsonObject3.put("code", "barcode");
|
||||
jsonObject3.put("value", whereJson.getString("vehicle_code"));
|
||||
jsonObject3.put("product_area", "BLK");
|
||||
|
||||
rows.add(jsonObject3);
|
||||
|
||||
wmsToAcsService.action(rows);
|
||||
} else {
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("type", "4");
|
||||
param.put("container_type", mdPdStorageVehicleInfo.getStoragevehicle_type().substring(mdPdStorageVehicleInfo.getStoragevehicle_type().length() - 1));
|
||||
param.put("material_barcode", whereJson.getString("box_no") + "-" + whereJson.getString("bill_type").replace("0", ""));
|
||||
param.put("barcode", whereJson.getString("vehicle_code"));
|
||||
param.put("isUncap",whereJson.getString("is_un_cap"));
|
||||
|
||||
JSONObject jsonParam = new JSONObject();
|
||||
jsonParam.put("start_device_code", whereJson.getString("device_code"));
|
||||
jsonParam.put("next_device_code", "RK2011");
|
||||
jsonParam.put("vehicle_code2", whereJson.getString("box_no"));
|
||||
jsonParam.put("vehicle_code", mdPdStorageVehicleInfo.getStoragevehicle_code());
|
||||
jsonParam.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||
jsonParam.put("task_type", "010713");
|
||||
jsonParam.put("request_param", param.toString());
|
||||
boxSSXTask.createTask(jsonParam);
|
||||
boxSSXTask.immediateNotifyAcs(null);
|
||||
}
|
||||
|
||||
wmsToAcsService.action(rows);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("message", "入库成功!");
|
||||
return result;
|
||||
|
||||
@@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
@@ -16,6 +17,8 @@ import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdis;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper.StIvtIostorinvdisMapper;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.impl.StIvtIostorinvOutServiceImpl;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.impl.LashManageServiceImpl;
|
||||
import org.nl.b_lms.storage_manage.md.dao.MdPdStoragevehicleext;
|
||||
import org.nl.b_lms.storage_manage.md.dao.mapper.MdPdStoragevehicleextMapper;
|
||||
import org.nl.b_lms.storage_manage.st.dao.StIvtStructattr;
|
||||
import org.nl.b_lms.storage_manage.st.dao.mapper.StIvtStructattrMapper;
|
||||
import org.nl.common.utils.RedissonUtils;
|
||||
@@ -55,6 +58,9 @@ public class TwoOutTask extends AbstractAcsTask {
|
||||
@Autowired
|
||||
StIvtStructattrMapper stIvtStructattrMapper;
|
||||
|
||||
@Autowired
|
||||
private MdPdStoragevehicleextMapper mdPdStoragevehicleextMapper;
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
@@ -218,6 +224,7 @@ public class TwoOutTask extends AbstractAcsTask {
|
||||
}
|
||||
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
|
||||
RedissonUtils.lock(c -> {
|
||||
|
||||
StIvtIostorinvOutServiceImpl bean = SpringContextHolder.getBean(StIvtIostorinvOutServiceImpl.class);
|
||||
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(jsonTask);
|
||||
bean.finishTask(jsonObject);
|
||||
@@ -235,6 +242,12 @@ public class TwoOutTask extends AbstractAcsTask {
|
||||
stIvtStructattrMapper.updateById(stIvtStructattr);
|
||||
}
|
||||
|
||||
// 更新载具信息表
|
||||
MdPdStoragevehicleext mdPdStoragevehicleext = mdPdStoragevehicleextMapper.selectOne(new LambdaQueryWrapper<MdPdStoragevehicleext>()
|
||||
.eq(MdPdStoragevehicleext::getPcsn, jsonTask.getVehicle_code()));
|
||||
mdPdStoragevehicleext.setPcsn("");
|
||||
mdPdStoragevehicleextMapper.updateById(mdPdStoragevehicleext);
|
||||
|
||||
JSONObject parse = (JSONObject) JSONObject.parse(jsonTask.getRequest_param());
|
||||
JSONObject jsonParam = new JSONObject();
|
||||
jsonParam.put("device_code",jsonTask.getPoint_code2());
|
||||
@@ -262,7 +275,9 @@ public class TwoOutTask extends AbstractAcsTask {
|
||||
|
||||
if (!"RK2009".equals(jsonTask.getPoint_code2())
|
||||
&&!"RK1010".equals(jsonTask.getPoint_code2())
|
||||
&&!"RK1003".equals(jsonTask.getPoint_code2())) {
|
||||
&&!"RK1003".equals(jsonTask.getPoint_code2())
|
||||
&& !"RK2005".equals(jsonTask.getPoint_code2())
|
||||
&& !"RK2008".equals(jsonTask.getPoint_code2())) {
|
||||
|
||||
LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class);
|
||||
bean1.createHeapTask(jsonParam);
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
package org.nl.b_lms.sch.tasks.auto;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.nl.b_lms.sch.task.dao.mapper.SchBaseTaskMapper;
|
||||
import org.nl.b_lms.sch.tasks.first_floor_area.auto.Prun;
|
||||
import org.nl.common.utils.RedissonUtils;
|
||||
import org.nl.wms.sch.AcsTaskDto;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
public class AutoSendTask extends Prun {
|
||||
|
||||
// 注入spring上下文 获取所有任务子类Bean
|
||||
@Autowired
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
@Autowired
|
||||
private SchBaseTaskMapper schBaseTaskMapper;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
RedissonUtils.lock(c -> {
|
||||
log.info("start_immediateNotifyAcs task......");
|
||||
// 获取全部继承AbstractAcsTask的Bean
|
||||
Map<String, AbstractAcsTask> allTaskBeans = applicationContext.getBeansOfType(AbstractAcsTask.class);
|
||||
List<AcsTaskDto> totalAllTask = new ArrayList<>();
|
||||
|
||||
List<SchBaseTask> waitingTaskList = schBaseTaskMapper.selectList(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getTask_status,"04").eq(SchBaseTask::getIs_delete, "0"));
|
||||
|
||||
|
||||
// 遍历采集所有业务任务
|
||||
for (AbstractAcsTask task : allTaskBeans.values()) {
|
||||
String cc = task.getClass().getSimpleName();
|
||||
int count = (int) waitingTaskList.stream()
|
||||
.filter(a -> !StringUtils.isEmpty(a.getHandle_class() )
|
||||
&& task.getClass().getName().contains(a.getHandle_class()))
|
||||
.count();
|
||||
|
||||
if(count == 0){
|
||||
continue;
|
||||
}
|
||||
|
||||
try {
|
||||
List<AcsTaskDto> taskList = task.schedule();
|
||||
if (CollectionUtil.isNotEmpty(taskList)) {
|
||||
totalAllTask.addAll(taskList);
|
||||
log.info("{} 读取待下发任务数量:{}", task.getClass().getSimpleName(), taskList.size());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("{} 任务查询异常", task.getClass().getSimpleName(), e);
|
||||
}
|
||||
}
|
||||
|
||||
if (CollectionUtil.isEmpty(totalAllTask)) {
|
||||
log.info("暂无ACS任务需要下发");
|
||||
return;
|
||||
}
|
||||
|
||||
// 取出任意一个任务实例调用父类下发过滤方法(父类通用逻辑,任意实例均可)
|
||||
AbstractAcsTask anyTaskInstance = allTaskBeans.values().iterator().next();
|
||||
anyTaskInstance.immediateNotifyAcsList(totalAllTask);
|
||||
|
||||
}, "AutoSendTask", 30, this);
|
||||
} catch (Exception ex) {
|
||||
log.error("定时下发ACS任务整体异常:", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
package org.nl.b_lms.sch.tasks.auto;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.b_lms.sch.tasks.TwoOutHeapTask;
|
||||
import org.nl.b_lms.sch.tasks.first_floor_area.auto.Prun;
|
||||
import org.nl.common.utils.RedissonUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
public class AutoTwoFloorSendTask extends Prun {
|
||||
|
||||
@Autowired
|
||||
private TwoOutHeapTask twoOutHeapTask;
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
RedissonUtils.lock(c -> {
|
||||
log.info("start_sendTaskAcs task......");
|
||||
twoOutHeapTask.sendTaskAcs(null,true);
|
||||
},"resendrgv", 30, this);
|
||||
}catch (Exception ex){
|
||||
log.error(ex.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -37,13 +37,13 @@ public enum IOSEnum {
|
||||
|
||||
//入库单据类型
|
||||
IN_TYPE(MapOf.of("生产入库", "0001", "退货入库", "0002", "报废入库", "0003", "调拨入库", "0004",
|
||||
"拆箱入库", "0005", "返检入库", "0006", "改切入库", "0007", "手工入库", "0009","换标入库", "0012"
|
||||
"拆箱入库", "0005", "返检入库", "0006", "改切入库", "0007", "手工入库", "0009","换标入库", "0012","盘点入库", "0016"
|
||||
)),
|
||||
|
||||
//出库单据类型
|
||||
OUT_TYPE(MapOf.of("发货出库", "1001", "改切出库", "1003", "调拨出库", "1004", "拆箱出库", "1005",
|
||||
"返检出库", "1006", "超期报废", "1007", "退货报废", "1008", "质量问题报废", "1010", "其他报废", "1002",
|
||||
"手工出库", "1009","转单出库", "1020","贴标出库", "1021","管控出库", "1099","换标出库", "1012"
|
||||
"手工出库", "1009","转单出库", "1020","贴标出库", "1021","管控出库", "1099","换标出库", "1012","盘点出库","1016"
|
||||
)),
|
||||
|
||||
//移库单据类型
|
||||
@@ -123,9 +123,9 @@ public enum IOSEnum {
|
||||
OUT_HANGER(MapOf.of("行架位1", "CK1134","行架位2", "CK1138")),
|
||||
|
||||
// 点位
|
||||
POINT_CODE(MapOf.of("退货入库位", "KMXRKW2", "1125","CK1125", "1124","CK1124","木箱装箱开盒盖位","CK2024","空木箱上二楼终点","RK2004")),
|
||||
POINT_CODE(MapOf.of("退货入库位", "KMXRKW2", "1125","CK1125", "1124","CK1124","空木箱上二楼终点","RK2004")),
|
||||
|
||||
TYPE_POINT_CODE(MapOf.of("RK1005", "KMXRKW1", "RK1012","KMXRKW1","木箱装箱开盒盖位","CK2024")),
|
||||
TYPE_POINT_CODE(MapOf.of("RK1005", "KMXRKW1", "RK1012","KMXRKW1")),
|
||||
|
||||
|
||||
//acs申请任务
|
||||
@@ -141,6 +141,10 @@ public enum IOSEnum {
|
||||
,"退货异常申请行架对接位至NG位","9",
|
||||
"1楼换标入库","10")),
|
||||
|
||||
LMSTOACS_TYPE(MapOf.of(
|
||||
"盘点出库","11"
|
||||
)),
|
||||
|
||||
// acs外部系统用户
|
||||
EXT_ACS(MapOf.of("acs", "2","kc","康成")),
|
||||
|
||||
@@ -156,7 +160,9 @@ public enum IOSEnum {
|
||||
)),
|
||||
|
||||
//特殊出入库点位
|
||||
SPECIAL_POINTS(MapOf.of("异常出库口", "CKYC","退货入库口","CKTH","退货行架对接位","THHJDJ","2楼手工生产点位","RK2009","2楼扫码称称重点位","RK2026")),
|
||||
SPECIAL_POINTS(MapOf.of("异常出库口", "CKYC","退货入库口","CKTH","退货行架对接位","THHJDJ","2楼异常点位","RK2009",
|
||||
"2楼装箱入库点1","RK2005",
|
||||
"2楼装箱入库点2","RK2008","2楼扫码称称重点位","RK2026")),
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1039,6 +1039,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
createOutIos(disDaoList, mstDao);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 如果为返检出库或者改切出库删除对应的包装关系
|
||||
*/
|
||||
@@ -1370,6 +1371,8 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
jsonTaskParam.put("isRePrintPackageBoxLabel", IOSEnum.IS_NOTANDYES.code("是"));
|
||||
//是否需要拆包重打子卷标签
|
||||
jsonTaskParam.put("isUnPackBox", IOSEnum.IS_NOTANDYES.code("否"));
|
||||
} else if(mst.getBill_type().equals(IOSEnum.OUT_TYPE.code("盘点出库"))){
|
||||
jsonTaskParam.put("type", IOSEnum.LMSTOACS_TYPE.code("盘点出库"));
|
||||
}
|
||||
request_param.put("bill_type", mst.getBill_type());
|
||||
request_param.put("containerType", boxDao.getVehicle_type());
|
||||
|
||||
@@ -220,34 +220,72 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
||||
|
||||
String boxType = "";
|
||||
|
||||
// 1. 获取三个条码
|
||||
String up_box_no = whereJson.getString("up_box_no");
|
||||
String middle_box_no = whereJson.getString("middle_box_no");
|
||||
String down_box_no = whereJson.getString("down_box_no");
|
||||
|
||||
// ========== 规则1:下条码不能为空 ==========
|
||||
if (StringUtils.isBlank(down_box_no)) {
|
||||
throw new BadRequestException("下条码不能为空");
|
||||
}
|
||||
|
||||
if (down_box_no.equals(up_box_no)) {
|
||||
throw new BadRequestException("木箱号有相同,请重新扫码!");
|
||||
}
|
||||
// ========== 规则2:中条码不为空 → 上条码必须不为空;中为空 → 上必须为空 ==========
|
||||
boolean middleNotBlank = StringUtils.isNotBlank(middle_box_no);
|
||||
boolean upNotBlank = StringUtils.isNotBlank(up_box_no);
|
||||
|
||||
List<String> split ;
|
||||
if(StringUtils.isNotBlank(up_box_no)) {
|
||||
split = Arrays.asList(down_box_no, up_box_no);
|
||||
if (middleNotBlank) {
|
||||
// 有中条码,上条码必填
|
||||
if (!upNotBlank) {
|
||||
throw new BadRequestException("录入中条码时,上条码不能为空");
|
||||
}
|
||||
} else {
|
||||
split = Collections.singletonList(down_box_no);
|
||||
}
|
||||
|
||||
|
||||
//查询仓库是否存在相同木箱
|
||||
for (String boxSn : split) {
|
||||
JSONArray stIvtStructattr = WQLObject.getWQLObject("st_ivt_structattr").query("storagevehicle_code = '" + boxSn + "'").getResultJSONArray(0);
|
||||
if (stIvtStructattr != null && stIvtStructattr.size() > 0) {
|
||||
throw new BadRequestException("当前木箱已经存在库中" + stIvtStructattr.getJSONObject(0).getString("struct_code"));
|
||||
// 中条码为空,上条码必须也为空
|
||||
if (upNotBlank) {
|
||||
throw new BadRequestException("未录入中条码,不允许填写上条码");
|
||||
}
|
||||
}
|
||||
|
||||
// ========== 规则3:存在重复木箱号校验(只校验非空条码之间) ==========
|
||||
List<String> tempAll = Arrays.asList(up_box_no, middle_box_no, down_box_no);
|
||||
// 过滤空值后判断是否存在重复
|
||||
List<String> noBlankList = new ArrayList<>();
|
||||
for (String code : tempAll) {
|
||||
if (StringUtils.isNotBlank(code)) {
|
||||
noBlankList.add(code);
|
||||
}
|
||||
}
|
||||
// 去重后长度和原长度不一致 = 有重复
|
||||
long distinctCount = noBlankList.stream().distinct().count();
|
||||
if (distinctCount != noBlankList.size()) {
|
||||
throw new BadRequestException("木箱号有相同,请重新扫码!");
|
||||
}
|
||||
|
||||
// ========== 最终组装List:顺序【上、中、下】,自动剔除空字符串 ==========
|
||||
List<String> split = new ArrayList<>();
|
||||
if (StringUtils.isNotBlank(up_box_no)) {
|
||||
split.add(up_box_no);
|
||||
}
|
||||
if (StringUtils.isNotBlank(middle_box_no)) {
|
||||
split.add(middle_box_no);
|
||||
}
|
||||
if (StringUtils.isNotBlank(down_box_no)) {
|
||||
split.add(down_box_no);
|
||||
}
|
||||
|
||||
//查询仓库是否存在相同木箱
|
||||
// for (String boxSn : split) {
|
||||
// JSONArray stIvtStructattr = WQLObject.getWQLObject("st_ivt_structattr").query("storagevehicle_code = '" + boxSn + "'").getResultJSONArray(0);
|
||||
// if (stIvtStructattr != null && stIvtStructattr.size() > 0) {
|
||||
// throw new BadRequestException("当前木箱已经存在库中" + stIvtStructattr.getJSONObject(0).getString("struct_code"));
|
||||
// }
|
||||
// }
|
||||
|
||||
for (int i = 0; i < split.size(); i++) {
|
||||
String boxNO = split.get(i);
|
||||
if(StringUtils.isBlank(boxNO)){
|
||||
continue;
|
||||
}
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("box_no", boxNO);
|
||||
//调用MES接口插入或更新木箱信息
|
||||
@@ -259,6 +297,9 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
||||
|
||||
for (int i = 0; i < split.size(); i++) {
|
||||
String boxNo = split.get(i);
|
||||
if(StringUtils.isBlank(boxNo)){
|
||||
continue;
|
||||
}
|
||||
BstIvtBoxinfo boxinfo = iBstIvtBoxinfoService.getOne(
|
||||
new QueryWrapper<BstIvtBoxinfo>().lambda()
|
||||
.eq(BstIvtBoxinfo::getBox_no, boxNo));
|
||||
@@ -278,6 +319,8 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
||||
}
|
||||
//如果小木箱入库时没有小托盘时候是否考虑叫大托盘
|
||||
// 查询木箱信息
|
||||
TwoInBoxTrussTask taskBean = SpringContextHolder.getBean(TwoInBoxTrussTask.class);
|
||||
|
||||
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
|
||||
new QueryWrapper<BstIvtBoxinfo>().lambda()
|
||||
.eq(BstIvtBoxinfo::getBox_no, split.get(0))
|
||||
@@ -286,6 +329,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
||||
throw new BadRequestException("木箱不存在!");
|
||||
}
|
||||
|
||||
|
||||
//查询当前入库拆叠盘位的托盘类型是否一致如果一致
|
||||
String vehicle_type = boxDao.getVehicle_type();
|
||||
|
||||
@@ -296,40 +340,8 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
||||
|
||||
JSONArray device_ja = new JSONArray();
|
||||
device_ja.add(device_jo);
|
||||
// JSONObject device_data = wmsToAcsService.getPointStatus(device_ja);
|
||||
// JSONObject data = device_data.getJSONArray("data").getJSONObject(0);
|
||||
// AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsService.class);
|
||||
//如果此时拆叠盘位为空
|
||||
// if (data.getIntValue("qty") == 0 && data.getIntValue("move") == 0) {
|
||||
// //生成空托盘出库任务
|
||||
// JSONObject apply_jo = new JSONObject();
|
||||
// apply_jo.put("device_code", IOSEnum.VEHICLE_TYPE_POINT.code(vehicle_type));
|
||||
// apply_jo.put("type", "3");
|
||||
// apply_jo.put("container_type", vehicle_type);
|
||||
// acsToWmsService.applyTwo(apply_jo);
|
||||
// } else {
|
||||
// if (!data.getString("container_type").equals(vehicle_type)) {
|
||||
// // if (data.getString("container_type").equals("0")) {
|
||||
// // throw new BadRequestException("当前电气反馈的托盘类型为0,请检查!");
|
||||
// // }
|
||||
// //给ACS下发拆叠盘位的空托盘入库信号,并进行空托盘出库
|
||||
// JSONArray action_rows = new JSONArray();
|
||||
// JSONObject action_jo = new JSONObject();
|
||||
// action_jo.put("device_code", IOSEnum.VEHICLE_TYPE_POINT.code(vehicle_type));
|
||||
// action_jo.put("code", "to_command");
|
||||
// action_jo.put("product_area", IOSEnum.PRODUCT_AREA.code("BLK"));
|
||||
// action_jo.put("value", "4");
|
||||
// action_rows.add(action_jo);
|
||||
// wmsToAcsService.action(action_rows);
|
||||
//
|
||||
// //生成空托盘出库任务
|
||||
// JSONObject apply_jo = new JSONObject();
|
||||
// apply_jo.put("device_code", IOSEnum.VEHICLE_TYPE_POINT.code(vehicle_type));
|
||||
// apply_jo.put("type", "3");
|
||||
// apply_jo.put("container_type", vehicle_type);
|
||||
// acsToWmsService.applyTwo(apply_jo);
|
||||
// }
|
||||
// }
|
||||
|
||||
String boxListString = split.stream().collect(Collectors.joining(","));
|
||||
|
||||
JSONObject taskParam = new JSONObject();
|
||||
taskParam.put("task_type", "010713");
|
||||
@@ -337,14 +349,14 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
||||
|
||||
//都强制到1005
|
||||
taskParam.put("next_device_code", IOSEnum.VEHICLE_TYPE_SCAN_POINT.code("1"));
|
||||
taskParam.put("vehicle_code", down_box_no);
|
||||
taskParam.put("vehicle_code", boxListString);
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("layer", split.size());
|
||||
param.put("length", boxDao.getBox_length());
|
||||
param.put("width", boxDao.getBox_width());
|
||||
param.put("height", boxDao.getBox_high());
|
||||
param.put("containerType", boxDao.getVehicle_type());
|
||||
param.put("barcode",down_box_no + "-9");
|
||||
param.put("barcode", boxListString);
|
||||
//新增逻辑 需要确认
|
||||
param.put("type", "1");
|
||||
//根据木箱高度,判断入库仓位的高度
|
||||
@@ -361,8 +373,8 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
||||
}
|
||||
param.put("heightLevel", height);
|
||||
taskParam.put("request_param", param.toString());
|
||||
TwoInBoxTrussTask taskBean = SpringContextHolder.getBean(TwoInBoxTrussTask.class);
|
||||
taskBean.createTask(taskParam);
|
||||
|
||||
taskBean.immediateNotifyAcs(null);
|
||||
}
|
||||
|
||||
|
||||
@@ -84,7 +84,8 @@ public class InVehicleManageServiceImpl implements InVehicleManageService {
|
||||
jsonParam.put("sect_id", RegionTypeEnum.TWO_BZC01.getId());
|
||||
jsonParam.put("vehicle_type", whereJson.getString("vehicle_type"));
|
||||
if("2".equals(whereJson.getString("vehicle_type"))) {
|
||||
jsonParam.put("move_block_num","3");
|
||||
//todo 默认需要调整,根据当前的出库任务确认,如果是2楼入库,则需要判断出库任务,如果出库任务
|
||||
//jsonParam.put("move_block_num","3");
|
||||
} else {
|
||||
jsonParam.put("move_block_num","4");
|
||||
}
|
||||
|
||||
@@ -1322,8 +1322,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
whereJson.put("bill_type", IOSEnum.IN_TYPE.code("生产入库"));
|
||||
whereJson.put("material_barcode",containers);
|
||||
if(whereJson.getString("vehicle_code").startsWith("YNX")) {
|
||||
//todo 默认需要调整
|
||||
whereJson.put("move_block_num", "1");
|
||||
//todo 默认需要调整,根据当前的出库任务确认,如果是2楼入库,则需要判断出库任务,如果出库任务
|
||||
//whereJson.put("move_block_num", "1");
|
||||
} else if(whereJson.getString("vehicle_code").startsWith("YNY")) {
|
||||
whereJson.put("move_block_num", "4");
|
||||
}
|
||||
@@ -1457,6 +1457,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
mdPdStoragevehicleextInsert.setPcsn(whereJson.getString("box_no"));
|
||||
mdPdStoragevehicleextInsert.setDevice_uuid(org.nl.common.utils.IdUtil.getLongId());
|
||||
mdPdStoragevehicleextInsert.setUpdate_time(DateUtil.now());
|
||||
mdPdStoragevehicleextInsert.setQty("1");
|
||||
mdPdStoragevehicleextMapper.insert(mdPdStoragevehicleextInsert);
|
||||
|
||||
} else {
|
||||
@@ -1467,6 +1468,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
throw new BadRequestException("当前托盘" + whereJson.getString("vehicle_code") + "已经绑定木箱" + pcsn);
|
||||
}
|
||||
}
|
||||
|
||||
if(StringUtils.isBlank(mdPdStoragevehicleext.getQty())){
|
||||
mdPdStoragevehicleext.setQty("1");
|
||||
}
|
||||
mdPdStoragevehicleext.setPcsn(whereJson.getString("box_no"));
|
||||
mdPdStoragevehicleext.setDevice_uuid(org.nl.common.utils.IdUtil.getLongId());
|
||||
mdPdStoragevehicleext.setUpdate_time(DateUtil.now());
|
||||
@@ -1474,7 +1479,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
}
|
||||
//优先巷道
|
||||
if(whereJson.getString("vehicle_code").startsWith("YNX")) {
|
||||
whereJson.put("move_block_num", "1");
|
||||
//todo 默认需要调整,根据当前的出库任务确认,如果是2楼入库,则需要判断出库任务,如果出库任务
|
||||
//whereJson.put("move_block_num", "1");
|
||||
} else if(whereJson.getString("vehicle_code").startsWith("YNY")) {
|
||||
whereJson.put("move_block_num", "4");
|
||||
}
|
||||
@@ -1484,12 +1490,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
} else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("木箱装箱开盒盖位"))) {
|
||||
//校验
|
||||
String next_device_code;
|
||||
if (StringUtils.isNotBlank(whereJson.getString("material_barcode")) && whereJson.getString("material_barcode").contains("-")) {
|
||||
// if (StringUtils.isNotBlank(whereJson.getString("material_barcode")) && whereJson.getString("material_barcode").contains("-")) {
|
||||
next_device_code = IOSEnum.POINT_CODE.code("空木箱上二楼终点");
|
||||
whereJson.put("material_barcode", whereJson.getString("material_barcode").split("-")[0]);
|
||||
} else {
|
||||
next_device_code = IOSEnum.POINT_CODE.code("木箱装箱开盒盖位");
|
||||
}
|
||||
// } else {
|
||||
// next_device_code = IOSEnum.POINT_CODE.code("木箱装箱开盒盖位");
|
||||
// }
|
||||
|
||||
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
|
||||
new QueryWrapper<BstIvtBoxinfo>().lambda()
|
||||
@@ -1521,6 +1527,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
mdPdStoragevehicleextInsert.setPcsn(boxDao.getBox_no());
|
||||
mdPdStoragevehicleextInsert.setDevice_uuid(org.nl.common.utils.IdUtil.getLongId());
|
||||
mdPdStoragevehicleextInsert.setUpdate_time(DateUtil.now());
|
||||
mdPdStoragevehicleextInsert.setQty("1");
|
||||
mdPdStoragevehicleextMapper.insert(mdPdStoragevehicleextInsert);
|
||||
|
||||
} else {
|
||||
@@ -1531,6 +1538,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
throw new BadRequestException("当前托盘" + whereJson.getString("vehicle_code") + "已经绑定木箱" + pcsn);
|
||||
}
|
||||
}
|
||||
|
||||
if(StringUtils.isBlank(mdPdStoragevehicleext.getQty())){
|
||||
mdPdStoragevehicleext.setQty("1");
|
||||
}
|
||||
mdPdStoragevehicleext.setPcsn(boxDao.getBox_no());
|
||||
mdPdStoragevehicleext.setDevice_uuid(org.nl.common.utils.IdUtil.getLongId());
|
||||
mdPdStoragevehicleext.setUpdate_time(DateUtil.now());
|
||||
|
||||
@@ -1,14 +1,28 @@
|
||||
package org.nl.wms.sch.manage;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
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.LambdaQueryWrapper;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.nl.b_lms.sch.task.dao.mapper.SchBaseTaskMapper;
|
||||
import org.nl.b_lms.sch.tasks.TwoOutHeapTask;
|
||||
import org.nl.common.utils.CollectionUtils;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.sch.AcsTaskDto;
|
||||
import org.nl.wms.sch.AcsUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* Title: AbstractAcsTask.java Description:任务抽象类
|
||||
@@ -23,6 +37,19 @@ public abstract class AbstractAcsTask {
|
||||
@Autowired
|
||||
AcsUtil acsUtil;
|
||||
|
||||
private SchBaseTaskMapper schBaseTaskMapper;
|
||||
|
||||
@Autowired
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
public SchBaseTaskMapper getSchBaseTaskMapper() {
|
||||
if (schBaseTaskMapper == null) {
|
||||
schBaseTaskMapper = applicationContext.getBean(SchBaseTaskMapper.class);
|
||||
}
|
||||
return schBaseTaskMapper;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @discription 在如果任务无法形成会一直定时刷新判断
|
||||
* @author ldjun
|
||||
@@ -111,13 +138,63 @@ public abstract class AbstractAcsTask {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
||||
public JSONObject immediateNotifyAcs(String task_id) {
|
||||
List<AcsTaskDto> singleTaskList = this.schedule();
|
||||
return immediateNotifyAcsList(singleTaskList);
|
||||
}
|
||||
|
||||
public JSONObject immediateNotifyAcsList(List<AcsTaskDto> taskList) {
|
||||
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (Exception ex) {
|
||||
|
||||
}
|
||||
List<AcsTaskDto> taskList = this.schedule();
|
||||
|
||||
//查询正在执行中的任务
|
||||
List<String> status = Stream.of("05","06")
|
||||
.collect(Collectors.toList());
|
||||
List<SchBaseTask> workingTaskList = SpringContextHolder.getBean(SchBaseTaskMapper.class).selectList(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.in(SchBaseTask::getTask_status, status).eq(SchBaseTask::getIs_delete, "0"));
|
||||
|
||||
List<String> oneFloorReturnBigVehicleInTaskStartPoint = Arrays.asList("KMXRKW1","KMXRKW2","KMXRKW3","KMXRKW4","RK1012","RK1005","RK1010","RK1003");
|
||||
List<String> oneFloorReturnSmallVehicleInTaskStartPoint = Arrays.asList("KMXRKW1","KMXRKW2","KMXRKW3","KMXRKW4","RK1005","RK1003");
|
||||
|
||||
List<String> oneFloorReturnBigVehicleOutTaskStartPoint = Arrays.asList("KMXRKW1","RK1010");
|
||||
List<String> oneFloorReturnSmallVehicleOutTaskStartPoint = Arrays.asList("KMXRKW1","RK1003");
|
||||
|
||||
//查询正在执行中的1楼大托盘入库任务
|
||||
List<SchBaseTask> inBigTaskList = workingTaskList.stream()
|
||||
.filter(task->oneFloorReturnBigVehicleInTaskStartPoint.contains(task.getPoint_code1())
|
||||
&& !task.getPoint_code2().contains("KMXRKW")).collect(Collectors.toList());
|
||||
List<SchBaseTask> inSmallTaskList = workingTaskList.stream()
|
||||
.filter(task->oneFloorReturnSmallVehicleInTaskStartPoint.contains(task.getPoint_code1())
|
||||
&& !task.getPoint_code2().contains("KMXRKW")).collect(Collectors.toList());
|
||||
|
||||
List<SchBaseTask> outBigTaskList = workingTaskList.stream().filter(task->oneFloorReturnBigVehicleOutTaskStartPoint.contains(task.getPoint_code2())).collect(Collectors.toList());
|
||||
List<SchBaseTask> outSmallTaskList = workingTaskList.stream().filter(task->oneFloorReturnSmallVehicleOutTaskStartPoint.contains(task.getPoint_code2())).collect(Collectors.toList());
|
||||
|
||||
|
||||
|
||||
Iterator<AcsTaskDto> it = taskList.iterator();
|
||||
while (it.hasNext()) {
|
||||
AcsTaskDto acsTaskDto = it.next();
|
||||
if(CollectionUtil.isNotEmpty(inBigTaskList) && oneFloorReturnBigVehicleOutTaskStartPoint.contains(acsTaskDto.getNext_device_code())){
|
||||
it.remove(); //
|
||||
}
|
||||
else if(CollectionUtil.isNotEmpty(inSmallTaskList)&& oneFloorReturnSmallVehicleOutTaskStartPoint.contains(acsTaskDto.getNext_device_code())){
|
||||
it.remove(); //
|
||||
}
|
||||
else if(CollectionUtil.isNotEmpty(outBigTaskList)&& oneFloorReturnBigVehicleInTaskStartPoint.contains(acsTaskDto.getStart_device_code())){
|
||||
it.remove();
|
||||
}
|
||||
else if(CollectionUtil.isNotEmpty(outSmallTaskList)&& oneFloorReturnSmallVehicleInTaskStartPoint.contains(acsTaskDto.getStart_device_code())){
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (ObjectUtil.isNotEmpty(taskList)) {
|
||||
JSONArray arr = JSONArray.parseArray(JSON.toJSONString(taskList));
|
||||
if (acsUtil == null) {
|
||||
|
||||
Reference in New Issue
Block a user