Explorar o código

招生统计,专业报名情况增加缴费人数

dzx hai 1 ano
pai
achega
367bd3f863

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

@@ -1,7 +1,6 @@
 package com.xjrsoft.common.utils;
 
 
-import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import cn.hutool.http.HttpUtil;
@@ -52,6 +51,12 @@ public class WeChatUtil {
     @Value("${xjrsoft.appletWeChat.appSecret}")
     public String appletAppSecret;
 
+    @Value("${xjrsoft.weChatMessageTemplate.commonTemplate}")
+    public String commonTemplate;
+
+    @Value("${xjrsoft.weChatMessageTemplate.assessmentTemplate}")
+    public String assessmentTemplate;
+
     //公众号获取Openid
     public WeChatUserInfo getMpOpenid(String code) {
         HashMap<String, Object> paramMap = new HashMap<>();

+ 3 - 2
src/main/java/com/xjrsoft/module/assessment/service/impl/AssessmentTemplatePlanServiceImpl.java

@@ -12,6 +12,7 @@ import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.common.utils.WeChatUtil;
 import com.xjrsoft.config.CommonPropertiesConfig;
 import com.xjrsoft.module.assessment.dto.AddAssessmentTemplatePlanDto;
 import com.xjrsoft.module.assessment.dto.AssessmentPlanAnswerPageDto;
@@ -92,7 +93,7 @@ class AssessmentTemplatePlanServiceImpl extends MPJBaseServiceImpl<AssessmentTem
     private final IWeChatService weChatService;
     private final CommonPropertiesConfig commonPropertiesConfig;
     private final BaseClassMapper baseClassMapper;
-
+    private final WeChatUtil weChatUtil;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -526,7 +527,7 @@ class AssessmentTemplatePlanServiceImpl extends MPJBaseServiceImpl<AssessmentTem
             WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
             weChatSendMessageDto.setUserId(user.getOpenId());
 
-            weChatSendMessageDto.setTemplateId("ehYfXni7exZUmt6dJX4Ukbm9ETarFfKLfXVYwNnjKMc");
+            weChatSendMessageDto.setTemplateId(weChatUtil.getAssessmentTemplate());
             weChatSendMessageDto.setUrl(StrUtil.format("{}/pages/student/canteen/evaluate?id={}", commonPropertiesConfig.getDomainApp(), dto.getId()));
             weChatSendMessageDto.setMsgId(dto.getId().toString());
 

+ 4 - 1
src/main/java/com/xjrsoft/module/student/mapper/PbVXsxxsfytbMapper.java

@@ -1,13 +1,14 @@
 package com.xjrsoft.module.student.mapper;
 
 import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.student.dto.EnrollmentStatisticsInfoDto;
 import com.xjrsoft.module.student.dto.PbVXsxxsfytbDto;
 import com.xjrsoft.module.student.entity.PbVXsxxsfytb;
 import com.xjrsoft.module.student.vo.BaseClassQfCountVo;
+import com.xjrsoft.module.student.vo.PbVXsxxsfytbSpecnameCountVo;
 import com.xjrsoft.module.student.vo.PbVXsxxsfytbVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Select;
 
 import java.util.List;
 
@@ -22,4 +23,6 @@ public interface PbVXsxxsfytbMapper extends MPJBaseMapper<PbVXsxxsfytb> {
     List<BaseClassQfCountVo> getClassQfCount();
 
     List<PbVXsxxsfytbVo> getList(@Param("dto") PbVXsxxsfytbDto dto);
+
+    List<PbVXsxxsfytbSpecnameCountVo> getSpecnameCount(@Param("dto") EnrollmentStatisticsInfoDto dto);
 }

+ 16 - 2
src/main/java/com/xjrsoft/module/student/service/impl/PbCseFeeobjupdateServiceImpl.java

@@ -7,6 +7,7 @@ import com.xjrsoft.module.student.dto.EnrollmentStatisticsCalendarInfoDto;
 import com.xjrsoft.module.student.dto.EnrollmentStatisticsGraduationInfoDto;
 import com.xjrsoft.module.student.entity.*;
 import com.xjrsoft.module.student.mapper.PbCseFeeobjupdateMapper;
+import com.xjrsoft.module.student.mapper.PbVXsxxsfytbMapper;
 import com.xjrsoft.module.student.service.IPbCseFeeobjupdateService;
 import com.xjrsoft.module.student.service.IPbCseSpecplanService;
 import com.xjrsoft.module.student.vo.*;
@@ -21,6 +22,7 @@ import java.text.DecimalFormat;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -38,6 +40,7 @@ public class PbCseFeeobjupdateServiceImpl extends MPJBaseServiceImpl<PbCseFeeobj
 
     @Autowired
     private final IPbCseSpecplanService pbCseSpecplanService;
+    private final PbVXsxxsfytbMapper pbVXsxxsfytbMapper;
 
     @Override
     public EnrollmentStatisticsInfoVo getEnrollmentStatisticsInfo(EnrollmentStatisticsInfoDto dto) {
@@ -61,13 +64,20 @@ public class PbCseFeeobjupdateServiceImpl extends MPJBaseServiceImpl<PbCseFeeobj
 
         if(pbCseFeeobjupdateList != null && !pbCseFeeobjupdateList.isEmpty()){
             //专业排行
-            Map<String, Long> professionalHeadCount = pbCseFeeobjupdateList.stream().collect(Collectors.groupingBy(PbCseFeeobjupdate::getSpecname, Collectors.counting()));
+            Map<String, Long> professionalHeadCount = pbCseFeeobjupdateList.stream().filter(x -> x.getSpecname() != null).collect(Collectors.groupingBy(PbCseFeeobjupdate::getSpecname, Collectors.counting()));
             if(!professionalHeadCount.isEmpty()){
                 professionalHeadCount = professionalHeadCount.entrySet().stream()
                         .sorted(Map.Entry.<String, Long>comparingByValue().reversed())
                         .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                                 (e1, e2) -> e1, LinkedHashMap::new));
             }
+            //查询每个专业的缴费人数
+            List<PbVXsxxsfytbSpecnameCountVo> specnameCountVos = pbVXsxxsfytbMapper.getSpecnameCount(dto);
+            Map<String, Integer> specnameCountMap = new HashMap<>();
+            for (PbVXsxxsfytbSpecnameCountVo specnameCountVo : specnameCountVos) {
+                specnameCountMap.put(specnameCountVo.getSpecname(), specnameCountVo.getStudentCount());
+            }
+
 
             //专业计划人数,余数
             MPJLambdaWrapper<PbCseSpecplan> pbCseSpecplanMPJLambdaWrapper = new MPJLambdaWrapper<>();
@@ -93,6 +103,10 @@ public class PbCseFeeobjupdateServiceImpl extends MPJBaseServiceImpl<PbCseFeeobj
                     if(pbCseSpecplanSumMap.get(entry.getKey()) != null){
                         setPlannedNumber(pbCseSpecplanSumMap.get(entry.getKey()));
                         setRemainder(pbCseSpecplanSumMap.get(entry.getKey()) - entry.getValue());
+                        setPaymentCount(specnameCountMap.get(entry.getKey()));
+                    }
+                    if(specnameCountMap.get(entry.getKey()) != null){
+                        setPaymentCount(specnameCountMap.get(entry.getKey()));
                     }
                 }});
             }
@@ -105,7 +119,7 @@ public class PbCseFeeobjupdateServiceImpl extends MPJBaseServiceImpl<PbCseFeeobj
             }
 
             //住宿类型
-            Map<String, Long> accommodationType = pbCseFeeobjupdateList.stream().collect(Collectors.groupingBy(PbCseFeeobjupdate::getQuartername, Collectors.counting()));
+            Map<String, Long> accommodationType = pbCseFeeobjupdateList.stream().filter(x -> x.getQuartername() != null).collect(Collectors.groupingBy(PbCseFeeobjupdate::getQuartername, Collectors.counting()));
             List<EnrollmentStatisticsInfoKeyValue> accommodationTypeRes = new ArrayList<>();
             for (Map.Entry<String, Long> entry : accommodationType.entrySet()) {
                 accommodationTypeRes.add(new EnrollmentStatisticsInfoKeyValue(entry.getKey(), entry.getValue()));

+ 28 - 0
src/main/java/com/xjrsoft/module/student/vo/PbVXsxxsfytbSpecnameCountVo.java

@@ -0,0 +1,28 @@
+package com.xjrsoft.module.student.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+* @title: 分页列表出参
+* @Author dzx
+* @Date: 2024-03-13
+* @Version 1.0
+*/
+@Data
+public class PbVXsxxsfytbSpecnameCountVo {
+
+    /**
+    * 专业名称
+    */
+    @ApiModelProperty("专业名称")
+    private String specname;
+    /**
+    * 学号
+    */
+    @ApiModelProperty("学生人数")
+    private Integer studentCount;
+
+}

+ 3 - 0
src/main/java/com/xjrsoft/module/student/vo/ProfessionalHeadCoun.java

@@ -27,4 +27,7 @@ public class ProfessionalHeadCoun {
      */
     @ApiModelProperty("学位余数")
     private Long remainder;
+
+    @ApiModelProperty("缴费人数")
+    private Integer paymentCount;
 }

+ 1 - 0
src/main/java/com/xjrsoft/module/workflow/service/impl/WorkflowExecuteServiceImpl.java

@@ -3955,6 +3955,7 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
         IPage<DraftPageVo> page = workflowDraftService.selectJoinListPage(ConventPage.getPage(dto), DraftPageVo.class,
                 MPJWrappers.<WorkflowDraft>lambdaJoin()
                         .disableSubLogicDel()
+                        .like(StrUtil.isNotBlank(dto.getKeyword()), WorkflowSchema::getName, dto.getKeyword())
                         .eq(StrUtil.isNotBlank(dto.getName()), WorkflowSchema::getName, dto.getName())
                         .in(CollectionUtil.isNotEmpty(ids), WorkflowDraft::getCreateUserId, ids)
                         .between(ObjectUtil.isNotNull(dto.getStartTime()) && ObjectUtil.isNotNull(dto.getEndTime()), WorkflowDraft::getCreateDate, dto.getStartTime(), dto.getEndTime())

+ 3 - 0
src/main/resources/application-dev.yml

@@ -129,6 +129,9 @@ xjrsoft:
   appletWeChat:
     appKey: wx72e974483a9174e4
     appSecret: 3bbe99f6964c9f4fc11a8aa1224ac4b3
+  weChatMessageTemplate:
+    commonTemplate: qmpXORPM1Cocqn503Qa4OkNNQ0uxlj2-ed9m6uWO-v4
+    assessmentTemplate: ehYfXni7exZUmt6dJX4Ukbm9ETarFfKLfXVYwNnjKMc
   dingtalk:
     appKey: dingaex2gok1rllumlqs
     appSecret: Nv2pe-UoR0Z_Iw8d29laZfL3kH6ElmhZpRdPwI7SvmKJmaCI29qCrSlFEiMM88MB

+ 3 - 0
src/main/resources/application-pre.yml

@@ -110,6 +110,9 @@ xjrsoft:
   mpWeChat:
     appKey: wxfeafb4ef984a4282
     appSecret: bad871713dd2d9c0bbf8f813eebcacbc
+  weChatMessageTemplate:
+    commonTemplate: qmpXORPM1Cocqn503Qa4OkNNQ0uxlj2-ed9m6uWO-v4
+    assessmentTemplate: ehYfXni7exZUmt6dJX4Ukbm9ETarFfKLfXVYwNnjKMc
   appletWeChat:
     appKey: wx72e974483a9174e4
     appSecret: 3bbe99f6964c9f4fc11a8aa1224ac4b3

+ 3 - 0
src/main/resources/application-prod.yml

@@ -106,6 +106,9 @@ xjrsoft:
   mpWeChat:
     appKey: wx93175d7fe68cd170
     appSecret: 4bab1c5ccd9d4d1d7854464d7251becf
+  weChatMessageTemplate:
+    commonTemplate: qmpXORPM1Cocqn503Qa4OkNNQ0uxlj2-ed9m6uWO-v4
+    assessmentTemplate: ehYfXni7exZUmt6dJX4Ukbm9ETarFfKLfXVYwNnjKMc
   appletWeChat:
     appKey: wx72e974483a9174e4
     appSecret: 3bbe99f6964c9f4fc11a8aa1224ac4b3

+ 3 - 0
src/main/resources/mapper/student/PbVXsxxsfytbMapper.xml

@@ -23,4 +23,7 @@
         </if>
         AND beltcode = #{dto.beltcode} and feeitemcode in (103042766003001, 999010604, 999010603)
     </select>
+    <select id="getSpecnameCount" parameterType="com.xjrsoft.module.student.dto.EnrollmentStatisticsInfoDto" resultType="com.xjrsoft.module.student.vo.PbVXsxxsfytbSpecnameCountVo">
+        SELECT specname,COUNT(DISTINCT(Studentcode)) as student_count FROM pb_v_xsxxsfytb WHERE jfzt = '已缴费' AND enteryear = #{dto.year} GROUP BY specname
+    </select>
 </mapper>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 149 - 0
src/main/resources/sqlScript/20240407_sql.sql


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio