dev:报表优化、入库加并发锁

This commit is contained in:
2023-10-23 17:50:13 +08:00
parent b8c9688018
commit c9f85aa08b
8 changed files with 47 additions and 21 deletions

View File

@@ -40,7 +40,7 @@ public class MonitorController {
@GetMapping
@ApiOperation("查询服务监控")
@SaCheckPermission("monitor:list")
// @SaCheckPermission("monitor:list")
public ResponseEntity<Object> query() {
return new ResponseEntity<>(serverService.getServers(),HttpStatus.OK);
}

View File

@@ -140,6 +140,9 @@ public class SapToLmsServiceImpl implements SapToLmsService {
throw new BadRequestException("销售订单及行号不能为空!");
}
JSONObject sub_jo = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("container_name = '"+pcsn+"'").uniqueResult(0);
if(ObjectUtil.isEmpty(sub_jo)){
throw new BadRequestException("未查询到对应的包装关系!");
}
sub_jo.put("sale_order_name",sale_order_name);
WQLObject.getWQLObject("pdm_bi_subpackagerelation").update(sub_jo);
} catch (Exception exception) {

View File

@@ -11,6 +11,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils;
@@ -35,12 +36,15 @@ import org.nl.wms.sch.service.dto.TaskDto;
import org.nl.wms.st.inbill.service.RawAssistIStorService;
import org.nl.wms.st.inbill.service.StorPublicService;
import org.nl.wms.sch.tasks.InTask;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.TimeUnit;
/**
* PC端出入库新增
@@ -62,6 +66,9 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
private final TaskService taskService;
private final RedissonClient redissonClient;
@Override
public Map<String, Object> pageQuery(Map whereJson, Pageable page) {
@@ -655,6 +662,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
@Override
@Transactional
@SneakyThrows
public void allDivStruct(JSONObject form) {
String iostorinv_id = form.getString("iostorinv_id");
String sect_id = form.getString("sect_id");
@@ -670,23 +678,34 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
JSONObject dtl_row = dis_rows.getJSONObject(j);
vehicle_set.add(dtl_row.getString("box_no"));
}
for (String vehicle_code : vehicle_set) {
HashMap<String, String> map = new HashMap<>();
map.put("flag", "4");
map.put("iostorinv_id", iostorinv_id);
map.put("package_box_sn", vehicle_code);
JSONArray dtl_rows = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(map).process().getResultJSONArray(0);
List<Map> list = new ArrayList<>();
for (int i = 0; i < dtl_rows.size(); i++) {
JSONObject jo = dtl_rows.getJSONObject(i);
list.add(JSON.parseObject(jo.toString(),Map.class));
RLock lock = redissonClient.getLock("all_div");
boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS);
try {
for (String vehicle_code : vehicle_set) {
HashMap<String, String> map = new HashMap<>();
map.put("flag", "4");
map.put("iostorinv_id", iostorinv_id);
map.put("package_box_sn", vehicle_code);
JSONArray dtl_rows = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(map).process().getResultJSONArray(0);
List<Map> list = new ArrayList<>();
for (int i = 0; i < dtl_rows.size(); i++) {
JSONObject jo = dtl_rows.getJSONObject(i);
list.add(JSON.parseObject(jo.toString(),Map.class));
}
Map<String,Object> dis_map = new HashMap<>();
dis_map.put("tableMater",list);
dis_map.put("sect_id",sect_id);
dis_map.put("checked",true);
this.divStruct(dis_map);
}
}finally {
if (tryLock) {
lock.unlock();
}
Map<String,Object> dis_map = new HashMap<>();
dis_map.put("tableMater",list);
dis_map.put("sect_id",sect_id);
dis_map.put("checked",true);
this.divStruct(dis_map);
}
}
@Transactional(rollbackFor = Exception.class)

View File

@@ -4944,14 +4944,14 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
int shd_dtl_num = 0; // 送货单明细数
// 调拨发货单
if (StrUtil.equals(bill_type, "1004")) {
if (StrUtil.equals(bill_type, "1004") || StrUtil.equals(bill_type, "1009")) {
shd_dtl_num = 44;
//1.获取系统参数模板地址
code_template = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("allot_order").getValue();
// 5.单组填充
JSONObject jsonDtl = dtlTab.query("iostorinv_id = '" + jsonMst.getString("iostorinv_id") + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonDtl)) {
if (ObjectUtil.isNotEmpty(jsonDtl) && StrUtil.equals(bill_type, "1004")) {
// 调拨单号
oneMap.put("vbeln", jsonMst.getString("bill_code"));
// 调出仓库

View File

@@ -462,7 +462,8 @@
attr.layer_num,
attr.block_num,
attr.placement_type,
sub.sale_order_name
sub.sale_order_name,
sub.width_standard
FROM
ST_IVT_IOStorInvDis dis
LEFT JOIN ST_IVT_IOStorInv ios ON ios.iostorinv_id = dis.iostorinv_id
@@ -791,6 +792,7 @@
task.task_type,
task.task_status,
(case when IFNULL(record.sap_pcsn,'') = '' then sub.sap_pcsn else record.sap_pcsn end) AS sap_pcsn,
(case when IFNULL(record.width_standard,'') = '' then sub.width_standard else record.width_standard end) AS width_standard,
md.class_name task_type_name
FROM
st_ivt_iostorinvdis dis

View File

@@ -819,6 +819,7 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
map.put("sap批次", json.getString("sap_pcsn"));
map.put("箱号", json.getString("box_no"));
map.put("重量", json.getString("real_qty"));
map.put("幅宽", json.getString("width_standard"));
map.put("仓位", json.getString("struct_code"));
if (ObjectUtil.isEmpty(json.getString("sale_order_name"))) {
throw new BadRequestException("子卷"+json.getString("pcsn")+"销售订单为空!");

View File

@@ -143,6 +143,7 @@
<el-table-column prop="sap_pcsn" label="sap批次号" align="center" show-overflow-tooltip />
<el-table-column prop="box_no" label="箱号" align="center" width="250px" show-overflow-tooltip />
<el-table-column prop="plan_qty" :formatter="crud.formatNum3" label="重量" align="center" />
<el-table-column prop="width_standard" label="幅宽" align="center" show-overflow-tooltip />
<el-table-column prop="struct_code" label="仓位" align="center" show-overflow-tooltip />
<!-- <el-table-column prop="next_point_code" label="目的位置" align="center" />-->
<!-- <el-table-column prop="task_code" label="任务号" align="center" />-->

View File

@@ -521,13 +521,13 @@ export default {
}
},
printExcel(jo) {
if (jo.bill_type !== '1004') {
if (jo.bill_type !== '1004' && jo.bill_type !== '1009') {
if (jo.shd_dtl_num === '') {
return this.crud.notify('客户为空!', CRUD.NOTIFICATION_TYPE.INFO)
}
}
if (jo.bill_type === '1004') {
if (jo.bill_type === '1004' || jo.bill_type === '1009') {
jo.shd_dtl_num = 44
}
checkoutbill.getDisNum({ 'iostorinv_id': jo.iostorinv_id }).then(res => {