Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -1,14 +1,13 @@
|
|||||||
package org.nl.b_lms.pdm.subpackagerelation.dao.mapper;
|
package org.nl.b_lms.pdm.subpackagerelation.dao.mapper;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.apache.ibatis.annotations.Select;
|
import org.apache.ibatis.annotations.Select;
|
||||||
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
|
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import org.nl.b_lms.pdm.subpackagerelation.dto.PdmBiSubpackagerelationDto;
|
import org.nl.b_lms.pdm.subpackagerelation.dto.PdmBiSubpackagerelationDto;
|
||||||
import org.nl.common.domain.query.PageQuery;
|
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dto.StructattrQuerry;
|
||||||
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -40,4 +39,7 @@ public interface PdmBiSubpackagerelationMapper extends BaseMapper<PdmBiSubpackag
|
|||||||
@Select("select resource_name as 下卷设备,sch_base_task.update_time as 下卷结束,sch_base_task.create_time as 下卷开始 from sch_base_task left JOIN pdm_bi_slittingproductionplan on pdm_bi_slittingproductionplan.qzzno = vehicle_code and pdm_bi_slittingproductionplan.container_name is not null where create_time > #{day} and task_status = '07' and vehicle_code != '' and vehicle_code is not NULL and point_code2 IN ('TZZC30','TZZC31','TZZC32','TZZC33','TZZC34','TZZC35','TZZC36','TZZC37','TZZC38')\n")
|
@Select("select resource_name as 下卷设备,sch_base_task.update_time as 下卷结束,sch_base_task.create_time as 下卷开始 from sch_base_task left JOIN pdm_bi_slittingproductionplan on pdm_bi_slittingproductionplan.qzzno = vehicle_code and pdm_bi_slittingproductionplan.container_name is not null where create_time > #{day} and task_status = '07' and vehicle_code != '' and vehicle_code is not NULL and point_code2 IN ('TZZC30','TZZC31','TZZC32','TZZC33','TZZC34','TZZC35','TZZC36','TZZC37','TZZC38')\n")
|
||||||
List<Map<String,String>> downloadData(@Param("day") String date);
|
List<Map<String,String>> downloadData(@Param("day") String date);
|
||||||
|
|
||||||
|
|
||||||
|
@Select("select * from pdm_bi_subpackagerelation where package_box_sn = #{boxNo}")
|
||||||
|
StructattrQuerry selectSubpackagerelationInser(String boxNo);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package org.nl.b_lms.storage_manage.ios.service.iostorInv.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class StructattrQuerry extends PdmBiSubpackagerelation {
|
||||||
|
private String stor_id;
|
||||||
|
private String sect_id;
|
||||||
|
private String material_id;
|
||||||
|
private String vehicle_type;
|
||||||
|
private String block_num;
|
||||||
|
List<String> height;
|
||||||
|
private String not_in_block_num;
|
||||||
|
|
||||||
|
private List<String> block_in;
|
||||||
|
|
||||||
|
private List<String> not_block;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -299,8 +299,6 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
|
|||||||
try {
|
try {
|
||||||
if (tryLock) {
|
if (tryLock) {
|
||||||
|
|
||||||
// 库区表
|
|
||||||
WQLObject sectTab = WQLObject.getWQLObject("st_ivt_sectattr");
|
|
||||||
// 参数类型转换 Map-> JSONObject
|
// 参数类型转换 Map-> JSONObject
|
||||||
JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(whereJson));
|
JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(whereJson));
|
||||||
// 分配明细集合
|
// 分配明细集合
|
||||||
@@ -320,7 +318,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
|
|||||||
JSONObject jsonLock = new JSONObject();
|
JSONObject jsonLock = new JSONObject();
|
||||||
ArrayList<String> paramLockList = new ArrayList<>();
|
ArrayList<String> paramLockList = new ArrayList<>();
|
||||||
// 仓位对象
|
// 仓位对象
|
||||||
StIvtStructattr stIvtStructattr;
|
StIvtStructattr stIvtStructattr = new StIvtStructattr();
|
||||||
// 是否自动分配货位
|
// 是否自动分配货位
|
||||||
Boolean checked = jsonObject.getBoolean("checked");
|
Boolean checked = jsonObject.getBoolean("checked");
|
||||||
String height = "";
|
String height = "";
|
||||||
@@ -350,9 +348,9 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
|
|||||||
height = "'3'";
|
height = "'3'";
|
||||||
}
|
}
|
||||||
attrParam.put("height", height);
|
attrParam.put("height", height);
|
||||||
JSONObject jsonSect = sectTab.query("sect_id = '" + jsonObject.getString("sect_id") + "'").uniqueResult(0);
|
StIvtSectattr stIvtSectattr = stIvtSectattrMapper.selectOne(new QueryWrapper<StIvtSectattr>().eq("sect_id",jsonObject.getString("sect_id")));
|
||||||
// 判断是否是虚拟区
|
// 判断是否是虚拟区
|
||||||
if (jsonSect.getString("sect_type_attr").equals(IOSEnum.SECT_TYPE.code("虚拟区"))) {
|
if (stIvtSectattr.getSect_type_attr().equals(IOSEnum.SECT_TYPE.code("虚拟区"))) {
|
||||||
|
|
||||||
stIvtStructattr = stIvtStructattrMapper.selectOne(new QueryWrapper<StIvtStructattr>().eq("sect_id", jsonObject.getString("sect_id")).eq("lock_type", "1").eq("is_delete", "0").apply("IFNULL(storagevehicle_code, '') = ''"));
|
stIvtStructattr = stIvtStructattrMapper.selectOne(new QueryWrapper<StIvtStructattr>().eq("sect_id", jsonObject.getString("sect_id")).eq("lock_type", "1").eq("is_delete", "0").apply("IFNULL(storagevehicle_code, '') = ''"));
|
||||||
|
|
||||||
@@ -362,12 +360,14 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
|
|||||||
if (ObjectUtil.isNotEmpty(whereJson.get("in_buss"))) {
|
if (ObjectUtil.isNotEmpty(whereJson.get("in_buss"))) {
|
||||||
attrParam.put("move_block_num", MapUtil.getStr(whereJson, "move_block_num"));
|
attrParam.put("move_block_num", MapUtil.getStr(whereJson, "move_block_num"));
|
||||||
}
|
}
|
||||||
stIvtStructattr = null;
|
JSONObject oneStruct = twoInBussManageService.getOneStruct(attrParam);
|
||||||
// stIvtStructattr = twoInBussManageService.getOneStruct(attrParam);
|
if (!ObjectUtil.isEmpty(oneStruct)){
|
||||||
|
stIvtStructattr = oneStruct.toJavaObject(StIvtStructattr.class);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 指定分配
|
// 指定分配
|
||||||
|
|
||||||
stIvtStructattr = stIvtStructattrMapper.selectOne(new QueryWrapper<StIvtStructattr>().eq("struct_id", jsonDis.getString("struct_id")));
|
stIvtStructattr = stIvtStructattrMapper.selectOne(new QueryWrapper<StIvtStructattr>().eq("struct_id", jsonDis.getString("struct_id")));
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -385,11 +385,8 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
|
|||||||
// 判断是否虚拟区
|
// 判断是否虚拟区
|
||||||
String work_status;
|
String work_status;
|
||||||
Long task_id = null;
|
Long task_id = null;
|
||||||
// JSONObject jsonSect = sectTab.query("sect_id = '" + jsonAttr.getString("sect_id") + "'").uniqueResult(0);
|
StIvtSectattr stIvtSectattr = stIvtSectattrMapper.selectOne(new QueryWrapper<StIvtSectattr>().eq("sect_id",stIvtStructattr.getSect_id()));
|
||||||
JSONObject jsonSect = sectTab.query("sect_id = '" + 1 + "'").uniqueResult(0);
|
if (stIvtSectattr.getSect_type_attr().equals(IOSEnum.SECT_TYPE.code("虚拟区"))) {
|
||||||
// StIvtSectattr stIvtSectattr = stIvtSectattrMapper.selectOne(new QueryWrapper<StIvtSectattr>().eq("sect_id", jsonAttr.getString("sect_id")));
|
|
||||||
StIvtSectattr stIvtSectattr = stIvtSectattrMapper.selectOne(new QueryWrapper<StIvtSectattr>().eq("sect_id", 1));
|
|
||||||
if (jsonSect.getString("sect_type_attr").equals(IOSEnum.SECT_TYPE.code("虚拟区"))) {
|
|
||||||
// 虚拟区:执行状态为完成
|
// 虚拟区:执行状态为完成
|
||||||
work_status = IOSEnum.WORK_STATUS.code("完成");
|
work_status = IOSEnum.WORK_STATUS.code("完成");
|
||||||
task_id = IdUtil.getLongId();
|
task_id = IdUtil.getLongId();
|
||||||
|
|||||||
@@ -501,6 +501,9 @@ public class InBussManageServiceImpl implements InBussManageService {
|
|||||||
List<JSONObject> boxAllLikeList = WQL.getWO("BST_INRULE").addParamMap(jsonSub)
|
List<JSONObject> boxAllLikeList = WQL.getWO("BST_INRULE").addParamMap(jsonSub)
|
||||||
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 为空说明库内没有相同规格的木箱,则返回不区分木箱规格的最小巷道
|
// 为空说明库内没有相同规格的木箱,则返回不区分木箱规格的最小巷道
|
||||||
if (ObjectUtil.isEmpty(boxAllLikeList)) {
|
if (ObjectUtil.isEmpty(boxAllLikeList)) {
|
||||||
return jsonBlockMin.getString("block_num");
|
return jsonBlockMin.getString("block_num");
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
package org.nl.b_lms.storage_manage.ios.service.iostorInv.util.impl;
|
package org.nl.b_lms.storage_manage.ios.service.iostorInv.util.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import lombok.extern.log4j.Log4j;
|
import lombok.extern.log4j.Log4j;
|
||||||
|
import org.nl.b_lms.pdm.subpackagerelation.dao.mapper.PdmBiSubpackagerelationMapper;
|
||||||
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
|
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
|
||||||
|
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dto.StructattrQuerry;
|
||||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.TwoInBussManageService;
|
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.TwoInBussManageService;
|
||||||
import org.nl.b_lms.storage_manage.st.dao.StIvtStructattr;
|
import org.nl.b_lms.storage_manage.st.dao.StIvtStructattr;
|
||||||
import org.nl.b_lms.storage_manage.st.dao.mapper.StIvtStructattrMapper;
|
import org.nl.b_lms.storage_manage.st.dao.mapper.StIvtStructattrMapper;
|
||||||
@@ -17,10 +19,8 @@ import org.nl.system.service.param.impl.SysParamServiceImpl;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.math.BigDecimal;
|
||||||
import java.util.Arrays;
|
import java.util.*;
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@@ -34,9 +34,11 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private StIvtStructattrMapper stIvtStructattrMapper;
|
private StIvtStructattrMapper stIvtStructattrMapper;
|
||||||
|
@Autowired
|
||||||
|
private PdmBiSubpackagerelationMapper pdmBiSubpackagerelationMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject getOneStruct(JSONObject jsonObject) {
|
public JSONObject getOneStruct(JSONObject jsonObject) {
|
||||||
/*
|
/*
|
||||||
* 成品入库规则:
|
* 成品入库规则:
|
||||||
* 1.根据托盘类型确认巷道小托盘负载均衡到所有巷道,大托盘去大托盘巷道。
|
* 1.根据托盘类型确认巷道小托盘负载均衡到所有巷道,大托盘去大托盘巷道。
|
||||||
@@ -66,45 +68,27 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
|
|||||||
// 是否是移库: 提前确定的巷道
|
// 是否是移库: 提前确定的巷道
|
||||||
String block_num = jsonObject.getString("move_block_num");
|
String block_num = jsonObject.getString("move_block_num");
|
||||||
|
|
||||||
JSONArray attrArry = new JSONArray();
|
|
||||||
|
|
||||||
String input = jsonObject.getString("height");
|
String input = jsonObject.getString("height");
|
||||||
List<String> result = Arrays.asList(input.split("','"));
|
List<String> result = Arrays.asList(input.split("','"));
|
||||||
|
|
||||||
//
|
|
||||||
if (ObjectUtil.isEmpty(block_num)) {
|
|
||||||
attrArry = attrTab.query("IFNULL(storagevehicle_code,'') = '' " +
|
|
||||||
"AND is_used = '" + IOSEnum.IS_NOTANDYES.code("是") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("否") + "' " +
|
|
||||||
"AND lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '" + jsonObject.getString("stor_id") + "' " +
|
|
||||||
"AND storagevehicle_type = '" + jsonObject.getString("vehicle_type") + "'" +
|
|
||||||
"AND height IN " + jsonObject.getString("height") +
|
|
||||||
"AND sect_id = '" + jsonObject.getString("sect_id") + "'").getResultJSONArray(0);
|
|
||||||
|
|
||||||
LambdaQueryWrapper<StIvtStructattr> stIvtStructattrLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
||||||
stIvtStructattrLambdaQueryWrapper.eq(StIvtStructattr::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
|
|
||||||
.eq(StIvtStructattr::getIs_used, IOSEnum.IS_NOTANDYES.code("是")).eq(StIvtStructattr::getSect_id, jsonObject.getString("sect_id"))
|
|
||||||
.eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")).eq(StIvtStructattr::getStor_id, jsonObject.getString("stor_id"))
|
|
||||||
.in(StIvtStructattr::getHeight, result);
|
|
||||||
// if (){
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// stIvtStructattrMapper.selectList()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} else {
|
|
||||||
attrArry = attrTab.query("IFNULL(storagevehicle_code,'') = '' " +
|
|
||||||
"AND is_used = '" + IOSEnum.IS_NOTANDYES.code("是") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("否") + "' " +
|
|
||||||
"AND lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '" + jsonObject.getString("stor_id") + "' " +
|
|
||||||
"AND storagevehicle_type = '" + jsonObject.getString("vehicle_type") + "'" +
|
|
||||||
"AND height IN " + jsonObject.getString("height") +
|
|
||||||
"AND sect_id = '" + jsonObject.getString("sect_id") + "' AND block_num = '"+block_num+"'")
|
|
||||||
.getResultJSONArray(0);
|
|
||||||
|
|
||||||
|
LambdaQueryWrapper<StIvtStructattr> stIvtStructattrLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
stIvtStructattrLambdaQueryWrapper.eq(StIvtStructattr::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
|
||||||
|
.eq(StIvtStructattr::getIs_used, IOSEnum.IS_NOTANDYES.code("是")).eq(StIvtStructattr::getSect_id, jsonObject.getString("sect_id"))
|
||||||
|
.eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")).eq(StIvtStructattr::getStor_id, jsonObject.getString("stor_id"))
|
||||||
|
.in(StIvtStructattr::getHeight, result);
|
||||||
|
//小托盘均入四个巷道(不分类型),大托盘均入三个巷道
|
||||||
|
if ("2".equals(jsonObject.getString("vehicle_type"))) {
|
||||||
|
stIvtStructattrLambdaQueryWrapper.eq(StIvtStructattr::getStoragevehicle_type, "2");
|
||||||
}
|
}
|
||||||
|
if (!ObjectUtil.isEmpty(block_num)) {
|
||||||
|
stIvtStructattrLambdaQueryWrapper.eq(StIvtStructattr::getBlock_num, block_num);
|
||||||
|
}
|
||||||
|
List<StIvtStructattr> stIvtStructattrs = stIvtStructattrMapper.selectList(stIvtStructattrLambdaQueryWrapper);
|
||||||
|
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(attrArry)) {
|
if (ObjectUtil.isEmpty(stIvtStructattrs)) {
|
||||||
throw new BadRequestException("仓位不足!");
|
throw new BadRequestException("仓位不足!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,23 +96,25 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
|
|||||||
* 确定巷道:查看每个巷道相同木箱规格等 的数量,找到数量最小的那个巷道
|
* 确定巷道:查看每个巷道相同木箱规格等 的数量,找到数量最小的那个巷道
|
||||||
*/
|
*/
|
||||||
// 获取木箱入库巷道
|
// 获取木箱入库巷道
|
||||||
JSONObject jsonSub = subTab.query("package_box_sn = '" + jsonObject.getString("box_no") + "'").uniqueResult(0);
|
StructattrQuerry structattrQuerry = pdmBiSubpackagerelationMapper.selectSubpackagerelationInser( jsonObject.getString("box_no"));
|
||||||
jsonSub.put("stor_id", jsonObject.getString("stor_id"));
|
|
||||||
jsonSub.put("sect_id", jsonObject.getString("sect_id"));
|
structattrQuerry.setStor_id(jsonObject.getString("stor_id"));
|
||||||
jsonSub.put("material_id", jsonObject.getString("material_id"));
|
structattrQuerry.setSect_id(jsonObject.getString("sect_id"));
|
||||||
jsonSub.put("vehicle_type", jsonObject.getString("vehicle_type"));
|
structattrQuerry.setMaterial_id(jsonObject.getString("material_id"));
|
||||||
jsonSub.put("height", jsonObject.getString("height"));
|
structattrQuerry.setStor_id(jsonObject.getString("vehicle_type"));
|
||||||
|
structattrQuerry.setHeight(result);
|
||||||
|
|
||||||
|
|
||||||
// 不是移库则需要找新巷道
|
// 不是移库则需要找新巷道
|
||||||
if (ObjectUtil.isEmpty(block_num)) {
|
if (ObjectUtil.isEmpty(block_num)) {
|
||||||
block_num = getMinBlock(jsonSub);
|
block_num = getMinBlock(structattrQuerry);
|
||||||
}
|
}
|
||||||
jsonSub.put("block_num", block_num);
|
structattrQuerry.setBlock_num(block_num);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 找仓位
|
* 找仓位
|
||||||
*/
|
*/
|
||||||
JSONObject jsonAttr = getStruct(jsonSub);
|
JSONObject jsonAttr = getStruct(structattrQuerry);
|
||||||
|
|
||||||
// 如果是移库空并且仓位为空则报错
|
// 如果是移库空并且仓位为空则报错
|
||||||
if (ObjectUtil.isNotEmpty(jsonObject.getString("move_block_num")) && ObjectUtil.isEmpty(jsonAttr)) {
|
if (ObjectUtil.isNotEmpty(jsonObject.getString("move_block_num")) && ObjectUtil.isEmpty(jsonAttr)) {
|
||||||
@@ -138,20 +124,15 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
|
|||||||
// 为空则新找巷道
|
// 为空则新找巷道
|
||||||
if (ObjectUtil.isEmpty(jsonAttr)) {
|
if (ObjectUtil.isEmpty(jsonAttr)) {
|
||||||
|
|
||||||
jsonSub.put("flag", "1");
|
notInBlockList.add(structattrQuerry.getBlock_num());
|
||||||
notInBlockList.add(jsonSub.getString("block_num"));
|
structattrQuerry.setNot_block(notInBlockList);
|
||||||
|
List<String> block = stIvtStructattrMapper.getBlock(structattrQuerry);
|
||||||
|
|
||||||
String join = "('" + String.join("','", notInBlockList) + "')";
|
for (int i = 0; i < block.size(); i++) {
|
||||||
jsonSub.put("not_block", join);
|
String s = block.get(i);
|
||||||
|
structattrQuerry.setBlock_num(s);
|
||||||
|
|
||||||
List<JSONObject> blockList = WQL.getWO("BST_INRULE").addParamMap(jsonSub)
|
JSONObject jsonAttr_2 = getStruct(structattrQuerry);
|
||||||
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
|
||||||
|
|
||||||
for (int i = 0; i < blockList.size(); i++) {
|
|
||||||
JSONObject json = blockList.get(i);
|
|
||||||
jsonSub.put("block_num",json.getString("block_num"));
|
|
||||||
|
|
||||||
JSONObject jsonAttr_2 = getStruct(jsonSub);
|
|
||||||
if (ObjectUtil.isNotEmpty(jsonAttr_2)) {
|
if (ObjectUtil.isNotEmpty(jsonAttr_2)) {
|
||||||
jsonAttr = jsonAttr_2;
|
jsonAttr = jsonAttr_2;
|
||||||
break;
|
break;
|
||||||
@@ -169,54 +150,43 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
|
|||||||
/**
|
/**
|
||||||
* 获取最小巷道
|
* 获取最小巷道
|
||||||
*
|
*
|
||||||
* @param jsonSub {
|
* @param structattrQuerry {
|
||||||
* jsonSub:木箱信息
|
* jsonSub:木箱信息
|
||||||
* sect_id:库区
|
* sect_id:库区
|
||||||
* stor_id:仓库
|
* stor_id:仓库
|
||||||
* material_id:物料
|
* material_id:物料
|
||||||
* }
|
* }
|
||||||
* @return String : 巷道
|
* @return String : 巷道
|
||||||
*/
|
*/
|
||||||
private String getMinBlock(JSONObject jsonSub) {
|
private String getMinBlock(StructattrQuerry structattrQuerry) {
|
||||||
// 获取系统参数不入哪个巷道
|
// 获取系统参数不入哪个巷道
|
||||||
String not_in_block_num = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("not_in_block_num").getValue();
|
String not_in_block_num = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("not_in_block_num").getValue();
|
||||||
if (!not_in_block_num.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
if (!not_in_block_num.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
||||||
jsonSub.put("not_in_block_num", not_in_block_num);
|
structattrQuerry.setNot_in_block_num(not_in_block_num);
|
||||||
}
|
}
|
||||||
|
|
||||||
jsonSub.put("flag", "1");
|
|
||||||
|
|
||||||
// 获取仓库、库区有空位的巷道
|
// 获取仓库、库区有空位的巷道
|
||||||
List<JSONObject> blockList = WQL.getWO("BST_INRULE").addParamMap(jsonSub)
|
List<String> block = stIvtStructattrMapper.getBlock(structattrQuerry);
|
||||||
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 查询所属巷道所有木箱
|
* 查询所属巷道所有木箱
|
||||||
*/
|
*/
|
||||||
String block_in = blockList.stream()
|
structattrQuerry.setBlock_in(block);
|
||||||
.map(row -> row.getString("block_num"))
|
List<StIvtStructattr> boxAllList = stIvtStructattrMapper.getBoxAllList(structattrQuerry);
|
||||||
.collect(Collectors.joining("','"));
|
|
||||||
|
|
||||||
jsonSub.put("flag", "2");
|
|
||||||
jsonSub.put("block_in", "('" + block_in + "')");
|
|
||||||
|
|
||||||
List<JSONObject> boxAllList = WQL.getWO("BST_INRULE").addParamMap(jsonSub)
|
|
||||||
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
|
||||||
|
|
||||||
// 为空说明没有木箱,返回最小巷道
|
// 为空说明没有木箱,返回最小巷道
|
||||||
if (ObjectUtil.isEmpty(boxAllList)) {
|
if (CollUtil.isEmpty(boxAllList)) {
|
||||||
return blockList.get(0).getString("block_num");
|
return block.get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 不区分木箱规格:最小木箱数的巷道
|
// 不区分木箱规格:最小木箱数的巷道
|
||||||
JSONObject jsonBlockMin = sumBlockMinNum(blockList, boxAllList);
|
JSONObject jsonBlockMin = sumBlockMinNum(block, boxAllList);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 查询所属巷道所有相同规格的木箱
|
* 查询所属巷道所有相同规格的木箱
|
||||||
*/
|
*/
|
||||||
jsonSub.put("flag", "3");
|
List<StIvtStructattr> boxAllLikeList = stIvtStructattrMapper.getBoxAllLikeList(structattrQuerry);
|
||||||
List<JSONObject> boxAllLikeList = WQL.getWO("BST_INRULE").addParamMap(jsonSub)
|
|
||||||
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
|
||||||
|
|
||||||
// 为空说明库内没有相同规格的木箱,则返回不区分木箱规格的最小巷道
|
// 为空说明库内没有相同规格的木箱,则返回不区分木箱规格的最小巷道
|
||||||
if (ObjectUtil.isEmpty(boxAllLikeList)) {
|
if (ObjectUtil.isEmpty(boxAllLikeList)) {
|
||||||
@@ -224,7 +194,7 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 区分木箱规格:最小木箱的巷道
|
// 区分木箱规格:最小木箱的巷道
|
||||||
JSONObject jsonBlockLikeMin = sumBlockMinNum(blockList, boxAllLikeList);
|
JSONObject jsonBlockLikeMin = sumBlockMinNum(block, boxAllLikeList);
|
||||||
return jsonBlockLikeMin.getString("block_num");
|
return jsonBlockLikeMin.getString("block_num");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -235,35 +205,32 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
|
|||||||
* @param boxAllList: 所有木箱
|
* @param boxAllList: 所有木箱
|
||||||
* @return JSONObject:最小木箱数的巷道 JSONObject{block_num,box_num}
|
* @return JSONObject:最小木箱数的巷道 JSONObject{block_num,box_num}
|
||||||
*/
|
*/
|
||||||
private JSONObject sumBlockMinNum(List<JSONObject> blockList, List<JSONObject> boxAllList) {
|
private JSONObject sumBlockMinNum(List<String> blockList, List<StIvtStructattr> boxAllList) {
|
||||||
|
|
||||||
// 统计各巷道木箱数
|
// 统计各巷道木箱数
|
||||||
|
Map<BigDecimal, List<StIvtStructattr>> boxGroupedByBlock = boxAllList.stream()
|
||||||
|
.collect(Collectors.groupingBy(row -> row.getBlock_num()));
|
||||||
|
|
||||||
ArrayList<JSONObject> blockBoxList = new ArrayList<>();
|
ArrayList<JSONObject> blockBoxList = new ArrayList<>();
|
||||||
|
|
||||||
for (int i = 0; i < blockList.size(); i++) {
|
for (String jsonBlock : blockList) {
|
||||||
JSONObject jsonBlock = blockList.get(i);
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
int count = boxGroupedByBlock.getOrDefault(jsonBlock, Collections.emptyList()).size();
|
||||||
List<JSONObject> box_num = boxAllList.stream()
|
jsonObject.put("box_num", String.valueOf(count));
|
||||||
.filter(row -> row.getString("block_num").equals(jsonBlock.getString("block_num")))
|
blockBoxList.add(jsonObject);
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
jsonBlock.put("box_num", String.valueOf(box_num.size()));
|
|
||||||
blockBoxList.add(jsonBlock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 最小木箱数的巷道
|
// 获取木箱数最少的巷道
|
||||||
List<JSONObject> boxNumList = blockBoxList.stream()
|
return blockBoxList.stream()
|
||||||
.sorted(Comparator.comparing(row -> row.getIntValue("box_num")))
|
.min(Comparator.comparingInt(row -> Integer.parseInt(row.getString("box_num"))))
|
||||||
.collect(Collectors.toList());
|
.orElse(null);
|
||||||
|
|
||||||
return boxNumList.get(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取一个货位公共方法
|
* 获取一个货位公共方法
|
||||||
*
|
*
|
||||||
* @param jsonSub {
|
* @param structattrQuerry {
|
||||||
* jsonSub:木箱信息
|
* jsonSub:木箱信息
|
||||||
* sect_id:库区
|
* sect_id:库区
|
||||||
* stor_id:仓库
|
* stor_id:仓库
|
||||||
@@ -273,100 +240,88 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
|
|||||||
* }
|
* }
|
||||||
* @return JSONObject : 仓位
|
* @return JSONObject : 仓位
|
||||||
*/
|
*/
|
||||||
private JSONObject getStruct(JSONObject jsonSub) {
|
private JSONObject getStruct(StructattrQuerry structattrQuerry) {
|
||||||
// 根据巷道找这一巷道相同订单号、物料的仓位
|
// 根据巷道找这一巷道相同订单号、物料的仓位
|
||||||
JSONObject jsonLikeBox = queryEqualBox(jsonSub);
|
JSONObject jsonLikeBox = queryEqualBox(structattrQuerry);
|
||||||
if (ObjectUtil.isNotEmpty(jsonLikeBox)) {
|
if (ObjectUtil.isNotEmpty(jsonLikeBox)) {
|
||||||
return jsonLikeBox;
|
return jsonLikeBox;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取此仓库、库区、巷道、排的所有空位 根据列、层、深度排序
|
// 获取此仓库、库区、巷道、排的所有空位 根据列、层、深度排序
|
||||||
jsonSub.put("flag", "55");
|
List<StIvtStructattr> stIvtStructattrs = stIvtStructattrMapper.getstructRow(structattrQuerry);
|
||||||
|
|
||||||
List<JSONObject> rowStructList = WQL.getWO("BST_INRULE").addParamMap(jsonSub)
|
|
||||||
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
|
||||||
|
|
||||||
// 获取此仓库、库区、巷道、排的所有仓位
|
// 获取此仓库、库区、巷道、排的所有仓位
|
||||||
jsonSub.put("flag", "66");
|
List<StIvtStructattr> allStruct = stIvtStructattrMapper.getAllStruct(structattrQuerry);
|
||||||
|
StIvtStructattr stIvtStructattrReturn = new StIvtStructattr();
|
||||||
List<JSONObject> structAllList = WQL.getWO("BST_INRULE").addParamMap(jsonSub)
|
for (int i = 0; i < stIvtStructattrs.size(); i++) {
|
||||||
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
StIvtStructattr stIvtStructattr = stIvtStructattrs.get(i);
|
||||||
|
|
||||||
JSONObject jsonAttr = new JSONObject();
|
|
||||||
|
|
||||||
for (int i = 0; i < rowStructList.size(); i++) {
|
|
||||||
JSONObject json = rowStructList.get(i);
|
|
||||||
|
|
||||||
// 判断伸位
|
// 判断伸位
|
||||||
if (json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("无"))) {
|
if (stIvtStructattr.getZdepth().equals(IOSEnum.ZDEPTH_STRUCT.code("无"))) {
|
||||||
// 无需深度
|
// 无需深度
|
||||||
jsonAttr = json;
|
stIvtStructattrReturn = stIvtStructattr;
|
||||||
break;
|
break;
|
||||||
} else if (json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("深"))) {
|
} else if (stIvtStructattr.getZdepth().equals(IOSEnum.ZDEPTH_STRUCT.code("深"))) {
|
||||||
/*
|
/*
|
||||||
* 深货位:判断浅是否阻挡
|
* 深货位:判断浅是否阻挡
|
||||||
*/
|
*/
|
||||||
// 获取此货位对应的浅货位
|
// 获取此货位对应的浅货位
|
||||||
List<JSONObject> lowAttr = structAllList.stream()
|
List<StIvtStructattr> lowAttr = allStruct.stream()
|
||||||
.filter(row -> row.getString("col_num").equals(json.getString("col_num")) &&
|
.filter(row -> row.getCol_num().equals(String.valueOf(stIvtStructattr.getCol_num())) &&
|
||||||
row.getString("layer_num").equals(json.getString("layer_num")) &&
|
row.getLayer_num().equals(String.valueOf(stIvtStructattr.getLayer_num())) &&
|
||||||
row.getString("row_num").equals(json.getString("row_num")) &&
|
row.getRow_num().equals(String.valueOf(stIvtStructattr.getRow_num())) &&
|
||||||
row.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("浅")))
|
row.getZdepth().equals(IOSEnum.ZDEPTH_STRUCT.code("浅"))).collect(Collectors.toList());
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(lowAttr) || lowAttr.size() != 1) {
|
if (ObjectUtil.isEmpty(lowAttr) || lowAttr.size() != 1) {
|
||||||
notInBlockList.clear();
|
notInBlockList.clear();
|
||||||
throw new BadRequestException("匹配仓位时:" + json.getString("struct_code") + "对应的浅货位错误!");
|
throw new BadRequestException("匹配仓位时:" + stIvtStructattr.getStruct_code() + "对应的浅货位错误!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断是否有木箱
|
// 判断是否有木箱
|
||||||
JSONObject jsonAttrLow = lowAttr.get(0);
|
StIvtStructattr jsonAttrLow = lowAttr.get(0);
|
||||||
if (ObjectUtil.isEmpty(jsonAttrLow.getString("storagevehicle_code")) && jsonAttrLow.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
if (ObjectUtil.isEmpty(jsonAttrLow.getStoragevehicle_code()) && jsonAttrLow.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
||||||
// 没有木箱
|
// 没有木箱
|
||||||
jsonAttr = json;
|
stIvtStructattrReturn = stIvtStructattr;
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
} else if (json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("浅"))) {
|
} else if (stIvtStructattr.getZdepth().equals(IOSEnum.ZDEPTH_STRUCT.code("浅"))) {
|
||||||
/*
|
/*
|
||||||
* 浅货位:判断深货位是否空洞
|
* 浅货位:判断深货位是否空洞
|
||||||
*/
|
*/
|
||||||
// 获取此货位对应的深货位
|
// 获取此货位对应的深货位
|
||||||
List<JSONObject> darkAttr = structAllList.stream()
|
List<StIvtStructattr> darkAttr = allStruct.stream()
|
||||||
.filter(row -> row.getString("col_num").equals(json.getString("col_num")) &&
|
.filter(row -> row.getCol_num().equals(String.valueOf(stIvtStructattr.getCol_num())) &&
|
||||||
row.getString("layer_num").equals(json.getString("layer_num")) &&
|
row.getLayer_num().equals(String.valueOf(stIvtStructattr.getLayer_num())) &&
|
||||||
row.getString("row_num").equals(json.getString("row_num")) &&
|
row.getRow_num().equals(String.valueOf(stIvtStructattr.getRow_num())) &&
|
||||||
row.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("深")))
|
row.getZdepth().equals(IOSEnum.ZDEPTH_STRUCT.code("深"))).collect(Collectors.toList());
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(darkAttr) || darkAttr.size() != 1) {
|
if (ObjectUtil.isEmpty(darkAttr) || darkAttr.size() != 1) {
|
||||||
notInBlockList.clear();
|
notInBlockList.clear();
|
||||||
throw new BadRequestException("匹配仓位时:" + json.getString("struct_code") + "对应的深货位错误!");
|
throw new BadRequestException("匹配仓位时:" + stIvtStructattr.getStruct_code() + "对应的深货位错误!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断是否有木箱
|
// 判断是否有木箱
|
||||||
JSONObject jsonAttrDark = darkAttr.get(0);
|
StIvtStructattr jsonAttrDark = darkAttr.get(0);
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(jsonAttrDark.getString("storagevehicle_code"))) {
|
if (ObjectUtil.isNotEmpty(jsonAttrDark.getStoragevehicle_code())) {
|
||||||
|
|
||||||
// 判断是否是成品箱,判断内容:是否空托盘、是否空木箱
|
// 判断是否是成品箱,判断内容:是否空托盘、是否空木箱
|
||||||
if (jsonAttrDark.getString("is_vehicle").equals(IOSEnum.IS_NOTANDYES.code("是")) ||
|
if (jsonAttrDark.getIs_vehicle().equals(IOSEnum.IS_NOTANDYES.code("是")) ||
|
||||||
jsonAttrDark.getString("is_packing").equals(IOSEnum.IS_NOTANDYES.code("否"))
|
jsonAttrDark.getIs_packing().equals(IOSEnum.IS_NOTANDYES.code("否"))
|
||||||
) {
|
) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (jsonAttrDark.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
if (jsonAttrDark.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
||||||
jsonAttr = json;
|
stIvtStructattrReturn = stIvtStructattr;
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (jsonAttrDark.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
if (jsonAttrDark.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
||||||
jsonAttr = jsonAttrDark;
|
stIvtStructattrReturn = jsonAttrDark;
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
@@ -376,56 +331,59 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return jsonAttr;
|
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(stIvtStructattrReturn);
|
||||||
|
return jsonObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 匹配相同订单、物料的仓位
|
* 匹配相同订单、物料的仓位
|
||||||
* @param jsonSub{子卷包装关系}
|
*
|
||||||
|
* @param structattrQuerry{子卷包装关系}
|
||||||
* @return JSONObject:要入库的仓位
|
* @return JSONObject:要入库的仓位
|
||||||
*/
|
*/
|
||||||
private JSONObject queryEqualBox(JSONObject jsonSub) {
|
private JSONObject queryEqualBox(StructattrQuerry structattrQuerry) {
|
||||||
// 需要返回的仓位
|
// 需要返回的仓位
|
||||||
JSONObject result = new JSONObject();
|
JSONObject result = new JSONObject();
|
||||||
// 1.匹配相同订单号、物料的排(row_num)
|
// 1.匹配相同订单号、物料的排(row_num)
|
||||||
jsonSub.put("flag", "77");
|
|
||||||
List<JSONObject> rowList = WQL.getWO("BST_INRULE").addParamMap(jsonSub)
|
List<StIvtStructattr> likeOrder = stIvtStructattrMapper.getLikeOrder(structattrQuerry);
|
||||||
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
StructattrQuerry structattrQuerry2 = new StructattrQuerry();
|
||||||
|
structattrQuerry2.setBlock_num(structattrQuerry.getBlock_num());
|
||||||
|
structattrQuerry2.setSect_id(structattrQuerry.getSect_id());
|
||||||
|
|
||||||
// 查询此巷道的所有仓位
|
// 查询此巷道的所有仓位
|
||||||
List<JSONObject> attrRowAllList = WQL.getWO("BST_INRULE").addParam("flag", "88")
|
List<StIvtStructattr> stIvtStructattrs = stIvtStructattrMapper.getallStruct(structattrQuerry2);
|
||||||
.addParam("sect_id", jsonSub.getString("sect_id"))
|
|
||||||
.addParam("block_num", jsonSub.getString("block_num")).process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
|
||||||
|
|
||||||
for (JSONObject json : rowList) {
|
for (StIvtStructattr json : likeOrder) {
|
||||||
// 判断此深仓位是否有货、是否被锁住
|
// 判断此深仓位是否有货、是否被锁住
|
||||||
if (ObjectUtil.isEmpty(json.getString("storagevehicle_code"))
|
if (ObjectUtil.isEmpty(json.getStoragevehicle_code())
|
||||||
|| !json.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))
|
|| !json.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||||
) {
|
) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 找对应的浅货位
|
// 找对应的浅货位
|
||||||
JSONObject darkJson = attrRowAllList.stream()
|
StIvtStructattr darkJson = stIvtStructattrs.stream()
|
||||||
.filter(row -> row.getString("col_num").equals(json.getString("col_num")) &&
|
.filter(row -> row.getCol_num().equals(json.getCol_num()) &&
|
||||||
row.getString("layer_num").equals(json.getString("layer_num")) &&
|
row.getLayer_num().equals(json.getLayer_num()) &&
|
||||||
row.getString("row_num").equals(json.getString("row_num")) &&
|
row.getRow_num().equals(json.getRow_num()) &&
|
||||||
row.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("浅")))
|
row.getZdepth().equals(IOSEnum.ZDEPTH_STRUCT.code("浅")))
|
||||||
.findFirst().orElse(null);
|
.findFirst().orElse(null);
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(darkJson)) {
|
if (ObjectUtil.isEmpty(darkJson)) {
|
||||||
notInBlockList.clear();
|
notInBlockList.clear();
|
||||||
throw new BadRequestException("匹配相同木箱规格仓位时:" + json.getString("struct_code") + "对应的深货位错误!");
|
throw new BadRequestException("匹配相同木箱规格仓位时:" + darkJson.getStruct_code() + "对应的深货位错误!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断浅货位是否有货、未锁定
|
// 判断浅货位是否有货、未锁定
|
||||||
if (ObjectUtil.isNotEmpty(darkJson.getString("storagevehicle_code"))
|
if (ObjectUtil.isNotEmpty(darkJson.getStoragevehicle_code())
|
||||||
|| !darkJson.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))
|
|| !darkJson.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||||
) {
|
) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(darkJson);
|
||||||
|
|
||||||
result = darkJson;
|
result = jsonObject;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ public class StIvtStructattr implements Serializable {
|
|||||||
* 高度
|
* 高度
|
||||||
*/
|
*/
|
||||||
@TableField("height")
|
@TableField("height")
|
||||||
private BigDecimal height;
|
private String height;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 深度
|
* 深度
|
||||||
@@ -357,4 +357,9 @@ public class StIvtStructattr implements Serializable {
|
|||||||
*/
|
*/
|
||||||
@TableField("storagevehicle_type")
|
@TableField("storagevehicle_type")
|
||||||
private String storagevehicle_type;
|
private String storagevehicle_type;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String is_packing;
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String is_vehicle;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,26 @@
|
|||||||
package org.nl.b_lms.storage_manage.st.dao.mapper;
|
package org.nl.b_lms.storage_manage.st.dao.mapper;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dto.StructattrQuerry;
|
||||||
import org.nl.b_lms.storage_manage.st.dao.StIvtStructattr;
|
import org.nl.b_lms.storage_manage.st.dao.StIvtStructattr;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface StIvtStructattrMapper extends BaseMapper<StIvtStructattr> {
|
public interface StIvtStructattrMapper extends BaseMapper<StIvtStructattr> {
|
||||||
|
|
||||||
|
List<String> getBlock(@Param("param") StructattrQuerry pdmBiSubpackagerelation);
|
||||||
|
|
||||||
|
List<StIvtStructattr> getBoxAllList(@Param("param") StructattrQuerry pdmBiSubpackagerelation);
|
||||||
|
|
||||||
|
List<StIvtStructattr> getBoxAllLikeList(@Param("param") StructattrQuerry structattrQuerry);
|
||||||
|
|
||||||
|
List<StIvtStructattr> getLikeOrder(@Param("param") StructattrQuerry jsonSub);
|
||||||
|
|
||||||
|
List<StIvtStructattr> getallStruct(@Param("param")StructattrQuerry structattrQuerry2);
|
||||||
|
|
||||||
|
List<StIvtStructattr> getstructRow(@Param("param")StructattrQuerry structattrQuerry);
|
||||||
|
|
||||||
|
List<StIvtStructattr> getAllStruct(StructattrQuerry structattrQuerry);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,4 +2,254 @@
|
|||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="org.nl.b_lms.storage_manage.st.dao.mapper.StIvtStructattrMapper">
|
<mapper namespace="org.nl.b_lms.storage_manage.st.dao.mapper.StIvtStructattrMapper">
|
||||||
|
|
||||||
|
<select id="getBlock" resultType="java.lang.String"
|
||||||
|
parameterType="org.nl.b_lms.storage_manage.ios.service.iostorInv.dto.StructattrQuerry">
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
attr.block_num
|
||||||
|
FROM
|
||||||
|
st_ivt_structattr attr
|
||||||
|
WHERE
|
||||||
|
attr.is_used = '1'
|
||||||
|
AND attr.is_delete = '0'
|
||||||
|
AND attr.lock_type = '1'
|
||||||
|
AND IFNULL(attr.storagevehicle_code,'') = ''
|
||||||
|
AND attr.stor_id = param.stor_id
|
||||||
|
AND attr.sect_id = param.sect_id
|
||||||
|
AND attr.storagevehicle_type = param.vehicle_type
|
||||||
|
<if test="param.not_in_block_num != '' || param.not_in_block_num != null ">
|
||||||
|
AND attr.block_num != param.block_num
|
||||||
|
</if>
|
||||||
|
<if test=" param.not_block != null ">
|
||||||
|
AND attr.block_num not in
|
||||||
|
<foreach collection="param.not_block" open="(" close=")" separator="," index="block_num">
|
||||||
|
#{block_num}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
AND attr.height in
|
||||||
|
<foreach collection="param.height" open="(" close=")" separator="," index="height">
|
||||||
|
#{height}
|
||||||
|
</foreach>
|
||||||
|
group by attr.block_num
|
||||||
|
order by attr.block_num
|
||||||
|
|
||||||
|
</select>
|
||||||
|
<select id="getBoxAllList" resultType="org.nl.b_lms.storage_manage.st.dao.StIvtStructattr"
|
||||||
|
parameterType="org.nl.b_lms.storage_manage.ios.service.iostorInv.dto.StructattrQuerry">
|
||||||
|
SELECT
|
||||||
|
attr.*
|
||||||
|
FROM
|
||||||
|
st_ivt_structattr attr
|
||||||
|
INNER JOIN bst_ivt_boxinfo box ON box.box_no = attr.storagevehicle_code
|
||||||
|
WHERE
|
||||||
|
attr.is_used = '1'
|
||||||
|
AND attr.is_delete = '0'
|
||||||
|
AND attr.stor_id = param.stor_id
|
||||||
|
AND attr.sect_id = param.sect_id
|
||||||
|
AND IFNULL(attr.storagevehicle_code,'') != ''
|
||||||
|
AND box.is_packing = '1'
|
||||||
|
|
||||||
|
<if test="param.block_in != null ">
|
||||||
|
AND attr.block_num in
|
||||||
|
<foreach collection="param.block_in" open="(" close=")" separator="," index="block_num">
|
||||||
|
#{block_num}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="param.row_in != null ">
|
||||||
|
AND attr.row_num in
|
||||||
|
<foreach collection="param.row_in" open="(" close=")" separator="," index="row_num">
|
||||||
|
#{row_num}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="param.block_num != '' || param.block_num != null ">
|
||||||
|
AND attr.block_num == param.block_num
|
||||||
|
</if>
|
||||||
|
<if test="param.row_num != '' || param.row_num != null ">
|
||||||
|
AND attr.row_num != param.row_num
|
||||||
|
</if>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
<select id="getBoxAllLikeList" resultType="org.nl.b_lms.storage_manage.st.dao.StIvtStructattr"
|
||||||
|
parameterType="org.nl.b_lms.storage_manage.ios.service.iostorInv.dto.StructattrQuerry">
|
||||||
|
|
||||||
|
SELECT DISTINCT
|
||||||
|
attr.*
|
||||||
|
FROM
|
||||||
|
st_ivt_structattr attr
|
||||||
|
INNER JOIN pdm_bi_subpackagerelation sub ON sub.package_box_sn = attr.storagevehicle_code
|
||||||
|
INNER JOIN bst_ivt_boxinfo box ON box.box_no = attr.storagevehicle_code
|
||||||
|
LEFT JOIN md_me_materialbase mater ON mater.material_code = sub.product_name
|
||||||
|
WHERE
|
||||||
|
attr.is_used = '1'
|
||||||
|
AND attr.is_delete = '0'
|
||||||
|
AND attr.stor_id = param.stor_id
|
||||||
|
AND attr.sect_id = param.sect_id
|
||||||
|
AND IFNULL(attr.storagevehicle_code,'') != ''
|
||||||
|
AND box.is_packing = '1'
|
||||||
|
|
||||||
|
<if test="param.material_id != '' || param.material_id != null ">
|
||||||
|
AND mater.material_id == param.material_id
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="param.customer_name != '' || param.customer_name != null ">
|
||||||
|
AND sub.customer_name == param.customer_name
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="param.customer_name != '' || param.customer_name != null ">
|
||||||
|
AND sub.customer_name == param.customer_name
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="param.sale_order_name != '' || param.sale_order_name != null ">
|
||||||
|
AND sub.sale_order_name == param.sale_order_name
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="param.box_length != '' || param.box_length != null ">
|
||||||
|
AND sub.box_length == param.box_length
|
||||||
|
</if>
|
||||||
|
<if test="param.box_width != '' || param.box_width != null ">
|
||||||
|
AND sub.box_width == param.box_width
|
||||||
|
</if>
|
||||||
|
<if test="param.box_high != '' || param.box_high != null ">
|
||||||
|
AND sub.box_high == param.box_high
|
||||||
|
</if>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<if test="param.block_in != null ">
|
||||||
|
AND attr.block_num in
|
||||||
|
<foreach collection="param.block_in" open="(" close=")" separator="," index="block_num">
|
||||||
|
#{block_num}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="param.row_in != null ">
|
||||||
|
AND attr.row_num in
|
||||||
|
<foreach collection="param.row_in" open="(" close=")" separator="," index="row_num">
|
||||||
|
#{row_num}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
<select id="getLikeOrder" resultType="org.nl.b_lms.storage_manage.st.dao.StIvtStructattr"
|
||||||
|
parameterType="org.nl.b_lms.storage_manage.ios.service.iostorInv.dto.StructattrQuerry">
|
||||||
|
SELECT
|
||||||
|
attr.*
|
||||||
|
FROM
|
||||||
|
st_ivt_structivt ivt
|
||||||
|
INNER JOIN st_ivt_structattr attr ON ivt.struct_code = attr.struct_code
|
||||||
|
INNER JOIN pdm_bi_subpackagerelation sub ON attr.storagevehicle_code = sub.package_box_sn AND ivt.pcsn = sub.container_name
|
||||||
|
WHERE
|
||||||
|
attr.is_used = '1'
|
||||||
|
AND attr.is_delete = '0'
|
||||||
|
AND attr.lock_type = '1'
|
||||||
|
AND IFNULL(attr.storagevehicle_code,'') != ''
|
||||||
|
AND attr.stor_id = param.stor_id
|
||||||
|
AND attr.sect_id = param.sect_id
|
||||||
|
AND attr.zdepth = '2'
|
||||||
|
AND attr.storagevehicle_type = param.vehicle_type
|
||||||
|
|
||||||
|
AND attr.height in
|
||||||
|
<foreach collection="param.height" open="(" close=")" separator="," index="height">
|
||||||
|
#{height}
|
||||||
|
</foreach>
|
||||||
|
|
||||||
|
<if test="param.block_num != '' || param.block_num != null ">
|
||||||
|
AND attr.block_num == param.block_num
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="param.product_name != '' || param.product_name != null ">
|
||||||
|
AND sub.product_name == param.product_name
|
||||||
|
</if>
|
||||||
|
<if test="param.sale_order_name != '' || param.sale_order_name != null ">
|
||||||
|
AND sub.sale_order_name == param.sale_order_name
|
||||||
|
</if>
|
||||||
|
<if test="param.box_length != '' || param.box_length != null ">
|
||||||
|
AND sub.box_length == param.box_length
|
||||||
|
</if>
|
||||||
|
<if test="param.box_width != '' || param.box_width != null ">
|
||||||
|
AND sub.box_width == param.box_width
|
||||||
|
</if>
|
||||||
|
<if test="param.box_high != '' || param.box_high != null ">
|
||||||
|
AND sub.box_high == param.box_high
|
||||||
|
</if>
|
||||||
|
|
||||||
|
order by attr.col_num,attr.layer_num ASC
|
||||||
|
</select>
|
||||||
|
<select id="getallStruct" resultType="org.nl.b_lms.storage_manage.st.dao.StIvtStructattr"
|
||||||
|
parameterType="org.nl.b_lms.storage_manage.ios.service.iostorInv.dto.StructattrQuerry">
|
||||||
|
SELECT
|
||||||
|
attr.*
|
||||||
|
FROM
|
||||||
|
st_ivt_structattr attr
|
||||||
|
WHERE
|
||||||
|
attr.is_used = '1'
|
||||||
|
AND attr.is_delete = '0'
|
||||||
|
AND attr.sect_id = param.sect_id
|
||||||
|
|
||||||
|
<if test="param.block_num != '' || param.block_num != null ">
|
||||||
|
AND attr.block_num == param.block_num
|
||||||
|
</if>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
<select id="getstructRow" resultType="org.nl.b_lms.storage_manage.st.dao.StIvtStructattr"
|
||||||
|
parameterType="org.nl.b_lms.storage_manage.ios.service.iostorInv.dto.StructattrQuerry">
|
||||||
|
SELECT
|
||||||
|
attr.*
|
||||||
|
FROM
|
||||||
|
st_ivt_structattr attr
|
||||||
|
WHERE
|
||||||
|
attr.is_used = '1'
|
||||||
|
AND attr.is_delete = '0'
|
||||||
|
AND attr.lock_type = '1'
|
||||||
|
AND IFNULL(attr.storagevehicle_code,'') = ''
|
||||||
|
AND attr.stor_id = param.stor_id
|
||||||
|
AND attr.sect_id = param.sect_id
|
||||||
|
AND attr.storagevehicle_type = param.vehicle_type
|
||||||
|
AND attr.height in
|
||||||
|
<foreach collection="param.height" open="(" close=")" separator="," index="height">
|
||||||
|
#{height}
|
||||||
|
</foreach>
|
||||||
|
<if test="param.block_num != '' || param.block_num != null ">
|
||||||
|
AND attr.block_num == param.block_num
|
||||||
|
</if>
|
||||||
|
|
||||||
|
|
||||||
|
order by attr.zdepth DESC, attr.col_num, attr.layer_num ASC
|
||||||
|
</select>
|
||||||
|
<select id="getAllStruct" resultType="org.nl.b_lms.storage_manage.st.dao.StIvtStructattr"
|
||||||
|
parameterType="org.nl.b_lms.storage_manage.ios.service.iostorInv.dto.StructattrQuerry">
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
attr.*,
|
||||||
|
CASE
|
||||||
|
WHEN IFNULL(box.is_packing,'') = '' THEN '0'
|
||||||
|
ELSE box.is_packing
|
||||||
|
END AS is_packing,
|
||||||
|
CASE
|
||||||
|
WHEN IFNULL(attr.is_emptyvehicle,'') = '' THEN '0'
|
||||||
|
ELSE attr.is_emptyvehicle
|
||||||
|
END AS is_vehicle
|
||||||
|
|
||||||
|
FROM
|
||||||
|
st_ivt_structattr attr
|
||||||
|
LEFT JOIN bst_ivt_boxinfo box ON box.box_no = attr.storagevehicle_code
|
||||||
|
WHERE
|
||||||
|
attr.is_used = '1'
|
||||||
|
AND attr.is_delete = '0'
|
||||||
|
AND attr.stor_id = param.stor_id
|
||||||
|
AND attr.sect_id = param.sect_id
|
||||||
|
AND attr.storagevehicle_type = param.vehicle_type
|
||||||
|
|
||||||
|
AND attr.height in
|
||||||
|
<foreach collection="param.height" open="(" close=")" separator="," index="height">
|
||||||
|
#{height}
|
||||||
|
</foreach>
|
||||||
|
<if test="param.block_num != '' || param.block_num != null ">
|
||||||
|
AND attr.block_num == param.block_num
|
||||||
|
</if>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -14,7 +14,9 @@ import org.nl.wms.basedata.st.service.UserStorService;
|
|||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -196,4 +198,18 @@ public class UserStorServiceImpl implements UserStorService {
|
|||||||
return in_stor_id;
|
return in_stor_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<String> getInStor2() {
|
||||||
|
String currentUserId = SecurityUtils.getCurrentUserId().toString();
|
||||||
|
WQLObject userStorTab = WQLObject.getWQLObject("st_ivt_userstor");
|
||||||
|
|
||||||
|
JSONArray userStorArr = userStorTab.query("user_id = '" + currentUserId + "'").getResultJSONArray(0);
|
||||||
|
// 将仓库id拼成字符串
|
||||||
|
List<String> list = new ArrayList<>();
|
||||||
|
for (int i = 0; i < userStorArr.size(); i++) {
|
||||||
|
JSONObject json = userStorArr.getJSONObject(i);
|
||||||
|
list.add(json.getString("stor_id"));
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ package org.nl.wms.st.instor.check.contronller;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nl.common.TableDataInfo;
|
||||||
|
import org.nl.common.domain.query.PageQuery;
|
||||||
import org.nl.modules.logging.annotation.Log;
|
import org.nl.modules.logging.annotation.Log;
|
||||||
import org.nl.wms.st.instor.service.CheckService;
|
import org.nl.wms.st.instor.service.CheckService;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
@@ -25,8 +27,8 @@ public class CheckController {
|
|||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
@Log("查询盘点单")
|
@Log("查询盘点单")
|
||||||
public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page) {
|
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page) {
|
||||||
return new ResponseEntity<>(checkService.pageQuery(whereJson, page), HttpStatus.OK);
|
return new ResponseEntity<>(TableDataInfo.build(checkService.pageQuery(whereJson, page)), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/getDtlView")
|
@GetMapping("/getDtlView")
|
||||||
@@ -37,8 +39,8 @@ public class CheckController {
|
|||||||
|
|
||||||
@GetMapping("/getExceptionDispose")
|
@GetMapping("/getExceptionDispose")
|
||||||
@Log("查询盘点单明细异常")
|
@Log("查询盘点单明细异常")
|
||||||
public ResponseEntity<Object> getExceptionDispose(@RequestParam Map whereJson, Pageable page) {
|
public ResponseEntity<Object> getExceptionDispose(@RequestParam Map whereJson, PageQuery page) {
|
||||||
return new ResponseEntity<>(checkService.getExceptionDispose(whereJson, page), HttpStatus.OK);
|
return new ResponseEntity<>(TableDataInfo.build(checkService.getExceptionDispose(whereJson, page)), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/getOutBillDtl")
|
@GetMapping("/getOutBillDtl")
|
||||||
|
|||||||
@@ -164,4 +164,7 @@ public class StIvtCheckMst implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String syscompanyid;
|
private String syscompanyid;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Integer pcsn_num;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.nl.wms.st.instor.check.service.dao;
|
package org.nl.wms.st.instor.check.service.dao;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
@@ -159,6 +160,13 @@ public class StIvtCheckdtl implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String material_code;
|
||||||
|
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String material_name;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,13 @@ package org.nl.wms.st.instor.check.service.dao.mapper;
|
|||||||
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinv;
|
||||||
import org.nl.wms.st.instor.check.service.dao.StIvtCheckMst;
|
import org.nl.wms.st.instor.check.service.dao.StIvtCheckMst;
|
||||||
|
import org.nl.wms.st.instor.check.service.dao.StIvtCheckdtl;
|
||||||
|
import org.nl.wms.st.outbill.service.dto.OutBillQueryPageParam;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -14,5 +20,7 @@ import org.nl.wms.st.instor.check.service.dao.StIvtCheckMst;
|
|||||||
*/
|
*/
|
||||||
public interface StIvtCheckMstMapper extends BaseMapper<StIvtCheckMst> {
|
public interface StIvtCheckMstMapper extends BaseMapper<StIvtCheckMst> {
|
||||||
|
|
||||||
|
List<String> recordQuery(List<String> ids);
|
||||||
|
|
||||||
|
IPage<StIvtCheckdtl> getExceptionDispose(IPage<StIvtIostorinv> pages, OutBillQueryPageParam paramMap);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="org.nl.wms.st.instor.check.service.dao.mapper.StIvtCheckMstMapper">
|
||||||
|
|
||||||
|
<select id="recordQuery" resultType="String">
|
||||||
|
SELECT
|
||||||
|
dtl.check_id
|
||||||
|
FROM
|
||||||
|
pdm_bi_subpackagerelation sub
|
||||||
|
LEFT JOIN st_ivt_checkdtl dtl ON sub.package_box_sn = dtl.storagevehicle_code
|
||||||
|
WHERE
|
||||||
|
1 = 1
|
||||||
|
and dtl.check_id in
|
||||||
|
<foreach collection="ids" item="item" open="(" close=")" separator=",">
|
||||||
|
#{item}
|
||||||
|
</foreach>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="getExceptionDispose" resultType="org.nl.wms.st.instor.check.service.dao.StIvtCheckdtl">
|
||||||
|
SELECT
|
||||||
|
dtl.*,
|
||||||
|
mater.material_code,
|
||||||
|
mater.material_name
|
||||||
|
FROM
|
||||||
|
ST_IVT_CheckDtl dtl
|
||||||
|
LEFT JOIN md_me_materialbase mater ON dtl.material_id = mater.material_id
|
||||||
|
WHERE
|
||||||
|
dtl.check_result = '2'
|
||||||
|
and dtl.status in ('4','5')
|
||||||
|
<if test="paramMap.box_no != null and paramMap.box_no !=''">
|
||||||
|
AND dtl.storagevehicle_code like '%${paramMap.box_no}%'
|
||||||
|
</if>
|
||||||
|
<if test="paramMap.bill_code != null and paramMap.bill_code !=''">
|
||||||
|
AND dtl.check_code = #{paramMap.bill_code}
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
</mapper>
|
||||||
@@ -2,8 +2,11 @@ package org.nl.wms.st.instor.service;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import org.nl.common.domain.query.PageQuery;
|
||||||
import org.nl.wms.st.instor.check.service.dao.StIvtCheckMst;
|
import org.nl.wms.st.instor.check.service.dao.StIvtCheckMst;
|
||||||
|
import org.nl.wms.st.instor.check.service.dao.StIvtCheckdtl;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
@@ -18,7 +21,7 @@ public interface CheckService extends IService<StIvtCheckMst> {
|
|||||||
* @param page 分页参数
|
* @param page 分页参数
|
||||||
* @return Map<String, Object>
|
* @return Map<String, Object>
|
||||||
*/
|
*/
|
||||||
Map<String, Object> pageQuery(Map whereJson, Pageable page);
|
IPage<StIvtCheckMst> pageQuery(Map whereJson, PageQuery page);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询数据分页
|
* 查询数据分页
|
||||||
@@ -36,7 +39,7 @@ public interface CheckService extends IService<StIvtCheckMst> {
|
|||||||
* @param page 分页参数
|
* @param page 分页参数
|
||||||
* @return Map<String, Object>
|
* @return Map<String, Object>
|
||||||
*/
|
*/
|
||||||
Map<String, Object> getExceptionDispose(Map whereJson, Pageable page);
|
IPage<StIvtCheckdtl> getExceptionDispose(Map whereJson, PageQuery page);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 多选删除
|
* 多选删除
|
||||||
|
|||||||
@@ -9,9 +9,15 @@ import com.alibaba.fastjson.JSONArray;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
|
||||||
|
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
|
||||||
|
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinv;
|
||||||
|
import org.nl.common.domain.query.PageQuery;
|
||||||
import org.nl.common.utils.SecurityUtils;
|
import org.nl.common.utils.SecurityUtils;
|
||||||
import org.nl.modules.common.exception.BadRequestException;
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
import org.nl.modules.common.utils.FileUtil;
|
import org.nl.modules.common.utils.FileUtil;
|
||||||
@@ -25,6 +31,7 @@ import org.nl.wms.st.instor.check.service.dao.StIvtCheckdtl;
|
|||||||
import org.nl.wms.st.instor.check.service.dao.mapper.StIvtCheckMstMapper;
|
import org.nl.wms.st.instor.check.service.dao.mapper.StIvtCheckMstMapper;
|
||||||
import org.nl.wms.st.instor.check.service.dao.mapper.StIvtCheckdtlMapper;
|
import org.nl.wms.st.instor.check.service.dao.mapper.StIvtCheckdtlMapper;
|
||||||
import org.nl.wms.st.instor.service.CheckService;
|
import org.nl.wms.st.instor.service.CheckService;
|
||||||
|
import org.nl.wms.st.outbill.service.dto.OutBillQueryPageParam;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -48,46 +55,43 @@ public class CheckServiceImpl extends ServiceImpl<StIvtCheckMstMapper, StIvtChec
|
|||||||
private StIvtCheckdtlMapper stIvtCheckdtlMapper;
|
private StIvtCheckdtlMapper stIvtCheckdtlMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> pageQuery(Map whereJson, Pageable page) {
|
public IPage<StIvtCheckMst> pageQuery(Map whereJson, PageQuery page) {
|
||||||
|
LambdaQueryWrapper<StIvtCheckMst> wrapper = new LambdaQueryWrapper<StIvtCheckMst>();
|
||||||
HashMap<String, String> map = new HashMap<>(whereJson);
|
|
||||||
map.put("flag", "1");
|
|
||||||
if (StrUtil.isNotEmpty(map.get("check_code"))) {
|
|
||||||
map.put("check_code", "%" + map.get("check_code") + "%");
|
|
||||||
}
|
|
||||||
//获取人员对应的仓库
|
//获取人员对应的仓库
|
||||||
UserStorServiceImpl userStorService = new UserStorServiceImpl();
|
UserStorServiceImpl userStorService = new UserStorServiceImpl();
|
||||||
String in_stor_id = userStorService.getInStor();
|
List<String> in_stor_id = userStorService.getInStor2();
|
||||||
|
wrapper.in(ObjectUtil.isNotEmpty(in_stor_id),StIvtCheckMst::getStor_id,in_stor_id)
|
||||||
|
.like(ObjectUtil.isNotEmpty(whereJson.get("check_code")),StIvtCheckMst::getCheck_code,whereJson.get("check_code"))
|
||||||
|
.eq(ObjectUtil.isNotEmpty(whereJson.get("check_type")),StIvtCheckMst::getCheck_type,whereJson.get("check_type"))
|
||||||
|
.eq(ObjectUtil.isNotEmpty(whereJson.get("create_mode")),StIvtCheckMst::getCreate_mode,whereJson.get("create_mode"))
|
||||||
|
.eq(ObjectUtil.isNotEmpty(whereJson.get("stor_id")),StIvtCheckMst::getStor_id,whereJson.get("stor_id"))
|
||||||
|
.eq(ObjectUtil.isNotEmpty(whereJson.get("status")),StIvtCheckMst::getStatus,whereJson.get("status"))
|
||||||
|
.gt(ObjectUtil.isNotEmpty(whereJson.get("begin_time")),StIvtCheckMst::getInput_time,whereJson.get("begin_time"))
|
||||||
|
.lt(ObjectUtil.isNotEmpty(whereJson.get("end_time")),StIvtCheckMst::getInput_time,whereJson.get("end_time"))
|
||||||
|
.orderByDesc(StIvtCheckMst::getCheck_code);
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(in_stor_id)) {
|
|
||||||
map.put("in_stor_id", in_stor_id);
|
IPage<StIvtCheckMst> pages = new Page<>(page.getPage() + 1, page.getSize());
|
||||||
|
|
||||||
|
IPage<StIvtCheckMst> ret = stIvtCheckMstMapper.selectPage(pages,wrapper);
|
||||||
|
|
||||||
|
List<StIvtCheckMst> list = ret.getRecords();
|
||||||
|
|
||||||
|
List<String> strs = list.stream().map(plan -> plan.getCheck_id()).collect(Collectors.toList());
|
||||||
|
if(strs.size()>0){
|
||||||
|
List<String> sublist = stIvtCheckMstMapper.recordQuery(strs);
|
||||||
|
for (int i = 0; i < list.size(); i++) {
|
||||||
|
StIvtCheckMst json = list.get(i);
|
||||||
|
|
||||||
|
// 匹配相同check_id的数据条数
|
||||||
|
int pcsn_num = (int) sublist.stream()
|
||||||
|
.filter(row -> row.equals(json.getCheck_id()))
|
||||||
|
.count();
|
||||||
|
|
||||||
|
json.setPcsn_num(pcsn_num);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return ret;
|
||||||
JSONObject jo = WQL.getWO("QST_IVT_CHECK").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "check_code desc");
|
|
||||||
JSONArray content = jo.getJSONArray("content");
|
|
||||||
if (content.isEmpty()) {
|
|
||||||
return jo;
|
|
||||||
}
|
|
||||||
// 拼接主表id
|
|
||||||
String check_id = content.stream()
|
|
||||||
.map(row -> (JSONObject) row)
|
|
||||||
.map(row -> row.getString("check_id"))
|
|
||||||
.collect(Collectors.joining(","));
|
|
||||||
|
|
||||||
JSONArray resultJSONArray = WQL.getWO("QST_IVT_CHECK").addParam("flag", "13").addParam("check_id_in", "(" + check_id + ")").process().getResultJSONArray(0);
|
|
||||||
|
|
||||||
for (int i = 0; i < content.size(); i++) {
|
|
||||||
JSONObject json = content.getJSONObject(i);
|
|
||||||
|
|
||||||
// 匹配相同check_id的数据条数
|
|
||||||
int pcsn_num = (int) resultJSONArray.stream()
|
|
||||||
.map(row -> (JSONObject) row)
|
|
||||||
.filter(row -> row.getString("check_id").equals(json.getString("check_id")))
|
|
||||||
.count();
|
|
||||||
|
|
||||||
json.put("pcsn_num", pcsn_num);
|
|
||||||
}
|
|
||||||
return jo;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -113,21 +117,15 @@ public class CheckServiceImpl extends ServiceImpl<StIvtCheckMstMapper, StIvtChec
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> getExceptionDispose(Map whereJson, Pageable page) {
|
public IPage<StIvtCheckdtl> getExceptionDispose(Map whereJson, PageQuery page) {
|
||||||
String box_no = MapUtil.getStr(whereJson, "box_no");
|
String box_no = MapUtil.getStr(whereJson, "box_no");
|
||||||
String check_code = MapUtil.getStr(whereJson, "check_code");
|
String check_code = MapUtil.getStr(whereJson, "check_code");
|
||||||
|
OutBillQueryPageParam param = new OutBillQueryPageParam();
|
||||||
|
param.setBill_code(check_code);
|
||||||
|
param.setBox_no(box_no);
|
||||||
|
|
||||||
JSONObject map = new JSONObject();
|
IPage<StIvtIostorinv> pages = new Page<>(page.getPage() + 1, page.getSize());
|
||||||
map.put("check_code", check_code);
|
return stIvtCheckMstMapper.getExceptionDispose(pages, param);
|
||||||
map.put("flag", "10");
|
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(box_no)) {
|
|
||||||
map.put("box_no", "%" + box_no + "%");
|
|
||||||
}
|
|
||||||
|
|
||||||
JSONObject json = WQL.getWO("QST_IVT_CHECK").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "dtl.seq_no ASC");
|
|
||||||
|
|
||||||
return json;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -64,49 +64,6 @@
|
|||||||
# 3、业务主过程 #
|
# 3、业务主过程 #
|
||||||
##########################################
|
##########################################
|
||||||
|
|
||||||
IF 输入.flag = "1"
|
|
||||||
PAGEQUERY
|
|
||||||
SELECT
|
|
||||||
checkmst.check_id AS id,
|
|
||||||
checkmst.*
|
|
||||||
FROM
|
|
||||||
ST_IVT_CheckMst checkmst
|
|
||||||
WHERE
|
|
||||||
checkmst.is_delete = '0'
|
|
||||||
and checkmst.stor_id in 输入.in_stor_id
|
|
||||||
|
|
||||||
OPTION 输入.check_code <> ""
|
|
||||||
checkmst.check_code like 输入.check_code
|
|
||||||
ENDOPTION
|
|
||||||
|
|
||||||
OPTION 输入.check_type <> ""
|
|
||||||
checkmst.check_type = 输入.check_type
|
|
||||||
ENDOPTION
|
|
||||||
|
|
||||||
OPTION 输入.stor_id <> ""
|
|
||||||
checkmst.stor_id = 输入.stor_id
|
|
||||||
ENDOPTION
|
|
||||||
|
|
||||||
OPTION 输入.create_mode <> ""
|
|
||||||
checkmst.create_mode = 输入.create_mode
|
|
||||||
ENDOPTION
|
|
||||||
|
|
||||||
OPTION 输入.status <> ""
|
|
||||||
checkmst.status = 输入.status
|
|
||||||
ENDOPTION
|
|
||||||
|
|
||||||
OPTION 输入.begin_time <> ""
|
|
||||||
checkmst.input_time >= 输入.begin_time
|
|
||||||
ENDOPTION
|
|
||||||
|
|
||||||
OPTION 输入.end_time <> ""
|
|
||||||
checkmst.input_time <= 输入.end_time
|
|
||||||
ENDOPTION
|
|
||||||
|
|
||||||
ENDSELECT
|
|
||||||
ENDPAGEQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
IF 输入.flag = "2"
|
IF 输入.flag = "2"
|
||||||
QUERY
|
QUERY
|
||||||
SELECT
|
SELECT
|
||||||
@@ -379,22 +336,3 @@
|
|||||||
ENDSELECT
|
ENDSELECT
|
||||||
ENDPAGEQUERY
|
ENDPAGEQUERY
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
IF 输入.flag = "13"
|
|
||||||
QUERY
|
|
||||||
SELECT
|
|
||||||
sub.*,
|
|
||||||
dtl.check_id
|
|
||||||
FROM
|
|
||||||
pdm_bi_subpackagerelation sub
|
|
||||||
LEFT JOIN st_ivt_checkdtl dtl ON sub.package_box_sn = dtl.storagevehicle_code
|
|
||||||
WHERE
|
|
||||||
1 = 1
|
|
||||||
|
|
||||||
OPTION 输入.check_id_in <> ""
|
|
||||||
dtl.check_id in 输入.check_id_in
|
|
||||||
ENDOPTION
|
|
||||||
|
|
||||||
ENDSELECT
|
|
||||||
ENDQUERY
|
|
||||||
ENDIF
|
|
||||||
|
|||||||
Reference in New Issue
Block a user