Commit 695549eb49b6bec7eaebcd1790e1dd15b38b3259
1 parent
1e56cac3
fix: 优化重新生成排班,生成时间记录优化
Showing
5 changed files
with
61 additions
and
16 deletions
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<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<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> | ... | ... |