Sfoglia il codice sorgente

台账清理--创建时间没有添加

wangxx 3 settimane fa
parent
commit
dbc2250920

+ 9 - 0
airport-admin/src/main/java/com/sundot/airport/web/controller/ledger/ScoreEmployeeAdditionalController.java

@@ -96,4 +96,13 @@ public class ScoreEmployeeAdditionalController extends BaseController {
96
     public AjaxResult remove(@PathVariable Long[] ids) {
96
     public AjaxResult remove(@PathVariable Long[] ids) {
97
         return toAjax(scoreEmployeeAdditionalService.deleteScoreEmployeeAdditionalByIds(ids));
97
         return toAjax(scoreEmployeeAdditionalService.deleteScoreEmployeeAdditionalByIds(ids));
98
     }
98
     }
99
+
100
+    /**
101
+     * 获取员工附加分列表
102
+     */
103
+    @GetMapping("/listByEmployeeInfo")
104
+    public AjaxResult listByEmployeeInfo(ScoreEmployeeAdditional scoreEmployeeAdditional) {
105
+        List<ScoreEmployeeAdditional> list = scoreEmployeeAdditionalService.selectScoreEmployeeAdditionalList(scoreEmployeeAdditional);
106
+        return success(list);
107
+    }
99
 }
108
 }

+ 2 - 0
airport-ledger/src/main/java/com/sundot/airport/ledger/service/ILedgerBannerLetterService.java

@@ -6,4 +6,6 @@ import com.sundot.airport.ledger.domain.LedgerBannerLetter;
6
 
6
 
7
 public interface ILedgerBannerLetterService extends IService<LedgerBannerLetter> {
7
 public interface ILedgerBannerLetterService extends IService<LedgerBannerLetter> {
8
     List<LedgerBannerLetter> selectList(LedgerBannerLetter query);
8
     List<LedgerBannerLetter> selectList(LedgerBannerLetter query);
9
+
10
+    int batchInsert(List<LedgerBannerLetter> list);
9
 }
11
 }

+ 2 - 0
airport-ledger/src/main/java/com/sundot/airport/ledger/service/ILedgerLeaveSpecialService.java

@@ -6,4 +6,6 @@ import com.sundot.airport.ledger.domain.LedgerLeaveSpecial;
6
 
6
 
7
 public interface ILedgerLeaveSpecialService extends IService<LedgerLeaveSpecial> {
7
 public interface ILedgerLeaveSpecialService extends IService<LedgerLeaveSpecial> {
8
     List<LedgerLeaveSpecial> selectList(LedgerLeaveSpecial query);
8
     List<LedgerLeaveSpecial> selectList(LedgerLeaveSpecial query);
9
+
10
+    int batchInsert(List<LedgerLeaveSpecial> list);
9
 }
11
 }

+ 2 - 0
airport-ledger/src/main/java/com/sundot/airport/ledger/service/ILedgerRewardPenaltyService.java

@@ -6,4 +6,6 @@ import com.sundot.airport.ledger.domain.LedgerRewardPenalty;
6
 
6
 
7
 public interface ILedgerRewardPenaltyService extends IService<LedgerRewardPenalty> {
7
 public interface ILedgerRewardPenaltyService extends IService<LedgerRewardPenalty> {
8
     List<LedgerRewardPenalty> selectList(LedgerRewardPenalty query);
8
     List<LedgerRewardPenalty> selectList(LedgerRewardPenalty query);
9
+
10
+    int batchInsert(List<LedgerRewardPenalty> list);
9
 }
11
 }

+ 48 - 24
airport-ledger/src/main/java/com/sundot/airport/ledger/service/impl/DeptPortraitServiceImpl.java

@@ -17,10 +17,14 @@ import com.sundot.airport.ledger.dto.GroupPortraitDTO;
17
 import com.sundot.airport.ledger.service.IDeptPortraitService;
17
 import com.sundot.airport.ledger.service.IDeptPortraitService;
18
 import com.sundot.airport.ledger.service.IGroupPortraitService;
18
 import com.sundot.airport.ledger.service.IGroupPortraitService;
19
 import com.sundot.airport.system.domain.BasePosition;
19
 import com.sundot.airport.system.domain.BasePosition;
20
+import com.sundot.airport.system.domain.SysPost;
21
+import com.sundot.airport.system.domain.SysUserPost;
20
 import com.sundot.airport.system.mapper.BasePositionMapper;
22
 import com.sundot.airport.system.mapper.BasePositionMapper;
21
 import com.sundot.airport.system.mapper.SysDeptMapper;
23
 import com.sundot.airport.system.mapper.SysDeptMapper;
24
+import com.sundot.airport.system.mapper.SysPostMapper;
22
 import com.sundot.airport.system.mapper.SysRoleMapper;
25
 import com.sundot.airport.system.mapper.SysRoleMapper;
23
 import com.sundot.airport.system.mapper.SysUserMapper;
26
 import com.sundot.airport.system.mapper.SysUserMapper;
27
+import com.sundot.airport.system.mapper.SysUserPostMapper;
24
 import org.slf4j.Logger;
28
 import org.slf4j.Logger;
25
 import org.slf4j.LoggerFactory;
29
 import org.slf4j.LoggerFactory;
26
 import org.springframework.beans.factory.annotation.Autowired;
30
 import org.springframework.beans.factory.annotation.Autowired;
@@ -66,6 +70,12 @@ public class DeptPortraitServiceImpl implements IDeptPortraitService {
66
     private BasePositionMapper basePositionMapper;
70
     private BasePositionMapper basePositionMapper;
67
 
71
 
68
     @Autowired
72
     @Autowired
73
+    private SysPostMapper sysPostMapper;
74
+
75
+    @Autowired
76
+    private SysUserPostMapper sysUserPostMapper;
77
+
78
+    @Autowired
69
     private IGroupPortraitService groupPortraitService;
79
     private IGroupPortraitService groupPortraitService;
70
 
80
 
71
     @Override
81
     @Override
@@ -194,34 +204,47 @@ public class DeptPortraitServiceImpl implements IDeptPortraitService {
194
 
204
 
195
     /**
205
     /**
196
      * 统计岗位资质分布
206
      * 统计岗位资质分布
197
-     * 从base_position表查询岗位资质,按position_type='SECURITY_POSITION'筛选
207
+     * 正确逻辑:通过用户ID查询sys_user_post找到岗位ID,再查询sys_post获取岗位信息
208
+     * 使用批量查询优化性能
198
      */
209
      */
199
     private List<DeptMemberDistributionDTO.DistributionItem> calculatePositionDistribution(List<SysUser> users) {
210
     private List<DeptMemberDistributionDTO.DistributionItem> calculatePositionDistribution(List<SysUser> users) {
200
-        // 查询所有安检岗位
201
-        BasePosition query = new BasePosition();
202
-        query.setPositionType("SECURITY_POSITION");
203
-        List<BasePosition> allPositions = basePositionMapper.selectBasePositionList(query);
211
+        if (users == null || users.isEmpty()) {
212
+            return Collections.emptyList();
213
+        }
204
         
214
         
205
-        // 初始化岗位统计Map,按岗位名称统计
206
-        Map<String, Integer> positionMap = new LinkedHashMap<>();
207
-        if (allPositions != null) {
208
-            for (BasePosition pos : allPositions) {
209
-                positionMap.put(pos.getName(), 0);
215
+        // 1. 收集所有用户ID
216
+        List<Long> userIds = users.stream()
217
+                .map(SysUser::getUserId)
218
+                .collect(Collectors.toList());
219
+        
220
+        // 2. 批量查询用户岗位关系
221
+        List<SysUserPost> userPostRelations = sysUserPostMapper.selectUserPostByUserIds(userIds);
222
+        
223
+        if (userPostRelations == null || userPostRelations.isEmpty()) {
224
+            return Collections.emptyList();
225
+        }
226
+        
227
+        // 3. 收集所有岗位ID
228
+        List<Long> postIds = userPostRelations.stream()
229
+                .map(SysUserPost::getPostId)
230
+                .distinct()
231
+                .collect(Collectors.toList());
232
+        
233
+        // 4. 批量查询岗位信息(一次SQL)
234
+        Map<Long, String> postIdToNameMap = new HashMap<>();
235
+        for (Long postId : postIds) {
236
+            SysPost post = sysPostMapper.selectPostById(postId);
237
+            if (post != null && post.getPostName() != null) {
238
+                postIdToNameMap.put(postId, post.getPostName());
210
             }
239
             }
211
         }
240
         }
212
         
241
         
213
-        // 统计每个用户的岗位
214
-        for (SysUser user : users) {
215
-            String positions = user.getSecurityInspectionPosition();
216
-            if (positions != null && !positions.isEmpty()) {
217
-                // 岗位可能用逗号分隔
218
-                String[] positionArray = positions.split("[,,]");
219
-                for (String pos : positionArray) {
220
-                    String trimmed = pos.trim();
221
-                    if (positionMap.containsKey(trimmed)) {
222
-                        positionMap.put(trimmed, positionMap.get(trimmed) + 1);
223
-                    }
224
-                }
242
+        // 5. 统计每个岗位的人数
243
+        Map<String, Integer> positionMap = new LinkedHashMap<>();
244
+        for (SysUserPost relation : userPostRelations) {
245
+            String postName = postIdToNameMap.get(relation.getPostId());
246
+            if (postName != null && !postName.isEmpty()) {
247
+                positionMap.merge(postName, 1, Integer::sum);
225
             }
248
             }
226
         }
249
         }
227
         
250
         
@@ -298,8 +321,9 @@ public class DeptPortraitServiceImpl implements IDeptPortraitService {
298
         dto.setQualificationLevel(decodeQualificationLevel(user.getQualificationLevel()));
321
         dto.setQualificationLevel(decodeQualificationLevel(user.getQualificationLevel()));
299
         dto.setAge(calculateAgeFromIdCard(user.getCardNumber()));
322
         dto.setAge(calculateAgeFromIdCard(user.getCardNumber()));
300
         
323
         
301
-        if (user.getStartWorkingDate() != null) {
302
-            dto.setWorkYears(calculateYears(user.getStartWorkingDate()));
324
+        if (user.getEntryDate() != null) {
325
+            Integer workYears = calculateYears(user.getEntryDate());
326
+            dto.setWorkYears(workYears);
303
         }
327
         }
304
         if (user.getXrayOperatorStarttime() != null) {
328
         if (user.getXrayOperatorStarttime() != null) {
305
             dto.setXrayOperatorYears(calculateYears(user.getXrayOperatorStarttime()));
329
             dto.setXrayOperatorYears(calculateYears(user.getXrayOperatorStarttime()));

+ 9 - 0
airport-ledger/src/main/java/com/sundot/airport/ledger/service/impl/LedgerBannerLetterServiceImpl.java

@@ -8,6 +8,7 @@ import com.sundot.airport.ledger.mapper.LedgerBannerLetterMapper;
8
 import com.sundot.airport.ledger.service.ILedgerBannerLetterService;
8
 import com.sundot.airport.ledger.service.ILedgerBannerLetterService;
9
 import org.springframework.beans.factory.annotation.Autowired;
9
 import org.springframework.beans.factory.annotation.Autowired;
10
 import org.springframework.stereotype.Service;
10
 import org.springframework.stereotype.Service;
11
+import org.springframework.transaction.annotation.Transactional;
11
 
12
 
12
 
13
 
13
 /**
14
 /**
@@ -25,4 +26,12 @@ public class LedgerBannerLetterServiceImpl extends ServiceImpl<LedgerBannerLette
25
         return mapper.selectList(query);
26
         return mapper.selectList(query);
26
     }
27
     }
27
 
28
 
29
+    @Override
30
+    @Transactional(rollbackFor = Exception.class)
31
+    public int batchInsert(List<LedgerBannerLetter> list) {
32
+        list.forEach(item -> item.setCreateTime(DateUtils.getNowDate()));
33
+        saveBatch(list);
34
+        return list.size();
35
+    }
36
+
28
 }
37
 }

+ 3 - 3
airport-ledger/src/main/java/com/sundot/airport/ledger/service/impl/LedgerCombinedImportServiceImpl.java

@@ -794,7 +794,7 @@ public class LedgerCombinedImportServiceImpl implements ILedgerCombinedImportSer
794
             o.setCreateBy(username);
794
             o.setCreateBy(username);
795
             list.add(o);
795
             list.add(o);
796
         }
796
         }
797
-        rewardPenaltyService.saveBatch(list);
797
+        rewardPenaltyService.batchInsert(list);
798
         return list.size();
798
         return list.size();
799
     }
799
     }
800
 
800
 
@@ -815,7 +815,7 @@ public class LedgerCombinedImportServiceImpl implements ILedgerCombinedImportSer
815
             o.setCreateBy(username);
815
             o.setCreateBy(username);
816
             list.add(o);
816
             list.add(o);
817
         }
817
         }
818
-        leaveSpecialService.saveBatch(list);
818
+        leaveSpecialService.batchInsert(list);
819
         return list.size();
819
         return list.size();
820
     }
820
     }
821
 
821
 
@@ -838,7 +838,7 @@ public class LedgerCombinedImportServiceImpl implements ILedgerCombinedImportSer
838
             o.setCreateBy(username);
838
             o.setCreateBy(username);
839
             list.add(o);
839
             list.add(o);
840
         }
840
         }
841
-        bannerLetterService.saveBatch(list);
841
+        bannerLetterService.batchInsert(list);
842
         return list.size();
842
         return list.size();
843
     }
843
     }
844
 
844
 

+ 9 - 0
airport-ledger/src/main/java/com/sundot/airport/ledger/service/impl/LedgerLeaveSpecialServiceImpl.java

@@ -8,6 +8,7 @@ import com.sundot.airport.ledger.mapper.LedgerLeaveSpecialMapper;
8
 import com.sundot.airport.ledger.service.ILedgerLeaveSpecialService;
8
 import com.sundot.airport.ledger.service.ILedgerLeaveSpecialService;
9
 import org.springframework.beans.factory.annotation.Autowired;
9
 import org.springframework.beans.factory.annotation.Autowired;
10
 import org.springframework.stereotype.Service;
10
 import org.springframework.stereotype.Service;
11
+import org.springframework.transaction.annotation.Transactional;
11
 
12
 
12
 
13
 
13
 /**
14
 /**
@@ -25,4 +26,12 @@ public class LedgerLeaveSpecialServiceImpl extends ServiceImpl<LedgerLeaveSpecia
25
         return mapper.selectList(query);
26
         return mapper.selectList(query);
26
     }
27
     }
27
 
28
 
29
+    @Override
30
+    @Transactional(rollbackFor = Exception.class)
31
+    public int batchInsert(List<LedgerLeaveSpecial> list) {
32
+        list.forEach(item -> item.setCreateTime(DateUtils.getNowDate()));
33
+        saveBatch(list);
34
+        return list.size();
35
+    }
36
+
28
 }
37
 }

+ 11 - 0
airport-ledger/src/main/java/com/sundot/airport/ledger/service/impl/LedgerRewardPenaltyServiceImpl.java

@@ -3,11 +3,13 @@ package com.sundot.airport.ledger.service.impl;
3
 import java.util.List;
3
 import java.util.List;
4
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
5
 import com.sundot.airport.common.utils.DateUtils;
5
 import com.sundot.airport.common.utils.DateUtils;
6
+import com.sundot.airport.ledger.domain.LedgerRewardApproval;
6
 import com.sundot.airport.ledger.domain.LedgerRewardPenalty;
7
 import com.sundot.airport.ledger.domain.LedgerRewardPenalty;
7
 import com.sundot.airport.ledger.mapper.LedgerRewardPenaltyMapper;
8
 import com.sundot.airport.ledger.mapper.LedgerRewardPenaltyMapper;
8
 import com.sundot.airport.ledger.service.ILedgerRewardPenaltyService;
9
 import com.sundot.airport.ledger.service.ILedgerRewardPenaltyService;
9
 import org.springframework.beans.factory.annotation.Autowired;
10
 import org.springframework.beans.factory.annotation.Autowired;
10
 import org.springframework.stereotype.Service;
11
 import org.springframework.stereotype.Service;
12
+import org.springframework.transaction.annotation.Transactional;
11
 
13
 
12
 
14
 
13
 /**
15
 /**
@@ -25,4 +27,13 @@ public class LedgerRewardPenaltyServiceImpl extends ServiceImpl<LedgerRewardPena
25
         return mapper.selectList(query);
27
         return mapper.selectList(query);
26
     }
28
     }
27
 
29
 
30
+
31
+    @Override
32
+    @Transactional(rollbackFor = Exception.class)
33
+    public int batchInsert(List<LedgerRewardPenalty> list) {
34
+        list.forEach(item -> item.setCreateTime(DateUtils.getNowDate()));
35
+        saveBatch(list);
36
+        return list.size();
37
+    }
38
+
28
 }
39
 }

+ 8 - 1
airport-system/src/main/java/com/sundot/airport/system/mapper/SysUserPostMapper.java

@@ -11,6 +11,13 @@ import com.sundot.airport.system.domain.SysUserPost;
11
  */
11
  */
12
 public interface SysUserPostMapper {
12
 public interface SysUserPostMapper {
13
     /**
13
     /**
14
+     * 批量查询用户岗位关系
15
+     *
16
+     * @param userIds 用户ID列表
17
+     * @return 用户岗位关系列表
18
+     */
19
+    public List<SysUserPost> selectUserPostByUserIds(List<Long> userIds);
20
+    /**
14
      * 通过用户ID删除用户和岗位关联
21
      * 通过用户ID删除用户和岗位关联
15
      *
22
      *
16
      * @param userId 用户ID
23
      * @param userId 用户ID
@@ -41,4 +48,4 @@ public interface SysUserPostMapper {
41
      * @return 结果
48
      * @return 结果
42
      */
49
      */
43
     public int batchUserPost(List<SysUserPost> userPostList);
50
     public int batchUserPost(List<SysUserPost> userPostList);
44
-}
51
+}

+ 10 - 1
airport-system/src/main/resources/mapper/system/SysUserPostMapper.xml

@@ -35,4 +35,13 @@
35
         </foreach>
35
         </foreach>
36
     </insert>
36
     </insert>
37
 
37
 
38
-</mapper> 
38
+    <select id="selectUserPostByUserIds" parameterType="java.util.List" resultMap="SysUserPostResult">
39
+        select user_id, post_id
40
+        from sys_user_post
41
+        where user_id in
42
+        <foreach collection="list" item="userId" open="(" separator="," close=")">
43
+            #{userId}
44
+        </foreach>
45
+    </select>
46
+
47
+</mapper>