Browse Source

opt:移库部分业务优化

master
zds 4 months ago
parent
commit
5f77d68859
  1. 7
      lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/structattr/service/dao/Structattr.java
  2. 15
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/CheckOutBillService.java
  3. 4
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/StorPublicServiceImpl.java
  4. 325
      lms/nladmin-system/src/main/java/org/nl/wms/st/instor/movestor/service/impl/HandMoveStorServiceImpl.java
  5. 26
      lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java

7
lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/structattr/service/dao/Structattr.java

@ -1,5 +1,8 @@
package org.nl.wms.basedata.st.structattr.service.dao;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@ -224,5 +227,7 @@ public class Structattr implements Serializable {
*/
private String storagevehicle_type;
public void copyFrom(JSONObject source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
}
}

15
lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/CheckOutBillService.java

@ -9,6 +9,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
import java.util.function.Consumer;
public interface CheckOutBillService {
/**
@ -328,4 +329,18 @@ public interface CheckOutBillService {
* }
*/
void saveUpdate(JSONObject whereJson);
/**
*
* @param arr
* @return
*/
JSONArray isNum(JSONArray arr);
/**
*
* @param whereJson
* @param allTransactionConsumer
*/
void createMove(JSONObject whereJson, Consumer<String> allTransactionConsumer);
}

4
lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/StorPublicServiceImpl.java

@ -572,10 +572,6 @@ public class StorPublicServiceImpl implements StorPublicService {
public void updateStructAndPointTwo(JSONObject from) {
//货位表
WQLObject wo_Struct = WQLObject.getWQLObject("ST_IVT_StructAttr");
//点位表
WQLObject wo_Point = WQLObject.getWQLObject("SCH_BASE_Point");
//载具表
WQLObject wo_Storage = WQLObject.getWQLObject("MD_PB_StorageVehicleInfo");
String struct_id = from.getString("struct_id");
String point_code = from.getString("point_code");
//锁定类型

325
lms/nladmin-system/src/main/java/org/nl/wms/st/instor/movestor/service/impl/HandMoveStorServiceImpl.java

@ -23,12 +23,16 @@ import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.modules.wql.util.WqlUtil;
import org.nl.wms.basedata.master.customer.service.dao.Customerbase;
import org.nl.wms.basedata.master.storagevehicleinfo.service.dao.Storagevehicleex;
import org.nl.wms.basedata.master.storagevehicleinfo.service.dao.mapper.StoragevehicleexMapper;
import org.nl.wms.basedata.st.structattr.service.dao.Structattr;
import org.nl.wms.basedata.st.structattr.service.dao.mapper.StructattrMapper;
import org.nl.wms.basedata.st.service.impl.UserStorServiceImpl;
import org.nl.wms.pda.mps.eum.RegionTypeEnum;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.tasks.OutTask;
import org.nl.wms.st.inbill.service.CheckOutBillService;
import org.nl.wms.st.inbill.service.RawAssistIStorService;
import org.nl.wms.st.inbill.service.StorPublicService;
import org.nl.wms.st.instor.movestor.service.HandMoveStorService;
@ -42,7 +46,6 @@ import org.nl.wms.st.instor.movestor.service.dto.MoveStorDtlQuery;
import org.nl.wms.st.instor.movestor.service.dto.MoveStorQuery;
import org.nl.wms.st.instor.task.EmpMoveTask;
import org.nl.wms.st.instor.task.HandMoveStorAcsTask;
import org.nl.wms.st.outbill.service.impl.CheckOutBillServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
@ -57,6 +60,8 @@ import java.util.*;
@Slf4j
public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveStor> implements HandMoveStorService {
private final StorPublicService storPublicService;
@Autowired
private CheckOutBillService checkOutBillService;
private final HandMoveStorAcsTask handMoveStorAcsTask;
@ -71,6 +76,8 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
private MoveStorDtlMapper moveStorDtlMapper;
@Autowired
private StructattrMapper structattrMapper;
@Autowired
private StoragevehicleexMapper storagevehicleexMapper;
@Override
@ -110,8 +117,6 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
WQLObject wo_Task = WQLObject.getWQLObject("SCH_BASE_Task");
//点位表
WQLObject wo_Point = WQLObject.getWQLObject("sch_base_point");
//仓位表
WQLObject wo_Attr = WQLObject.getWQLObject("st_ivt_structattr");
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
@ -169,9 +174,12 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
jsonPoint.put("vehicle_code", "");
wo_Point.update(jsonPoint);
JSONObject jsonAttr = wo_Attr.query("struct_code = '" + point_code2 + "'").uniqueResult(0);
jsonAttr.put("storagevehicle_code", "");
wo_Attr.update(jsonAttr);
//更新仓位
LambdaUpdateWrapper<Structattr> queryWrapper = new LambdaUpdateWrapper<Structattr>();
queryWrapper.eq(Structattr::getStruct_code, point_code2)
.eq(Structattr::getIs_delete, "0");
queryWrapper.set(Structattr::getStoragevehicle_code,"");
structattrMapper.update(null,queryWrapper);
}
/**
@ -182,8 +190,6 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
public void deleteByIdTwo(String moveinv_id) {
//任务表
WQLObject wo_Task = WQLObject.getWQLObject("SCH_BASE_Task");
//仓位表
WQLObject wo_Attr = WQLObject.getWQLObject("st_ivt_structattr");
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
@ -239,10 +245,12 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
jo_mst.setUpdate_time(now);
moveStorMapper.updateById(jo_mst);
// 更新移入仓位
JSONObject jsonAttr = wo_Attr.query("struct_code = '" + point_code2 + "'").uniqueResult(0);
jsonAttr.put("storagevehicle_code", "");
wo_Attr.update(jsonAttr);
//更新仓位
LambdaUpdateWrapper<Structattr> queryWrapper = new LambdaUpdateWrapper<Structattr>();
queryWrapper.eq(Structattr::getStruct_code, point_code2)
.eq(Structattr::getIs_delete, "0");
queryWrapper.set(Structattr::getStoragevehicle_code,"");
structattrMapper.update(null,queryWrapper);
}
@ -300,7 +308,6 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
@Transactional(rollbackFor = Exception.class)
public JSONObject roadInsertDtl(JSONObject map) {
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
/*
1.货位上是空托盘直接生成点对点任务
2.货位上是木箱走正常流程
@ -310,38 +317,52 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
String block_num = map.getString("block_num");
// 判断此区有没有被锁住的货位
JSONArray resultJSONArray = attrTab.query("block_num = '" + block_num + "' and is_used = '1' and is_delete = '0' and row_num = '7' and lock_type <> '1'").getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(resultJSONArray)) {
LambdaQueryWrapper<Structattr> queryWrapper = new LambdaQueryWrapper<Structattr>();
queryWrapper.eq(ObjectUtil.isNotEmpty(block_num), Structattr::getBlock_num, block_num)
.eq(Structattr::getRow_num, "7")
.eq(Structattr::getIs_used, "1")
.eq(Structattr::getIs_delete, "0")
.ne( Structattr::getLock_type,"1");
Integer listsize = structattrMapper.selectCount(queryWrapper);
if (listsize>0) {
throw new BadRequestException("有正在运行的任务或已锁定未生成任务");
}
// 找出所有货位
JSONArray boxArr = attrTab.query("block_num = '" + block_num + "' and is_used = '1' and is_delete = '0' and IFNULL(storagevehicle_code,'') <> '' and lock_type = '1' and row_num = '7' order by out_order_seq DESC").getResultJSONArray(0);
LambdaQueryWrapper<Structattr> queryWrapperAll = new LambdaQueryWrapper<Structattr>();
queryWrapperAll.eq(ObjectUtil.isNotEmpty(block_num), Structattr::getBlock_num, block_num)
.eq(Structattr::getRow_num, "7")
.eq(Structattr::getIs_used, "1")
.eq(Structattr::getIs_delete, "0")
.eq( Structattr::getLock_type,"1")
.ne(Structattr::getStoragevehicle_code,"")
.isNotNull(Structattr::getStoragevehicle_code)
.orderByDesc(Structattr::getOut_order_seq);
List<Structattr> boxArr = structattrMapper.selectList(queryWrapperAll);
// 判断是否是空托盘区
boolean is_ktp = boxArr.stream()
.map(row -> (JSONObject) row)
.anyMatch(row -> StrUtil.equals(row.getString("sect_code"), "KTP01"));
.anyMatch(row -> StrUtil.equals(row.getSect_code(), "KTP01"));
JSONArray dtlArr = new JSONArray();
if (is_ktp) {
// 空托盘
for (int i = 0; i < boxArr.size(); i++) {
JSONObject json = boxArr.getJSONObject(i);
Structattr json = boxArr.get(i);
// 调用空托盘入库
JSONObject param = new JSONObject();
param.put("block_num", json.getString("block_num"));
param.put("row_num", json.getString("row_num"));
JSONObject jsonEmp = queryEmp(param);
param.put("block_num", json.getBlock_num());
param.put("row_num", json.getRow_num());
Structattr jsonEmp = queryEmp(param);
// 生成空托盘移库任务
JSONObject param2 = new JSONObject();
param2.put("task_type", "010505");
param2.put("task_name", "空托盘转库任务");
param2.put("vehicle_code", json.getString("storagevehicle_code"));
param2.put("point_code1", json.getString("struct_code"));
param2.put("point_code2", jsonEmp.getString("struct_code"));
param2.put("vehicle_code", json.getStoragevehicle_code());
param2.put("point_code1", json.getStruct_code());
param2.put("point_code2", jsonEmp.getStruct_code());
String task_id = empMoveTask.createTask(param2);
// 下发任务
@ -350,20 +371,19 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
} else {
// 货位
for (int i = 0; i < boxArr.size(); i++) {
JSONObject json = boxArr.getJSONObject(i);
Structattr json = boxArr.get(i);
// 找到一个移入货位
JSONObject moveParam = new JSONObject();
moveParam.put("box_no", json.getString("storagevehicle_code"));
moveParam.put("box_no", json.getStoragevehicle_code());
moveParam.put("sect_id", RegionTypeEnum.ZZ01.getId());
moveParam.put("layer_num", json.getString("layer_num"));
moveParam.put("layer_num", json.getLayer_num());
JSONObject jsonMove = rawAssistIStorService.autoDisMove(moveParam);
if (ObjectUtil.isEmpty(jsonMove)) {
throw new BadRequestException("没有可用暂存位");
}
List<BoxIvt> jsonIvt = moveStorDtlMapper.getStoragevehicleIvtByPackageBoxSn(json.getString("storagevehicle_code"));
List<BoxIvt> jsonIvt = moveStorDtlMapper.getStoragevehicleIvtByPackageBoxSn(json.getStoragevehicle_code());
jsonIvt.forEach(boxIvt -> {
JSONObject row = (JSONObject) JSONObject.toJSON(boxIvt);
row.put("wrok_status", "01");
@ -376,7 +396,9 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
dtlArr.add(row);
});
jsonMove.put("lock_type", "7");
attrTab.update(jsonMove);
Structattr structattr = new Structattr();
structattr.copyFrom(jsonMove);
structattrMapper.updateById(structattr);
}
}
map.put("tableData", dtlArr);
@ -384,12 +406,14 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
}
@Transactional(rollbackFor = Exception.class)
public JSONObject queryEmp(JSONObject whereJson) {
public Structattr queryEmp(JSONObject whereJson) {
whereJson.put("flag", "21");
JSONArray emptyArr = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(whereJson).process().getResultJSONArray(0);
JSONObject struct_jo = new JSONObject();
Structattr struct_bean = new Structattr();
for (int i = 0; i < emptyArr.size(); i++) {
JSONObject empty_row = emptyArr.getJSONObject(i);
@ -397,50 +421,129 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
String row_num = empty_row.getString("row_num");
String placement_type = empty_row.getString("placement_type");
JSONArray isLock = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type in ('4','5') AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1'").getResultJSONArray(0);
LambdaQueryWrapper<Structattr> queryWrapperAll = new LambdaQueryWrapper<Structattr>();
queryWrapperAll.eq(ObjectUtil.isNotEmpty(block_num), Structattr::getBlock_num, block_num)
.eq(Structattr::getPlacement_type, placement_type)
.eq(Structattr::getIs_used, "1")
.eq(Structattr::getIs_delete, "0")
.in(Structattr::getLock_type, Arrays.asList("4", "5"))
.eq( Structattr::getRow_num,row_num);
List<Structattr> isLock = structattrMapper.selectList(queryWrapperAll);
if (ObjectUtil.isEmpty(isLock)) {
LambdaQueryWrapper<Structattr> queryWrapper = new LambdaQueryWrapper<Structattr>();
queryWrapper.eq(ObjectUtil.isNotEmpty(block_num), Structattr::getBlock_num, block_num)
.eq( Structattr::getLock_type,"1")
.eq(Structattr::getPlacement_type, placement_type)
.eq(Structattr::getRow_num, row_num)
.eq(Structattr::getIs_used, "1")
.eq(Structattr::getIs_delete, "0");
if ("03".equals(placement_type)) {
// 右通
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq desc").uniqueResult(0);
queryWrapper.and(la -> la.eq(Structattr::getStoragevehicle_code,"").or().isNull(Structattr::getStoragevehicle_code)
).orderByDesc(Structattr::getOut_order_seq);
List<Structattr> boxArr = structattrMapper.selectList(queryWrapper);
if(boxArr.size()>0){
struct_bean = boxArr.get(0);
}
//struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq desc").uniqueResult(0);
break;
} else if ("02".equals(placement_type)) {
// 左通
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq").uniqueResult(0);
queryWrapper.and(la -> la.eq(Structattr::getStoragevehicle_code,"").or().isNull(Structattr::getStoragevehicle_code)
).orderByAsc(Structattr::getOut_order_seq);
List<Structattr> boxArr = structattrMapper.selectList(queryWrapper);
if(boxArr.size()>0){
struct_bean = boxArr.get(0);
}
//struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq").uniqueResult(0);
break;
} else {
// 双通
queryWrapper.ne(Structattr::getStoragevehicle_code,"")
.isNotNull(Structattr::getStoragevehicle_code)
.orderByDesc(Structattr::getOut_order_seq);
// 双通
// 先倒序找到第一个托盘、判断上一个是否有货位
JSONObject jsonDescStruct = new JSONObject();
JSONObject jsonDescBox = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq DESC").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonDescBox)) {
String out_order_seq = jsonDescBox.getString("out_order_seq");
List<Structattr> jsonDescStructs = new ArrayList<>();
List<Structattr> jsonDescBoxs = structattrMapper.selectList(queryWrapper);
//JSONObject jsonDescBox = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq DESC").uniqueResult(0);
LambdaQueryWrapper<Structattr> queryWrapper2 = new LambdaQueryWrapper<Structattr>();
queryWrapper2.eq(ObjectUtil.isNotEmpty(block_num), Structattr::getBlock_num, block_num)
.eq( Structattr::getLock_type,"1")
.eq(Structattr::getPlacement_type, placement_type)
.eq(Structattr::getRow_num, row_num)
.eq(Structattr::getIs_used, "1")
.eq(Structattr::getIs_delete, "0");
if (jsonDescBoxs.size()>0) {
String out_order_seq = jsonDescBoxs.get(0).getOut_order_seq();
queryWrapper2.and(la -> la.eq(Structattr::getStoragevehicle_code,"")
.or()
.isNull(Structattr::getStoragevehicle_code))
.gt(Structattr::getOut_order_seq,out_order_seq)
.orderByAsc(Structattr::getOut_order_seq);
// 上一个货位顺序号
jsonDescStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq > '" + out_order_seq + "' order by out_order_seq ASC").uniqueResult(0);
//jsonDescStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq > '" + out_order_seq + "' order by out_order_seq ASC").uniqueResult(0);
jsonDescStructs = structattrMapper.selectList(queryWrapper2);
} else {
queryWrapper2.and(la -> la.eq(Structattr::getStoragevehicle_code,"")
.or()
.isNull(Structattr::getStoragevehicle_code))
.orderByDesc(Structattr::getOut_order_seq);
// 倒序找到第一个空位
jsonDescStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq DESC").uniqueResult(0);
//jsonDescStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq DESC").uniqueResult(0);
jsonDescStructs = structattrMapper.selectList(queryWrapper2);
}
if (ObjectUtil.isNotEmpty(jsonDescStruct)) {
struct_jo = jsonDescStruct;
if (jsonDescStructs.size()>0) {
struct_bean = jsonDescStructs.get(0);
break;
} else {
queryWrapper2.ne(Structattr::getStoragevehicle_code,"")
.isNotNull(Structattr::getStoragevehicle_code)
.orderByAsc(Structattr::getOut_order_seq);
// 没有就正序找到第一个托盘、判断上一个是否有货位
JSONObject jsonAscStruct = new JSONObject();
JSONObject jsonAscBox = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq ASC").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonAscBox)) {
String out_order_seq2 = jsonAscBox.getString("out_order_seq");
List<Structattr> jsonAscStructs = new ArrayList<>();
List<Structattr> jsonAscBoxs = structattrMapper.selectList(queryWrapper2);
//JSONObject jsonAscBox = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq ASC").uniqueResult(0);
LambdaQueryWrapper<Structattr> queryWrapper3 = new LambdaQueryWrapper<Structattr>();
queryWrapper3.eq(ObjectUtil.isNotEmpty(block_num), Structattr::getBlock_num, block_num)
.eq( Structattr::getLock_type,"1")
.eq(Structattr::getPlacement_type, placement_type)
.eq(Structattr::getRow_num, row_num)
.eq(Structattr::getIs_used, "1")
.eq(Structattr::getIs_delete, "0")
.and(la -> la.eq(Structattr::getStoragevehicle_code,"")
.or()
.isNull(Structattr::getStoragevehicle_code));
if (jsonAscBoxs.size()>0) {
String out_order_seq2 = jsonAscBoxs.get(0).getOut_order_seq();
queryWrapper3.lt(Structattr::getOut_order_seq,out_order_seq2)
.orderByDesc(Structattr::getOut_order_seq);
// 上一个货位顺序号
jsonAscStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq < '" + out_order_seq2 + "' order by out_order_seq DESC").uniqueResult(0);
//jsonAscStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq < '" + out_order_seq2 + "' order by out_order_seq DESC").uniqueResult(0);
jsonAscStructs = structattrMapper.selectList(queryWrapper3);
} else {
jsonAscStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq ASC").uniqueResult(0);
queryWrapper3.orderByAsc(Structattr::getOut_order_seq);
//jsonAscStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq ASC").uniqueResult(0);
jsonAscStructs = structattrMapper.selectList(queryWrapper3);
}
if (ObjectUtil.isNotEmpty(jsonAscStruct)) {
struct_jo = jsonAscStruct;
if (jsonAscStructs.size()>0) {
struct_bean = jsonAscStructs.get(0);
break;
}
}
@ -450,10 +553,10 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
}
}
if (ObjectUtil.isEmpty(struct_jo)) {
if (ObjectUtil.isEmpty(struct_bean)) {
throw new BadRequestException("未查询到可用的空载具存放点位!");
}
return struct_jo;
return struct_bean;
}
/**
@ -626,8 +729,6 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
WQLObject wo_Task = WQLObject.getWQLObject("SCH_BASE_Task");
//点位表
WQLObject wo_Point = WQLObject.getWQLObject("SCH_BASE_Point");
//载具扩展属性
WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
//定义返回数据
JSONObject ret = new JSONObject();
//传值进来的
@ -710,12 +811,13 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
task.put("point_code2", jodtl.getTurnin_struct_code());
}
task.put("vehicle_code", jodtl.getStoragevehicle_code());
List<Storagevehicleex> jsonExts = storagevehicleexMapper.selectList(new LambdaQueryWrapper<Storagevehicleex>().eq(Storagevehicleex::getPcsn, jodtl.getStoragevehicle_code()));
// 查询木箱对应载具
JSONObject jsonExt = extTab.query("pcsn = '" + jodtl.getStoragevehicle_code() + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonExt)) {
if (jsonExts.size() == 0) {
throw new BadRequestException("此木箱对应载具不存在!"+jodtl.getStoragevehicle_code());
}
task.put("vehicle_code2", jsonExt.getString("storagevehicle_code"));
task.put("vehicle_code2", jsonExts.get(0).getStoragevehicle_code());
task.put("handle_class", HandMoveStorAcsTask.class.getName());
task.put("finished_type", "");
task.put("is_delete", "0");
@ -1063,8 +1165,6 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
public void handdown(JSONObject whereJson) {
//任务表
WQLObject wo_Task = WQLObject.getWQLObject("SCH_BASE_Task");
//仓位表
WQLObject wo_attr = WQLObject.getWQLObject("st_ivt_structattr");
HandMoveStorAcsTask handMoveStorAcsTask = new HandMoveStorAcsTask();
@ -1089,7 +1189,12 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
if (!StrUtil.equals(bill_type, "30")) {
// 判断起点是否被挡
JSONObject jsonTask = wo_Task.query("task_id = '" + task_id + "'").uniqueResult(0);
JSONObject jsonAttr = wo_attr.query("struct_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0);
LambdaQueryWrapper<Structattr> queryWrapper = new LambdaQueryWrapper<Structattr>();
queryWrapper.eq(Structattr::getStruct_code, jsonTask.getString("point_code1"))
.eq(Structattr::getIs_delete, "0");
Structattr jsonAttr = structattrMapper.selectOne(queryWrapper);
// 调用共用判断是否阻挡并生成任务、移库单
this.isBlock(jsonAttr);
}
@ -1145,7 +1250,7 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
.ne( Structattr::getStoragevehicle_code,"")
.isNotNull(Structattr::getStoragevehicle_code)
.orderByAsc(Structattr::getBlock_num)
.orderByDesc(Structattr::getBlock_num);//neededit out_order_seq DESC
.orderByDesc(Structattr::getOut_order_seq);
List<Structattr> boxArr = structattrMapper.selectList(queryWrapper);
@ -1227,11 +1332,9 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
}
@Transactional(rollbackFor = Exception.class)
public Integer isBlock(JSONObject whereJson) {
String placement_type = whereJson.getString("placement_type");
CheckOutBillServiceImpl bean = SpringContextHolder.getBean(CheckOutBillServiceImpl.class);
public Integer isBlock(Structattr whereJson) {
String placement_type = whereJson.getPlacement_type();
//JSONArray jsonLockArr = new JSONArray();
List<Structattr> jsonLockArr = new ArrayList<>();
if (StrUtil.equals(placement_type, "01")) {
/*
@ -1241,20 +1344,20 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
// 判断右边边被阻挡个数
JSONObject isNumMap = new JSONObject();
isNumMap.put("flag", "3");
isNumMap.put("block_num", whereJson.getString("block_num"));
isNumMap.put("row_num", whereJson.getString("row_num"));
isNumMap.put("out_order_seq", whereJson.getString("out_order_seq"));
isNumMap.put("block_num", whereJson.getBlock_num());
isNumMap.put("row_num", whereJson.getRow_num());
isNumMap.put("out_order_seq", whereJson.getOut_order_seq());
JSONArray numArrFirst = WQL.getWO("ST_OUTIVT04").addParamMap(isNumMap).process().getResultJSONArray(0);
// 调用共用方法计算被挡个数
JSONArray rightNumArr = bean.isNum(numArrFirst);
JSONArray rightNumArr = checkOutBillService.isNum(numArrFirst);
// 判断左边被挡个数
isNumMap.put("flag", "4");
JSONArray numArrLast = WQL.getWO("ST_OUTIVT04").addParamMap(isNumMap).process().getResultJSONArray(0);
// 调用共用方法计算被挡个数
JSONArray leftNumArr = bean.isNum(numArrLast);
JSONArray leftNumArr = checkOutBillService.isNum(numArrLast);
if (rightNumArr.size() > leftNumArr.size()) {
/*
@ -1264,7 +1367,7 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
isNumMap.put("flag", "5");
JSONArray isLockArr = WQL.getWO("ST_OUTIVT04").addParamMap(isNumMap).process().getResultJSONArray(0);
JSONArray numArr = bean.isNum(isLockArr);
JSONArray numArr = checkOutBillService.isNum(isLockArr);
// 不为空则返回报错
if (ObjectUtil.isNotEmpty(numArr)) {
String error = "";
@ -1283,12 +1386,12 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
//isNumMap.put("row_num", whereJson.getString("row_num"));
//isNumMap.put("out_order_seq", whereJson.getString("out_order_seq"));
LambdaQueryWrapper<Structattr> queryWrapper = new LambdaQueryWrapper<Structattr>();
queryWrapper.eq(ObjectUtil.isNotEmpty(whereJson.getString("block_num")), Structattr::getBlock_num, whereJson.getString("block_num"))
.eq(ObjectUtil.isNotEmpty(whereJson.getString("row_num")), Structattr::getBlock_num, whereJson.getString("row_num"))//neededit
.gt(ObjectUtil.isNotEmpty(whereJson.getString("out_order_seq")), Structattr::getBlock_num, whereJson.getString("out_order_seq"))//neededit
queryWrapper.eq(ObjectUtil.isNotEmpty(whereJson.getBlock_num()), Structattr::getBlock_num, whereJson.getBlock_num())
.eq(ObjectUtil.isNotEmpty(whereJson.getRow_num()), Structattr::getRow_num, whereJson.getRow_num())
.gt(ObjectUtil.isNotEmpty(whereJson.getOut_order_seq()), Structattr::getOut_order_seq, whereJson.getOut_order_seq())
.ne( Structattr::getStoragevehicle_code,"")
.isNotNull(Structattr::getStoragevehicle_code)
.orderByDesc(Structattr::getBlock_num);//neededit out_order_seq
.orderByDesc(Structattr::getOut_order_seq);
jsonLockArr = structattrMapper.selectList(queryWrapper);
//isNumMap.put("flag", "6");
//jsonLockArr = WQL.getWO("QST_IVT_HANDMOVESTOR").addParamMap(isNumMap).process().getResultJSONArray(0);
@ -1301,7 +1404,7 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
isNumMap.put("flag", "6");
JSONArray isLockArr = WQL.getWO("ST_OUTIVT04").addParamMap(isNumMap).process().getResultJSONArray(0);
JSONArray numArr = bean.isNum(isLockArr);
JSONArray numArr = checkOutBillService.isNum(isLockArr);
// 不为空则返回报错
if (ObjectUtil.isNotEmpty(numArr)) {
@ -1320,12 +1423,12 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
//jsonLockArr = WQL.getWO("QST_IVT_HANDMOVESTOR").addParamMap(isNumMap).process().getResultJSONArray(0);
LambdaQueryWrapper<Structattr> queryWrapper = new LambdaQueryWrapper<Structattr>();
queryWrapper.eq(ObjectUtil.isNotEmpty(whereJson.getString("block_num")), Structattr::getBlock_num, whereJson.getString("block_num"))
.eq(ObjectUtil.isNotEmpty(whereJson.getString("row_num")), Structattr::getBlock_num, whereJson.getString("row_num"))//neededit
.lt(ObjectUtil.isNotEmpty(whereJson.getString("out_order_seq")), Structattr::getBlock_num, whereJson.getString("out_order_seq"))//neededit
queryWrapper.eq(ObjectUtil.isNotEmpty(whereJson.getBlock_num()), Structattr::getBlock_num, whereJson.getBlock_num())
.eq(ObjectUtil.isNotEmpty(whereJson.getRow_num()), Structattr::getRow_num, whereJson.getRow_num())
.lt(ObjectUtil.isNotEmpty(whereJson.getOut_order_seq()), Structattr::getOut_order_seq, whereJson.getOut_order_seq())
.ne( Structattr::getStoragevehicle_code,"")
.isNotNull(Structattr::getStoragevehicle_code)
.orderByAsc(Structattr::getBlock_num);//neededit out_order_seq
.orderByAsc(Structattr::getOut_order_seq);
jsonLockArr = structattrMapper.selectList(queryWrapper);
} else {
/*
@ -1335,7 +1438,7 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
isNumMap.put("flag", "6");
JSONArray isLockArr = WQL.getWO("ST_OUTIVT04").addParamMap(isNumMap).process().getResultJSONArray(0);
JSONArray numArr = bean.isNum(isLockArr);
JSONArray numArr = checkOutBillService.isNum(isLockArr);
// 不为空则返回报错
if (ObjectUtil.isNotEmpty(numArr)) {
@ -1353,12 +1456,12 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
//isNumMap.put("flag", "7");
//jsonLockArr = WQL.getWO("QST_IVT_HANDMOVESTOR").addParamMap(isNumMap).process().getResultJSONArray(0);
LambdaQueryWrapper<Structattr> queryWrapper = new LambdaQueryWrapper<Structattr>();
queryWrapper.eq(ObjectUtil.isNotEmpty(whereJson.getString("block_num")), Structattr::getBlock_num, whereJson.getString("block_num"))
.eq(ObjectUtil.isNotEmpty(whereJson.getString("row_num")), Structattr::getBlock_num, whereJson.getString("row_num"))//neededit
.lt(ObjectUtil.isNotEmpty(whereJson.getString("out_order_seq")), Structattr::getBlock_num, whereJson.getString("out_order_seq"))//neededit
queryWrapper.eq(ObjectUtil.isNotEmpty(whereJson.getBlock_num()), Structattr::getBlock_num, whereJson.getBlock_num())
.eq(ObjectUtil.isNotEmpty(whereJson.getRow_num()), Structattr::getRow_num, whereJson.getRow_num())
.lt(ObjectUtil.isNotEmpty(whereJson.getOut_order_seq()), Structattr::getOut_order_seq, whereJson.getOut_order_seq())
.ne( Structattr::getStoragevehicle_code,"")
.isNotNull(Structattr::getStoragevehicle_code)
.orderByAsc(Structattr::getBlock_num);//neededit out_order_seq
.orderByAsc(Structattr::getOut_order_seq);
jsonLockArr = structattrMapper.selectList(queryWrapper);
}
@ -1370,12 +1473,12 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
// 查询仓位被锁住的货位
JSONObject isNumMap = new JSONObject();
isNumMap.put("flag", "5");
isNumMap.put("block_num", whereJson.getString("block_num"));
isNumMap.put("row_num", whereJson.getString("row_num"));
isNumMap.put("out_order_seq", whereJson.getString("out_order_seq"));
isNumMap.put("block_num", whereJson.getBlock_num());
isNumMap.put("row_num", whereJson.getRow_num());
isNumMap.put("out_order_seq", whereJson.getOut_order_seq());
JSONArray isLockArr = WQL.getWO("ST_OUTIVT04").addParamMap(isNumMap).process().getResultJSONArray(0);
JSONArray numArr = bean.isNum(isLockArr);
JSONArray numArr = checkOutBillService.isNum(isLockArr);
// 不为空则返回报错
if (ObjectUtil.isNotEmpty(numArr)) {
String error = "";
@ -1392,12 +1495,12 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
//isNumMap.put("flag", "6");
//jsonLockArr = WQL.getWO("QST_IVT_HANDMOVESTOR").addParamMap(isNumMap).process().getResultJSONArray(0);
LambdaQueryWrapper<Structattr> queryWrapper = new LambdaQueryWrapper<Structattr>();
queryWrapper.eq(ObjectUtil.isNotEmpty(whereJson.getString("block_num")), Structattr::getBlock_num, whereJson.getString("block_num"))
.eq(ObjectUtil.isNotEmpty(whereJson.getString("row_num")), Structattr::getBlock_num, whereJson.getString("row_num"))//neededit
.gt(ObjectUtil.isNotEmpty(whereJson.getString("out_order_seq")), Structattr::getBlock_num, whereJson.getString("out_order_seq"))//neededit
queryWrapper.eq(ObjectUtil.isNotEmpty(whereJson.getBlock_num()), Structattr::getBlock_num, whereJson.getBlock_num())
.eq(ObjectUtil.isNotEmpty(whereJson.getRow_num()), Structattr::getRow_num, whereJson.getRow_num())
.gt(ObjectUtil.isNotEmpty(whereJson.getOut_order_seq()), Structattr::getOut_order_seq, whereJson.getOut_order_seq())
.ne( Structattr::getStoragevehicle_code,"")
.isNotNull(Structattr::getStoragevehicle_code)
.orderByDesc(Structattr::getBlock_num);//neededit out_order_seq
.orderByDesc(Structattr::getOut_order_seq);
jsonLockArr = structattrMapper.selectList(queryWrapper);
} else if (StrUtil.equals(placement_type, "03")) {
@ -1408,12 +1511,12 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
// 查询仓位被锁住的货位
JSONObject isNumMap = new JSONObject();
isNumMap.put("flag", "6");
isNumMap.put("block_num", whereJson.getString("block_num"));
isNumMap.put("row_num", whereJson.getString("row_num"));
isNumMap.put("out_order_seq", whereJson.getString("out_order_seq"));
isNumMap.put("block_num", whereJson.getBlock_num());
isNumMap.put("row_num", whereJson.getRow_num());
isNumMap.put("out_order_seq", whereJson.getOut_order_seq());
JSONArray isLockArr = WQL.getWO("ST_OUTIVT04").addParamMap(isNumMap).process().getResultJSONArray(0);
JSONArray numArr = bean.isNum(isLockArr);
JSONArray numArr = checkOutBillService.isNum(isLockArr);
// 不为空则返回报错
if (ObjectUtil.isNotEmpty(numArr)) {
@ -1431,12 +1534,12 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
//isNumMap.put("flag", "7");
//jsonLockArr = WQL.getWO("QST_IVT_HANDMOVESTOR").addParamMap(isNumMap).process().getResultJSONArray(0);
LambdaQueryWrapper<Structattr> queryWrapper = new LambdaQueryWrapper<Structattr>();
queryWrapper.eq(ObjectUtil.isNotEmpty(whereJson.getString("block_num")), Structattr::getBlock_num, whereJson.getString("block_num"))
.eq(ObjectUtil.isNotEmpty(whereJson.getString("row_num")), Structattr::getBlock_num, whereJson.getString("row_num"))//neededit
.lt(ObjectUtil.isNotEmpty(whereJson.getString("out_order_seq")), Structattr::getBlock_num, whereJson.getString("out_order_seq"))//neededit
queryWrapper.eq(ObjectUtil.isNotEmpty(whereJson.getBlock_num()), Structattr::getBlock_num, whereJson.getBlock_num())
.eq(ObjectUtil.isNotEmpty(whereJson.getRow_num()), Structattr::getRow_num, whereJson.getRow_num())
.lt(ObjectUtil.isNotEmpty(whereJson.getOut_order_seq()), Structattr::getOut_order_seq, whereJson.getOut_order_seq())
.ne( Structattr::getStoragevehicle_code,"")
.isNotNull(Structattr::getStoragevehicle_code)
.orderByAsc(Structattr::getBlock_num);//neededit out_order_seq
.orderByAsc(Structattr::getOut_order_seq);
jsonLockArr = structattrMapper.selectList(queryWrapper);
}
@ -1451,7 +1554,7 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
moveParam.put("jsonAllBlockPoint", jsonLockArr);
moveParam.put("is_move", "1");
moveParam.put("task_group_id", IdUtil.getSnowflake(1, 1).nextId());
bean.createMove(moveParam, null);
checkOutBillService.createMove(moveParam, null);
}
return jsonLockArr.size();
@ -1464,14 +1567,16 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
public void createMoveExpansion(JSONObject whereJson) {
//任务表
WQLObject wo_Task = WQLObject.getWQLObject("SCH_BASE_Task");
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
JSONArray needMoveList = whereJson.getJSONArray("needMoveList");
for (int i = 0; i < needMoveList.size(); i++) {
JSONObject json = needMoveList.getJSONObject(i);
LambdaQueryWrapper<Structattr> queryWrapper = new LambdaQueryWrapper<Structattr>();
queryWrapper.eq(Structattr::getStruct_code, json.getString("struct_code"))
.eq(Structattr::getIs_delete, "0");
JSONObject jsonAttr = attrTab.query("struct_code = '" + json.getString("struct_code") + "'").uniqueResult(0);
Structattr jsonAttr = structattrMapper.selectOne(queryWrapper);
JSONObject mapParam = new JSONObject();// 生成移库单传入参数
JSONArray table = new JSONArray(); // 明细参数
@ -1490,7 +1595,7 @@ public class HandMoveStorServiceImpl extends ServiceImpl<MoveStorMapper, MoveSto
JSONObject moveParam = new JSONObject();
moveParam.put("box_no", json.getString("storagevehicle_code"));
moveParam.put("sect_id", RegionTypeEnum.ZZ01.getId());
moveParam.put("layer_num", jsonAttr.getString("layer_num"));
moveParam.put("layer_num", jsonAttr.getLayer_num());
JSONObject jsonMove = rawAssistIStorService.autoDisMove(moveParam);
// 查询移出货位的库存物料
JSONObject jsonMoveIvt = WQL.getWO("ST_OUTIVT03")

26
lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java

@ -4040,6 +4040,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
}, new JSONArray());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void createMove(JSONObject whereJson, Consumer<String> allTransactionConsumer) {
//任务表
@ -4140,30 +4141,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
}
}
/**
* 被挡的个数
*
* @param arr
* @return
*/
/* public JSONArray isNum(JSONArray arr) {
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); // 任务表
JSONArray result = new JSONArray();
for (int i = 0; i < arr.size(); i++) {
JSONObject json = arr.getJSONObject(i);
String struct_code = json.getString("struct_code");
JSONObject jsonTask1 = taskTab.query("point_code1 = '" + struct_code + "' and task_status in ('05','06')").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonTask1)) {
result.add(json);
}
}
return result;
}*/
@Override
public JSONArray isNum(JSONArray arr) {
StringJoiner joiner = new StringJoiner(",", "(", ")");
JSONArray result = new JSONArray();

Loading…
Cancel
Save