add: 新增二期载具库存查询

This commit is contained in:
2024-09-11 14:51:07 +08:00
parent 1ec386a450
commit 66417d8095
7 changed files with 300 additions and 4 deletions

View File

@@ -130,4 +130,10 @@ public class StructattrController {
structattrService.tunConfirm(json);
return new ResponseEntity<>(HttpStatus.OK);
}
@GetMapping("/twoVehicleIvt")
@Log("查询二期空托盘库存")
public ResponseEntity<Object> twoVehicleIvt(@RequestParam Map whereJson, Pageable page) {
return new ResponseEntity<>(structattrService.twoVehicleIvt(whereJson, page), HttpStatus.OK);
}
}

View File

@@ -139,4 +139,13 @@ public interface StructattrService {
* @return 、
*/
JSONObject unLockPointTwo(JSONObject whereJson);
/**
* 查询二期空托盘库存数据分页
*
* @param whereJson 条件
* @param page 分页参数
* @return Map<String, Object>
*/
Map<String, Object> twoVehicleIvt(Map whereJson, Pageable page);
}

View File

@@ -2,6 +2,7 @@ package org.nl.wms.basedata.st.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
@@ -854,4 +855,23 @@ public class StructattrServiceImpl implements StructattrService {
return null;
}
@Override
public Map<String, Object> twoVehicleIvt(Map whereJson, Pageable page) {
String storagevehicle_code = MapUtil.getStr(whereJson, "storagevehicle_code");
String struct_code = MapUtil.getStr(whereJson, "struct_code");
HashMap<String, String> map = new HashMap<>();
if (ObjectUtil.isNotEmpty(storagevehicle_code)) {
map.put("storagevehicle_code", "%"+storagevehicle_code+"%");
}
if (ObjectUtil.isNotEmpty(struct_code)) {
map.put("struct_code", "%"+struct_code+"%");
}
map.put("storagevehicle_type", MapUtil.getStr(whereJson,"storagevehicle_type"));
map.put("flag", "3");
JSONObject jo = WQL.getWO("QST_STRUCT_ATTR").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "struct_code asc");
return jo;
}
}

View File

@@ -19,6 +19,8 @@
输入.sect_id TYPEAS s_string
输入.lock_type TYPEAS s_string
输入.storagevehicle_type TYPEAS s_string
输入.storagevehicle_code TYPEAS s_string
输入.struct_code TYPEAS s_string
输入.is_used TYPEAS s_string
输入.is_delete TYPEAS s_string
输入.have_vehicle TYPEAS s_string
@@ -104,5 +106,35 @@
ENDQUERY
ENDIF
IF 输入.flag = "3"
PAGEQUERY
SELECT
*
FROM
st_ivt_structattr
WHERE
is_delete = '0'
AND is_used = '1'
AND lock_type = '1'
AND IFNULL(storagevehicle_code, '') <> ''
AND is_emptyvehicle = '1'
AND sect_code = 'BZC01'
OPTION 输入.storagevehicle_code <> ""
storagevehicle_code LIKE 输入.storagevehicle_code
ENDOPTION
OPTION 输入.struct_code <> ""
struct_code LIKE 输入.struct_code
ENDOPTION
OPTION 输入.storagevehicle_type <> ""
storagevehicle_type = 输入.storagevehicle_type
ENDOPTION
ENDSELECT
ENDPAGEQUERY
ENDIF

View File

@@ -0,0 +1,97 @@
package org.nl.wms.sch.manage;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.wql.core.bean.WQLObject;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Slf4j
@Component
@RequiredArgsConstructor
public class AutoCleanIos {
private final RedissonClient redissonClient;
@SneakyThrows
public void run() {
RLock lock = redissonClient.getLock(this.getClass().getName());
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try {
if (tryLock){
/*
* 自动清除仓储相关单据
*/
// 出入库单据清除
cleanIosInAndOut();
// 移库单据清除
cleanIosMove();
}
}finally {
if (tryLock) {
lock.unlock();
}
}
}
/**
* 清除出入库单据
* 超过365天的删除
*/
private void cleanIosInAndOut() {
// 出入库单主表
WQLObject mst = WQLObject.getWQLObject("st_ivt_iostorinv");
// 出入库单明细表
WQLObject dtl = WQLObject.getWQLObject("st_ivt_iostorinvdtl");
// 出入库单分配明细表
WQLObject dis = WQLObject.getWQLObject("st_ivt_iostorinvdis");
// 需删除的主表集合
List<JSONObject> mstArr = mst.query("(TO_DAYS(NOW()) - TO_DAYS(input_time))>365")
.getResultJSONArray(0).toJavaList(JSONObject.class);
String iostorinv_id_in = mstArr.stream()
.map(row -> row.getString("iostorinv_id"))
.collect(Collectors.joining("','"));
// 删除主表
mst.delete("iostorinv_id IN ('"+iostorinv_id_in+"')");
// 删除明细表
dtl.delete("iostorinv_id IN ('"+iostorinv_id_in+"')");
// 删除分配明细表
dis.delete("iostorinv_id IN ('"+iostorinv_id_in+"')");
log.info("仓储【出入库单据】相关表清除成功!删除单据为:"+iostorinv_id_in);
}
/**
* 清除移库单单据
* 超过365天的删除
*/
private void cleanIosMove() {
// 移库单主表
WQLObject mst = WQLObject.getWQLObject("st_ivt_moveinv");
// 移库单明细表
WQLObject dtl = WQLObject.getWQLObject("st_ivt_moveinvdtl");
// 需删除的主表集合
List<JSONObject> mstArr = mst.query("(TO_DAYS(NOW()) - TO_DAYS(input_time))>365")
.getResultJSONArray(0).toJavaList(JSONObject.class);
String moveinv_id_in = mstArr.stream()
.map(row -> row.getString("moveinv_id"))
.collect(Collectors.joining("','"));
// 删除主表
mst.delete("moveinv_id IN ('"+moveinv_id_in+"')");
// 删除明细表
dtl.delete("moveinv_id IN ('"+moveinv_id_in+"')");
log.info("仓储【移库单据】相关表清除成功!删除单据为:"+moveinv_id_in);
}
}