dengjia 2 mesi fa
parent
commit
bbb47e9018

BIN
data/download/134fe9e0-5cf9-4267-83f5-8cdd9b8af5d6_积分包数据.xlsx


BIN
data/download/1a8453e5-9e5a-4d63-a3d4-a0aeb65f775c_积分包数据.xlsx


BIN
data/download/4de7e7cc-455d-4053-af5f-75c0af467d88_积分包数据.xlsx


BIN
data/download/56c14cec-a222-48c2-891e-87a32bbaef45_积分包数据.xlsx


BIN
data/download/5896c3dc-2e83-4c81-bbf5-148cb482e1ad_积分包数据.xlsx


BIN
data/download/718490ce-4c0a-4711-847d-8888ab4e1564_积分包数据.xlsx


BIN
data/download/91f47ee4-7add-4afa-a119-6e7221a9f607_积分包数据.xlsx


BIN
data/download/96c58b07-ffb6-4c62-8f5d-c06fe03af334_积分包数据.xlsx


BIN
data/download/a209d622-bba1-4fc2-b07b-6aa3d52ab0e2_积分包数据.xlsx


BIN
data/download/bc803193-4e18-4132-b1d4-669eca1c4038_积分包数据.xlsx


BIN
data/download/c004bad9-3d61-4099-8cf4-f0122445eaa7_积分包数据.xlsx


BIN
data/download/d2e04184-7c4c-48d1-86ae-2092a12f315c_企业数据.xlsx


+ 3 - 2
ruoyi-ui/src/views/login.vue

@@ -69,12 +69,13 @@ import { encrypt, decrypt } from '@/utils/jsencrypt'
 export default {
   name: "Login",
   data() {
+    const isDev = process.env.NODE_ENV === 'development'
     return {
       codeUrl: "",
       sitename: process.env.VUE_APP_TITLE,
       loginForm: {
-        username: "admin",
-        password: "admin123",
+        username: isDev ? 'admin' :'',
+        password: isDev ? 'admin123' :'',
         rememberMe: false,
         code: "",
         uuid: ""

+ 10 - 0
ruoyi.iml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module version="4">
+  <component name="AdditionalModuleElements">
+    <content url="file://$MODULE_DIR$" dumb="true">
+      <excludeFolder url="file://$MODULE_DIR$/ruoyi-ui/dist" />
+      <excludeFolder url="file://$MODULE_DIR$/uploadPath" />
+      <excludeFolder url="file://$MODULE_DIR$/data" />
+    </content>
+  </component>
+</module>

+ 3 - 0
yaoyi-bi/src/main/java/com/retdata/yaoyibi/mapper/WmScorePackageMapper.java

@@ -7,12 +7,15 @@ import org.apache.ibatis.annotations.Param;
 
 import java.util.Collection;
 import java.util.List;
+import java.util.Set;
 
 public interface WmScorePackageMapper extends BaseMapper<WmScorePackage> {
 
     Page<WmScorePackageSearchDto> selectByParams(Page<WmScorePackageSearchDto> page,
                                                  @Param("searchParams") WmScorePackageSearchParams searchParams);
 
+    Set<Integer> selectAllMatchedPackageIds(@Param("searchParams") WmScorePackageSearchParams searchParams);
+
     List<WmScorePackageStatusSummary> selectWmScorePackageStatusByPackageIds(@Param("packageIds") Collection<Integer> packageIds);
 
     List<WmScorePackageSearchDto> selectSubPackagesByPackageIds(@Param("packageIds") Collection<Integer> packageIds);

+ 54 - 35
yaoyi-bi/src/main/java/com/retdata/yaoyibi/service/impl/WmScorePackageServiceImpl.java

@@ -126,6 +126,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         if (page.getRecords().isEmpty()) {
             return new PageImpl<>(page.getRecords(), pageable, page.getTotal());
         }
+        Set<Integer> matchedPackageIds = getBaseMapper().selectAllMatchedPackageIds(searchParams);
         // 补充接包对象
         MultiValueMap<Integer, WmScorePackageSearchDto> deptIds = new LinkedMultiValueMap<>();
         Map<Integer, WmScorePackageSearchDto> userPackageIds = new HashMap<>();
@@ -206,7 +207,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                 }
             }
             for (WmScorePackageSettleTreeNode rootNode : rootNodes) {
-                calculateSettleTreeNodeTotalAmount(rootNode);
+                calculateSettleTreeNodeTotalAmount(rootNode, matchedPackageIds);
             }
             for (WmScorePackageSearchDto dto : entPackageIds.values()) {
                 WmScorePackageSettleTreeNode node = settleTreeNodeMap.get(dto.getId());
@@ -274,6 +275,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         Map<Integer, WmScorePackageExportDto> exportDtoCache = new HashMap<>();
         List<WmScorePackageExportDto> exportDtoList = getBaseMapper().selectExportDto(searchParams);
         MultiValueMap<Integer, WmScorePackageExportDto> parentToChildren = new LinkedMultiValueMap<>();
+        Set<Integer> matchedPackageIds = getBaseMapper().selectAllMatchedPackageIds(searchParams);
         for (WmScorePackageExportDto dto : exportDtoList) {
             exportDtoCache.put(dto.getId(), dto);
             if (StringUtils.hasText(dto.getRelationScoreId())) {
@@ -417,7 +419,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                 }
             }
             for (WmScorePackageSettleTreeNode rootNode : rootNodes) {
-                calculateSettleTreeNodeTotalAmount(rootNode);
+                calculateSettleTreeNodeTotalAmount(rootNode, matchedPackageIds);
             }
         }
         // 补充个人包的结算状态、结算平台、结算税源地、提交至财务时间、提交至灵工时间
@@ -522,9 +524,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                     } else {
                         row.createCell(columnNo++).setCellValue("");
                     }
-                    if(exportRecord.getFirstAgentPackage().getPackageFinishTime()!=null){
+                    if (exportRecord.getFirstAgentPackage().getPackageFinishTime() != null) {
                         row.createCell(columnNo++).setCellValue(DATE_FORMAT.format(exportRecord.getFirstAgentPackage().getPackageFinishTime()));
-                    }else{
+                    } else {
                         row.createCell(columnNo++).setCellValue("");
                     }
                     if (settleTreeNode != null && settleTreeNode.getTotalAmount() != null) {
@@ -576,9 +578,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                     } else {
                         row.createCell(columnNo++).setCellValue("");
                     }
-                    if(exportRecord.getSecondAgentPackage().getPackageFinishTime()!=null){
+                    if (exportRecord.getSecondAgentPackage().getPackageFinishTime() != null) {
                         row.createCell(columnNo++).setCellValue(DATE_FORMAT.format(exportRecord.getSecondAgentPackage().getPackageFinishTime()));
-                    }else{
+                    } else {
                         row.createCell(columnNo++).setCellValue("");
                     }
                     if (settleTreeNode != null && settleTreeNode.getTotalAmount() != null) {
@@ -680,33 +682,35 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         return score.toString();
     }
 
-    private void calculateSettleTreeNodeTotalAmount(WmScorePackageSettleTreeNode node) {
+    private void calculateSettleTreeNodeTotalAmount(WmScorePackageSettleTreeNode node, Set<Integer> matchedPackageIds) {
         BigDecimal totalAmount = BigDecimal.ZERO;
-        if (node.getP2pAmount() != null) {
-            totalAmount = totalAmount.add(node.getP2pAmount());
-        }
-        if (node.getP2pServiceAmount() != null) {
-            totalAmount = totalAmount.add(node.getP2pServiceAmount());
-        }
-        if (node.getSettleAmount() != null) {
-            totalAmount = totalAmount.add(node.getSettleAmount());
-        }
         BigDecimal totalActualAmount = BigDecimal.ZERO;
-        if (node.getSettleActualAmount() != null) {
-            totalActualAmount = totalActualAmount.add(node.getSettleActualAmount());
-        }
         int approvedScore = 0;
-        if (WmScorePackage.USER_PACKAGE_TYPEID_SET.contains(node.getTypeid())
-                && WmScorePackage.APPROVED_SCORE_PACKAGE_STATUS_SET.contains(node.getScorePackageStatus())
-                && node.getScore() != null) {
-            approvedScore += node.getScore();
-        }
-        if (node.getApprovedEntTaskScore() != null) {
-            approvedScore += node.getApprovedEntTaskScore();
+        if (matchedPackageIds == null || matchedPackageIds.contains(node.getId())) {
+            if (node.getP2pAmount() != null) {
+                totalAmount = totalAmount.add(node.getP2pAmount());
+            }
+            if (node.getP2pServiceAmount() != null) {
+                totalAmount = totalAmount.add(node.getP2pServiceAmount());
+            }
+            if (node.getSettleAmount() != null) {
+                totalAmount = totalAmount.add(node.getSettleAmount());
+            }
+            if (node.getSettleActualAmount() != null) {
+                totalActualAmount = totalActualAmount.add(node.getSettleActualAmount());
+            }
+            if (WmScorePackage.USER_PACKAGE_TYPEID_SET.contains(node.getTypeid())
+                    && WmScorePackage.APPROVED_SCORE_PACKAGE_STATUS_SET.contains(node.getScorePackageStatus())
+                    && node.getScore() != null) {
+                approvedScore += node.getScore();
+            }
+            if (node.getApprovedEntTaskScore() != null) {
+                approvedScore += node.getApprovedEntTaskScore();
+            }
         }
         if (node.getChildren() != null) {
             for (WmScorePackageSettleTreeNode child : node.getChildren()) {
-                calculateSettleTreeNodeTotalAmount(child);
+                calculateSettleTreeNodeTotalAmount(child, matchedPackageIds);
                 if (child.getTotalAmount() != null) {
                     totalAmount = totalAmount.add(child.getTotalAmount());
                 }
@@ -853,13 +857,14 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         if (rootNodes.isEmpty()) {
             return scoreStat;
         }
+        Set<Integer> matchedPackageIds = getBaseMapper().selectAllMatchedPackageIds(searchParams);
         Map<Integer, String> deptSignProducts = getDeptSignProducts();
         Set<Integer> entPackageIds = new HashSet<>();
         Set<Integer> userPackageIds = new HashSet<>();
         Set<Integer> cso1PackageIds = new HashSet<>();
         Set<Integer> cso2PackageIds = new HashSet<>();
         for (WmScorePackageSettleTreeNode rootNode : rootNodes) {
-            calculateSettleTreeNodeTotalAmount(rootNode);
+            calculateSettleTreeNodeTotalAmount(rootNode, matchedPackageIds);
             if (rootNode.getApprovedScore() != null) {
                 if (Objects.equals(rootNode.getSendPackageDeptId(), WmScorePackage.SPECIAL_DEPT_ID.toString())) {
                     rootNode.setApprovedScore(rootNode.getApprovedScore() / 100);
@@ -892,6 +897,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         }
         // 统计用户数
         Set<Integer> allUserIds = new HashSet<>();
+        entPackageIds.retainAll(matchedPackageIds);
         if (!entPackageIds.isEmpty()) {
             Set<Integer> userIds = batchFetchUserIds(entPackageIds);
             scoreStat.setEntUserCount(userIds.size());
@@ -902,10 +908,12 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
             scoreStat.setUserUserCount(userIds.size());
             allUserIds.addAll(userIds);
         }
+        cso1PackageIds.retainAll(matchedPackageIds);
         if (!cso1PackageIds.isEmpty()) {
             Set<Integer> userIds = batchFetchUserIds(cso1PackageIds);
             scoreStat.setCso1UserCount(userIds.size());
         }
+        cso2PackageIds.retainAll(matchedPackageIds);
         if (!cso2PackageIds.isEmpty()) {
             Set<Integer> userIds = batchFetchUserIds(cso2PackageIds);
             scoreStat.setCso2UserCount(userIds.size());
@@ -977,6 +985,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         if (rootNodes.isEmpty()) {
             return new GetApprovedScoreTimeStatByParamsResult();
         }
+        Set<Integer> matchedPackageIds = getBaseMapper().selectAllMatchedPackageIds(searchParams);
         Map<String, Set<Integer>> entPackageIdsMap = new HashMap<>();
         Map<String, Set<Integer>> userPackageIdsMap = new HashMap<>();
         Map<String, Set<Integer>> cso1PackageIdsMap = new HashMap<>();
@@ -986,7 +995,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
             if (rootNode.getPackageFinishTime() == null) {
                 continue;
             }
-            calculateSettleTreeNodeTotalAmount(rootNode);
+            calculateSettleTreeNodeTotalAmount(rootNode, matchedPackageIds);
             String timeKey = formatTimeKey(rootNode.getPackageFinishTime(), statUnit);
             ScoreTimeStat scoreStat = map.get(timeKey);
             if (scoreStat == null) {
@@ -1011,6 +1020,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                     Set<Integer> entPackageIds = entPackageIdsMap.computeIfAbsent(timeKey, (k) -> new HashSet<>());
                     entPackageIds.add(rootNode.getId());
                     collectDescendentPackageIds(rootNode, entPackageIds);
+                    entPackageIds.retainAll(matchedPackageIds);
                 }
                 String signProduct = deptSignProducts.get(rootNode.getDeptId());
                 if (SysDeptSignProduct.CSO1.equals(signProduct)) {
@@ -1019,12 +1029,14 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                     Set<Integer> cso1PackageIds = cso1PackageIdsMap.computeIfAbsent(timeKey, (k) -> new HashSet<>());
                     cso1PackageIds.add(rootNode.getId());
                     collectDescendentPackageIds(rootNode, cso1PackageIds);
+                    cso1PackageIds.retainAll(matchedPackageIds);
                 } else if (SysDeptSignProduct.CSO2.equals(signProduct)) {
                     scoreStat.setCso2Score(scoreStat.getCso2Score() + rootNode.getApprovedScore());
                     scoreStat.setCso2Count(scoreStat.getCso2Count() + 1);
                     Set<Integer> cso2PackageIds = cso2PackageIdsMap.computeIfAbsent(timeKey, (k) -> new HashSet<>());
                     cso2PackageIds.add(rootNode.getId());
                     collectDescendentPackageIds(rootNode, cso2PackageIds);
+                    cso2PackageIds.retainAll(matchedPackageIds);
                 }
             }
         }
@@ -1134,7 +1146,8 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         SettledStat stat = new SettledStat();
         // 构造积分包树
         Set<Integer> specialPackageIds = new HashSet<>();
-        List<WmScorePackageSettleTreeNode> rootNodes = buildSettledStatTree(searchParams, specialPackageIds);
+        Set<Integer> matchPackageIds = new HashSet<>();
+        List<WmScorePackageSettleTreeNode> rootNodes = buildSettledStatTree(searchParams, specialPackageIds, matchPackageIds);
         if (rootNodes.isEmpty()) {
             return stat;
         }
@@ -1164,7 +1177,8 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         Set<Integer> settledPackageIds = new HashSet<>();
         while (!stack.isEmpty()) {
             WmScorePackageSettleTreeNode node = stack.remove();
-            if (Objects.equals(node.getSettleStatus(), 1) || Objects.equals(node.getSettleStatus(), 8)) {
+            if (matchPackageIds.contains(node.getId()) && (Objects.equals(node.getSettleStatus(), 1)
+                    || Objects.equals(node.getSettleStatus(), 8))) {
                 stat.setTotalPackages(stat.getTotalPackages() + 1);
                 settledPackageIds.add(node.getId());
             }
@@ -1179,12 +1193,14 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
     }
 
     private List<WmScorePackageSettleTreeNode> buildSettledStatTree(WmScorePackageSearchParams searchParams,
-                                                                    Set<Integer> specialPackageIds) {
+                                                                    Set<Integer> specialPackageIds,
+                                                                    Set<Integer> matchedPackageIds) {
         // 检索符合条件的积分包
         List<WmScorePackageSearchDto> list = getBaseMapper().selectByParamsForSettledStat(searchParams);
         if (list.isEmpty()) {
             return Collections.emptyList();
         }
+        list.forEach(dto -> matchedPackageIds.add(dto.getId()));
         // 将下级积分包合并到上级积分包
         Map<Integer, WmScorePackageSearchDto> mergedMap = mergeSearchDtoList(list);
         // 构造积分包树
@@ -1232,7 +1248,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         }
         // 计算积分包的结算金额
         for (WmScorePackageSettleTreeNode rootNode : rootNodes) {
-            calculateSettleTreeNodeTotalAmount(rootNode);
+            calculateSettleTreeNodeTotalAmount(rootNode, matchedPackageIds);
         }
         return rootNodes;
     }
@@ -1253,7 +1269,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
     public SettledTimeStatResult getSettledTimeStatByParams(WmScorePackageSearchParams searchParams, String statUnit) {
         // 构造积分包树
         Set<Integer> specialPackageIds = new HashSet<>();
-        List<WmScorePackageSettleTreeNode> rootNodes = buildSettledStatTree(searchParams, specialPackageIds);
+        Set<Integer> matchedPackageIds = new HashSet<>();
+        List<WmScorePackageSettleTreeNode> rootNodes = buildSettledStatTree(searchParams, specialPackageIds,
+                matchedPackageIds);
         if (rootNodes.isEmpty()) {
             return new SettledTimeStatResult();
         }
@@ -1292,7 +1310,8 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         Map<Integer, WmScorePackageSettleTreeNode> settledPackageIds = new HashMap<>();
         while (!stack.isEmpty()) {
             WmScorePackageSettleTreeNode node = stack.remove();
-            if (node.getSettleNotifyTime() != null && (Objects.equals(node.getSettleStatus(), 1) || Objects.equals(node.getSettleStatus(), 8))) {
+            if (matchedPackageIds.contains(node.getId()) && node.getSettleNotifyTime() != null &&
+                    (Objects.equals(node.getSettleStatus(), 1) || Objects.equals(node.getSettleStatus(), 8))) {
                 String timeKey = formatTimeKey(node.getSettleNotifyTime(), statUnit);
                 SettledTimeStat stat = map.get(timeKey);
                 if (stat == null) {

+ 30 - 0
yaoyi-bi/src/main/resources/mapper/WmScorePackageMapper.xml

@@ -174,6 +174,36 @@
         </if>
         <where><include refid="searchParamsSql"></include></where>
     </select>
+    <select id="selectAllMatchedPackageIds" resultType="integer">
+        select t1.id
+        from wm_score_package t1
+        <if test="searchParams.packageLevel==1 or searchParams.packageLevel==2">
+            left join sys_dept d2 on d2.dept_id=t1.dept_id
+        </if>
+        <if test="(searchParams.rootPackageSendPackageDeptId!=null and searchParams.rootPackageSendPackageDeptId.length>0) or searchParams.rootPackageCreateTimeGe!=null or searchParams.rootPackageCreateTimeLe!=null or searchParams.rootPackageFinishTimeGe!=null or searchParams.rootPackageFinishTimeLe!=null or (searchParams.level!=null and searchParams.level.length>0)">
+            left join wm_score_package t2 on t1.relation_score_id=t2.id
+            left join wm_score_package t3 on t2.relation_score_id=t3.id
+        </if>
+        <if test="searchParams.settleNotifyTimeGe!=null or searchParams.settleNotifyTimeLe!=null">
+            left join (select package_id,max(notify_time) as notify_time from wm_score_package_settle_note group by package_id) s1 on s1.package_id=t1.id
+        </if>
+        <if test="searchParams.receiverName!=null and searchParams.receiverName.length>0">
+            inner join (
+            select distinct t1.package_id
+            from wm_score_package_status t1
+            inner join sys_user t2 on t1.user_id=t2.user_id
+            where t1.status=2 and t2.realname in
+            <foreach collection="searchParams.receiverName" item="item" separator="," open="(" close=")">#{item}</foreach>
+            union
+            select distinct t4.id as package_id
+            from sys_dept t3
+            inner join wm_score_package t4 on t3.dept_id=t4.dept_id and t4.typeid in ('0','1','2')
+            where t3.name in
+            <foreach collection="searchParams.receiverName" item="item" separator="," open="(" close=")">#{item}</foreach>
+            ) rnt on rnt.package_id=t1.id
+        </if>
+        <where><include refid="searchParamsSql"></include></where>
+    </select>
     <select id="selectExportDto" resultMap="exportDtoMap">
         select
             t1.id,t1.score_package_name,t1.score,t1.score_package_status,t1.create_time,t1.package_finish_time,t1.package_finish_status,t1.typeid,t1.relation_score_id,t1.p2p_amount,t1.p2p_service_amount,t1.drugtable,t1.settle_status,