diff --git a/lms/nladmin-system/doc/套轴点位日志记录实时看板v3.html b/lms/nladmin-system/doc/套轴点位日志记录实时看板v3.html
new file mode 100644
index 000000000..8a3c44405
--- /dev/null
+++ b/lms/nladmin-system/doc/套轴点位日志记录实时看板v3.html
@@ -0,0 +1,547 @@
+
+
+
+
+
+ 套轴点位日志记录实时看板
+
+
+
+ 套轴点位日志记录实时看板
+
+
+
+
+
套轴监控系统实时数据
+
+
+ 呼叫超过2小时
+ 存在异常
+
+
+
+
+ 设备
+ 子卷号
+ 轴位置
+ 气胀轴尺寸
+ 气胀轴代数
+ 气胀轴状态
+ 呼叫时间
+ 管芯规格
+ 套轴标记
+ 一键恢复
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.xml
index b21d6aab8..bc436ca99 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.xml
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.xml
@@ -10,14 +10,16 @@
up_or_down,
qzz_size,
qzz_generation,
- start_time
+ start_time,
+ manufacture_sort
FROM (SELECT p.resource_name,
p.parent_container_name,
p.split_group,
p.up_or_down,
p.qzz_size,
p.qzz_generation,
- MIN(p.start_time) AS start_time
+ MIN(p.start_time) AS start_time,
+ MAX(p.manufacture_sort) AS manufacture_sort
FROM `pdm_bi_slittingproductionplan` p
WHERE p.`status` = '01'
AND p.is_child_tz_ok = '0'
@@ -25,9 +27,11 @@
AND p.is_delete = '0'
AND IFNULL(p.up_or_down, '') ]]> ''
AND IFNULL(p.left_or_right, '') ]]> ''
- AND DATE (p.start_time) >= DATE_SUB(CURDATE(), INTERVAL #{day} DAY)
- AND IFNULL(p.parent_container_name, '') ]]> ''
- AND '1' = ( SELECT c.is_used FROM st_ivt_cutpointivt c WHERE c.ext_code = p.resource_name )
+ AND DATE (p.start_time)
+ >= DATE_SUB(CURDATE(), INTERVAL #{day} DAY)
+ AND IFNULL(p.parent_container_name
+ , '') ]]> ''
+ AND '1' = ( SELECT c.is_used FROM st_ivt_cutpointivt c WHERE c.ext_code = p.resource_name )
GROUP BY
p.resource_name,
p.parent_container_name,
@@ -42,7 +46,8 @@
p.up_or_down,
p.qzz_size,
p.qzz_generation,
- MIN(p.start_time) AS start_time
+ MIN(p.start_time) AS start_time,
+ MAX(p.manufacture_sort) AS manufacture_sort
FROM `pdm_bi_slittingproductionplan` p
WHERE p.`status` = '01'
AND p.is_child_tz_ok = '0'
@@ -64,7 +69,7 @@
p.qzz_generation
) AS combined_data
ORDER BY
- start_time,split_group
+ manufacture_sort DESC, start_time, split_group
WITH RankedData AS (
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/SlitterService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/SlitterService.java
index 6da234696..e1be1d675 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/SlitterService.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/SlitterService.java
@@ -322,6 +322,12 @@ public interface SlitterService {
*/
JSONObject urgentPlan(JSONObject param);
+ /**
+ * 批量加急
+ * @param whereJson
+ */
+ JSONObject urgentBatchPlan(JSONObject whereJson);
+
/**
* 子卷下料2
* @param param
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java
index b83a5fc76..050b9dce6 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java
@@ -2422,12 +2422,12 @@ public class SlitterServiceImpl implements SlitterService {
PdmBiSlittingproductionplan plan = slittingproductionplanService.getById(workorder_id);
log.info("当前加急送轴的计划为:{}", plan);
if (!"01".equals(plan.getStatus())) {
- res.put("status", HttpStatus.HTTP_OK);
+ res.put("status", HttpStatus.HTTP_BAD_REQUEST);
res.put("message", "加急失败,当前计划正在套轴!");
return res;
}
if (!"P1".equals(plan.getManufacture_sort())) {
- res.put("status", HttpStatus.HTTP_OK);
+ res.put("status", HttpStatus.HTTP_BAD_REQUEST);
res.put("message", "加急失败,当前计划已加急过一次!");
return res;
}
@@ -2443,12 +2443,38 @@ public class SlitterServiceImpl implements SlitterService {
res.put("status", HttpStatus.HTTP_OK);
res.put("message", "加急成功!");
} else {
- res.put("status", HttpStatus.HTTP_OK);
+ res.put("status", HttpStatus.HTTP_BAD_REQUEST);
res.put("message", "加急失败,请刷新再试!");
}
return res;
}
+ @Override
+ public JSONObject urgentBatchPlan(JSONObject whereJson) {
+ JSONArray data = whereJson.getJSONArray("data");
+ int success = 0;
+ int fail = 0;
+ JSONArray failInfo = new JSONArray();
+ for (int i = 0; i < data.size(); i++) {
+ JSONObject json = data.getJSONObject(i);
+ JSONObject urgentPlan = urgentPlan(json);
+ if (HttpStatus.HTTP_BAD_REQUEST == urgentPlan.getInteger("status")) {
+ fail++;
+ JSONObject p = new JSONObject();
+ p.put(json.getString("container_name"), urgentPlan.getString("message"));
+ failInfo.add(p);
+ } else {
+ success++;
+ }
+ }
+ JSONObject res = new JSONObject();
+ res.put("success", success);
+ res.put("fail", fail);
+ res.put("total", data.size());
+ res.put("failInfo", failInfo);
+ return res;
+ }
+
@Override
public JSONObject downRolls2(JSONObject param) {
log.info("下卷2的输入参数为:{}", param);
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/rest/SlittingproductionplanController.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/rest/SlittingproductionplanController.java
index d3627290d..9dd38767f 100644
--- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/rest/SlittingproductionplanController.java
+++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/rest/SlittingproductionplanController.java
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService;
+import org.nl.b_lms.sch.tasks.slitter.service.SlitterService;
import org.nl.modules.logging.annotation.Log;
import org.nl.wms.pdm.service.SlittingproductionplanService;
import org.nl.wms.pdm.service.dto.SlittingproductionplanDto;
@@ -30,6 +31,7 @@ public class SlittingproductionplanController {
private final SlittingproductionplanService slittingproductionplanService;
private final IPdmBiSlittingproductionplanService biSlittingproductionplanService;
+ private final SlitterService slitterService;
@GetMapping
@Log("查询分切计划")
@@ -111,4 +113,9 @@ public class SlittingproductionplanController {
biSlittingproductionplanService.setDirection(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
+ @Log("加急")
+ @PostMapping("/urgentPlan")
+ public ResponseEntity urgentPlan(@RequestBody JSONObject whereJson) {
+ return new ResponseEntity<>(slitterService.urgentBatchPlan(whereJson), HttpStatus.OK);
+ }
}
diff --git a/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/index.vue b/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/index.vue
index 8ba8d664e..e889e3015 100644
--- a/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/index.vue
+++ b/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/index.vue
@@ -321,6 +321,18 @@
>
设置右卷
+
+ 加急
+
@@ -488,7 +500,7 @@
-
+
{{ scope.row.mfg_order_name }}
@@ -724,6 +736,68 @@ export default {
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
})
},
+ urgentPlan() {
+ const _selectData = this.$refs.table.selection
+ const data = {
+ 'data': _selectData
+ }
+ crudSlittingproductionplan.urgentPlan(data).then(res => {
+ this.crud.toQuery()
+ if (res.failInfo.length == 0) {
+ this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
+ } else {
+ this.$notify({
+ title: '操作结果',
+ dangerouslyUseHTMLString: true,
+ message: this.buildNotificationContent(res),
+ duration: 0,
+ offset: 50,
+ customClass: 'custom-notify'
+ })
+ }
+ })
+ },
+ buildNotificationContent(data) {
+ console.log('通知数据:', data)
+
+ // 第一行:统计信息
+ const stats = `总数:${data.total},成功:${data.success},失败:${data.fail}
`
+
+ // 第二行:失败信息表格
+ let tableHtml = ''
+
+ if (data.failInfo && Object.keys(data.failInfo).length > 0) {
+ // 创建表头
+ const headers = `
+ 卷号
+ 信息
+ `
+
+ // 创建表格行
+ const rows = Object.values(data.failInfo).flatMap(errorObj => {
+ return Object.entries(errorObj).map(([volumeNo, errorMsg]) => {
+ return `
+ ${volumeNo}
+ ${errorMsg}
+ `
+ })
+ }).join('')
+
+ tableHtml = `
+
+ `
+ } else {
+ tableHtml = '无失败信息
'
+ }
+
+ return `${stats}${tableHtml}`
+ },
inFinish() {
const _selectData = this.$refs.table.selection
const data = {
@@ -810,5 +884,4 @@ export default {
diff --git a/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/slittingproductionplan.js b/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/slittingproductionplan.js
index 862d266dd..c02c4286a 100644
--- a/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/slittingproductionplan.js
+++ b/lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/slittingproductionplan.js
@@ -71,6 +71,14 @@ export function setDirection(data) {
data
})
}
+
+export function urgentPlan(data) {
+ return request({
+ url: 'api/slittingproductionplan/urgentPlan',
+ method: 'post',
+ data
+ })
+}
export function updates(data) {
return request({
url: 'api/slittingproductionplan',
@@ -79,4 +87,4 @@ export function updates(data) {
})
}
-export default { add, edit, del, upMaterFinish, caseFinish, sendFinish, inFinish, compelFinish, setDirection, updates }
+export default { add, edit, del, upMaterFinish, caseFinish, sendFinish, inFinish, compelFinish, setDirection, updates, urgentPlan }