报表相关优化

This commit is contained in:
zhouz
2026-03-09 16:37:41 +08:00
parent 2b772f63b1
commit 3d15ecd351
13 changed files with 104 additions and 51 deletions

View File

@@ -217,20 +217,6 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
return result;
}
public static void main(String[] args) {
ArrayList<String> msg = new ArrayList<>();
// msg.add("称重562不匹配564");
msg.add("手动至异常口");
System.out.println(msg.toString());
System.out.println(JSONObject.toJSONString(msg));
String a = JSONObject.toJSONString(msg);
List<String> list = JSONObject.parseObject(a, List.class);
Optional<String> 称重 = list.stream().filter(m -> m.contains("称重")).findAny();
if (称重.isPresent()) {
System.out.println(称重.get());
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public JSONObject reback(JSONObject whereJson) {
@@ -247,7 +233,7 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
.eq("is_delete", "0")
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
if (!CollectionUtils.isEmpty(list)) {
throw new BadRequestException("稍后再试,异常口存在正在执行的任务" + list.stream().map(SchBaseTask::getTask_id).collect(Collectors.joining(",")));
throw new BadRequestException("稍后再试,异常口存在正在执行的任务" + list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
}
Param forceWeight = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("force_weight");
if (forceWeight != null && "1".equals(forceWeight.getValue())) {

View File

@@ -71,8 +71,9 @@ public class TwoOutBoxTask extends AbstractAcsTask {
* 下发给ACS时需要特殊处理
*/
// 判断当前有多少个正在执行中的任务
int num = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status IN ('05','06') and is_delete ='0'")
.getResultJSONArray(0).size();
JSONArray task_ing = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status IN ('05','06') and is_delete ='0'")
.getResultJSONArray(0);
int num = task_ing.size();
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
// 如果缓存了4个箱子则不下发任务
if (num >= 2) {

View File

@@ -70,6 +70,7 @@ import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -159,6 +160,9 @@ public class SlitterServiceImpl implements SlitterService {
@Autowired
private IBstIvtShafttubeivtService bstIvtShafttubeivtService;
// 预编译正则表达式,提升性能
private static final Pattern GX_PATTERN = Pattern.compile("^GX(0[1-9]|[1-9]\\d)$");
@Override
public JSONObject acsRequestShaftLoadTube(JSONObject param) {
// hint: 现在的考虑都是基于B1,B2的车间后续的B3、B4需要再次修改
@@ -1839,6 +1843,14 @@ public class SlitterServiceImpl implements SlitterService {
return res;
}
public static boolean isValidGXCode(String input) {
// 空值直接返回false
if (input == null) {
return false;
}
return GX_PATTERN.matcher(input).matches();
}
@Override
public JSONObject doStockAreaBinding(JSONObject param) {
// param: point_code vehicle_code
@@ -1852,7 +1864,7 @@ public class SlitterServiceImpl implements SlitterService {
if (ObjectUtil.isEmpty(vehicleCode)) {
throw new BadRequestException("托盘信息不能为空!");
}
if (!vehicleCode.contains("GX")) {
if (!isValidGXCode(vehicleCode)) {
throw new BadRequestException("请扫描或输入正确的托盘码!");
}

View File

@@ -703,7 +703,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
if (ObjectUtil.isEmpty(mstDao)) {
String currentUserId = SecurityUtils.getCurrentUserId();
String currentNickName = SecurityUtils.getCurrentNickName();
if (currentUserId.equals(IOSEnum.EXT_ACS.code("acs"))) {
if (currentUserId.equals(IOSEnum.EXT_ACS.code("acs")) && !whereJson.get("bill_type").toString().equals(IOSEnum.IN_TYPE.code("调拨入库"))) {
// 如果是外部系统创建人全部写系统参数: 如果包装关系上有创建人就用包装关系上的,如果没有就用默认的
if (ObjectUtil.isEmpty(jsonSub) || ObjectUtil.isEmpty(jsonSub.getString("create_id"))) {
currentUserId = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IOS_CONFIRM_USER").getValue();

View File

@@ -1023,27 +1023,70 @@ public class LmsToMesServiceImpl implements LmsToMesService {
param.put("BoxWeight", box_weight);
JSONArray rows = new JSONArray();
// 1. 包装是否符合规范是否完好无破损PE膜是否贴端面
JSONObject row1 = new JSONObject();
row1.put("DataPointName", "保护棉是否填充");
row1.put("DataPointName", "包装是否符合规范是否完好无破损PE膜是否贴端面");
row1.put("DataType", "7");
row1.put("DataValue", "true");
row1.put("DataCollectionDefId", "001c61800000004f");
row1.put("DataCollectionDefName", "PACKAGE");
rows.add(row1);
// 2. 内包装密封完好,无划伤、撕裂、漏包
JSONObject row2 = new JSONObject();
row2.put("DataPointName", "信息核对准确");
row2.put("DataPointName", "内包装密封完好,无划伤、撕裂、漏包");
row2.put("DataType", "7");
row2.put("DataValue", "true");
row2.put("DataCollectionDefId", "001c61800000004f");
row2.put("DataCollectionDefName", "PACKAGE");
rows.add(row2);
// 3. 木箱是否有发霉、露钉、异物、破损等,是否符合要求
JSONObject row3 = new JSONObject();
row3.put("DataPointName", "木箱是否防护");
row3.put("DataPointName", "木箱是否有发霉、露钉、异物、破损等,是否符合要求");
row3.put("DataType", "7");
row3.put("DataValue", "true");
row3.put("DataCollectionDefId", "001c61800000004f");
row3.put("DataCollectionDefName", "PACKAGE");
rows.add(row3);
// 4. 标签是否清晰完整
JSONObject row4 = new JSONObject();
row4.put("DataPointName", "标签是否清晰完整");
row4.put("DataType", "7");
row4.put("DataValue", "true");
row4.put("DataCollectionDefId", "001c61800000004f");
row4.put("DataCollectionDefName", "PACKAGE");
rows.add(row4);
// 5. 标识(管标、卷标、箱标)与实物一致,无错标、漏标、模糊不清
JSONObject row5 = new JSONObject();
row5.put("DataPointName", "标识(管标、卷标、箱标)与实物一致,无错标、漏标、模糊不清");
row5.put("DataType", "7");
row5.put("DataValue", "true");
row5.put("DataCollectionDefId", "001c61800000004f");
row5.put("DataCollectionDefName", "PACKAGE");
rows.add(row5);
// 6. 标签是否符合要求
JSONObject row6 = new JSONObject();
row6.put("DataPointName", "标签是否符合要求");
row6.put("DataType", "7");
row6.put("DataValue", "true");
row6.put("DataCollectionDefId", "001c61800000004f");
row6.put("DataCollectionDefName", "PACKAGE");
rows.add(row6);
// 7. 接头是否符合(标箔)
JSONObject row7 = new JSONObject();
row7.put("DataPointName", "接头是否符合(标箔)");
row7.put("DataType", "7");
row7.put("DataValue", "true");
row7.put("DataCollectionDefId", "001c61800000004f");
row7.put("DataCollectionDefName", "PACKAGE");
rows.add(row7);
param.put("DataPoints", rows);
log.info("BoxDataCollectionSubmit2接口请求参数为-------------------" + param.toString());
try {

View File

@@ -435,6 +435,7 @@ public class FeedingServiceImpl implements FeedingService {
cool_map.put("product_area", cool_jo.getString("product_area"));
cool_map.put("point_location", "0");
//判断是否需要搬运空轴,如果需要则卡控冷却区是否有空位
JSONObject jsonCooIvt = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(cool_map).process().uniqueResult(0);
// 如果为空
if (ObjectUtil.isEmpty(jsonCooIvt)) {

View File

@@ -263,7 +263,8 @@ public class SubpackagerelationServiceImpl implements SubpackagerelationService
mp.put("产品编码", json.getString("product_name"));
mp.put("产品描述", json.getString("product_description"));
mp.put("sap批次", json.getString("sap_pcsn"));
mp.put("产品规格(幅宽)", json.getString("width"));
mp.put("产品实际幅宽", json.getString("width"));
mp.put("客户要求幅宽", json.getString("width_standard"));
mp.put("产品厚度", json.getString("thickness"));
mp.put("单位面积质量", json.getString("mass_per_unit_area"));
mp.put("净重", json.getString("net_weight"));

View File

@@ -713,9 +713,6 @@ public class CheckServiceImpl implements CheckService {
for (int i = 0; i < rows.size(); i++) {
JSONObject jo = rows.getJSONObject(i);
String storagevehicle_code = jo.getString("storagevehicle_code");
JSONObject jsonSub = subTab.query("package_box_sn = '" + storagevehicle_code + "'").uniqueResult(0);
Map<String, Object> map = new LinkedHashMap<>();
String status = jo.getString("status");
if (StrUtil.equals(status, "1")) {
@@ -737,22 +734,12 @@ public class CheckServiceImpl implements CheckService {
map.put("净重", jo.getString("base_qty"));
map.put("物料编码", jo.getString("material_code"));
map.put("物料名称", jo.getString("material_name"));
if (ObjectUtil.isEmpty(jsonSub)) {
map.put("生产日期", "");
map.put("厚度", "");
map.put("幅宽", "");
map.put("标准厚度", "");
map.put("客户要求幅宽", "");
map.put("备注", "");
} else {
map.put("生产日期", jsonSub.getString("date_of_production"));
map.put("厚度", jsonSub.getString("thickness"));
map.put("幅宽", jsonSub.getString("width"));
map.put("标准厚度", jsonSub.getString("thickness_request"));
map.put("客户要求幅宽", jsonSub.getString("width_standard"));
map.put("备注", jo.getString("remark"));
}
map.put("生产日期", jo.getString("date_of_production"));
map.put("厚度", jo.getString("thickness"));
map.put("幅宽", jo.getString("width"));
map.put("标准厚度", jo.getString("thickness_request"));
map.put("客户要求幅宽", jo.getString("width_standard"));
map.put("备注", jo.getString("remark2"));
list.add(map);
}
FileUtil.downloadExcel(list, response);

View File

@@ -121,7 +121,7 @@
mb.material_code,
mb.material_name,
user1.person_name AS process_optname,
sub.date_of_production
sub.*
FROM
ST_IVT_CheckDtl CheckDtl
LEFT JOIN md_me_materialbase mb ON mb.material_id = CheckDtl.material_id
@@ -130,6 +130,11 @@
LEFT JOIN (
SELECT
MIN(date_of_production) AS date_of_production,
MIN(thickness) AS thickness,
MIN(width) AS width,
MIN(thickness_request) AS thickness_request,
MIN(width_standard) AS width_standard,
MIN(remark) AS remark2,
package_box_sn
FROM
pdm_bi_subpackagerelation
@@ -249,7 +254,7 @@
WHERE
1 = 1
-- AND struct.lock_type = '1'
AND struct.lock_type <> '88'
-- AND struct.lock_type <> '88'
AND IFNULL(struct.storagevehicle_code,'') <> ''
OPTION 输入.remark <> ""

View File

@@ -1227,7 +1227,6 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
}
@Override
@Transactional(rollbackFor = Exception.class)
public void importExcel(MultipartFile file, HttpServletRequest request) {
// 明细
WQLObject dtl = WQLObject.getWQLObject("st_ivt_iostorinvdtl");
@@ -1263,11 +1262,10 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
}
// 根据交货单找到主单据
JSONObject jsonDtl = dtl.query("vbeln = '" + vbeln + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonDtl)) {
JSONObject jsonMst = WQL.getWO("QST_IVT_CHECKOUTBILL").addParam("flag","22").addParam("vbeln",vbeln).process().uniqueResult(0);
if (ObjectUtil.isEmpty(jsonMst)) {
continue;
}
JSONObject jsonMst = mst.query("iostorinv_id = '" + jsonDtl.getString("iostorinv_id") + "'").uniqueResult(0);
// 物流公司名称
String cust_name = list.get(1).toString();
@@ -1285,7 +1283,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
// 其他费用
String other_freight = list.get(4).toString();
// 其他费用
// 预估费用
String estimated_freight = list.get(5).toString();
// 更新主表

View File

@@ -1380,3 +1380,19 @@
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "22"
QUERY
SELECT
mst.*
FROM
st_ivt_iostorinvdtl dtl
LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dtl.iostorinv_id
WHERE
vbeln = 输入.vbeln
AND
mst.is_delete = '0'
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -181,7 +181,7 @@
<el-table-column show-overflow-tooltip prop="sap_pcsn" label="sap批次号" width="140px" align="center" />
<el-table-column prop="plan_qty" label="出库重量" width="150" align="center">
<template scope="scope">
<el-input-number v-show="!scope.row.edit" v-model="scope.row.plan_qty" :precision="3" :controls="false" :min="1" style="width: 120px" />
<el-input-number v-show="!scope.row.edit" v-model="scope.row.plan_qty" :precision="3" :controls="false" style="width: 120px" />
<span v-show="scope.row.edit">{{ scope.row.plan_qty }}</span>
</template>
</el-table-column>
@@ -442,7 +442,9 @@ export default {
'data': rows
}
if(this.form.bill_type === '1011') {
debugger
rows.forEach((item) => {
debugger
if (this.form.tableData.length !== 0) {
this.flagnow = false
for (let i = 0; i < this.form.tableData.length; i++) {
@@ -451,6 +453,7 @@ export default {
}
}
if (!this.flagnow) {
debugger
item.edit = false
this.form.tableData.splice(-1, 0, item)
this.form.total_qty = parseFloat(this.form.total_qty) + parseFloat(item.plan_qty)

View File

@@ -291,7 +291,7 @@
<el-table-column prop="sap_pcsn" label="sap批次号" width="150px" :min-width="flexWidth('sap_pcsn',crud.data,'sap批次号')" />
<el-table-column show-overflow-tooltip prop="plan_qty" label="出库重量" :formatter="crud.formatNum3" align="center" width="120px" :min-width="flexWidth('plan_qty',crud.data,'出库重量')">
<template scope="scope">
<el-input-number v-show="mstrow.bill_type === '1011'" v-model="scope.row.plan_qty" :precision="3" :controls="false" :min="1" style="width: 90px" />
<el-input-number v-show="mstrow.bill_type === '1011'" v-model="scope.row.plan_qty" :precision="3" :controls="false" style="width: 90px" />
<span v-show="mstrow.bill_type !== '1011'">{{ parseFloat(scope.row.plan_qty).toFixed(3) }}</span>
</template>
</el-table-column>