Browse Source

2026-03-18

询价申请、销售报价、测试申请、打样申请、刀具申请记录、工程变更申请、技术参数卡增加【流程关闭】功能
master
fengyuan_yang 8 months ago
parent
commit
cd1ec558b1
  1. 14
      src/main/java/com/spring/modules/change/controller/ChangeManagementController.java
  2. 5
      src/main/java/com/spring/modules/change/entity/ProcessFormEntity.java
  3. 12
      src/main/java/com/spring/modules/change/mapper/ChangeManagementMapper.java
  4. 2
      src/main/java/com/spring/modules/change/service/ChangeManagementService.java
  5. 86
      src/main/java/com/spring/modules/change/service/impl/ChangeManagementServiceImpl.java
  6. 25
      src/main/java/com/spring/modules/change/vo/CloseProcessVo.java
  7. 19
      src/main/java/com/spring/modules/change/vo/ProcessFormCloseVo.java
  8. 33
      src/main/resources/mapper/change/ChangeManagementMapper.xml

14
src/main/java/com/spring/modules/change/controller/ChangeManagementController.java

@ -391,6 +391,20 @@ public class ChangeManagementController {
return R.ok();
}
/**
* 流程关闭
* @param data
* @return
*/
@PostMapping(value="/closeProcess")
@ResponseBody
public R closeProcess(@RequestBody CloseProcessVo data) {
SysUserEntity user = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
data.setUserName(user.getUsername());
changeManagementService.closeProcess(data);
return R.ok();
}
/**
* 获取节点权限
* @param data

5
src/main/java/com/spring/modules/change/entity/ProcessFormEntity.java

@ -130,4 +130,9 @@ public class ProcessFormEntity extends QueryPage implements Serializable {
* 流程干预标识
*/
private String processInterventionFlag;
/**
* 流程关闭标识
*/
private String closeFlag;
}

12
src/main/java/com/spring/modules/change/mapper/ChangeManagementMapper.java

@ -222,4 +222,16 @@ public interface ChangeManagementMapper extends BaseMapper<ChangeRequestEntity>{
void updateChangeCountersignatureItemForReject(@Param("site") String site, @Param("changeNo") String docNo);
void udpateChangeRequestManuFacturingCost(ChangeRequestVo data);
List<ProcessFormCloseVo> getProcessFormInfoForClose(@Param("site") String site, @Param("docNo") String docNo);
void updateProcessFormCloseFlag(@Param("site") String site, @Param("docNo") String docNo, @Param("userName") String userName);
void updateDocumentStatusToDraft(@Param("tableName") String tableName, @Param("keyField") String keyField,
@Param("statusField") String statusField, @Param("draftStatus") String draftStatus,
@Param("site") String site, @Param("docNo") String docNo, @Param("userName") String userName);
Integer countDocumentByStatus(@Param("tableName") String tableName, @Param("keyField") String keyField,
@Param("statusField") String statusField, @Param("approvedStatus") String approvedStatus,
@Param("site") String site, @Param("docNo") String docNo);
}

2
src/main/java/com/spring/modules/change/service/ChangeManagementService.java

@ -70,6 +70,8 @@ public interface ChangeManagementService {
void submitChange(ChangeRequestVo data);
void closeProcess(CloseProcessVo data);
Map<String, List<RequestNodeAuthorityEntity>> getNodeAuthority(ChangeRequestVo data);
String getNodeAuthorityRQ(ChangeRequestVo data);

86
src/main/java/com/spring/modules/change/service/impl/ChangeManagementServiceImpl.java

@ -2441,4 +2441,90 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
}
return mainData;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void closeProcess(CloseProcessVo vo) {
for (String docNo : vo.getDocumentNos()) {
String tableName, keyField, statusField, approvedStatus, draftStatus;
switch (vo.getDocumentType()) {
case Constant.QUOTATION:
tableName = "plm_quotation_information";
keyField = "quotation_batch_no";
statusField = "quotation_status";
approvedStatus = "审批中";
draftStatus = "草稿";
break;
case Constant.QUOTE:
tableName = "plm_quote";
keyField = "quote_version_no";
statusField = "status";
approvedStatus = "审批中";
draftStatus = "草稿";
break;
case Constant.TEST:
tableName = "plm_test_information";
keyField = "test_no";
statusField = "test_status";
approvedStatus = "审批中";
draftStatus = "草稿";
break;
case Constant.DY_PR:
tableName = "plm_proofing_information";
keyField = "proofing_no";
statusField = "proofing_status";
approvedStatus = "审批中";
draftStatus = "草稿";
break;
case Constant.TOOL:
tableName = "plm_project_tool_applyHeader";
keyField = "apply_no";
statusField = "status";
approvedStatus = "审批中";
draftStatus = "草稿";
break;
case Constant.ECN:
tableName = "plm_change_request";
keyField = "change_no";
statusField = "change_status";
approvedStatus = "审批中";
draftStatus = "草稿";
break;
case Constant.BM:
tableName = "plm_technical_specification_sheet";
keyField = "code_no";
statusField = "status";
approvedStatus = "spz";
draftStatus = "cg";
break;
default:
throw new RuntimeException("不支持的单据类型: " + vo.getDocumentType());
}
// 校验单据状态必须是审批中
Integer count = changeManagementMapper.countDocumentByStatus(tableName, keyField, statusField, approvedStatus, vo.getSite(), docNo);
if (count == null || count == 0) {
throw new RuntimeException("单据 [" + docNo + "] 状态不是审批中,无法关闭流程!");
}
// 获取流程信息(workflowId + requestId + OA用户ID)
List<ProcessFormCloseVo> processFormList = changeManagementMapper.getProcessFormInfoForClose(vo.getSite(), docNo);
// 调用OA删除统一待办
for (ProcessFormCloseVo pf : processFormList) {
DeleteUserRequestInfoParam deleteParam = new DeleteUserRequestInfoParam();
deleteParam.setRequestId(pf.getWorkflowId() + pf.getRequestId());
deleteParam.setSyscode("PLM");
deleteParam.setUserId(pf.getUserId());
String deleteUrl = apiUrlOa + "/oa/interface/deleteUserRequestInfo";
HttpClientUtil.doPostByRawWithOA(deleteUrl, deleteParam);
}
// 更新plm_process_form的close_flag为Y
changeManagementMapper.updateProcessFormCloseFlag(vo.getSite(), docNo, vo.getUserName());
// 更新单据状态为草稿
changeManagementMapper.updateDocumentStatusToDraft(tableName, keyField, statusField, draftStatus, vo.getSite(), docNo, vo.getUserName());
}
}
}

25
src/main/java/com/spring/modules/change/vo/CloseProcessVo.java

@ -0,0 +1,25 @@
package com.spring.modules.change.vo;
import lombok.Data;
import java.util.List;
@Data
public class CloseProcessVo {
/**
* site
*/
private String site;
/**
* 单据号列表
*/
private List<String> documentNos;
/**
* 单据类型(QUOTATION/QUOTE/TEST/PROOFING/TOOL/ECN/BM)
*/
private String documentType;
/**
* 操作人
*/
private String userName;
}

19
src/main/java/com/spring/modules/change/vo/ProcessFormCloseVo.java

@ -0,0 +1,19 @@
package com.spring.modules.change.vo;
import lombok.Data;
@Data
public class ProcessFormCloseVo {
/**
* OA流程ID
*/
private String workflowId;
/**
* OA申请ID
*/
private String requestId;
/**
* OA用户ID
*/
private String userId;
}

33
src/main/resources/mapper/change/ChangeManagementMapper.xml

@ -1693,4 +1693,37 @@
manu_facturing_cost_remark2 = #{manuFacturingCostRemark2}
where site = #{site} and change_no = #{changeNo}
</update>
<select id="getProcessFormInfoForClose" resultType="com.spring.modules.change.vo.ProcessFormCloseVo">
SELECT DISTINCT
a.workflow_id as workflowId,
a.request_id as requestId,
b.id as userId
FROM plm_process_form a
INNER JOIN view_oa_HrmResource b ON a.domain_control_account = b.loginid
WHERE a.site = #{site} AND a.document_no = #{docNo} AND a.is_remark = 0
</select>
<update id="updateProcessFormCloseFlag">
UPDATE plm_process_form
SET close_flag = 'Y',
update_date = getDate(),
update_by = #{userName}
WHERE site = #{site} AND document_no = #{docNo} AND is_remark = 0
</update>
<update id="updateDocumentStatusToDraft">
UPDATE ${tableName}
SET ${statusField} = #{draftStatus},
step_id = 10,
update_date = getDate(),
update_by = #{userName}
WHERE site = #{site} AND ${keyField} = #{docNo}
</update>
<select id="countDocumentByStatus" resultType="java.lang.Integer">
SELECT COUNT(1)
FROM ${tableName}
WHERE site = #{site} AND ${keyField} = #{docNo} AND ${statusField} = #{approvedStatus}
</select>
</mapper>
Loading…
Cancel
Save