From 9934b4b340977c13a074b6453cc71bc8f9ffeff4 Mon Sep 17 00:00:00 2001
From: hayu <1604366271@qq.com>
Date: Thu, 4 Dec 2025 08:55:46 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E8=B4=AD=E6=B5=81=E7=A8=8B=E6=9F=A5?=
=?UTF-8?q?=E7=9C=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../views/newInput/newInputBatchlist.jsp | 1 +
.../static/js/newInput/newInputBatch.js | 125 +++++++++++
resources/mybatis/newInput/NewInputMapper.xml | 13 +-
.../controller/NewInputController.java | 13 +-
src/com/bonus/newInput/dao/NewInputDao.java | 2 +
.../newInput/service/NewInputService.java | 2 +
.../newInput/service/NewInputServiceImp.java | 206 +++++++++++++++++-
7 files changed, 351 insertions(+), 11 deletions(-)
diff --git a/WebContent/WEB-INF/views/newInput/newInputBatchlist.jsp b/WebContent/WEB-INF/views/newInput/newInputBatchlist.jsp
index 88743da..08f7114 100644
--- a/WebContent/WEB-INF/views/newInput/newInputBatchlist.jsp
+++ b/WebContent/WEB-INF/views/newInput/newInputBatchlist.jsp
@@ -55,6 +55,7 @@
收货人 |
采购状态 |
备注 |
+ 流程查看 |
操作 |
diff --git a/WebContent/static/js/newInput/newInputBatch.js b/WebContent/static/js/newInput/newInputBatch.js
index 6f38aab..2b3a829 100644
--- a/WebContent/static/js/newInput/newInputBatch.js
+++ b/WebContent/static/js/newInput/newInputBatch.js
@@ -129,6 +129,9 @@ function getbaseList(init) {
html += " | ";
}
html += ""+ JY.Object.notEmpty(l.remark) + " | ";
+ html += "";
+ html += getCurrentStatusText(l.taskStatus, l.taskId, l.isFinish,l.isExamine,l.isApproval);
+ html += " | ";
html += rowFunction(l.taskId,l.launchTime,l.finishTime,l.taskStatus,l.isFinish,l.isExamine);
html += "";
}
@@ -144,6 +147,128 @@ function getbaseList(init) {
);
}
+
+
+// 添加获取当前状态文本的函数
+function getCurrentStatusText(taskStatus, taskId, isFinish,isExamine,isApproval) {
+ var status = parseInt(taskStatus) || 0;
+ var statusText = "";
+ var statusClass = "";
+
+ if (taskStatus=='4' && isFinish=='0'){
+ status = 4;
+ } else if (taskStatus=='4' && isFinish=='1' && isExamine=='0'){
+ status = 5;
+ } else if (taskStatus=='4' && isFinish=='1' && isExamine=='1' && isApproval!='0'){
+ status = 6;
+ } else if (taskStatus=='4' && isFinish=='1' && isExamine=='1' && isApproval=='0'){
+ status = 7;
+ }
+
+ // 根据状态获取对应的文本和样式类
+ switch(status) {
+ case 1:
+ statusText = "添加采购明细";
+ statusClass = "label-success";
+ break;
+ case 2:
+ statusText = "采购验收";
+ statusClass = "label-success";
+ break;
+ case 3:
+ statusText = "上传验收附件";
+ statusClass = "label-success";
+ break;
+ case 4:
+ statusText = "采购完成";
+ statusClass = "label-success";
+ break;
+ case 5:
+ statusText = "入库";
+ statusClass = "label-success";
+ break;
+ case 6:
+ statusText = "新购机具审核";
+ statusClass = "label-success";
+ break;
+ case 7:
+ statusText = "新购机具批准";
+ statusClass = "label-success";
+ break;
+ default:
+ statusText = "创建申请";
+ statusClass = "label-info";
+ break;
+ }
+
+ // 返回可点击的状态文本
+ return '' + statusText + '';
+}
+
+// 保留原有的查看流程详情函数
+function viewProcessDetails(taskId, taskStatus, isFinish,isExamine,isApproval) {
+ const contentHtml = renderProcessSteps(parseInt(taskStatus) || 0, isFinish,isExamine,isApproval);
+
+ layer.open({
+ type: 1,
+ title: '流程详情',
+ skin: 'layui-layer-demo',
+ area: ['800px', '300px'],
+ shadeClose: true,
+ shade: 0.8,
+ maxmin: false,
+ content: contentHtml
+ });
+}
+
+function renderProcessSteps(taskStatus, isFinish,isExamine,isApproval) {
+ if (taskStatus=='4' && isFinish=='0'){
+ taskStatus = 4;
+ } else if (taskStatus=='4' && isFinish=='1' && isExamine=='0'){
+ taskStatus = 5;
+ } else if (taskStatus=='4' && isFinish=='1' && isExamine=='1' && isApproval!='0'){
+ taskStatus = 6;
+ } else if (taskStatus=='4' && isFinish=='1' && isExamine=='1' && isApproval=='0'){
+ taskStatus = 7;
+ }
+ // 定义固定的流程节点(顺序不能变)
+ const steps = [
+ { value: 0, text: "创建申请" },
+ { value: 1, text: "添加采购明细" },
+ { value: 2, text: "采购验收" },
+ { value: 3, text: "上传验收附件" },
+ { value: 4, text: "已采购完成" },
+ { value: 5, text: "入库" },
+ { value: 6, text: "新购机具审核" },
+ { value: 7, text: "新购机具批准" },
+ ];
+
+ let html = '';
+ html += '
采购流程进度
';
+ html += '
';
+
+ // 绘制连接线(可选美化)
+ html += '
';
+
+ steps.forEach((step, index) => {
+ const isCompleted = taskStatus >= step.value;
+ const color = isCompleted ? '#333' : '#ccc';
+ const fontWeight = isCompleted ? 'bold' : 'normal';
+
+ html += `
+
+
+ ${index + 1}
+
+
${step.text}
+
+ `;
+ });
+
+ html += '
';
+ return html;
+}
+
function rowFunction(id,launchTime,finishTime,status,isFinish,isExamine) {
var h = "";
h += "";
diff --git a/resources/mybatis/newInput/NewInputMapper.xml b/resources/mybatis/newInput/NewInputMapper.xml
index ae2601f..1475aab 100644
--- a/resources/mybatis/newInput/NewInputMapper.xml
+++ b/resources/mybatis/newInput/NewInputMapper.xml
@@ -9,11 +9,22 @@
SELECT wta.ID as id, wta.LAUNCH_TIME AS launchTime,pu.`NAME` AS receiveName,
pu1.`NAME` AS launchName,if(mtt.`NAME` is not null,GROUP_CONCAT(DISTINCT mtt.`NAME` SEPARATOR ','),'') AS maType,wta.REMARK AS remark,
wta.FINISH_TIME AS finishTime,wta.TASK_STATUS AS taskStatus,
- wta.TASK_ID as taskId,wtr.IS_FINISH as isFinish,wnd.IS_EXAMINE as isExamine
+ wta.TASK_ID as taskId,wtr.IS_FINISH as isFinish,wnd.IS_EXAMINE as isExamine,
+ IFNULL(wnds.num,0) as isApproval
FROM wf_task_appoint wta
LEFT JOIN wf_task_record wtr ON wtr.ID = wta.TASK_ID
LEFT JOIN wf_task_record wtr1 ON wtr.SUP_ID = wtr1.ID
LEFT JOIN wf_new_details wnd ON wnd.TASK_ID = wta.TASK_ID
+ LEFT JOIN (
+ SELECT
+ COUNT(*) as num,
+ TASK_ID
+ FROM
+ wf_new_details
+ WHERE
+ IS_APPROVAL='0'
+ GROUP BY TASK_ID
+ ) wnds on wnds.TASK_ID=wta.TASK_ID
LEFT JOIN mm_type mt ON mt.ID = wnd.MODEL_ID
LEFT JOIN mm_type mtt ON mt.PARENT_ID = mtt.ID
LEFT JOIN pm_user pu ON pu.ID = wta.RECEIVE
diff --git a/src/com/bonus/newInput/controller/NewInputController.java b/src/com/bonus/newInput/controller/NewInputController.java
index 5c589fe..c8014e9 100644
--- a/src/com/bonus/newInput/controller/NewInputController.java
+++ b/src/com/bonus/newInput/controller/NewInputController.java
@@ -7,6 +7,7 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest;
+import com.bonus.sys.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@@ -16,11 +17,6 @@ import org.springframework.web.bind.annotation.ResponseBody;
import com.bonus.newInput.beans.NewInputBean;
import com.bonus.newInput.service.NewInputService;
-import com.bonus.sys.AjaxRes;
-import com.bonus.sys.BaseController;
-import com.bonus.sys.GlobalConst;
-import com.bonus.sys.Page;
-import com.bonus.sys.UserShiroHelper;
import com.bonus.sys.beans.UserBean;
import com.bonus.sys.service.UserService;
@@ -303,4 +299,11 @@ public class NewInputController extends BaseController {
return ar;
}
+
+ @ResponseBody
+ @RequestMapping(value = "getProcessInfo", method = RequestMethod.POST)
+ public AjaxRes getProcessInfo(NewInputBean o) {
+ return service.getProcessInfo(o);
+ }
+
}
diff --git a/src/com/bonus/newInput/dao/NewInputDao.java b/src/com/bonus/newInput/dao/NewInputDao.java
index d53712c..940b331 100644
--- a/src/com/bonus/newInput/dao/NewInputDao.java
+++ b/src/com/bonus/newInput/dao/NewInputDao.java
@@ -73,4 +73,6 @@ public interface NewInputDao extends BaseDao {
public int deleteMachine(NewInputBean o);
public int delDetails(NewInputBean o);
+
+ public NewInputBean getNewInputByTaskId(NewInputBean o);
}
diff --git a/src/com/bonus/newInput/service/NewInputService.java b/src/com/bonus/newInput/service/NewInputService.java
index 2c1684f..030231d 100644
--- a/src/com/bonus/newInput/service/NewInputService.java
+++ b/src/com/bonus/newInput/service/NewInputService.java
@@ -6,6 +6,7 @@ import javax.servlet.http.HttpServletRequest;
import com.bonus.newInput.beans.NewInputBean;
import com.bonus.newInput.beans.NewInputQrcodeBean;
+import com.bonus.sys.AjaxRes;
import com.bonus.sys.BaseService;
import com.bonus.sys.Page;
@@ -27,4 +28,5 @@ public interface NewInputService extends BaseService {
public int deleteQrcode(NewInputBean o);
+ public AjaxRes getProcessInfo(NewInputBean o);
}
diff --git a/src/com/bonus/newInput/service/NewInputServiceImp.java b/src/com/bonus/newInput/service/NewInputServiceImp.java
index 0617809..cda9213 100644
--- a/src/com/bonus/newInput/service/NewInputServiceImp.java
+++ b/src/com/bonus/newInput/service/NewInputServiceImp.java
@@ -3,11 +3,11 @@ package com.bonus.newInput.service;
import java.io.File;
import java.io.IOException;
import java.text.DecimalFormat;
-import java.util.Enumeration;
-import java.util.List;
+import java.util.*;
import javax.servlet.http.HttpServletRequest;
+import com.bonus.sys.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -21,9 +21,6 @@ import com.bonus.ma.dao.MachineTypeDao;
import com.bonus.newInput.beans.NewInputBean;
import com.bonus.newInput.dao.InputDetailsDao;
import com.bonus.newInput.dao.NewInputDao;
-import com.bonus.sys.BaseServiceImp;
-import com.bonus.sys.Page;
-import com.bonus.sys.UserShiroHelper;
import com.bonus.wf.beans.TaskRecordBean;
import com.bonus.wf.dao.TaskRecordDao;
import com.oreilly.servlet.MultipartRequest;
@@ -269,4 +266,203 @@ public class NewInputServiceImp extends BaseServiceImp implements
return res;
}
+ @Override
+ public AjaxRes getProcessInfo(NewInputBean o) {
+ AjaxRes ar = getAjaxRes();
+ try {
+ String taskId = o.getTaskId();
+
+ if (StringHelper.isEmpty(taskId)) {
+ ar.setRes(0);
+ ar.setResMsg("任务ID不能为空");
+ return ar;
+ }
+ NewInputBean mainInfo = dao.getNewInputByTaskId(o);
+ if (mainInfo == null) {
+ ar.setRes(0);
+ ar.setResMsg("未找到对应的采购任务");
+ return ar;
+ }
+
+ // 2. 获取当前状态
+ Integer currentStatus = mainInfo.getTaskStatus() != null ?
+ Integer.parseInt(mainInfo.getTaskStatus()) : 0;
+
+ // 3. 构建流程节点信息
+ List |