Sfoglia il codice sorgente

Merge branch 'pre'

dzx 6 mesi fa
parent
commit
51e1a2ea55

+ 4 - 4
src/main/java/com/xjrsoft/common/utils/WeChatUtil.java

@@ -201,19 +201,19 @@ public class WeChatUtil {
     //                   }
     //           }
     //       }
-    public Boolean sendTemplateMessage(JSONObject object){
+    public String sendTemplateMessage(JSONObject object){
         String active = SpringUtil.getActiveProfile();
         if("dev".equals(active)){
             log.info("测试环境,无法执行数据推送");
-            return false;
+            return null;
         }
         String token = this.getToken(WeChatType.WEWEB);
         String result = HttpUtil.post("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+token, JSONObject.toJSONString(object));
         if(!result.contains("ok")){
             log.error(JSONObject.toJSONString(object), result);
         }
-        System.err.printf(result);
-        return true;
+//        System.err.printf(result);
+        return result;
     }
 
     public String getTicket(String type) {

+ 200 - 213
src/main/java/com/xjrsoft/module/job/JianyuekbScheduleTask.java

@@ -19,26 +19,17 @@ import com.xjrsoft.common.utils.RedisUtil;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.config.CommonPropertiesConfig;
 import com.xjrsoft.module.base.entity.BaseClass;
-import com.xjrsoft.module.base.entity.BaseGrade;
 import com.xjrsoft.module.base.service.IBaseClassService;
-import com.xjrsoft.module.base.service.IBaseGradeService;
 import com.xjrsoft.module.courseTable.dto.ClassTeacherDto;
 import com.xjrsoft.module.courseTable.entity.CourseTable;
 import com.xjrsoft.module.courseTable.service.ICourseTableService;
 import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
-import com.xjrsoft.module.organization.entity.Department;
-import com.xjrsoft.module.organization.entity.Role;
 import com.xjrsoft.module.organization.entity.User;
-import com.xjrsoft.module.organization.entity.UserRoleRelation;
-import com.xjrsoft.module.organization.service.IDepartmentService;
 import com.xjrsoft.module.organization.service.IUserService;
 import com.xjrsoft.module.organization.service.IWeChatService;
 import com.xjrsoft.module.schedule.entity.CourseTableBak;
-import com.xjrsoft.module.schedule.entity.JianyueData;
 import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
-import com.xjrsoft.module.schedule.service.ICourseReceiveMsgService;
 import com.xjrsoft.module.schedule.service.ICourseTableBakService;
-import com.xjrsoft.module.schedule.service.IJianyueDataService;
 import com.xjrsoft.module.schedule.service.IWfCourseAdjustService;
 import com.xjrsoft.module.schedule.util.DataUtil;
 import com.xjrsoft.module.teacher.entity.BaseTeacher;
@@ -126,18 +117,6 @@ public class JianyuekbScheduleTask {
     @Autowired
     private IWorkflowExtraService workflowExtraService;
 
-    @Autowired
-    private IJianyueDataService jianyueDataService;
-
-    @Autowired
-    private IDepartmentService departmentService;
-
-    @Autowired
-    private ICourseReceiveMsgService receiveMsgService;
-
-    @Autowired
-    private IBaseGradeService gradeService;
-
     @Async
     @Scheduled(cron = "0 */10 * * * ?")
     public void execute() {
@@ -413,35 +392,126 @@ public class JianyuekbScheduleTask {
         }
 
         for (WfCourseAdjust courseAdjust : list) {
-            List<CourseTable> courseList = courseTableService.list(
-                    new MPJLambdaWrapper<CourseTable>()
-                            .select(CourseTable::getId)
-                            .select(CourseTable.class, x -> VoToColumnUtil.fieldsToColumns(CourseTable.class).contains(x.getProperty()))
-                            .innerJoin(CourseTableBak.class, CourseTableBak::getKeyInfo, CourseTable::getKeyInfo)
-                            .eq(CourseTableBak::getWfCourseAdjustId, courseAdjust.getId())
-            );
-
-            String[] courseIds = courseAdjust.getCourseId().split(",");
-            String[] exchangeCourseIds = null;
-            int courseCount = courseIds.length;
-            if (CourseAdjustTypeEnum.courseExchange.getCode().equals(courseAdjust.getAdjustType())) {
-                exchangeCourseIds = courseAdjust.getExchangeCourseId().split(",");
-                courseCount += exchangeCourseIds.length;
-            }
-            //查询顶课老师在本条申请的课程中的节次是否包含课
-            Integer substituteTeacherCourseCount = 0;
-            if(CourseAdjustTypeEnum.courseSubstitute.getCode().equals(courseAdjust.getAdjustType())){
-                substituteTeacherCourseCount = courseTableService.getSubstituteTeacherCourseCountByParams(new ClassTeacherDto() {{
-                    setWfCourseAdjustId(courseAdjust.getId());
-                    setTeacherId(Long.parseLong(courseAdjust.getExchangeTeacherId()));
-                }});
+            try {
+                List<CourseTable> courseList = courseTableService.list(
+                        new MPJLambdaWrapper<CourseTable>()
+                                .select(CourseTable::getId)
+                                .select(CourseTable.class, x -> VoToColumnUtil.fieldsToColumns(CourseTable.class).contains(x.getProperty()))
+                                .innerJoin(CourseTableBak.class, CourseTableBak::getKeyInfo, CourseTable::getKeyInfo)
+                                .eq(CourseTableBak::getWfCourseAdjustId, courseAdjust.getId())
+                );
+
+                String[] courseIds = courseAdjust.getCourseId().split(",");
+                String[] exchangeCourseIds = null;
+                int courseCount = courseIds.length;
+                if (CourseAdjustTypeEnum.courseExchange.getCode().equals(courseAdjust.getAdjustType())) {
+                    exchangeCourseIds = courseAdjust.getExchangeCourseId().split(",");
+                    courseCount += exchangeCourseIds.length;
+                }
+                //查询顶课老师在本条申请的课程中的节次是否包含课
+                Integer substituteTeacherCourseCount = 0;
+                if(CourseAdjustTypeEnum.courseSubstitute.getCode().equals(courseAdjust.getAdjustType())){
+                    substituteTeacherCourseCount = courseTableService.getSubstituteTeacherCourseCountByParams(new ClassTeacherDto() {{
+                        setWfCourseAdjustId(courseAdjust.getId());
+                        setTeacherId(Long.parseLong(courseAdjust.getExchangeTeacherId()));
+                    }});
+                }
+                if (courseList.size() != courseCount || substituteTeacherCourseCount > 0) {
+                    //表明课程变化了,需要重新申请,需要将原来的申请作废并进行微信消息通知
+                    courseAdjust.setEnabledMark(EnabledMark.DISABLED.getCode());
+                    courseAdjust.setModifyDate(new Date());
+                    courseAdjust.setCancelReason("由于课表更新,当前调/顶课课程发生变化,该调顶课已失效,请重新发起调顶课");
+                    cancelList.add(courseAdjust);
+                    List<String> thing16Str = new ArrayList<>();
+                    List<String> thing2Str = new ArrayList<>();
+                    for (CourseTableBak tableBak : bakList) {
+                        if (!tableBak.getWfCourseAdjustId().equals(courseAdjust.getId())) {
+                            continue;
+                        }
+
+                        thing16Str.add(classMap.get(tableBak.getId()));
+                        thing2Str.add(tableBak.getClassName());
+                    }
+
+                    WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
+                    weChatSendMessageDto.setTemplateId(wechatTemplate);
+                    JSONObject paramJson = new JSONObject();
+
+                    JSONObject thing16 = new JSONObject();
+                    thing16.put("value", thing16Str.toString().replace(" ", "").replace("[", "").replace("]", ""));
+                    paramJson.put("thing16", thing16);
+
+                    JSONObject thing2 = new JSONObject();
+                    thing2.put("value", thing2Str.toString().replace(" ", "").replace("[", "").replace("]", ""));
+                    paramJson.put("thing2", thing2);
+
+                    String const12Str = "";
+                    if (CourseAdjustTypeEnum.courseExchange.getCode().equals(courseAdjust.getAdjustType())) {
+                        const12Str = "调课失败";
+                    } else if (CourseAdjustTypeEnum.courseSubstitute.getCode().equals(courseAdjust.getAdjustType())) {
+                        const12Str = "顶课失败";
+                    }
+
+                    JSONObject const12 = new JSONObject();
+                    const12.put("value", const12Str);
+                    paramJson.put("const23", const12);
+
+                    //迟到人数或者缺勤人数
+                    JSONObject thing5 = new JSONObject();
+                    thing5.put("value", "由于课表更新,该调顶课已失效");
+                    paramJson.put("thing5", thing5);
+
+                    String url = StrUtil.format(
+                            "{}/xjrsoft/pages/workflow/look?processId={}&type=my",
+                            commonPropertiesConfig.getDomainApp(),
+                            "relation.getProcessId()"
+                    );
+                    weChatSendMessageDto.setContent(paramJson);
+                    weChatSendMessageDto.setUrl(url);
+                    weChatSendMessageDto.setMsgId(IdUtil.getSnowflakeNextId() + "");
+                    String openId = userOpenIdMap.get(courseAdjust.getUserId());
+                    if (openId != null && !"".equals(openId)) {
+                        weChatSendMessageDto.setUserId(openId);
+                        weChatService.sendTemplateMessage(weChatSendMessageDto);
+                    }
+                    continue;
+                }
+                courseTableService.adjustCourse(courseAdjust);
+            }catch (Exception e){
+                log.error(e.getMessage());
             }
-            if (courseList.size() != courseCount || substituteTeacherCourseCount > 0) {
-                //表明课程变化了,需要重新申请,需要将原来的申请作废并进行微信消息通知
-                courseAdjust.setEnabledMark(EnabledMark.DISABLED.getCode());
-                courseAdjust.setModifyDate(new Date());
-                courseAdjust.setCancelReason("由于课表更新,当前调/顶课课程发生变化,该调顶课已失效,请重新发起调顶课");
-                cancelList.add(courseAdjust);
+        }
+        if (!cancelList.isEmpty()) {
+            adjustService.updateBatchById(cancelList);
+        }
+
+        List<WorkflowFormRelation> activeList = formRelationService.list(
+                new MPJLambdaWrapper<WorkflowFormRelation>()
+                        .select(WorkflowFormRelation::getId)
+                        .select(WorkflowFormRelation.class, x -> VoToColumnUtil.fieldsToColumns(WorkflowFormRelation.class).contains(x.getProperty()))
+                        .innerJoin(WfCourseAdjust.class, WfCourseAdjust::getId, WorkflowFormRelation::getFormKeyValue)
+                        .in(!courseAdjustIds.isEmpty(), WfCourseAdjust::getId, courseAdjustIds)
+                        .and(wq -> wq.between(WfCourseAdjust::getAdjustDate, startDate, endDate).or().between(WfCourseAdjust::getExchangeDate, startDate, endDate))
+                        .eq(WorkflowFormRelation::getCurrentState, HistoricProcessInstance.STATE_ACTIVE)
+        );
+        for (WorkflowFormRelation relation : activeList) {
+            try {
+                List<CourseTable> courseList = courseTableService.list(
+                        new MPJLambdaWrapper<CourseTable>()
+                                .select(CourseTable::getId)
+                                .select(CourseTable.class, x -> VoToColumnUtil.fieldsToColumns(CourseTable.class).contains(x.getProperty()))
+                                .innerJoin(CourseTableBak.class, CourseTableBak::getKeyInfo, CourseTable::getKeyInfo)
+                                .eq(CourseTableBak::getWfCourseAdjustId, relation.getFormKeyValue())
+                );
+                List<CourseTableBak> thisbakList = courseTableBakService.list(
+                        new QueryWrapper<CourseTableBak>().lambda()
+                                .eq(CourseTableBak::getWfCourseAdjustId, relation.getFormKeyValue())
+                );
+                if (courseList.size() == thisbakList.size()) {
+                    continue;
+                }
+                WfCourseAdjust courseAdjust = adjustService.getById(relation.getFormKeyValue());
+                //表明课程变化了,进行内部终止
                 List<String> thing16Str = new ArrayList<>();
                 List<String> thing2Str = new ArrayList<>();
                 for (CourseTableBak tableBak : bakList) {
@@ -459,7 +529,7 @@ public class JianyuekbScheduleTask {
 
                 JSONObject thing16 = new JSONObject();
                 thing16.put("value", thing16Str.toString().replace(" ", "").replace("[", "").replace("]", ""));
-                paramJson.put("thing16", thing16);
+                paramJson.put("thing16", classMap);
 
                 JSONObject thing2 = new JSONObject();
                 thing2.put("value", thing2Str.toString().replace(" ", "").replace("[", "").replace("]", ""));
@@ -481,183 +551,100 @@ public class JianyuekbScheduleTask {
                 thing5.put("value", "由于课表更新,该调顶课已失效");
                 paramJson.put("thing5", thing5);
 
-                String url = StrUtil.format(
-                        "{}/xjrsoft/pages/workflow/look?processId={}&type=my",
-                        commonPropertiesConfig.getDomainApp(),
-                        "relation.getProcessId()"
-                );
                 weChatSendMessageDto.setContent(paramJson);
-                weChatSendMessageDto.setUrl(url);
-                weChatSendMessageDto.setMsgId(IdUtil.getSnowflakeNextId() + "");
-                String openId = userOpenIdMap.get(courseAdjust.getUserId());
-                if (openId != null && !"".equals(openId)) {
-                    weChatSendMessageDto.setUserId(openId);
-                    weChatService.sendTemplateMessage(weChatSendMessageDto);
-                }
-                continue;
-            }
-            courseTableService.adjustCourse(courseAdjust);
-        }
-        if (!cancelList.isEmpty()) {
-            adjustService.updateBatchById(cancelList);
-        }
+                List<WorkflowExtra> extraList = workflowExtraService.list(
+                        new QueryWrapper<WorkflowExtra>().lambda()
+                                .eq(WorkflowExtra::getProcessId, relation.getProcessId())
+                                .orderByDesc(WorkflowExtra::getStartTime)
+                );
 
-        List<WorkflowFormRelation> activeList = formRelationService.list(
-                new MPJLambdaWrapper<WorkflowFormRelation>()
-                        .select(WorkflowFormRelation::getId)
-                        .select(WorkflowFormRelation.class, x -> VoToColumnUtil.fieldsToColumns(WorkflowFormRelation.class).contains(x.getProperty()))
-                        .innerJoin(WfCourseAdjust.class, WfCourseAdjust::getId, WorkflowFormRelation::getFormKeyValue)
-                        .in(!courseAdjustIds.isEmpty(), WfCourseAdjust::getId, courseAdjustIds)
-                        .and(wq -> wq.between(WfCourseAdjust::getAdjustDate, startDate, endDate).or().between(WfCourseAdjust::getExchangeDate, startDate, endDate))
-                        .eq(WorkflowFormRelation::getCurrentState, HistoricProcessInstance.STATE_ACTIVE)
-        );
-        for (WorkflowFormRelation relation : activeList) {
-            List<CourseTable> courseList = courseTableService.list(
-                    new MPJLambdaWrapper<CourseTable>()
-                            .select(CourseTable::getId)
-                            .select(CourseTable.class, x -> VoToColumnUtil.fieldsToColumns(CourseTable.class).contains(x.getProperty()))
-                            .innerJoin(CourseTableBak.class, CourseTableBak::getKeyInfo, CourseTable::getKeyInfo)
-                            .eq(CourseTableBak::getWfCourseAdjustId, relation.getFormKeyValue())
-            );
-            List<CourseTableBak> thisbakList = courseTableBakService.list(
-                    new QueryWrapper<CourseTableBak>().lambda()
-                            .eq(CourseTableBak::getWfCourseAdjustId, relation.getFormKeyValue())
-            );
-            if (courseList.size() == thisbakList.size()) {
-                continue;
-            }
-            WfCourseAdjust courseAdjust = adjustService.getById(relation.getFormKeyValue());
-            //表明课程变化了,进行内部终止
-            List<String> thing16Str = new ArrayList<>();
-            List<String> thing2Str = new ArrayList<>();
-            for (CourseTableBak tableBak : bakList) {
-                if (!tableBak.getWfCourseAdjustId().equals(courseAdjust.getId())) {
-                    continue;
+                if (!extraList.isEmpty()) {
+                    String url = StrUtil.format(
+                            "{}/xjrsoft/pages/workflow/approval?taskId={}&processId={}&type=todo",
+                            commonPropertiesConfig.getDomainApp(),
+                            extraList.get(0).getTaskId(),
+                            relation.getProcessId()
+                    );
+                    weChatSendMessageDto.setUrl(url);
+
+                    weChatSendMessageDto.setMsgId(IdUtil.getSnowflakeNextId() + "");
+                    String openId = userOpenIdMap.get(courseAdjust.getExchangeTeacherId());
+                    if (openId != null && !"".equals(openId)) {
+                        weChatSendMessageDto.setUserId(openId);
+                        weChatService.sendTemplateMessage(weChatSendMessageDto);
+                    }
                 }
-
-                thing16Str.add(classMap.get(tableBak.getId()));
-                thing2Str.add(tableBak.getClassName());
-            }
-
-            WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
-            weChatSendMessageDto.setTemplateId(wechatTemplate);
-            JSONObject paramJson = new JSONObject();
-
-            JSONObject thing16 = new JSONObject();
-            thing16.put("value", thing16Str.toString().replace(" ", "").replace("[", "").replace("]", ""));
-            paramJson.put("thing16", classMap);
-
-            JSONObject thing2 = new JSONObject();
-            thing2.put("value", thing2Str.toString().replace(" ", "").replace("[", "").replace("]", ""));
-            paramJson.put("thing2", thing2);
-
-            String const12Str = "";
-            if (CourseAdjustTypeEnum.courseExchange.getCode().equals(courseAdjust.getAdjustType())) {
-                const12Str = "调课失败";
-            } else if (CourseAdjustTypeEnum.courseSubstitute.getCode().equals(courseAdjust.getAdjustType())) {
-                const12Str = "顶课失败";
-            }
-
-            JSONObject const12 = new JSONObject();
-            const12.put("value", const12Str);
-            paramJson.put("const23", const12);
-
-            //迟到人数或者缺勤人数
-            JSONObject thing5 = new JSONObject();
-            thing5.put("value", "由于课表更新,该调顶课已失效");
-            paramJson.put("thing5", thing5);
-
-            weChatSendMessageDto.setContent(paramJson);
-            List<WorkflowExtra> extraList = workflowExtraService.list(
-                    new QueryWrapper<WorkflowExtra>().lambda()
-                            .eq(WorkflowExtra::getProcessId, relation.getProcessId())
-                            .orderByDesc(WorkflowExtra::getStartTime)
-            );
-
-            if (!extraList.isEmpty()) {
                 String url = StrUtil.format(
-                        "{}/xjrsoft/pages/workflow/approval?taskId={}&processId={}&type=todo",
+                        "{}/xjrsoft/pages/workflow/look?processId={}&type=my",
                         commonPropertiesConfig.getDomainApp(),
-                        extraList.get(0).getTaskId(),
                         relation.getProcessId()
                 );
                 weChatSendMessageDto.setUrl(url);
-
                 weChatSendMessageDto.setMsgId(IdUtil.getSnowflakeNextId() + "");
-                String openId = userOpenIdMap.get(courseAdjust.getExchangeTeacherId());
+                String openId = userOpenIdMap.get(courseAdjust.getUserId());
                 if (openId != null && !"".equals(openId)) {
                     weChatSendMessageDto.setUserId(openId);
                     weChatService.sendTemplateMessage(weChatSendMessageDto);
                 }
+                String processId = relation.getProcessId();
+
+                List<Task> taskList = taskService.createTaskQuery().processInstanceId(processId).list();
+                Task task = taskList.stream().filter(x -> x.getProcessInstanceId().equals(processId)).findFirst().orElse(new TaskEntity());
+                Long schemaId = Convert.toLong(taskService.getVariable(task.getId(), WorkflowConstant.PROCESS_SCHEMA_ID_KEY));
+                //获取到当前活动的实例
+                ActivityInstance activityInstance = runtimeService.getActivityInstance(task.getProcessInstanceId());
+
+                String message = "    因课表更新之后当前课程已发生变更,该流程已内部终止,如还需调/顶课,请重新发起调/顶课流程";
+                //先停止当前活动示例  然后  关闭流程
+                runtimeService.createProcessInstanceModification(task.getProcessInstanceId())
+                        .cancelActivityInstance(activityInstance.getId())
+                        .cancelAllForActivity(activityInstance.getId())
+                        .setAnnotation("因课表更新之后当前课程已发生变更,该流程已内部终止")
+                        .execute();
+
+                //新增流程发起流程记录
+                WorkflowRecord record = new WorkflowRecord();
+                record.setNodeId(task.getId());
+                record.setNodeName(task.getName());
+                record.setNodeType(WorkflowConstant.USER_TASK_TYPE_NAME);
+                record.setProcessId(task.getProcessInstanceId());
+                record.setSchemaId(schemaId);
+                record.setNodeMultiType(WorkflowMultiInstanceType.NONE.getCode());
+                record.setRecordTime(LocalDateTime.now());
+                record.setWorkflowApproveType(WorkflowApproveType.FINISH.getCode());
+
+                record.setMessage(message);
+
+                workflowRecordService.save(record);
+
+                //新增流程发起流程记录
+                XjrWorkflowOperateRecord xjrWorkflowOperateRecord = new XjrWorkflowOperateRecord();
+                xjrWorkflowOperateRecord.setNodeId(task.getId());
+                xjrWorkflowOperateRecord.setNodeName(task.getName());
+                xjrWorkflowOperateRecord.setNodeType(WorkflowConstant.USER_TASK_TYPE_NAME);
+                xjrWorkflowOperateRecord.setProcessId(task.getProcessInstanceId());
+                xjrWorkflowOperateRecord.setSchemaId(schemaId);
+                xjrWorkflowOperateRecord.setNodeMultiType(WorkflowMultiInstanceType.NONE.getCode());
+                xjrWorkflowOperateRecord.setRecordTime(LocalDateTime.now());
+                xjrWorkflowOperateRecord.setUsageScenario(1);
+
+
+                xjrWorkflowOperateRecord.setOperateInfo(message);
+                xjrWorkflowOperateRecordMapper.insert(xjrWorkflowOperateRecord);
+
+
+                Optional<HistoricProcessInstance> historicProcessInstance = workflowExecuteService.getHistoricProcessInstance(processId);
+                historicProcessInstance.ifPresent(item -> {
+                    formRelationService.updateCurrentState(new WorkflowFormRelation() {{
+                        setProcessId(processId);
+                        setCurrentState(item.getState());
+                        setStartTime(item.getStartTime());
+                        setEndTime(item.getEndTime());
+                    }});
+                });
+            }catch (Exception e){
+                log.error(e.getMessage());
             }
-            String url = StrUtil.format(
-                    "{}/xjrsoft/pages/workflow/look?processId={}&type=my",
-                    commonPropertiesConfig.getDomainApp(),
-                    relation.getProcessId()
-            );
-            weChatSendMessageDto.setUrl(url);
-            weChatSendMessageDto.setMsgId(IdUtil.getSnowflakeNextId() + "");
-            String openId = userOpenIdMap.get(courseAdjust.getUserId());
-            if (openId != null && !"".equals(openId)) {
-                weChatSendMessageDto.setUserId(openId);
-                weChatService.sendTemplateMessage(weChatSendMessageDto);
-            }
-            String processId = relation.getProcessId();
-
-            List<Task> taskList = taskService.createTaskQuery().processInstanceId(processId).list();
-            Task task = taskList.stream().filter(x -> x.getProcessInstanceId().equals(processId)).findFirst().orElse(new TaskEntity());
-            Long schemaId = Convert.toLong(taskService.getVariable(task.getId(), WorkflowConstant.PROCESS_SCHEMA_ID_KEY));
-            //获取到当前活动的实例
-            ActivityInstance activityInstance = runtimeService.getActivityInstance(task.getProcessInstanceId());
-
-            String message = "    因课表更新之后当前课程已发生变更,该流程已内部终止,如还需调/顶课,请重新发起调/顶课流程";
-            //先停止当前活动示例  然后  关闭流程
-            runtimeService.createProcessInstanceModification(task.getProcessInstanceId())
-                    .cancelActivityInstance(activityInstance.getId())
-                    .cancelAllForActivity(activityInstance.getId())
-                    .setAnnotation("因课表更新之后当前课程已发生变更,该流程已内部终止")
-                    .execute();
-
-            //新增流程发起流程记录
-            WorkflowRecord record = new WorkflowRecord();
-            record.setNodeId(task.getId());
-            record.setNodeName(task.getName());
-            record.setNodeType(WorkflowConstant.USER_TASK_TYPE_NAME);
-            record.setProcessId(task.getProcessInstanceId());
-            record.setSchemaId(schemaId);
-            record.setNodeMultiType(WorkflowMultiInstanceType.NONE.getCode());
-            record.setRecordTime(LocalDateTime.now());
-            record.setWorkflowApproveType(WorkflowApproveType.FINISH.getCode());
-
-            record.setMessage(message);
-
-            workflowRecordService.save(record);
-
-            //新增流程发起流程记录
-            XjrWorkflowOperateRecord xjrWorkflowOperateRecord = new XjrWorkflowOperateRecord();
-            xjrWorkflowOperateRecord.setNodeId(task.getId());
-            xjrWorkflowOperateRecord.setNodeName(task.getName());
-            xjrWorkflowOperateRecord.setNodeType(WorkflowConstant.USER_TASK_TYPE_NAME);
-            xjrWorkflowOperateRecord.setProcessId(task.getProcessInstanceId());
-            xjrWorkflowOperateRecord.setSchemaId(schemaId);
-            xjrWorkflowOperateRecord.setNodeMultiType(WorkflowMultiInstanceType.NONE.getCode());
-            xjrWorkflowOperateRecord.setRecordTime(LocalDateTime.now());
-            xjrWorkflowOperateRecord.setUsageScenario(1);
-
-
-            xjrWorkflowOperateRecord.setOperateInfo(message);
-            xjrWorkflowOperateRecordMapper.insert(xjrWorkflowOperateRecord);
-
-
-            Optional<HistoricProcessInstance> historicProcessInstance = workflowExecuteService.getHistoricProcessInstance(processId);
-            historicProcessInstance.ifPresent(item -> {
-                formRelationService.updateCurrentState(new WorkflowFormRelation() {{
-                    setProcessId(processId);
-                    setCurrentState(item.getState());
-                    setStartTime(item.getStartTime());
-                    setEndTime(item.getEndTime());
-                }});
-            });
         }
     }
 

+ 1 - 1
src/main/java/com/xjrsoft/module/oa/utils/SendMessageUtil.java

@@ -186,7 +186,7 @@ public class SendMessageUtil {
             object.put("url", StrUtil.format("{}/xjrsoft/pages/home/home", cpConfig.getDomainApp()));
 //            object.put("client_msg_id", param.getTaskId());
             object.put("data", data);
-            Boolean isSuccess = weChatUtil.sendTemplateMessage(object);
+            weChatUtil.sendTemplateMessage(object);
             //System.err.println(isSuccess);
         }
     }

+ 12 - 1
src/main/java/com/xjrsoft/module/organization/service/impl/WeChatServiceImgl.java

@@ -16,6 +16,8 @@ import com.xjrsoft.module.organization.entity.User;
 import com.xjrsoft.module.organization.service.IDepartmentService;
 import com.xjrsoft.module.organization.service.IUserService;
 import com.xjrsoft.module.organization.service.IWeChatService;
+import com.xjrsoft.module.system.entity.WechatMessageSendLog;
+import com.xjrsoft.module.system.mapper.WechatMessageSendLogMapper;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
@@ -30,6 +32,7 @@ public class WeChatServiceImgl implements IWeChatService {
     private final IDepartmentService departmentService;
     private final IUserService userService;
     private List<WeChatDepartDto> deptDepartlist = new ArrayList<>();
+    private final WechatMessageSendLogMapper wechatMessageSendLogMapper;
 
     @Override
     public boolean updateInfo() {
@@ -50,7 +53,15 @@ public class WeChatServiceImgl implements IWeChatService {
         object.put("url", dto.getUrl());
         object.put("client_msg_id", dto.getMsgId());
         object.put("data", dto.getContent());
-        weChatUtil.sendTemplateMessage(object);
+        String result = weChatUtil.sendTemplateMessage(object);
+
+        //新增微信模板消息发送记录
+        wechatMessageSendLogMapper.insert(new WechatMessageSendLog(){{
+            setOpenId(dto.getUserId());
+            setTemplateId(dto.getTemplateId());
+            setResult(result);
+            setParams(dto.getContent().toString());
+        }});
     }
 
     private boolean updatedepart() {

+ 65 - 0
src/main/java/com/xjrsoft/module/system/entity/WechatMessageSendLog.java

@@ -0,0 +1,65 @@
+package com.xjrsoft.module.system.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+
+/**
+ * @title: 微信消息发送记录
+ * @Author dzx
+ * @Date: 2025年5月26日
+ * @Version 1.0
+ */
+@Data
+@TableName("wechat_message_log")
+@ApiModel(value = "微信消息发送记录", description = "微信消息发送记录")
+public class WechatMessageSendLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty("主键编号")
+    @TableId
+    private Long id;
+
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+
+    @ApiModelProperty("有效标志")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+
+    @ApiModelProperty("微信消息模板id")
+    private String templateId;
+
+    @ApiModelProperty("发送参数")
+    private String params;
+
+    @ApiModelProperty("接口调用返回参数")
+    private String result;
+
+    @ApiModelProperty("用户的open_id")
+    private String openId;
+
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/system/mapper/WechatMessageSendLogMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.system.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.system.entity.WechatMessageLog;
+import com.xjrsoft.module.system.entity.WechatMessageSendLog;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @title: 微信消息发送记录
+ * @Author dzx
+ * @Date: 2024年6月11日
+ * @Version 1.0
+ */
+@Mapper
+public interface WechatMessageSendLogMapper extends MPJBaseMapper<WechatMessageSendLog> {
+
+}

+ 18 - 0
src/test/java/com/xjrsoft/xjrsoftboot/WechatMessageTest.java

@@ -0,0 +1,18 @@
+package com.xjrsoft.xjrsoftboot;
+
+import com.xjrsoft.common.utils.WeChatUtil;
+import org.junit.jupiter.api.Test;
+
+/**
+ * @author dzx
+ * @date 2025/5/26
+ */
+public class WechatMessageTest {
+
+    private final
+
+    @Test
+    void test(){
+        WeChatUtil weChatUtil = new WeChatUtil();
+    }
+}