fix:出入库流程修改

This commit is contained in:
zhouz
2024-05-28 09:26:40 +08:00
parent 3b4576ef12
commit 5939a0e520
10 changed files with 115 additions and 67 deletions

View File

@@ -87,6 +87,7 @@ public class TwoLashTask extends AbstractAcsTask {
interaction_json.put("height",dao.get(0).getBox_high());
interaction_json.put("template","2");
interaction_json.put("bindingTimes","1");
interaction_json.put("isBinding", IOSEnum.IS_SEND.code(""));
char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1);
AcsTaskDto dto = AcsTaskDto.builder()

View File

@@ -7,8 +7,11 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.checkerframework.checker.units.qual.A;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdisService;
@@ -53,6 +56,9 @@ public class InBussManageServiceImpl implements InBussManageService {
@Autowired
private IschBaseTaskService ischBaseTaskService;
@Autowired
private IBstIvtBoxinfoService iBstIvtBoxinfoService;
/**
* 不需要查询的排集合
*/
@@ -77,7 +83,7 @@ public class InBussManageServiceImpl implements InBussManageService {
String operate = json.getString("operate");
if (operate.equals(IOSEnum.IO_TYPE.code("入库"))) {
attrTab.update(json, "struct_code IN ('"+ String.join("','", param) +"')");
attrTab.update(json, "struct_code IN ('" + String.join("','", param) + "')");
}
}
@@ -110,10 +116,10 @@ public class InBussManageServiceImpl implements InBussManageService {
*/
JSONArray 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 lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '" + jsonObject.getString("stor_id") + "' " +
"AND storagevehicle_type = '" + jsonObject.getString("vehicle_type") + "'" +
"AND height = '" + jsonObject.getString("height") + "'" +
"AND sect_id = '"+jsonObject.getString("sect_id")+"'").getResultJSONArray(0);
"AND sect_id = '" + jsonObject.getString("sect_id") + "'").getResultJSONArray(0);
if (ObjectUtil.isEmpty(attrArry)) {
notInRowList.clear();
@@ -136,13 +142,13 @@ public class InBussManageServiceImpl implements InBussManageService {
/*
* 确定哪排:查看每排相同木箱规格等 的数量,找到数量最小的那排
*/
jsonSub.put("block_num",block_num);
jsonSub.put("block_num", block_num);
String row_num = getMinRow(jsonSub);
/*
* 确定伸位,找仓位
*/
jsonSub.put("row_num",row_num);
jsonSub.put("row_num", row_num);
JSONObject jsonAttr = queryStruct(jsonSub);
// 为空则新找巷道
@@ -169,7 +175,7 @@ public class InBussManageServiceImpl implements InBussManageService {
json.put("box_high", jsonSub.getString("box_high"));
String row_num_2 = getMinRow(json);
json.put("row_num",row_num_2);
json.put("row_num", row_num_2);
JSONObject jsonAttr_2 = queryStruct(json);
if (ObjectUtil.isNotEmpty(jsonAttr_2)) {
@@ -204,10 +210,16 @@ public class InBussManageServiceImpl implements InBussManageService {
throw new BadRequestException("设备号不能为空!");
}
// 查询木箱信息
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
new QueryWrapper<BstIvtBoxinfo>().lambda()
.eq(BstIvtBoxinfo::getBox_no, jsonObject.getString("box_no"))
);
List<String> pcsnList = Arrays.asList(material_barcode.split(","));
// 查询子卷包装关系
List<JSONObject> subList = subTab.query("container_name in ('"+String.join("','", pcsnList)+"') and status = '0'")
List<JSONObject> subList = subTab.query("container_name in ('" + String.join("','", pcsnList) + "') and status = '0'")
.getResultJSONArray(0).toJavaList(JSONObject.class);
if (ObjectUtil.isEmpty(subList)) {
@@ -248,7 +260,7 @@ public class InBussManageServiceImpl implements InBussManageService {
jsonDtl.put("is_active", IOSEnum.IS_SEND.code(""));
tableData.add(jsonDtl);
}
mst.put("tableData",tableData);
mst.put("tableData", tableData);
// 调用服务创建
String iostorinv_id = iStIvtIostorinvService.insertMst(mst);
@@ -262,20 +274,21 @@ public class InBussManageServiceImpl implements InBussManageService {
).get(0);
List<LinkedHashMap> disList = iStIvtIostorinvdisService.list(
new QueryWrapper<StIvtIostorinvdis>().lambda()
.eq(StIvtIostorinvdis::getIostorinv_id, iostorinv_id)
).stream().map(row -> JSONObject.parseObject(JSON.toJSONString(row), LinkedHashMap.class))
new QueryWrapper<StIvtIostorinvdis>().lambda()
.eq(StIvtIostorinvdis::getIostorinv_id, iostorinv_id)
).stream().map(row -> JSONObject.parseObject(JSON.toJSONString(row), LinkedHashMap.class))
.collect(Collectors.toList());
jsonDiv.put("dtl_row",JSONObject.parseObject(JSON.toJSONString(dtlDao)));
jsonDiv.put("dtl_row", JSONObject.parseObject(JSON.toJSONString(dtlDao)));
jsonDiv.put("tableMater", disList);
jsonDiv.put("checked", true);
jsonDiv.put("is_send", IOSEnum.IS_SEND.code(""));
jsonDiv.put("point_code", jsonObject.getString("device_code"));
jsonDiv.put("sect_id", IOSEnum.SECT_ID.code("二期主存区"));
jsonDiv.put("stor_id", IOSEnum.STOR_ID.code("二期"));
jsonDiv.put("material_barcode",jsonObject.getString("material_barcode"));
jsonDiv.put("vehicle_code",jsonObject.getString("vehicle_code"));
jsonDiv.put("material_barcode", jsonObject.getString("material_barcode"));
jsonDiv.put("vehicle_code", jsonObject.getString("vehicle_code"));
jsonDiv.put("vehicle_type", boxDao.getVehicle_type());
iStIvtIostorinvService.divStruct(jsonDiv);
}
@@ -298,9 +311,9 @@ public class InBussManageServiceImpl implements InBussManageService {
// 查找对应单据
List<LinkedHashMap> disDaoList = iStIvtIostorinvdisService.list(
new QueryWrapper<StIvtIostorinvdis>().lambda()
.eq(StIvtIostorinvdis::getTask_id, taskDao.getTask_id())
).stream()
new QueryWrapper<StIvtIostorinvdis>().lambda()
.eq(StIvtIostorinvdis::getTask_id, taskDao.getTask_id())
).stream()
.map(row -> JSONObject.parseObject(JSON.toJSONString(row), LinkedHashMap.class))
.collect(Collectors.toList());
@@ -319,9 +332,9 @@ public class InBussManageServiceImpl implements InBussManageService {
// 重新分配过的明细
List<LinkedHashMap> disList = iStIvtIostorinvdisService.list(
new QueryWrapper<StIvtIostorinvdis>().lambda()
.eq(StIvtIostorinvdis::getIostorinv_id, iostorinv_id)
).stream()
new QueryWrapper<StIvtIostorinvdis>().lambda()
.eq(StIvtIostorinvdis::getIostorinv_id, iostorinv_id)
).stream()
.map(row -> JSONObject.parseObject(JSON.toJSONString(row), LinkedHashMap.class))
.collect(Collectors.toList());
@@ -331,7 +344,7 @@ public class InBussManageServiceImpl implements InBussManageService {
).get(0);
JSONObject jsonDiv = new JSONObject();
jsonDiv.put("dtl_row",JSONObject.parseObject(JSON.toJSONString(dtlDao)));
jsonDiv.put("dtl_row", JSONObject.parseObject(JSON.toJSONString(dtlDao)));
jsonDiv.put("tableMater", disList);
jsonDiv.put("checked", true);
jsonDiv.put("is_send", IOSEnum.IS_SEND.code(""));
@@ -343,8 +356,8 @@ public class InBussManageServiceImpl implements InBussManageService {
// 3.更新明细任务标识
iStIvtIostorinvdisService.update(
new UpdateWrapper<StIvtIostorinvdis>().lambda()
.eq(StIvtIostorinvdis::getIostorinv_id, iostorinv_id)
.set(StIvtIostorinvdis::getTask_id, taskDao.getTask_id())
.eq(StIvtIostorinvdis::getIostorinv_id, iostorinv_id)
.set(StIvtIostorinvdis::getTask_id, taskDao.getTask_id())
);
// 4.更新任务终点
@@ -361,12 +374,13 @@ public class InBussManageServiceImpl implements InBussManageService {
/**
* 获取最小巷道
*
* @param jsonSub {
* jsonSub木箱信息
* sect_id库区
* stor_id仓库
* material_id物料
* }
* }
* @return String 巷道
*/
private String getMinBlock(JSONObject jsonSub) {
@@ -384,7 +398,7 @@ public class InBussManageServiceImpl implements InBussManageService {
.collect(Collectors.joining("','"));
jsonSub.put("flag", "2");
jsonSub.put("block_in", "('"+block_in+"')");
jsonSub.put("block_in", "('" + block_in + "')");
List<JSONObject> boxAllList = WQL.getWO("BST_INRULE").addParamMap(jsonSub)
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
@@ -410,7 +424,7 @@ public class InBussManageServiceImpl implements InBussManageService {
}
// 区分木箱规格:最小木箱的巷道
JSONObject jsonBlockLikeMin = sumBlockMinNum(blockList,boxAllLikeList);
JSONObject jsonBlockLikeMin = sumBlockMinNum(blockList, boxAllLikeList);
/*
* 比较两个巷道的总木箱数,取最小的
@@ -426,7 +440,8 @@ public class InBussManageServiceImpl implements InBussManageService {
/**
* 计算最小巷道木箱数
* @param blockList : 所有巷道
*
* @param blockList : 所有巷道
* @param boxAllList: 所有木箱
* @return JSONObject最小木箱数的巷道 JSONObject{block_numbox_num}
*/
@@ -456,6 +471,7 @@ public class InBussManageServiceImpl implements InBussManageService {
/**
* 获取最小排
*
* @param jsonSub {
* jsonSub木箱信息
* sect_id库区
@@ -463,7 +479,7 @@ public class InBussManageServiceImpl implements InBussManageService {
* material_id物料
* block_num 巷道
* not_row_in: 排(用于递归查询)
* }
* }
* @return String
*/
private String getMinRow(JSONObject jsonSub) {
@@ -482,7 +498,7 @@ public class InBussManageServiceImpl implements InBussManageService {
.collect(Collectors.joining("','"));
jsonSub.put("flag", "2");
jsonSub.put("row_in", "('"+row_in+"')");
jsonSub.put("row_in", "('" + row_in + "')");
List<JSONObject> boxAllList = WQL.getWO("BST_INRULE").addParamMap(jsonSub)
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
@@ -527,7 +543,8 @@ public class InBussManageServiceImpl implements InBussManageService {
/**
* 计算最小木箱的排
* @param rowList : 所有排
*
* @param rowList : 所有排
* @param boxAllList: 所有木箱
* @return JSONObject最小木箱数的排 JSONObject{row_numbox_num}
*/
@@ -557,6 +574,7 @@ public class InBussManageServiceImpl implements InBussManageService {
/**
* 获取仓位
*
* @param jsonSub {
* jsonSub木箱信息
* sect_id库区
@@ -564,7 +582,7 @@ public class InBussManageServiceImpl implements InBussManageService {
* material_id物料
* block_num 巷道
* row_num :排
* }
* }
* @return JSONObject 仓位
*/
private JSONObject queryStruct(JSONObject jsonSub) {
@@ -580,7 +598,7 @@ public class InBussManageServiceImpl implements InBussManageService {
// 新的一排
String row_num_new = this.getMinRow(jsonSub);
jsonSub.put("row_num",row_num_new);
jsonSub.put("row_num", row_num_new);
jsonAttr = this.getStruct(jsonSub);
}
@@ -590,6 +608,7 @@ public class InBussManageServiceImpl implements InBussManageService {
/**
* 获取一个货位公共方法
*
* @param jsonSub {
* jsonSub木箱信息
* sect_id库区
@@ -597,7 +616,7 @@ public class InBussManageServiceImpl implements InBussManageService {
* material_id物料
* block_num 巷道
* row_num :排
* }
* }
* @return JSONObject 仓位
*/
private JSONObject getStruct(JSONObject jsonSub) {

View File

@@ -209,15 +209,15 @@ public class LashManageServiceImpl implements LashManageService {
result.put("width", boxDao.getBox_width());
result.put("height", boxDao.getBox_high());
result.put("case", boxDao.getMaterial_code());
result.put("isBinding", IOSEnum.IS_SEND.code(""));
result.put("isBinding", IOSEnum.IS_SEND.code(""));
result.put("isLabeling", IOSEnum.IS_SEND.code(""));
result.put("labelingTemplate", boxDao.getLash_num());
result.put("bindingTemplate", "1");
result.put("bindingTemplate", boxDao.getLash_num());
result.put("printDevice", "1");
result.put("printQty", "1");
result.put("bundleTimes", "2");
result.put("bundleTimes", "1");
return result;
}

View File

@@ -70,14 +70,8 @@ public class SendOutManageServiceImpl implements SendOutManageService {
.eq(SchBasePoint::getIs_delete, IOSEnum.IS_NOTANDYES.code(""))
);
// 根据载具号找到对应的木箱号
JSONObject jsonExt = extTab.query("storagevehicle_code = '" + whereJson.getString("vehicle_code") + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonExt)) {
throw new BadRequestException("此载具上没有木箱,请检查!"+whereJson.getString("vehicle_code"));
}
// 1.查询此木箱号的子卷包装关系
JSONObject jsonSub = subTab.query("package_box_sn = '" + jsonExt.getString("pcsn") + "'").uniqueResult(0);
JSONObject jsonSub = subTab.query("package_box_sn = '" + whereJson.getString("vehicle_code") + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonSub)) {
throw new BadRequestException("未查询到该木箱对应的包装关系!");
}
@@ -215,6 +209,6 @@ public class SendOutManageServiceImpl implements SendOutManageService {
);
// 删除载具对应木箱记录
extTab.delete(jsonExt);
//extTab.delete(jsonExt);
}
}

View File

@@ -48,8 +48,8 @@ public class StoragevehicleinfoController {
@Log("修改载具")
//@PreAuthorize("@el.check('mdPbStoragevehicleinfo:edit')")
public ResponseEntity<Object> update(@Validated @RequestBody StoragevehicleinfoDto dto) {
storagevehicleinfoService.update(dto);
public ResponseEntity<Object> update(@RequestBody JSONObject map) {
storagevehicleinfoService.update(map);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}

View File

@@ -61,7 +61,7 @@ public interface StoragevehicleinfoService {
*
* @param dto /
*/
void update(StoragevehicleinfoDto dto);
void update(JSONObject dto);
/**
* 多选删除

View File

@@ -160,24 +160,47 @@ public class StoragevehicleinfoServiceImpl implements StoragevehicleinfoService
@Override
@Transactional(rollbackFor = Exception.class)
public void update(StoragevehicleinfoDto dto) {
public void update(JSONObject dto) {
WQLObject wo = WQLObject.getWQLObject("md_pb_storagevehicleinfo");
JSONObject jsonObject = wo.query("storagevehicle_code = '" + dto.getStoragevehicle_code() + "' and is_delete = '0'").uniqueResult(0);
WQLObject veExtTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
JSONObject jsonObject = wo.query("storagevehicle_code = '" + dto.getString("storagevehicle_code") + "' and is_delete = '0' AND storagevehicle_id != '" + dto.getString("storagevehicle_id") + "'").uniqueResult(0);
if (!ObjectUtil.isEmpty(jsonObject)) {
throw new BadRequestException("此载具已存在");
}
StoragevehicleinfoDto entity = this.findById(dto.getStoragevehicle_id());
if (entity == null) {
throw new BadRequestException("被删除或无权限,操作失败!");
}
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
dto.setUpdate_time(now);
dto.setUpdate_optid(currentUserId);
dto.setUpdate_optname(nickName);
String qty = dto.getString("qty");
String pcsn = dto.getString("pcsn");
if (StrUtil.isNotEmpty(qty) || StrUtil.isNotEmpty(pcsn)) {
JSONObject ext_jo = veExtTab.query("storagevehicle_code = '"+dto.getString("storagevehicle_code")+"'").uniqueResult(0);
if (ObjectUtil.isEmpty(ext_jo)) {
//新增一条记录
JSONObject jsonVeExt = new JSONObject();
jsonVeExt.put("storagevehicleext_id", org.nl.common.utils.IdUtil.getLongId());
jsonVeExt.put("storagevehicle_id", dto.getLongValue("storagevehicle_id"));
jsonVeExt.put("storagevehicle_code", dto.getString("storagevehicle_code"));
jsonVeExt.put("storagevehicle_type", dto.getString("storagevehicle_type"));
if (StrUtil.isNotEmpty(pcsn)) {
jsonVeExt.put("pcsn", pcsn);
}
if (StrUtil.isNotEmpty(qty)) {
jsonVeExt.put("qty", qty);
}
jsonVeExt.put("device_uuid", org.nl.common.utils.IdUtil.getLongId());
jsonVeExt.put("update_time", DateUtil.now());
veExtTab.insert(jsonVeExt);
} else {
if (StrUtil.isNotEmpty(pcsn)) {
ext_jo.put("pcsn", pcsn);
}
if (StrUtil.isNotEmpty(qty)) {
ext_jo.put("qty", qty);
}
veExtTab.update(ext_jo);
}
}
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
wo.update(json);

View File

@@ -45,6 +45,9 @@
PAGEQUERY
SELECT
s.*,
ext.pcsn,
ext.qty,
ext.update_time AS change_time,
mater.material_code,
mater.material_name,
point.point_code,
@@ -56,6 +59,7 @@
LEFT JOIN ST_IVT_StructIvt ivt ON point.source_id = ivt.struct_id
LEFT JOIN md_me_materialbase mater ON mater.material_id = ivt.material_id
LEFT JOIN md_pb_classstandard class ON class.class_code = s.storagevehicle_type
LEFT JOIN md_pb_storagevehicleext ext ON ext.storagevehicle_code = s.storagevehicle_code
WHERE
s.is_delete = '0'
ENDOPTION