Commit 695549eb49b6bec7eaebcd1790e1dd15b38b3259

Authored by guzijian
1 parent 1e56cac3

fix: 优化重新生成排班,生成时间记录优化

Bsth-admin/src/main/java/com/ruoyi/mapper/RuleAttendanceMainHelpMapper.java
... ... @@ -2,6 +2,7 @@ package com.ruoyi.mapper;
2 2  
3 3 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 4 import com.ruoyi.domain.RuleAttendanceMainHelp;
  5 +import com.ruoyi.pojo.dto.AttendanceDto;
5 6 import com.ruoyi.pojo.vo.PeopleRequestVo;
6 7 import org.apache.ibatis.annotations.Param;
7 8  
... ... @@ -27,6 +28,8 @@ public interface RuleAttendanceMainHelpMapper extends BaseMapper<RuleAttendanceM
27 28 * @param helpList
28 29 */
29 30 void insertHelpList(@Param("list") List<RuleAttendanceMainHelp> helpList);
  31 +
  32 + List<RuleAttendanceMainHelp> queryNowMonthPeopleByJobCodes(@Param("list") List<AttendanceDto> peopleList, @Param("month") String month);
30 33 }
31 34  
32 35  
... ...
Bsth-admin/src/main/java/com/ruoyi/service/RuleAttendanceMainHelpService.java
... ... @@ -2,6 +2,7 @@ package com.ruoyi.service;
2 2  
3 3 import com.baomidou.mybatisplus.extension.service.IService;
4 4 import com.ruoyi.domain.RuleAttendanceMainHelp;
  5 +import com.ruoyi.pojo.dto.AttendanceDto;
5 6 import com.ruoyi.pojo.vo.PeopleRequestVo;
6 7 import com.ruoyi.pojo.vo.TableMonthRequestVo;
7 8  
... ... @@ -22,4 +23,7 @@ public interface RuleAttendanceMainHelpService extends IService&lt;RuleAttendanceMa
22 23 List<RuleAttendanceMainHelp> queryNowMonthPeople(PeopleRequestVo vo);
23 24  
24 25 void insertHelpList(List<RuleAttendanceMainHelp> helpList);
  26 +
  27 + List<RuleAttendanceMainHelp> queryNowMonthPeopleByJobCodes(List<AttendanceDto> peopleList, String month);
  28 +
25 29 }
... ...
Bsth-admin/src/main/java/com/ruoyi/service/impl/AttendanceServiceImpl.java
... ... @@ -316,7 +316,7 @@ public class AttendanceServiceImpl implements AttendanceService {
316 316  
317 317 private void deleteScheduleByRule(AgainCreateRequestVo vo) {
318 318 String strDate = LocalDate.now().toString();
319   - String month = vo.getMonth().substring(0, vo.getMonth().lastIndexOf("-"));
  319 + String month = vo.getMonth();
320 320 String nowMonth = strDate.substring(0, strDate.lastIndexOf("-"));
321 321 int compare = month.compareTo(nowMonth);
322 322 if (compare > 0) {
... ... @@ -371,6 +371,7 @@ public class AttendanceServiceImpl implements AttendanceService {
371 371 }
372 372 ruleAttendanceMainList.addAll(mainList);
373 373 }
  374 + // 记录日志
374 375 backCreatePeopleListLog(peopleList, ruleNumMap, dateList);
375 376 return ruleAttendanceMainList;
376 377 }
... ... @@ -520,7 +521,14 @@ public class AttendanceServiceImpl implements AttendanceService {
520 521 }
521 522  
522 523 public void backCreatePeopleListLog(List<AttendanceDto> peopleList, Map<Integer, RuleNumDto> ruleNumDtoList, List<LocalDate> dateList) {
523   - List<RuleAttendanceMainHelp> helpList = new ArrayList<>(peopleList.size());
  524 + if (CollectionUtil.isEmpty(dateList)){
  525 + return;
  526 + }
  527 + String month = dateList.get(0).getYear() + "-" + dateList.get(0).getMonthValue();
  528 + List<RuleAttendanceMainHelp> monthPeople = helpService.queryNowMonthPeopleByJobCodes(peopleList,month);
  529 + Map<String,Object> map = transFormMonthPeople(monthPeople);
  530 + peopleList = peopleList.stream().filter(item->Objects.isNull(map.get(item.getJobCode()))).collect(Collectors.toList());
  531 + List<RuleAttendanceMainHelp> helpList = new ArrayList<>(monthPeople.size());
524 532 LocalDate localDate = dateList.get(0);
525 533 Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
526 534 for (AttendanceDto dto : peopleList) {
... ... @@ -533,6 +541,14 @@ public class AttendanceServiceImpl implements AttendanceService {
533 541 helpService.insertHelpList(helpList);
534 542 }
535 543  
  544 + private Map<String, Object> transFormMonthPeople(List<RuleAttendanceMainHelp> monthPeople) {
  545 + Map<String, Object> map = new HashMap<>(monthPeople.size());
  546 + for (RuleAttendanceMainHelp help : monthPeople) {
  547 + map.put(help.getJobCode(),help);
  548 + }
  549 + return map;
  550 + }
  551 +
536 552 private List<PeopleResponseVo> mainTransformPeopleResponseVo(List<RuleAttendanceMain> mainList) {
537 553 List<PeopleResponseVo> vos = new ArrayList<>(mainList.size());
538 554 for (RuleAttendanceMain main : mainList) {
... ...
Bsth-admin/src/main/java/com/ruoyi/service/impl/RuleAttendanceMainHelpServiceImpl.java
1 1 package com.ruoyi.service.impl;
  2 +import cn.hutool.core.collection.CollectionUtil;
2 3 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
3 4 import com.ruoyi.domain.RuleAttendanceMainHelp;
4 5 import com.ruoyi.mapper.RuleAttendanceMainHelpMapper;
  6 +import com.ruoyi.pojo.dto.AttendanceDto;
5 7 import com.ruoyi.pojo.vo.PeopleRequestVo;
6 8 import com.ruoyi.service.RuleAttendanceMainHelpService;
7 9 import org.springframework.stereotype.Service;
8 10  
  11 +import java.util.Collection;
9 12 import java.util.List;
10 13  
11 14 /**
... ... @@ -24,8 +27,16 @@ public class RuleAttendanceMainHelpServiceImpl extends ServiceImpl&lt;RuleAttendanc
24 27  
25 28 @Override
26 29 public void insertHelpList(List<RuleAttendanceMainHelp> helpList) {
  30 + if (CollectionUtil.isEmpty(helpList)){
  31 + return;
  32 + }
27 33 baseMapper.insertHelpList(helpList);
28 34 }
  35 +
  36 + @Override
  37 + public List<RuleAttendanceMainHelp> queryNowMonthPeopleByJobCodes(List<AttendanceDto> peopleList, String month) {
  38 + return baseMapper.queryNowMonthPeopleByJobCodes(peopleList,month);
  39 + }
29 40 }
30 41  
31 42  
... ...
Bsth-admin/src/main/resources/mapper/RuleAttendanceMainHelpMapper.xml
... ... @@ -5,29 +5,30 @@
5 5 <mapper namespace="com.ruoyi.mapper.RuleAttendanceMainHelpMapper">
6 6  
7 7 <resultMap id="BaseResultMap" type="com.ruoyi.domain.RuleAttendanceMainHelp">
8   - <id property="id" column="id" jdbcType="INTEGER"/>
9   - <result property="name" column="name" jdbcType="VARCHAR"/>
10   - <result property="jobCode" column="job_code" jdbcType="VARCHAR"/>
11   - <result property="posts" column="posts" jdbcType="VARCHAR"/>
12   - <result property="dateFlag" column="dateFlag" jdbcType="DATE"/>
13   - <result property="fleetName" column="fleet_name" jdbcType="VARCHAR"/>
14   - <result property="ruleDictName" column="rule_dict_name" jdbcType="VARCHAR"/>
  8 + <id property="id" column="id" jdbcType="INTEGER"/>
  9 + <result property="name" column="name" jdbcType="VARCHAR"/>
  10 + <result property="jobCode" column="job_code" jdbcType="VARCHAR"/>
  11 + <result property="posts" column="posts" jdbcType="VARCHAR"/>
  12 + <result property="dateFlag" column="dateFlag" jdbcType="DATE"/>
  13 + <result property="fleetName" column="fleet_name" jdbcType="VARCHAR"/>
  14 + <result property="ruleDictName" column="rule_dict_name" jdbcType="VARCHAR"/>
15 15 </resultMap>
16 16  
17 17 <sql id="Base_Column_List">
18   - id,`name`,job_code,
  18 + id
  19 + ,`name`,job_code,
19 20 posts,date_flag,fleet_name
20 21 </sql>
21 22 <insert id="insertHelpList" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
22 23 insert into rule_attendance_main_help (`name`,job_code,posts,date_flag,fleet_name,rule_dict_name) values
23 24 <foreach collection="list" separator="," item="item" index="index">
24 25 (
25   - #{item.name},
26   - #{item.jobCode},
27   - #{item.posts},
28   - #{item.dateFlag},
29   - #{item.fleetName},
30   - #{item.ruleDictName}
  26 + #{item.name},
  27 + #{item.jobCode},
  28 + #{item.posts},
  29 + #{item.dateFlag},
  30 + #{item.fleetName},
  31 + #{item.ruleDictName}
31 32 )
32 33 </foreach>
33 34 on duplicate key update
... ... @@ -45,4 +46,14 @@
45 46 and name = #{name}
46 47 </if>
47 48 </select>
  49 + <select id="queryNowMonthPeopleByJobCodes" resultMap="BaseResultMap"
  50 + resultType="com.ruoyi.domain.RuleAttendanceMainHelp">
  51 + SELECT * from rule_attendance_main_help WHERE DATE_FORMAT( date_flag, '%Y-%m' ) = #{month}
  52 + <if test="list != null and list.size() > 0">
  53 + and job_code in
  54 + <foreach collection="list" item="item" index="index" separator="," open="(" close=")">
  55 + #{item.jobCode}
  56 + </foreach>
  57 + </if>
  58 + </select>
48 59 </mapper>
... ...