|
|
@@ -3,20 +3,15 @@ package com.xjrsoft.module.liteflow.node;
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
-import com.google.gson.JsonArray;
|
|
|
-import com.google.gson.JsonElement;
|
|
|
-import com.google.gson.JsonObject;
|
|
|
-import com.google.gson.JsonParser;
|
|
|
import com.xjrsoft.common.enums.ArchivesStatusEnum;
|
|
|
import com.xjrsoft.common.enums.DeleteMark;
|
|
|
+import com.xjrsoft.common.enums.StudentChangeTypeEnum;
|
|
|
import com.xjrsoft.common.enums.WorkflowApproveType;
|
|
|
-import com.xjrsoft.module.hikvision.entity.HikvisionData;
|
|
|
-import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
|
|
|
-import com.xjrsoft.module.hikvision.util.ApiUtil;
|
|
|
import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
|
|
|
import com.xjrsoft.module.student.entity.StudentDropOut;
|
|
|
import com.xjrsoft.module.student.mapper.StudentDropOutMapper;
|
|
|
import com.xjrsoft.module.student.service.IBaseStudentSchoolRollService;
|
|
|
+import com.xjrsoft.module.student.service.IStudentChangeRecordService;
|
|
|
import com.xjrsoft.module.workflow.entity.WorkflowRecord;
|
|
|
import com.xjrsoft.module.workflow.mapper.WorkflowRecordMapper;
|
|
|
import com.xjrsoft.module.workflow.service.IWorkflowExecuteService;
|
|
|
@@ -28,15 +23,10 @@ import org.springframework.boot.test.context.SpringBootTest;
|
|
|
import org.springframework.transaction.support.TransactionSynchronization;
|
|
|
import org.springframework.transaction.support.TransactionSynchronizationManager;
|
|
|
|
|
|
-import java.util.HashSet;
|
|
|
import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
import java.util.Optional;
|
|
|
-import java.util.Set;
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
|
|
|
-import static org.junit.jupiter.api.Assertions.*;
|
|
|
-
|
|
|
/**
|
|
|
* @author dzx
|
|
|
* @date 2024/4/19
|
|
|
@@ -55,90 +45,40 @@ class StudentDropOutNodeTest {
|
|
|
private WorkflowRecordMapper workflowRecordMapper;
|
|
|
|
|
|
@Autowired
|
|
|
- private HikvisionDataMapper hikvisionDataMapper;
|
|
|
+ private IStudentChangeRecordService changeRecordService;
|
|
|
|
|
|
@Test
|
|
|
void test(){
|
|
|
- Long formId = 1863523681699409920L;
|
|
|
+ Long formId = 1900442309068136448L;
|
|
|
// 获取表单中数据编号
|
|
|
- Object processInstanceId = "ee72acf7-b6a0-11ef-9921-0242c8000007";
|
|
|
+ Object processInstanceId = "3f8296aa-00a2-11f0-80c9-0242d2000004";
|
|
|
String processInstanceIdStr = Convert.toStr(processInstanceId);
|
|
|
if (formId != null && StringUtils.isNotEmpty(processInstanceIdStr)) {
|
|
|
- TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
|
|
|
- @Override
|
|
|
- public void afterCommit() {
|
|
|
- CompletableFuture.runAsync(() -> {
|
|
|
- Optional<HistoricProcessInstance> historicProcessInstanceOptional = workflowExecuteService.getHistoricProcessInstance(processInstanceId.toString());
|
|
|
-
|
|
|
- if (historicProcessInstanceOptional.isEmpty()) {
|
|
|
- return;
|
|
|
- }
|
|
|
- HistoricProcessInstance historicProcessInstance = historicProcessInstanceOptional.get();
|
|
|
- if (!historicProcessInstance.getState().equals(HistoricProcessInstance.STATE_ACTIVE)) {
|
|
|
- // 获取流程记录中的非正常结束
|
|
|
- LambdaQueryWrapper<WorkflowRecord> workflowRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- workflowRecordLambdaQueryWrapper
|
|
|
- .and(wq -> wq.eq(WorkflowRecord::getWorkflowApproveType, WorkflowApproveType.DISAGREE.getCode())
|
|
|
- .or()
|
|
|
- .eq(WorkflowRecord::getWorkflowApproveType, WorkflowApproveType.WITHDRAW.getCode())
|
|
|
- )
|
|
|
- .eq(WorkflowRecord::getProcessId, processInstanceId)
|
|
|
- ;
|
|
|
- List<WorkflowRecord> workflowRecordList = workflowRecordMapper.selectList(workflowRecordLambdaQueryWrapper);
|
|
|
-
|
|
|
- if (!workflowRecordList.isEmpty()) {
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //查询出数据
|
|
|
- StudentDropOut studentDropOut = studentDropOutMapper.selectById(formId);
|
|
|
- //跟新学籍信息
|
|
|
- BaseStudentSchoolRoll schoolRoll = studentSchoolRollService.getOne(
|
|
|
- new QueryWrapper<BaseStudentSchoolRoll>().lambda()
|
|
|
- .eq(BaseStudentSchoolRoll::getClassId, studentDropOut.getClassId())
|
|
|
- .eq(BaseStudentSchoolRoll::getUserId, studentDropOut.getStudentUserId())
|
|
|
- .eq(BaseStudentSchoolRoll::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
- );
|
|
|
- schoolRoll.setArchivesStatus(ArchivesStatusEnum.FB2904.getCode());
|
|
|
- studentSchoolRollService.updateById(schoolRoll);
|
|
|
-
|
|
|
- //删除海康出入权限
|
|
|
- String hikvisionId = hikvisionDataMapper.getStudentHikvisionId(studentDropOut.getStudentUserId());
|
|
|
- ApiUtil apiUtil = new ApiUtil();
|
|
|
- String apiPath = "/api/pmas/v1/person/batch/delete";
|
|
|
- JsonObject paramJson = new JsonObject();
|
|
|
- JsonArray personIndexCodes = new JsonArray();
|
|
|
- personIndexCodes.add(hikvisionId);
|
|
|
- paramJson.add("personIndexCodes", personIndexCodes);
|
|
|
- String doPost = apiUtil.doPost(apiPath, paramJson.toString(), null);
|
|
|
+ //查询出数据
|
|
|
+ StudentDropOut studentDropOut = studentDropOutMapper.selectById(formId);
|
|
|
+ //跟新学籍信息
|
|
|
+ BaseStudentSchoolRoll schoolRoll = studentSchoolRollService.getOne(
|
|
|
+ new QueryWrapper<BaseStudentSchoolRoll>().lambda()
|
|
|
+ .eq(BaseStudentSchoolRoll::getClassId, studentDropOut.getClassId())
|
|
|
+ .eq(BaseStudentSchoolRoll::getUserId, studentDropOut.getStudentUserId())
|
|
|
+ .eq(BaseStudentSchoolRoll::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ );
|
|
|
|
|
|
- JsonParser parser = new JsonParser();
|
|
|
- JsonObject resultJson = parser.parse(doPost).getAsJsonObject();
|
|
|
- if(resultJson.get("code").getAsInt() == 0){
|
|
|
- JsonArray success = resultJson.get("data").getAsJsonObject().get("success").getAsJsonArray();
|
|
|
+ //记录异动
|
|
|
+ changeRecordService.insertData(
|
|
|
+ ArchivesStatusEnum.fromCode(schoolRoll.getArchivesStatus()),
|
|
|
+ schoolRoll.getArchivesStatus(),
|
|
|
+ ArchivesStatusEnum.FB2904.getValue(),
|
|
|
+ ArchivesStatusEnum.FB2904.getCode(),
|
|
|
+ studentDropOut.getStudentUserId(),
|
|
|
+ studentDropOut.getCreateUserId(),
|
|
|
+ StudentChangeTypeEnum.ArchivesStatus.getCode(),
|
|
|
+ 2
|
|
|
+ );
|
|
|
|
|
|
- Set<String> valuesSet = new HashSet<>();
|
|
|
- String keyToExtract = "indexCode";
|
|
|
- // 遍历 JSON 数组并提取指定键的值
|
|
|
- for (JsonElement jsonElement : success) {
|
|
|
- JsonObject jsonObject = jsonElement.getAsJsonObject();
|
|
|
- if (jsonObject.has(keyToExtract)) {
|
|
|
- String value = jsonObject.get(keyToExtract).getAsString();
|
|
|
- valuesSet.add(value);
|
|
|
- }
|
|
|
- }
|
|
|
- if(valuesSet.contains(hikvisionId)){
|
|
|
- hikvisionDataMapper.delete(
|
|
|
- new QueryWrapper<HikvisionData>().lambda()
|
|
|
- .eq(HikvisionData::getSourceId, studentDropOut.getClassId())
|
|
|
- .eq(HikvisionData::getHikvisionId, hikvisionId)
|
|
|
- );
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- });
|
|
|
+ schoolRoll.setArchivesStatus(ArchivesStatusEnum.FB2904.getCode());
|
|
|
+ studentSchoolRollService.updateById(schoolRoll);
|
|
|
+ studentSchoolRollService.disableStudent(schoolRoll.getUserId());
|
|
|
}
|
|
|
}
|
|
|
}
|