Browse Source

2026-09-15

消息代办调整
master
fengyuan_yang 4 days ago
parent
commit
33c7facec1
  1. 6
      src/main/java/com/spring/modules/request/mapper/RequestManageMapper.java
  2. 81
      src/main/java/com/spring/modules/request/service/impl/RequestManageServiceImpl.java
  3. 140
      src/main/resources/mapper/request/RequestManageMapper.xml

6
src/main/java/com/spring/modules/request/mapper/RequestManageMapper.java

@ -173,9 +173,9 @@ public interface RequestManageMapper extends BaseMapper<PlmRequestHeaderEntity>
List<PlmProcessControllBaseData> getProcessSelect2(PlmProcessControllBaseData cData);
List<ProcessFormVo> getProcessFlowInformation2(@Param("site") String site, @Param("workflowId") String workflowId, @Param("documentNo") String documentNo, @Param("workflowName") String workflowName,
@Param("nodeId") String nodeId, @Param("nodeName") String nodeName, @Param("createBy") String createBy, @Param("updateBy") String updateBy,
@Param("documentType") String documentType, @Param("documentStatus") String documentStatus, @Param("page") int page, @Param("limit") int limit);
Long countProcessFlowInformation(@Param("q") ProcessFormVo q);
List<ProcessFormVo> getProcessFlowInformation2(@Param("q") ProcessFormVo q, @Param("startIndex") int startIndex, @Param("limit") int limit);
void updateProcessInterventionFlag2(ProcessFormVo inData);

81
src/main/java/com/spring/modules/request/service/impl/RequestManageServiceImpl.java

@ -368,15 +368,80 @@ public class RequestManageServiceImpl extends ServiceImpl<RequestManageMapper, P
}
}
}
Long count = 0L;
// 通过存储过程获取查询结果
List<ProcessFormVo> list = this.requestManageMapper.getProcessFlowInformation2(data.getSite(), data.getWorkflowId(), data.getDocumentNo(),
data.getWorkflowName(), data.getNodeId(), data.getNodeName(), data.getCreateBy(), data.getUpdateBy(), data.getDocumentType(), data.getDocumentStatus(), data.getPage(), data.getLimit());
// 总条数
if (!list.isEmpty()) {
count = list.get(0).getCountQty();
prepareProcessFlowQuery(data);
int page = data.getPage() < 1 ? 1 : data.getPage();
int limit = data.getLimit();
int startIndex = limit > 0 ? (page - 1) * limit : 0;
Long count = this.requestManageMapper.countProcessFlowInformation(data);
List<ProcessFormVo> list = this.requestManageMapper.getProcessFlowInformation2(data, startIndex, limit);
int total = count == null ? 0 : count.intValue();
int pageSize = limit > 0 ? limit : Math.max(total, 1);
return new PageUtils(list == null ? new ArrayList<ProcessFormVo>() : list, total, pageSize, page);
}
private void prepareProcessFlowQuery(ProcessFormVo data) {
if (data == null) {
return;
}
data.setWorkflowId(blankToNull(data.getWorkflowId()));
data.setDocumentNo(blankToNull(data.getDocumentNo()));
data.setWorkflowName(blankToNull(data.getWorkflowName()));
data.setNodeId(blankToNull(data.getNodeId()));
data.setNodeName(blankToNull(data.getNodeName()));
data.setCreateBy(blankToNull(data.getCreateBy()));
data.setUpdateBy(blankToNull(data.getUpdateBy()));
data.setDocumentStatus(blankToNull(data.getDocumentStatus()));
data.setDocumentType(normalizeDocumentType(data.getDocumentType()));
}
private String normalizeDocumentType(String documentType) {
String value = blankToNull(documentType);
if (value == null) {
return null;
}
String upper = value.toUpperCase(Locale.ROOT);
if ("技术参数卡".equals(value) || "BM".equals(upper)) {
return "BM";
}
if ("打样申请".equals(value) || "PROOFING".equals(upper)) {
return "PROOFING";
}
if ("询价申请".equals(value) || "QUOTATION".equals(upper)) {
return "QUOTATION";
}
if ("测试申请".equals(value) || "TEST".equals(upper)) {
return "TEST";
}
if ("刀具申请".equals(value) || "TOOL".equals(upper)) {
return "TOOL";
}
if ("ECN".equals(upper)) {
return "ECN";
}
if ("QUOTE".equals(upper) || "销售报价".equals(value)) {
return "QUOTE";
}
if ("项目信息".equals(value) || "PROJECT".equals(upper)) {
return "PROJECT";
}
if ("ROHS".equals(upper)) {
return "ROHS";
}
if ("LAB".equals(upper)) {
return "LAB";
}
return upper;
}
private String blankToNull(String value) {
if (value == null) {
return null;
}
String text = value.trim();
if (text.isEmpty() || "*".equals(text)) {
return null;
}
return new PageUtils(list, count.intValue(), data.getPage(), data.getLimit());
return text;
}
/**

140
src/main/resources/mapper/request/RequestManageMapper.xml

@ -553,8 +553,146 @@
and a.site = #{site} and a.workflow_id = #{workflowId} and a.node_id = #{nodeId} and a.role_id = #{roleId}
</select>
<sql id="processFlowInformationCte">
;WITH BaseData AS (
SELECT
p.site,
p.bu,
p.request_id,
p.workflow_id,
p.node_id,
p.domain_control_account,
p.document_no,
p.document_type,
p.seq_no,
p.reject_flag,
p.reject_node_id,
p.node_conclusion,
p.submit_date,
p.submitted_by,
p.create_date,
p.create_by,
p.update_date,
p.id,
p.is_remark,
p.classification_no,
p.step_id,
p.menu_id,
p.reject_opinion,
w.workflowname,
w.nodename,
u.username AS updateByUserName,
dbo.get_document_status(p.site, p.document_no, p.document_type) AS calc_status,
dbo.get_display_no(p.site, p.document_no, p.document_type) AS calc_display_no,
dbo.get_revision_no(p.site, p.document_no, p.document_type) AS calc_revision_no
FROM plm_process_form p WITH (NOLOCK)
LEFT JOIN [VIEW_Process_management_OA_PLM] w
ON p.workflow_id = w.workflowid AND p.node_id = w.nodeid
LEFT JOIN sys_user u
ON p.domain_control_account = u.domain_control_account
WHERE p.site = #{q.site}
AND ISNULL(p.process_intervention_flag, ' ') <![CDATA[<>]]> 'Y'
<if test="q.documentType != null and q.documentType != ''">
AND UPPER(p.document_type) LIKE #{q.documentType}
</if>
<if test="q.workflowId != null and q.workflowId != ''">
AND CAST(p.workflow_id AS NVARCHAR(30)) LIKE #{q.workflowId}
</if>
<if test="q.workflowName != null and q.workflowName != ''">
AND w.workflowname LIKE #{q.workflowName}
</if>
<if test="q.nodeId != null and q.nodeId != ''">
AND CAST(p.node_id AS NVARCHAR(30)) LIKE #{q.nodeId}
</if>
<if test="q.nodeName != null and q.nodeName != ''">
AND w.nodename LIKE #{q.nodeName}
</if>
<if test="q.createBy != null and q.createBy != ''">
AND p.create_by LIKE #{q.createBy}
</if>
<if test="q.updateBy != null and q.updateBy != ''">
AND u.username LIKE #{q.updateBy}
</if>
<if test="q.documentNo != null and q.documentNo != ''">
AND p.document_no LIKE #{q.documentNo}
</if>
),
FilteredData AS (
SELECT * FROM BaseData
WHERE calc_status <![CDATA[<>]]> N'已升版'
<if test="q.documentStatus != null and q.documentStatus != ''">
AND calc_status LIKE #{q.documentStatus}
</if>
<if test="q.documentNo != null and q.documentNo != ''">
AND calc_display_no LIKE #{q.documentNo}
</if>
),
RankedData AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY site, classification_no, document_no ORDER BY step_id DESC) AS rn
FROM FilteredData
),
FinalData AS (
SELECT * FROM RankedData WHERE rn = 1
)
</sql>
<select id="countProcessFlowInformation" resultType="java.lang.Long">
<include refid="processFlowInformationCte"/>
SELECT COUNT(1) FROM FinalData
</select>
<select id="getProcessFlowInformation2" resultType="com.spring.modules.change.vo.ProcessFormVo">
EXEC dbo.get_process_form_infor #{site}, #{workflowId}, #{documentNo}, #{workflowName}, #{nodeId}, #{nodeName}, #{createBy}, #{updateBy}, #{documentType}, #{documentStatus}, #{page}, #{limit}
<include refid="processFlowInformationCte"/>
SELECT
a.site,
a.bu,
CAST(a.request_id AS VARCHAR(50)) AS requestId,
CAST(a.workflow_id AS VARCHAR(50)) AS workflowId,
a.workflowname AS workflowName,
CAST(a.node_id AS VARCHAR(50)) AS nodeId,
a.nodename AS nodeName,
a.domain_control_account,
a.updateByUserName AS updateBy,
a.document_no,
a.calc_display_no AS displayNo,
a.document_type,
a.seq_no,
a.reject_flag,
CASE WHEN a.reject_flag = 'Y' THEN N'是' ELSE N'否' END AS rejectFlagDesc,
a.reject_node_id,
a.node_conclusion,
a.submit_date,
a.create_date,
a.create_by,
a.update_date,
a.id,
a.is_remark,
a.classification_no,
a.step_id,
a.menu_id,
a.reject_opinion,
a.calc_status AS documentStatus,
a.calc_revision_no AS revisionNo,
CASE UPPER(a.document_type)
WHEN 'BM' THEN N'技术参数卡'
WHEN 'PROOFING' THEN N'打样申请'
WHEN 'QUOTATION' THEN N'询价申请'
WHEN 'TEST' THEN N'测试申请'
WHEN 'TOOL' THEN N'刀具申请'
WHEN 'ECN' THEN 'ECN'
WHEN 'QUOTE' THEN N'销售报价'
WHEN 'PROJECT' THEN N'项目信息'
WHEN 'ROHS' THEN 'RoHS'
WHEN 'LAB' THEN 'Lab'
ELSE a.document_type
END AS documentTypeDesc
FROM FinalData a
ORDER BY a.document_no
<if test="limit != null and limit &gt; 0">
OFFSET #{startIndex} ROWS FETCH NEXT #{limit} ROWS ONLY
</if>
</select>
<update id="updateProcessNodeByIntervention1">

Loading…
Cancel
Save