Quellcode durchsuchen

一个机构只能加一个作息模板,超级管理可以编辑作息,网点可以编辑自己网点的作息, 模板自动生成时可以覆盖将来时间手动配置的作息数据

zhulu vor 1 Jahr
Ursprung
Commit
e26c620830

+ 3 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysWorkTimeMapper.java

@@ -91,4 +91,7 @@ public interface SysWorkTimeMapper extends BaseMapper<SysWorkTime> {
     int checkWorkTime(Map<String, Object> param);
 
     List<SysWorkTime> getWorkTime(Map<String, Object> map);
+
+    int deleteOrgWorkTimeByMonth(@Param("map") Map<String, Object> map);
+
 }

+ 17 - 13
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeSetServiceImpl.java

@@ -277,13 +277,16 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
     @Transactional(rollbackFor = Exception.class)
     @Override
     public AjaxResult add(SysWorkTimeSet request) {
+        if(DateUtil.endOfDay(DateTime.now()).after(request.getEffectiveDate()))
+        {
+            return error("作息模板的生效日期必须大于今天");
+        }
         List<Long> orgIds = request.getOrgIds();
-        for (Long oid :
-                orgIds) {
-            List<SysWorkTimeSet> sysWorkTimeSets = baseMapper.selectList(new LambdaQueryWrapper<SysWorkTimeSet>().eq(SysWorkTimeSet::getOrgId, oid).eq(SysWorkTimeSet::getEffectiveDate, request.getEffectiveDate()));
+        for (Long oid : orgIds) {
+            List<SysWorkTimeSet> sysWorkTimeSets = baseMapper.selectList(new LambdaQueryWrapper<SysWorkTimeSet>().eq(SysWorkTimeSet::getOrgId, oid));
 //如果id为空表示是新增,需要判断是否存在相同机构相同时间的模板
             if (request.getId() == null && sysWorkTimeSets.size() > 0) {
-                return error("机构'" + orgService.getById(oid).getName() + "'已存在选择时间的作息模板");
+                return error("机构'" + orgService.getById(oid).getName() + "'已存在作息模板,一个机构只允许同时存在一个作息模板");
             }
         }
         int year = Calendar.getInstance().get(Calendar.YEAR);
@@ -372,7 +375,7 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
             map.put("effectiveDate", effectiveDate);
             map.put("lastDayOfNextMonth", DateUtil.format(cal.getTime(), "yyyy-MM-dd"));
             map.put("orgIds", orgIds);
-            //objectMapper.deleteOrgWorkTimeByMonth(map);
+            sysWorkTimeMapper.deleteOrgWorkTimeByMonth(map);
             //获取不需要生成的日期
             List<SysWorkTime> list = new ArrayList<>();
             if (checkDataResult != null && checkDataResult == 0) {
@@ -660,14 +663,15 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
             List<SysWorkTime> workTimeNewVos = list.stream().filter(w -> w.getOrgId().equals(dayMap.getKey())).collect(Collectors.toList());
             //去掉workTimeEditDtos中机构与日期在workTimeNewVos中存在的数据
             List<SysWorkTime> list1 = null;
-            if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(workTimeNewVos)) {
-                list1 = workTimeEditDtos.stream().filter(s -> {
-                    return workTimeNewVos.stream().noneMatch(f -> f.getOrgId().equals(s.getOrgId()) && f.getYmdDate().equals(s.getDate()));
-                }).collect(Collectors.toList());
-            } else {
-                list1 = workTimeEditDtos;
-            }
-
+            //自动生成时覆盖手打维护的作息,谁后生成谁生效
+//            if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(workTimeNewVos)) {
+//                list1 = workTimeEditDtos.stream().filter(s -> {
+//                    return workTimeNewVos.stream().noneMatch(f -> f.getOrgId().equals(s.getOrgId()) && f.getYmdDate().equals(s.getDate()));
+//                }).collect(Collectors.toList());
+//            } else {
+//                list1 = workTimeEditDtos;
+//            }
+            list1 = workTimeEditDtos;
             batch(dayMap.getKey(), date, list1);
         }
 

+ 9 - 0
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysWorkTimeMapper.xml

@@ -388,4 +388,13 @@
             #{id}
         </foreach>
     </delete>
+
+    <delete id="deleteOrgWorkTimeByMonth">
+        delete  from sys_work_time where ymd_date>=#{map.effectiveDate} and
+        #{map.lastDayOfNextMonth}>=ymd_date
+        and org_id in
+        <foreach collection="map.orgIds" item="orgId" open="(" close=")" separator=",">
+            #{orgId}
+        </foreach>
+    </delete>
 </mapper>