LiGuang před 3 roky
rodič
revize
cf78b2e312
23 změnil soubory, kde provedl 531 přidání a 330 odebrání
  1. 1 0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
  2. 164 115
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendance/service/impl/AttendanceServiceImpl.java
  3. 15 19
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendanceRule/controller/AttendanceRuleController.java
  4. 2 0
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendanceRule/mapper/AttendanceRuleMapper.java
  5. 5 2
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendanceRule/mapper/xml/AttendanceRuleMapper.xml
  6. 1 0
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/shift/controller/ShiftController.java
  7. 3 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/shift/mapper/ShiftMapper.java
  8. 4 0
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/shift/mapper/xml/ShiftMapper.xml
  9. 1 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/shift/service/impl/ShiftServiceImpl.java
  10. 1 0
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/statutoryleave/mapper/StatutoryLeaveMapper.java
  11. 6 0
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/statutoryleave/mapper/xml/StatutoryLeaveMapper.xml
  12. 2 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/statutoryleave/service/IStatutoryLeaveService.java
  13. 8 0
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/statutoryleave/service/impl/StatutoryLeaveServiceImpl.java
  14. 4 4
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userShift/mapper/UserShiftMapper.java
  15. 62 6
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userShift/mapper/xml/UserShiftMapper.xml
  16. 5 4
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userShift/service/IUserShiftService.java
  17. 42 53
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userShift/service/impl/UserShiftServiceImpl.java
  18. 101 43
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
  19. 20 8
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUser.java
  20. 8 5
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
  21. 2 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/WeixinUserImpl.java
  22. 65 68
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/AES.java
  23. 9 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/WeixinUser.java

+ 1 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java

@@ -76,6 +76,7 @@ public class ShiroConfig {
         filterChainDefinitionMap.put("/sys/test/notify_url", "anon"); //支付成功回调接口
         filterChainDefinitionMap.put("/sys/login", "anon"); //登录接口排除
         filterChainDefinitionMap.put("/sys/mLogin", "anon"); //登录接口排除
+        filterChainDefinitionMap.put("/sys/mLogins", "anon");
         filterChainDefinitionMap.put("/sys/logout", "anon"); //登出接口排除
         filterChainDefinitionMap.put("/sys/xcxLogin", "anon"); //小程序账号登录接口排除
         filterChainDefinitionMap.put("/sys/kjLogin", "anon"); //小程序快捷登录接口排除

+ 164 - 115
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendance/service/impl/AttendanceServiceImpl.java

@@ -8,6 +8,8 @@ import org.jeecg.modules.geke.attendance.mapper.AttendanceMapper;
 import org.jeecg.modules.geke.attendance.service.IAttendanceService;
 import org.jeecg.modules.geke.attendanceRule.entity.AttendanceRule;
 import org.jeecg.modules.geke.attendanceRule.service.IAttendanceRuleService;
+import org.jeecg.modules.geke.statutoryleave.entity.StatutoryLeave;
+import org.jeecg.modules.geke.statutoryleave.service.IStatutoryLeaveService;
 import org.jeecg.modules.geke.userShift.entity.UserDept;
 import org.jeecg.modules.geke.userShift.mapper.UserShiftMapper;
 import org.jeecg.modules.geke.userShift.service.IUserShiftService;
@@ -47,6 +49,9 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
     @Autowired
     private IAttendanceRuleService attendanceRuleService;
 
+    @Autowired
+    private IStatutoryLeaveService statutoryLeaveService;
+
 
     @Override
     public Map<String,Object> queryList(String userid, String date) throws ParseException {
@@ -62,54 +67,61 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
             int year = calendar.get(calendar.YEAR);//年份
             int month = calendar.get(calendar.MONTH) + 1;//月份
             String cont = "2";
-            String ed="0";
+            String jq="";
+            StatutoryLeave one = statutoryLeaveService.getOne(date);
+            if (one!=null){
+            jq=one.getType();
+            }
             int actualMaximum = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);//获取前端传过来的时间获取月份的总天数
             AttendanceRule attendanceRule = attendanceRuleService.UserRule(userid);
-            if (attendanceRule!=null){
-                ed="1";
-            }else {
-                List<UserDept> depNamesByUserIds = userShiftMapper.getDepNamesByUserIds(Arrays.asList(userid.split(",")));
-                List<String>deps=new ArrayList<>();
-               depNamesByUserIds.forEach(st->{
-                   deps.add(st.getId());
-               });
-                AttendanceRule attendanceRule1 = attendanceRuleService.UserRules(deps);
-                if (attendanceRule1!=null){
-                    attendanceRule=attendanceRule1;
-                    ed="1";
-                }
-            }
 
 
-            if (ed.equals("1")){
+                if (attendanceRule!=null){
                 if (attendanceRule.getType().equals("1")){//判断规则类型1,固定时间上下班
-                    String state="1";
-                    String[] split = attendanceRule.getWorkDay().split(",");//获取工作日
-                    Date da = DateUtils.str2Date(date, sdf);
-                    for (String day:split){
-                        if (day.equals(String.valueOf(da.getDay()))){
-                            state="2";
-                            break;
+                    if (jq.equals("1")){//优先判断是否存在法定节假日
+                        if (attendances != null && attendances.size() > 1) {//判断打卡记录是否有上下班
+                            if (exitprio(attendances).equals("1")) {//判断打卡记录是否异常,1,异常
+                                cont = "1";
+                            } else {
+                                Date startDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendanceRule.getStartDate()), sd);
+                                Date endDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendanceRule.getEndDate()), sd);
+                                Date usStartDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendances.get(0).getUsDate()), sd);
+                                Date usEndDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendances.get(attendances.size() - 1).getUsDate()), sd);
+                                if (usStartDate.getTime() > startDate.getTime() || usEndDate.getTime() < endDate.getTime()) {
+                                    cont = "1";
+                                }
+                            }
+                        } else {
+                            cont = "1";
                         }
-                    }
-                    if (state.equals("2")){//在工作日内
-                        if (attendances!=null&&attendances.size()>1){//判断打卡记录是否有上下班
-                            if (exitprio(attendances).equals("1")){//判断打卡记录是否异常,1,异常
-                                cont="1";
-                            }else {
-                                Date startDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendanceRule.getStartDate()), sd);
-                                Date endDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendanceRule.getEndDate()), sd);
-                                Date usStartDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(0).getUsDate()), sd);
-                                Date usEndDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(attendances.size() - 1).getUsDate()), sd);
-                                if (usStartDate.getTime()>startDate.getTime()||usEndDate.getTime()<endDate.getTime()){
-                                    cont="1";
+                    }else  if (jq.equals("")) {
+                        String state = "1";
+                        String[] split = attendanceRule.getWorkDay().split(",");//获取工作日
+                        Date da = DateUtils.str2Date(date, sdf);
+                        for (String day : split) {
+                            if (day.equals(String.valueOf(da.getDay()))) {
+                                state = "2";
+                                break;
+                            }
+                        }
+                        if (state.equals("2") || jq.equals("1")) {//在工作日内
+                            if (attendances != null && attendances.size() > 1) {//判断打卡记录是否有上下班
+                                if (exitprio(attendances).equals("1")) {//判断打卡记录是否异常,1,异常
+                                    cont = "1";
+                                } else {
+                                    Date startDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendanceRule.getStartDate()), sd);
+                                    Date endDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendanceRule.getEndDate()), sd);
+                                    Date usStartDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendances.get(0).getUsDate()), sd);
+                                    Date usEndDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendances.get(attendances.size() - 1).getUsDate()), sd);
+                                    if (usStartDate.getTime() > startDate.getTime() || usEndDate.getTime() < endDate.getTime()) {
+                                        cont = "1";
+                                    }
                                 }
+                            } else {
+                                cont = "1";
                             }
-                        }else {
-                            cont="1";
                         }
                     }
-
                 }else  if (attendanceRule.getType().equals("2")){//规则类型 2,按班次上下班
                     List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, date,"");
                     if (oneUserShift!=null&&oneUserShift.size()>0){
@@ -129,17 +141,8 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
                             cont="1";
                         }
                     }
-                }else if (attendanceRule.getType().equals("3")){//规则类型 3,自由上下班
-                    String states="1";
-                    String[] split = attendanceRule.getWorkDay().split(",");//获取工作日
-                    Date da = DateUtils.str2Date(date, sdf);
-                    for (String day:split){
-                        if (day.equals(String.valueOf(da.getDay()))){
-                            states="2";
-                            break;
-                        }
-                    }
-                    if (states.equals("2")) {//在工作日内
+                }else if (attendanceRule.getType().equals("3")) {//规则类型 3,自由上下班
+                    if (jq.equals("1")) {//优先判断是否存在法定节假日
                         if (attendances != null && attendances.size() > 1) {//判断打卡记录是否有上下班
                             if (exitprio(attendances).equals("1")) {//判断打卡记录是否异常,1,异常
                                 cont = "1";
@@ -147,104 +150,150 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
                         } else {
                             cont = "1";
                         }
+                    } else if (jq.equals("")) {
+                        String states = "1";
+                        String[] split = attendanceRule.getWorkDay().split(",");//获取工作日
+                        Date da = DateUtils.str2Date(date, sdf);
+                        for (String day : split) {
+                            if (day.equals(String.valueOf(da.getDay()))) {
+                                states = "2";
+                                break;
+                            }
+                        }
+                        if (states.equals("2")) {//在工作日内
+                            if (attendances != null && attendances.size() > 1) {//判断打卡记录是否有上下班
+                                if (exitprio(attendances).equals("1")) {//判断打卡记录是否异常,1,异常
+                                    cont = "1";
+                                }
+                            } else {
+                                cont = "1";
+                            }
+                        }
                     }
                 }
             }
+
+
+
         //----------------------------------------------------------------下面是获取当前月份所有天数的考勤-------------------------------------------------
             for (int i = 1; i <= actualMaximum; i++) {//循环获取时间月份的总天数
                 Attendance at = new Attendance();
                 at.setIss(i + "");//获取所有天数,前端js需要绑定的数据
                 String aDate = String.valueOf(year) + "-" + month + "-" + i;//循环拼接所有天数进行查询是否正常
+                String jqw="";
                 List<Attendance> acs = attendanceMapper.queryList(userid, aDate);
+                StatutoryLeave stjq = statutoryLeaveService.getOne(aDate);
+                if (stjq!=null){
+                    jqw=stjq.getType();
+                }
                 at.setIs("2");
-                String eds="0";
-//                AttendanceRule attendanceRules = attendanceRuleService.UserRule(userid);
-//                if (attendanceRules!=null){
-//                    eds="1";
-//                }else {
-//                    List<UserDept> depNamesByUserIds = userShiftMapper.getDepNamesByUserIds(Arrays.asList(userid.split(",")));
-//                    List<String>deps=new ArrayList<>();
-//                    depNamesByUserIds.forEach(st->{
-//                        deps.add(st.getId());
-//                    });
-//                    AttendanceRule attendanceRule1 = attendanceRuleService.UserRules(deps);
-//                    if (attendanceRule1!=null){
-//                        attendanceRules=attendanceRule1;
-//                        eds="1";
-//                    }
-//                }
-
-
-                if (ed.equals("1")){
+                at.setNotes("休");
                     if (attendanceRule.getType().equals("1")){//判断规则类型1,固定时间上下班
-                        String state="1";
-                        String[] split = attendanceRule.getWorkDay().split(",");//获取工作日
-                        Date da = DateUtils.str2Date(aDate, sdf);
-                        for (String day:split){
-                            if (day.equals(String.valueOf(da.getDay()))){
-                                state="2";
-                                break;
-                            }
-                        }
-                        if (state.equals("2")){//在工作日内
-                            if (acs!=null&&acs.size()>1){//判断打卡记录是否有上下班
-                                if (exitprio(acs).equals("1")){//判断打卡记录是否异常,1,异常
+                        if (jqw.equals("1")){//优先判断是否存在法定节假日
+                            at.setNotes("班");
+                            if (acs != null && acs.size() > 1) {//判断打卡记录是否有上下班
+                                if (exitprio(acs).equals("1")) {//判断打卡记录是否异常,1,异常
                                     at.setIs("1");
-                                }else {
-                                    Date startDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendanceRule.getStartDate()), sd);
-                                    Date endDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendanceRule.getEndDate()), sd);
-                                    Date usStartDate = DateUtils.str2Date("2021-10-21 "+sdt.format(acs.get(0).getUsDate()), sd);
-                                    Date usEndDate = DateUtils.str2Date("2021-10-21 "+sdt.format(acs.get(acs.size() - 1).getUsDate()), sd);
-                                    if (usStartDate.getTime()>startDate.getTime()||usEndDate.getTime()<endDate.getTime()){
+                                } else {
+                                    Date startDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendanceRule.getStartDate()), sd);
+                                    Date endDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendanceRule.getEndDate()), sd);
+                                    Date usStartDate = DateUtils.str2Date("2021-10-21 " + sdt.format(acs.get(0).getUsDate()), sd);
+                                    Date usEndDate = DateUtils.str2Date("2021-10-21 " + sdt.format(acs.get(acs.size() - 1).getUsDate()), sd);
+                                    if (usStartDate.getTime() > startDate.getTime() || usEndDate.getTime() < endDate.getTime()) {
                                         at.setIs("1");
                                     }
                                 }
-                            }else {
+                            } else {
                                 at.setIs("1");
                             }
+                        }else if (jqw.equals("")) {
+                            String state = "1";
+                            String[] split = attendanceRule.getWorkDay().split(",");//获取工作日
+                            Date da = DateUtils.str2Date(aDate, sdf);
+                            for (String day : split) {
+                                if (day.equals(String.valueOf(da.getDay()))) {
+                                    state = "2";
+                                    break;
+                                }
+                            }
+                            if (state.equals("2")) {//在工作日内
+                                at.setNotes("班");
+                                if (acs != null && acs.size() > 1) {//判断打卡记录是否有上下班
+                                    if (exitprio(acs).equals("1")) {//判断打卡记录是否异常,1,异常
+                                        at.setIs("1");
+                                    } else {
+                                        Date startDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendanceRule.getStartDate()), sd);
+                                        Date endDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendanceRule.getEndDate()), sd);
+                                        Date usStartDate = DateUtils.str2Date("2021-10-21 " + sdt.format(acs.get(0).getUsDate()), sd);
+                                        Date usEndDate = DateUtils.str2Date("2021-10-21 " + sdt.format(acs.get(acs.size() - 1).getUsDate()), sd);
+                                        if (usStartDate.getTime() > startDate.getTime() || usEndDate.getTime() < endDate.getTime()) {
+                                            at.setIs("1");
+                                        }
+                                    }
+                                } else {
+                                    at.setIs("1");
+                                }
+                            }
                         }
-
                     }else  if (attendanceRule.getType().equals("2")){//规则类型 2,按班次上下班
+                        at.setNotes("");
                         List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, aDate,"");
                         if (oneUserShift!=null&&oneUserShift.size()>0){
-                            if (acs!=null&&acs.size()>1){//判断打卡记录是否有上下班
-                                if (exitprio(acs).equals("1")){//判断打卡记录是否异常,1,异常
-                                    at.setIs("1");
-                                }else {
-                                    Date startDate = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("startDate"), sd);
-                                    Date endDate = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("endDate"), sd);
-                                    Date usStartDate = DateUtils.str2Date("2021-10-21 "+sdt.format(acs.get(0).getUsDate()), sd);
-                                    Date usEndDate = DateUtils.str2Date("2021-10-21 "+sdt.format(acs.get(acs.size() - 1).getUsDate()), sd);
-                                    if (usStartDate.getTime()>startDate.getTime()||usEndDate.getTime()<endDate.getTime()){
+                            if (oneUserShift.get(0).get("id").equals("0")) {
+                                at.setNotes("休");
+
+                            }else {
+                                at.setNotes("班");
+                                if (acs != null && acs.size() > 1) {//判断打卡记录是否有上下班
+                                    if (exitprio(acs).equals("1")) {//判断打卡记录是否异常,1,异常
                                         at.setIs("1");
+                                    } else {
+                                        Date startDate = DateUtils.str2Date("2021-10-21 " + oneUserShift.get(0).get("startDate"), sd);
+                                        Date endDate = DateUtils.str2Date("2021-10-21 " + oneUserShift.get(0).get("endDate"), sd);
+                                        Date usStartDate = DateUtils.str2Date("2021-10-21 " + sdt.format(acs.get(0).getUsDate()), sd);
+                                        Date usEndDate = DateUtils.str2Date("2021-10-21 " + sdt.format(acs.get(acs.size() - 1).getUsDate()), sd);
+                                        if (usStartDate.getTime() > startDate.getTime() || usEndDate.getTime() < endDate.getTime()) {
+                                            at.setIs("1");
+                                        }
                                     }
+                                } else {
+                                    at.setIs("1");
                                 }
-                            }else {
-                                at.setIs("1");
                             }
                         }
                     }else if (attendanceRule.getType().equals("3")){//规则类型 3,自由上下班
-                        String states="1";
-                        String[] split = attendanceRule.getWorkDay().split(",");//获取工作日
-                        Date da = DateUtils.str2Date(aDate, sdf);
-                        for (String day:split){
-                            if (day.equals(String.valueOf(da.getDay()))){
-                                states="2";
-                                break;
+                        if (jqw.equals("1")){//优先判断是否存在法定节假日
+                            at.setNotes("班");
+                            if (acs != null && acs.size() > 1) {//判断打卡记录是否有上下班
+                                if (exitprio(acs).equals("1")) {//判断打卡记录是否异常,1,异常
+                                    at.setIs("1");
+                                }
+                            } else {
+                                at.setIs("1");
+                            }
+                        }else if (jqw.equals("")) {
+                            String states = "1";
+                            String[] split = attendanceRule.getWorkDay().split(",");//获取工作日
+                            Date da = DateUtils.str2Date(aDate, sdf);
+                            for (String day : split) {
+                                if (day.equals(String.valueOf(da.getDay()))) {
+                                    states = "2";
+                                    break;
+                                }
                             }
-                        }
 
-                        if (states.equals("2")){
-                        if (acs!=null&&acs.size()>1){//判断打卡记录是否有上下班
-                            if (exitprio(acs).equals("1")){//判断打卡记录是否异常,1,异常
-                                at.setIs("1");
+                            if (states.equals("2")) {
+                                at.setNotes("班");
+                                if (acs != null && acs.size() > 1) {//判断打卡记录是否有上下班
+                                    if (exitprio(acs).equals("1")) {//判断打卡记录是否异常,1,异常
+                                        at.setIs("1");
+                                    }
+                                } else {
+                                    at.setIs("1");
+                                }
                             }
-                        }else {
-                            at.setIs("1");
-                        }
                         }
                     }
-                }
                     lit.add(at);
             }
         List<Vacation> vacation = vacationMapper.vacation(userid, date);//获取当前用户的假期数据

+ 15 - 19
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendanceRule/controller/AttendanceRuleController.java

@@ -147,7 +147,7 @@ public class AttendanceRuleController extends JeecgController<AttendanceRule, IA
 	@ApiOperation(value="打卡规则-编辑", notes="打卡规则-编辑")
 	@PutMapping(value = "/edit")
 	public Result<?> edit(@RequestBody AttendanceRule attendanceRule) throws IOException, ParseException {
-		List<UserRule>list=new ArrayList<>();
+		List<AttendanceRule>list=new ArrayList<>();
 		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
 		List<String> strings = Arrays.asList(attendanceRule.getUserId().split(","));
 		List<String>ids=new ArrayList<>();
@@ -155,10 +155,8 @@ public class AttendanceRuleController extends JeecgController<AttendanceRule, IA
 			ObjectMapper mapper=new ObjectMapper();
 			List ls = mapper.readValue(attendanceRule.getRuleType(), List.class);
 			Map one=(Map)ls.get(0);
-			Date date1 = DateUtils.parseDate(one.get("date").toString(), "yyyy-MM-dd HH:mm:ss");
-			String format = sdf.format(date1);
 			strings.forEach(s->{
-				userShiftService.deleteUserShift(s,format);
+				userShiftService.deleteUserShift(s,one.get("date").toString());
 			});
 			List<UserShift>lt=new ArrayList<>();
 			ls.forEach(str->{
@@ -177,21 +175,19 @@ public class AttendanceRuleController extends JeecgController<AttendanceRule, IA
 			});
 			userShiftService.saveBatch(lt);
 		}
-//		ids.add(attendanceRule.getId());
-//		userRuleService.delteusers(ids);
-//			if (attendanceRule.getUserId()!=null&&!attendanceRule.getUserId().equals("")){
-//				String[] split = attendanceRule.getUserId().split(",");
-//				for (String id:split){
-//					UserRule userRule=new UserRule();
-//					userRule.setUserId(id);
-//					userRule.setRuleId(attendanceRule.getId());
-//					list.add(userRule);
-//				}
-//				userRuleService.saveBatch(list);
-//				attendanceRule.setUserId("");
-//				attendanceRule.setUserName("");
-//			}
-//		attendanceRuleService.updateById(attendanceRule);
+
+		strings.forEach(str->{
+			AttendanceRule ar = attendanceRuleService.UserRule(str);
+			if (ar!=null) {
+				ar.setType(attendanceRule.getType());
+				ar.setStartDate(attendanceRule.getStartDate());
+				ar.setEndDate(attendanceRule.getEndDate());
+				ar.setWorkDay(attendanceRule.getWorkDay());
+				list.add(ar);
+			}
+		});
+		attendanceRuleService.updateBatchById(list);
+
 		return Result.OK("编辑成功!");
 	}
 	

+ 2 - 0
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendanceRule/mapper/AttendanceRuleMapper.java

@@ -22,4 +22,6 @@ public interface AttendanceRuleMapper extends BaseMapper<AttendanceRule> {
     AttendanceRule UserRule(@Param("userid")String userid);
 
     AttendanceRule UserRules(@Param("str")List<String> str);
+
+
 }

+ 5 - 2
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendanceRule/mapper/xml/AttendanceRuleMapper.xml

@@ -1,15 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.geke.attendanceRule.mapper.AttendanceRuleMapper">
+    <update id="updateRule">
+        update set   from geke_attendance_rule where user_id=#{attendanceRule.userId}
+    </update>
 
 
     <select id="AttendanceRuleByDept" resultType="org.jeecg.modules.geke.attendanceRule.entity.AttendanceRule">
         select *from geke_attendance_rule where  find_in_set(#{id},dept)
     </select>
     <select id="UserRule" resultType="org.jeecg.modules.geke.attendanceRule.entity.AttendanceRule">
-        select *from geke_attendance_rule a left join geke_user_rule b on a.id=b.rule_id where 1=1
+        select *from geke_attendance_rule where 1=1
           <if test="userid!=null and ''!=userid">
-             and  b.user_id=#{userid}
+             and  user_id=#{userid}
           </if>
     </select>
     <select id="UserRules" resultType="org.jeecg.modules.geke.attendanceRule.entity.AttendanceRule">

+ 1 - 0
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/shift/controller/ShiftController.java

@@ -75,6 +75,7 @@ public class ShiftController extends JeecgController<Shift, IShiftService> {
 	 @ApiOperation(value="班次档案-分页列表查询", notes="班次档案-分页列表查询")
 	 @GetMapping(value = "/lists")
 	 public Result<?> queryPageLists(Shift shift) {
+
 		 return Result.OK(shiftService.queryst());
 	 }
 

+ 3 - 1
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/shift/mapper/ShiftMapper.java

@@ -3,6 +3,7 @@ package org.jeecg.modules.geke.shift.mapper;
 import java.util.List;
 import java.util.Map;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.geke.shift.entity.Shift;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -16,5 +17,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 public interface ShiftMapper extends BaseMapper<Shift> {
 
     List<Map<String,Object>>listUserShift(@Param("userid") String userid,@Param("date") String date);
-    List<Map<String,Object>>query();
+    List<Map<String,Object>>query(Page<Map<String,Object>> page);
+    List<Map<String,Object>>querys();
 }

+ 4 - 0
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/shift/mapper/xml/ShiftMapper.xml

@@ -16,4 +16,8 @@
         select id,name,date_format(start_date,'%H:%i:%s') as 'startDate', date_format(end_date,'%H:%i:%s') as 'endDate' from geke_shift
 
     </select>
+    <select id="querys" resultType="java.util.Map">
+        select id,name,date_format(start_date,'%H:%i:%s') as 'startDate', date_format(end_date,'%H:%i:%s') as 'endDate' from geke_shift
+
+    </select>
 </mapper>

+ 1 - 1
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/shift/service/impl/ShiftServiceImpl.java

@@ -30,6 +30,6 @@ public class ShiftServiceImpl extends ServiceImpl<ShiftMapper, Shift> implements
 
     @Override
     public List<Map<String,Object>>queryst(){
-        return shiftMapper.query();
+        return shiftMapper.querys();
     }
 }

+ 1 - 0
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/statutoryleave/mapper/StatutoryLeaveMapper.java

@@ -13,5 +13,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @Version: V1.0
  */
 public interface StatutoryLeaveMapper extends BaseMapper<StatutoryLeave> {
+    StatutoryLeave getOne(@Param("date")String date);
 
 }

+ 6 - 0
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/statutoryleave/mapper/xml/StatutoryLeaveMapper.xml

@@ -2,4 +2,10 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.geke.statutoryleave.mapper.StatutoryLeaveMapper">
 
+    <select id="getOne" resultType="org.jeecg.modules.geke.statutoryleave.entity.StatutoryLeave">
+        select *from geke_statutory_leave where 1=1
+        <if test="date!=null and ''!=date">
+            and date_format(#{date},'%Y-%m-%d')  BETWEEN date_format(start_date,'%Y-%m-%d') AND date_format(end_date,'%Y-%m-%d')
+        </if>
+    </select>
 </mapper>

+ 2 - 1
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/statutoryleave/service/IStatutoryLeaveService.java

@@ -1,5 +1,6 @@
 package org.jeecg.modules.geke.statutoryleave.service;
 
+import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.geke.statutoryleave.entity.StatutoryLeave;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -10,5 +11,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @Version: V1.0
  */
 public interface IStatutoryLeaveService extends IService<StatutoryLeave> {
-
+    StatutoryLeave getOne(String date);
 }

+ 8 - 0
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/statutoryleave/service/impl/StatutoryLeaveServiceImpl.java

@@ -3,6 +3,7 @@ package org.jeecg.modules.geke.statutoryleave.service.impl;
 import org.jeecg.modules.geke.statutoryleave.entity.StatutoryLeave;
 import org.jeecg.modules.geke.statutoryleave.mapper.StatutoryLeaveMapper;
 import org.jeecg.modules.geke.statutoryleave.service.IStatutoryLeaveService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -15,5 +16,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  */
 @Service
 public class StatutoryLeaveServiceImpl extends ServiceImpl<StatutoryLeaveMapper, StatutoryLeave> implements IStatutoryLeaveService {
+        @Autowired
+    private StatutoryLeaveMapper statutoryLeaveMapper;
 
+
+    @Override
+    public StatutoryLeave getOne(String date) {
+        return statutoryLeaveMapper.getOne(date);
+    }
 }

+ 4 - 4
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userShift/mapper/UserShiftMapper.java

@@ -23,7 +23,7 @@ public interface UserShiftMapper extends BaseMapper<UserShift> {
     List<UserDept> getDepNamesByUserIds(@Param("userIds")List<String> userIds);
 
     //根据已有排班人员筛选未排班人员
-    List<Map<String,Object>>getUserNot(Page<Map<String,Object>> page,@Param("userids")List<String>userids);
+    List<Map<String,Object>>getUserNot(Page<Map<String,Object>> page,@Param("userids")List<String>userids,@Param("deptids") List<String>deptids,@Param("realname")String realname,@Param("dept")String dept);
 
   List<Map<String,Object>>getUserByids(@Param("ids")List<String>ids);
     /**
@@ -45,13 +45,13 @@ public interface UserShiftMapper extends BaseMapper<UserShift> {
 
     List<Map<String,Object>> getMothUserShifts(@Param("userid")String userid, @Param("date")String date);
 
-    List<Map<String,Object>>getUsers(Page<Map<String,Object>> page);
+    List<Map<String,Object>>getUsers(Page<Map<String,Object>> page,@Param("type")String type,@Param("deptids") List<String>deptids,@Param("realname")String realname,@Param("dept")String dept);
     //查询规则人员
-    List<String>getUserids();
+    List<String>getUserids(@Param("deptids") List<String>deptids,@Param("deptname")String deptname);
 
     int deleteUserids(@Param("userids") List<String>userids);
 
     List<String>uids(@Param("depts") List<String> depts);
 
-   Map<String,Object>ShiftCount(@Param("id")String id,@Param("date")String date);
+   Map<String,Object>ShiftCount(@Param("id")String id,@Param("date")String date,@Param("deptids")List<String>deptids);
 }

+ 62 - 6
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userShift/mapper/xml/UserShiftMapper.xml

@@ -7,7 +7,7 @@
     and user_id=#{userid}
 </if>
 <if test="date!=null and ''!=date">
-    and date_format(shift_date,'%Y-%m-%d')=date_format(#{date},'%Y-%m-%d')
+    and date_format(shift_date,'%Y-%m')=date_format(#{date},'%Y-%m')
 </if>
     </delete>
 
@@ -68,7 +68,27 @@ order by a.shift_date desc
         order by date_format(a.shift_date,'%Y-%m-%d') asc
     </select>
     <select id="getUsers" resultType="java.util.Map">
-    select a.id as 'rid',type,a.user_id as 'id', a.work_day as'workDay',b.realname from geke_attendance_rule a left join sys_user b on a.user_id=b.id
+    select distinct a.id as 'rid',type,a.user_id as 'id', a.work_day as'workDay',b.realname,a.start_date as'startDate',a.end_date as'endDate'
+    from geke_attendance_rule a
+    left join sys_user b on a.user_id=b.id
+    left join sys_user_depart c on b.id=c.user_id
+    left join sys_depart d on c.dep_id=d.id
+    where b.del_flag='0' and b.employment_status='10'
+    <if test="type!=null and ''!=type">
+        and a.type=#{type}
+    </if>
+<if test="deptids!=null and deptids.size()>0">
+    and c.dep_id in
+    <foreach collection="deptids" index="index" item="id" open="(" separator="," close=")">
+        #{id}
+    </foreach>
+</if>
+<if test="realname!=null and ''!=realname">
+    and b.realname  like concat(concat('%',#{realname}),'%')
+</if>
+        <if test="dept!=null and ''!=dept">
+            and d.depart_name  like concat(concat('%',#{dept}),'%')
+        </if>
     </select>
     <delete id="deleteUserids">
        delete from geke_user_shift where 1=1
@@ -92,19 +112,55 @@ order by a.shift_date desc
 
     </select>
     <select id="getUserNot" resultType="java.util.Map">
-        select id ,realname from sys_user where 1=1
+        select distinct a.id ,a.realname from sys_user a left join sys_user_depart b on a.id=b.user_id
+        left join sys_depart c on c.id=b.dep_id
+        where a.del_flag='0' and a.employment_status='10'
         <if test="userids!=null and userids.size()>0">
-            and id not in
+            and a.id not in
             <foreach collection="userids" index="index" item="id" open="(" separator="," close=")">
                 #{id}
             </foreach>
         </if>
+        <if test="deptids!=null and deptids.size()>0">
+            and b.dep_id in
+            <foreach collection="deptids" index="index" item="ids" open="(" separator="," close=")">
+                #{ids}
+            </foreach>
+        </if>
+        <if test="realname!=null and ''!=realname">
+            and a.realname like concat(concat('%',#{realname}),'%')
+        </if>
+        <if test="dept!=null and ''!=dept">
+            and c.depart_name like concat(concat('%',#{dept}),'%')
+        </if>
     </select>
     <select id="getUserids" resultType="java.lang.String">
-        select user_id from geke_user_rule
+        select distinct a.user_id from geke_attendance_rule a left join sys_user b on a.user_id=b.id
+         left join sys_user_depart c on b.id=c.user_id
+        left join sys_depart d on c.dep_id=d.id
+        where b.del_flag='0' and b.employment_status='10'
+        <if test="deptids!=null and deptids.size()>0">
+            and c.dep_id in
+            <foreach collection="deptids" index="index" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </if>
+<if test="deptname!=null and ''!=deptname">
+     and d.depart_name  like concat(concat('%',#{deptname}),'%')
+</if>
     </select>
     <select id="ShiftCount" resultType="java.util.Map">
-        select count(shift_id) as 'count' from geke_user_shift where 1=1
+        select count(shift_id) as 'count' from geke_user_shift a
+        left join (
+        select distinct a.id from sys_user a left join sys_user_depart b on a.id=b.user_id where a.del_flag='0' and a.employment_status='10'
+        <if test="deptids!=null and deptids.size()>0">
+            and b.dep_id in
+            <foreach collection="deptids" index="index" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </if>
+        ) c on a.user_id=c.id
+        where 1=1
         <if test="id!=null and ''!=id">
             and shift_id=#{id}
         </if>

+ 5 - 4
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userShift/service/IUserShiftService.java

@@ -36,12 +36,13 @@ public interface IUserShiftService extends IService<UserShift> {
 
     List<Map<String,Object>> getMothUserShifts(String userid, String date);
 
-    IPage<Map<String,Object>>mothUserShift(String date,Integer pageNo,Integer pageSize,String type) throws ParseException;
+    IPage<Map<String,Object>>mothUserShift(String date,Integer pageNo,Integer pageSize,String type,List<String>deptids,String name,String dept) throws ParseException;
 
     List<Map<String,Object>>mothUserShifts(String date,String type,String userid) throws ParseException;
-    IPage<Map<String,Object>>getUserNot(Page<Map<String,Object>> page,@Param("userids")List<String>userids);
+    IPage<Map<String,Object>>getUserNot(Page<Map<String,Object>> page,@Param("userids")List<String>userids,List<String>deptids,String realname,String dept);
 
-    IPage<Map<String,Object>> getUsers(Page<Map<String,Object>> page);
+    IPage<Map<String,Object>> getUsers(Page<Map<String,Object>> page,String type,List<String>deptids,String realname,String dept);
 
-    List<Map<String,Object>>mothUserByCount(String date) throws ParseException;
+    IPage<Map<String,Object>>mothUserByCount(Page<Map<String,Object>> page,String date,List<String>deptids) throws ParseException;
+    IPage<Map<String,Object>>query(Page<Map<String,Object>> page);
 }

+ 42 - 53
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userShift/service/impl/UserShiftServiceImpl.java

@@ -3,6 +3,7 @@ package org.jeecg.modules.geke.userShift.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.DateUtils;
@@ -122,38 +123,39 @@ public class UserShiftServiceImpl extends ServiceImpl<UserShiftMapper, UserShift
     }
 
     @Override
-    public IPage<Map<String, Object>> mothUserShift(String date,Integer pageNo,Integer pageSize,String type) throws ParseException {
+    public IPage<Map<String, Object>> mothUserShift(String date,Integer pageNo,Integer pageSize,String type,List<String>deptids,String name,String dept) throws ParseException {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         Page<Map<String, Object>> page = new Page<Map<String, Object>>(pageNo, pageSize);
         List<String>userids=new ArrayList<>();
         List<String> mySubDepIdsByDepId=null;
-        IPage<Map<String, Object>> users= getUsers(page);
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(sdf.parse(date));
+        IPage<Map<String, Object>> users=null;
 
-        int year = calendar.get(Calendar.YEAR);//年份
-        int month = calendar.get(calendar.MONTH) + 1;//月份
-        int actualMaximum = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);//获取前端传过来的时间获取月份的总天数
-        if (type.equals("1")) {
-            if (users.getRecords()!=null&&users.getRecords().size()>0) {
+        if (!type.equals("4")) {
+            users=getUsers(page,type,deptids,name,dept);
+            if (users.getRecords() != null && users.getRecords().size() > 0) {
                 users.getRecords().forEach(str -> {
                     userids.add(str.get("id").toString());
                 });
             }
-            if (userids != null) {
+            if (userids != null&&userids.size()>0) {
                 Map<String, String> dep = getDepNamesByUserIds(userids);
                 users.getRecords().forEach(st -> {
                     st.put("deptName", dep.get(st.get("id").toString()));
                 });
             }
-
+        }
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(sdf.parse(date));
+        int year = calendar.get(Calendar.YEAR);//年份
+        int month = calendar.get(calendar.MONTH) + 1;//月份
+        int actualMaximum = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);//获取前端传过来的时间获取月份的总天数
+        if (type.equals("2")) {
             for (int i = 1; i <= actualMaximum; i++) {
                 for (Map user : users.getRecords()) {
-
                     if (!user.get("type").equals("1") && !user.get("type").equals("3")) {
                         String shiftname = "";
                         List<Map<String, Object>> id = userShiftMapper.getOneUserShift(user.get("id").toString(), year + "-" + month + "-" + i, "");
-                        if (id.size() > 0) {
+                        if (id.size() > 0&&id!=null) {
                             if (id.get(0).get("id").equals("0") || id.get(0).get("id") == "0") {
                                 shiftname = "休息";
                             } else {
@@ -161,40 +163,22 @@ public class UserShiftServiceImpl extends ServiceImpl<UserShiftMapper, UserShift
                             }
                         }
                         user.put("a" + i, shiftname);
-                    } else {
-                        String[] workDays = user.get("workDay").toString().split(",");
-                        String d = year + "-" + month + "-" + i + " :00:00:00";
-                        Date dates = DateUtils.str2Date(d, sdf);
-                        String is = "0";
-                        String ts = String.valueOf(dates.getDay());
-                        for (String ws : workDays) {
-                            if (String.valueOf(dates.getDay()).equals(ws)) {
-                                is = "1";
-                            }
-                        }
-
-                        if (is.equals("1")) {
-                            user.put("a" + i, "班");
-                        } else {
-                            user.put("a" + i, "休");
-                        }
-                    }
+                   }
                 }
             }
-        }else if (type.equals("2")){
-            if (users.getRecords()!=null){
-                users.getRecords().forEach(s->{
-                    userids.add(s.get("id").toString());
+        }else if (type.equals("4")){
+            List<String> ids = userShiftMapper.getUserids(deptids,dept);
+            users = getUserNot(page, ids,deptids,name,dept);
+            if (users.getRecords() != null && users.getRecords().size() > 0) {
+                users.getRecords().forEach(str -> {
+                    userids.add(str.get("id").toString());
+                });
+                Map<String, String> dep = getDepNamesByUserIds(userids);
+                users.getRecords().forEach(st -> {
+                    st.put("deptName", dep.get(st.get("id").toString()));
                 });
             }
-            users = getUserNot(page, userids);
-                    users.getRecords().forEach(str->{
-                        userids.add(str.get("id").toString());
-                    });
-                    Map<String, String> dep = getDepNamesByUserIds(userids);
-                    users.getRecords().forEach(st -> {
-                        st.put("deptName", dep.get(st.get("id").toString()));
-                    });
+
         }
         return users;
     }
@@ -249,35 +233,35 @@ public class UserShiftServiceImpl extends ServiceImpl<UserShiftMapper, UserShift
     }
 
     @Override
-    public IPage<Map<String, Object>> getUserNot(Page<Map<String, Object>> page, List<String> userids) {
-        return page.setRecords(userShiftMapper.getUserNot(page,userids));
+    public IPage<Map<String, Object>> getUserNot(Page<Map<String, Object>> page, List<String> userids, List<String>deptids, String realname,String dept) {
+        return page.setRecords(userShiftMapper.getUserNot(page,userids,deptids,realname,dept));
     }
 
     @Override
-    public IPage<Map<String, Object>> getUsers(Page<Map<String, Object>> page) {
-        return page.setRecords(userShiftMapper.getUsers(page));
+    public IPage<Map<String, Object>> getUsers(Page<Map<String, Object>> page,String type,List<String>deptids,String realname,String dept) {
+        return page.setRecords(userShiftMapper.getUsers(page,type,deptids,realname,dept));
     }
 
     @Override
-    public List<Map<String, Object>> mothUserByCount(String date) throws ParseException {
+    public IPage<Map<String, Object>> mothUserByCount(Page<Map<String, Object>> page,String date,List<String>deptids) throws ParseException {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         Map<String,Object>mt=new HashMap<>();
         mt.put("id","0");
         mt.put("name","休息");
-        List<Map<String, Object>> query = shiftMapper.query();
-        query.add(mt);
+        IPage<Map<String, Object>> query = query(page);
+        query.getRecords().add(mt);
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(sdf.parse(date));
         int year = calendar.get(Calendar.YEAR);//年份
         int month = calendar.get(calendar.MONTH) + 1;//月份
         int actualMaximum = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);//获取前端传过来的时间获取月份的总天数
-       if (query.size()>0&&query!=null) {
+       if (query.getRecords().size()>0&&query.getRecords()!=null) {
            for (int i = 1; i <= actualMaximum; i++) {
                int c=i;
-               query.forEach(str->{
+               query.getRecords().forEach(str->{
                    String cout="0";
                    String d = year + "-" + month + "-" + c;
-                   Map<String, Object> maps = userShiftMapper.ShiftCount(str.get("id").toString(),d);
+                   Map<String, Object> maps = userShiftMapper.ShiftCount(str.get("id").toString(),d,deptids);
                    if (maps!=null&&maps.get("count")!=null&&!maps.get("count").equals("")){
                        cout=maps.get("count").toString();
                    }
@@ -287,4 +271,9 @@ public class UserShiftServiceImpl extends ServiceImpl<UserShiftMapper, UserShift
        }
         return query;
     }
+
+    @Override
+    public IPage<Map<String, Object>> query(Page<Map<String, Object>> page) {
+        return page.setRecords(shiftMapper.query(page));
+    }
 }

+ 101 - 43
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java

@@ -255,6 +255,7 @@ public class SysUserController {
         if(userIds!=null && userIds.size()>0){
             Map<String,String>  useDepNames = sysUserService.getDepNamesByUserIds(userIds);
             pageList.getRecords().forEach(item->{
+                String bankCard = item.getBankCard();
                 item.setOrgCodeTxt(useDepNames.get(item.getId()));
                 List<String> orgName = sysUserService.getOrgName(item.getId());
                 if (orgName!=null&&orgName.size()>0){
@@ -282,7 +283,11 @@ public class SysUserController {
             CodeVo codeVo=new CodeVo();
             codeVo.setSeqName("工号编码");
             sysUserMapper.getNextNo(codeVo);
-            user.setWorkNo(String.valueOf(codeVo.getSeqNo()));
+            if(user.getCategory().equals(105)||user.getCategory().equals(106)){
+                user.setWorkNo("WB"+String.valueOf(codeVo.getSeqNo()));
+            }else {
+                user.setWorkNo(String.valueOf(codeVo.getSeqNo()));
+            }
             user.setCode(String.valueOf(codeVo.getSeqNo()));
             user.setId(String.valueOf(codeVo.getSeqNo()));
             user.setUsername(String.valueOf(codeVo.getSeqNo()));
@@ -615,11 +620,11 @@ public class SysUserController {
 
        }
         //导出文件名称
-        mv.addObject(NormalExcelConstants.FILE_NAME, "用户列表");
+        mv.addObject(NormalExcelConstants.FILE_NAME, "员工列表");
         mv.addObject(NormalExcelConstants.CLASS, SysUser.class);
 		LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
 
-        ExportParams exportParams = new ExportParams("用户列表数据", "导出人:"+user.getRealname(), "导出信息");
+        ExportParams exportParams = new ExportParams("员工列表数据", "导出人:"+user.getRealname(), "导出信息");
         exportParams.setImageBasePath(upLoadPath);
         mv.addObject(NormalExcelConstants.PARAMS, exportParams);
         mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
@@ -656,10 +661,21 @@ public class SysUserController {
                     CodeVo codeVo=new CodeVo();
                     codeVo.setSeqName("工号编码");
                     sysUserMapper.getNextNo(codeVo);
-                    sysUserExcel.setWorkNo(String.valueOf(codeVo.getSeqNo()));
-                    sysUserExcel.setCode(String.valueOf(codeVo.getSeqNo()));
-                    sysUserExcel.setId(String.valueOf(codeVo.getSeqNo()));
-                    sysUserExcel.setUsername(String.valueOf(codeVo.getSeqNo()));
+                    String workNo=String.valueOf(codeVo.getSeqNo());
+                    if (sysUserExcel.getCategory()!=null&&!sysUserExcel.getCategory().equals("")){
+                        if (sysUserExcel.getCategory().equals(105)||sysUserExcel.getCategory().equals(106)){
+                            workNo="WB"+String.valueOf(codeVo.getSeqNo());
+                        }
+                    }else {
+                        sysUserExcel.setCategory(101);
+                    }
+                    sysUserExcel.setWorkNo(workNo);
+                    sysUserExcel.setCode(workNo);
+                    sysUserExcel.setId(workNo);
+                    if (sysUserExcel.getEmploymentStatus()==null||sysUserExcel.getEmploymentStatus().equals("")){
+                        sysUserExcel.setEmploymentStatus(10);
+                    }
+                    sysUserExcel.setUsername(workNo);
                     if (StringUtils.isBlank(sysUserExcel.getPassword())) {
                         // 密码默认为 “123456”
                         sysUserExcel.setPassword("123456");
@@ -1598,28 +1614,30 @@ public class SysUserController {
 
 
 
-    //发邮件
+    //获取银行卡
     @RequestMapping(value = "/sendEamilCode", method = RequestMethod.GET)
-    public String sendEamilCode(String email) {
-        String emailCode = emailUtils.emailTo(email);
-        if (!emailCode.equals("0")){
-            redisUtil.set(email,emailCode,60);
+    public String sendEamilCode(String userid) {
+        String card="";
+        SysUser ones = sysUserService.getOnes(userid);
+        if (ones!=null){
+            card=ones.getBankCard().substring(0,4);
         }
-        return emailCode;//返回验证码
+        return card;//返回验证码
     }
     //邮箱验证
     @RequestMapping(value = "/GetEamilCode", method = RequestMethod.GET)
-    public String TPEamilCode(String email,String emailCode){
-        String msg="ok";
-        Object o = redisUtil.get(email);
-        if (!o.equals("")&&o!=null){
-            if (!emailCode.equals(o)){
-                msg="err";
-            }else {
-                redisUtil.del(email);
+    public String TPEamilCode(String userid,String card){
+        String msg="err";
+        SysUser ones = sysUserService.getOnes(userid);
+        if (ones!=null){
+            if (ones.getBankCard()!=null&&!ones.getBankCard().equals("")){
+                String bankCard = ones.getBankCard();
+                String substring = bankCard.substring(bankCard.length() - 4, bankCard.length());
+                if (card.equals(substring)){
+                    msg="ok";
+                }
+
             }
-        }else {
-            msg="err";
         }
         return msg;
     }
@@ -1678,23 +1696,36 @@ public class SysUserController {
     @GetMapping(value = "/queryMothByUser")
     public Result<?> queryMothByUser(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                      @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-                                     HttpServletRequest req, UserShift userShift,String deptid,String usertid,String type,String ruleid) throws ParseException {
-//        String deptids="";
-//        List<String> userids=null;
-//        List<String> mySubDepIdsByDepId=null;
-//        if (deptid!=null&&!deptid.equals("")){
-//            mySubDepIdsByDepId=Arrays.asList(deptid.split(","));
-//        }if (usertid!=null&&!usertid.equals("")){
-//            userids=Arrays.asList(usertid.split(","));
-//        }if (type.equals("1")||type=="1"){
-//            userids=new ArrayList<>();
-//            List<Map<String, Object>> users = userRuleService.users(ruleid);
-//            for (Map ids:users){
-//                userids.add(ids.get("id").toString());
-//            }
-//        }
-
-        IPage<Map<String, Object>> maps = userShiftService.mothUserShift(DateUtils.formatDate(userShift.getShiftDate()),pageNo,pageSize,type);
+                                     HttpServletRequest req, UserShift userShift,String name,String dept,String deptid,String usertid,String type,String ruleid) throws ParseException {
+        String deptids="";
+        String state="0";
+        List<String> mySubDepIdsByDepId=null;
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        List<SysUserRole> userRole = sysUserRoleService.list(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, sysUser.getId()));
+        if (userRole!=null&&userRole.size()>0){
+            for (SysUserRole role:userRole){
+                if (role.getRoleId().equals("1462659329857978370")){
+                    List<SysDepart> list = this.sysDepartService.queryUserDeparts(sysUser.getId());
+                    for (SysDepart depart:list){
+                        deptids+=depart.getId()+",";
+                        if (depart.getId().equals("1")){
+                            state="1";
+                        }
+                    }
+                    if (state.equals("0")){
+                        mySubDepIdsByDepId = sysDepartService.getMySubDepIdsByDepId(deptids);
+                    }
+                }
+            }
+        }
+        Date shiftDate = userShift.getShiftDate();
+        String date="";
+        if (shiftDate!=null){
+            date=DateUtils.formatDate(userShift.getShiftDate());
+        }else {
+            date=DateUtils.formatDate(new Date());
+        }
+        IPage<Map<String, Object>> maps = userShiftService.mothUserShift(date,pageNo,pageSize,type,mySubDepIdsByDepId,name,dept);
         return Result.OK(maps);
     }
 
@@ -1706,11 +1737,38 @@ public class SysUserController {
     }
 
     @PostMapping(value = "/queryMothByCount")
-    public Result<?> queryMothByCount(@RequestBody UserShift userShift) throws ParseException {
+    public Result<?> queryMothByCount(@RequestBody UserShift userShift,@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+                                      @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+                                      HttpServletRequest req) throws ParseException {
+        String deptids="";
+        String state="0";
+        List<String> mySubDepIdsByDepId=null;
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        List<SysUserRole> userRole = sysUserRoleService.list(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, sysUser.getId()));
+        if (userRole!=null&&userRole.size()>0){
+            for (SysUserRole role:userRole){
+                if (role.getRoleId().equals("1462659329857978370")){
+                    List<SysDepart> list = this.sysDepartService.queryUserDeparts(sysUser.getId());
+                    for (SysDepart depart:list){
+                        deptids+=depart.getId()+",";
+                        if (depart.getId().equals("1")){
+                            state="1";
+                        }
+                    }
+                    if (state.equals("0")){
+                        mySubDepIdsByDepId = sysDepartService.getMySubDepIdsByDepId(deptids);
+                    }
+                }
+            }
+        }
+        Page<Map<String, Object>> page = new Page<Map<String, Object>>(Integer.parseInt(userShift.getUserId()), Integer.parseInt(userShift.getShiftId()));
         Date shiftDate = userShift.getShiftDate();
+        if (shiftDate==null){
+            shiftDate=new Date();
+        }
        String s= DateUtils.formatDate(userShift.getShiftDate(),"yyyy-MM-dd HH:mm:ss");
-        List<Map<String, Object>> maps = userShiftService.mothUserByCount(s);
-        return Result.OK(maps);
+        IPage<Map<String, Object>> mapIPage = userShiftService.mothUserByCount(page, s, mySubDepIdsByDepId);
+        return Result.OK(mapIPage);
     }
 
 

+ 20 - 8
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUser.java

@@ -2,15 +2,13 @@ package org.jeecg.modules.system.entity;
 
 import java.util.Date;
 
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecg.modules.system.util.AESEncryptHandler;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.annotation.JsonFormat;
 
 import java.io.Serializable;
@@ -30,6 +28,7 @@ import lombok.experimental.Accessors;
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
+@TableName(autoResultMap = true)
 public class SysUser implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -92,8 +91,10 @@ public class SysUser implements Serializable {
      */
     private String avatar;
 
-
-
+    /**
+     * 证件类型(1中国身份证,2其他身份证)
+     */
+    private String sfzType;
 
     /**
      * 人员编码
@@ -137,8 +138,8 @@ public class SysUser implements Serializable {
     @Excel(name = "*部门", width = 15)
     private transient String orgCodeTxt;
 
-
     @Excel(name = "银行账号", width = 15)
+    @TableField(typeHandler = AESEncryptHandler.class)
     private String bankCard;
 
 
@@ -264,7 +265,18 @@ public class SysUser implements Serializable {
     /**设备id uniapp推送用*/
     private String clientId;
 
-
+    /**
+     * 基本工资一
+     */
+    private  String wagesOne;
+    /**
+     * 基本工资二
+     */
+    private  String wagesTwo;
+    /**
+     * 社保基数
+     */
+    private  String security;
     /**出生日期**/
     //@Excel(name="出生日期",width = 15,format = "yyyy-MM-dd")
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")

+ 8 - 5
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml

@@ -13,6 +13,9 @@
 		<result column="avatar" jdbcType="VARCHAR" property="avatar" />
 	</resultMap>
 
+	<resultMap id="userMap" type="org.jeecg.modules.system.entity.SysUser">
+		<result column="bank_card" property="bankCard" typeHandler="org.jeecg.modules.system.util.AESEncryptHandler" />
+	</resultMap>
 	<insert id="student">
 		insert into student (id,name,sex)
 		values
@@ -44,7 +47,7 @@
 	</select>
 
 	<!-- 通过多个部门IDS,查询部门下的用户信息 -->
-	<select id="getUserByDepIds" resultType="org.jeecg.modules.system.entity.SysUser">
+	<select id="getUserByDepIds" resultMap="userMap">
 		select * from sys_user where del_flag = 0
 		<if test="departIds!=null  and departIds.size()>0">
 			and id in (select user_id from sys_user_depart where dep_id in
@@ -59,7 +62,7 @@
 	</select>
 
 	<!-- 根据角色Id查询 -->
-	<select id="getUserByRoleId" resultType="org.jeecg.modules.system.entity.SysUser">
+	<select id="getUserByRoleId" resultMap="userMap">
 		select * from sys_user where del_flag = 0 and id in (select user_id from sys_user_role where role_id=#{roleId})
 		<if test="username!=null and username!=''">
 			and work_no LIKE concat(concat('%',#{username}),'%')
@@ -285,8 +288,8 @@ on a.depart_name=b.orgCodeTxt
 			 and  user_id=#{userid}
 		 </if>
 	</select>
-	<select id="getOnes" resultType="org.jeecg.modules.system.entity.SysUser">
-		SELECT id,username,realname,password,salt,avatar,birthday,sex,email,phone,org_code,status,del_flag,work_no,post,telephone,create_by,create_time,update_by,update_time,activiti_sync,user_identity,depart_ids,rel_tenant_ids,client_id,eg_name,birth_date,entry_date,urgent_name,urgent_phone
+	<select id="getOnes" resultMap="userMap">
+		SELECT id,username,realname,password,salt,avatar,birthday,sex,email,phone,org_code,status,del_flag,work_no,post,telephone,create_by,create_time,update_by,update_time,activiti_sync,user_identity,depart_ids,rel_tenant_ids,client_id,eg_name,birth_date,entry_date,urgent_name,urgent_phone,bank_card
 		FROM sys_user
 		WHERE 1=1
 		<if test="id!=null and ''!=id">
@@ -416,7 +419,7 @@ on a.depart_name=b.orgCodeTxt
 		CALL nextSeqNo(#{seqName,mode=IN},#{seqNo,mode=OUT,jdbcType=BIGINT})
 	</select>
 
-	<select id="kQueryUser"  resultType="org.jeecg.modules.system.entity.SysUser">
+	<select id="kQueryUser"  resultMap="userMap">
 		select DISTINCT a.*from sys_user a
 		left join sys_user_depart b on a.id=b.user_id
 		left join sys_depart c on b.dep_id=c.id

+ 2 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/WeixinUserImpl.java

@@ -214,6 +214,8 @@ public class WeixinUserImpl implements IWeixinUserService{
             sysUser.setUsername(ls.getUserid());
             sysUser.setWorkNo(workNo);
             sysUser.setDepartIds(depids);
+            sysUser.setCategory(101);
+            sysUser.setEmploymentStatus(10);
             Boolean add = sysUserService.add(sysUser,sysUserRole);
         }catch (Exception e){
             e.printStackTrace();

+ 65 - 68
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/AES.java

@@ -1,87 +1,84 @@
 package org.jeecg.modules.system.util;
-
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
 import org.apache.commons.codec.binary.Base64;
-
 import javax.crypto.Cipher;
-import javax.crypto.KeyGenerator;
 import javax.crypto.spec.IvParameterSpec;
 import javax.crypto.spec.SecretKeySpec;
-import java.security.AlgorithmParameters;
-import java.security.Key;
-import java.security.Security;
-
-/**
- * @author xiaoqiang
- * @Description 参考博客找不到了--------------
- * @date 2019/5/7 15:44
- */
-public class AES {
-
-    // 算法名
-    public static final String KEY_NAME = "AES";
-    // 加解密算法/模式/填充方式
-    // ECB模式只用密钥即可对数据进行加密解密,CBC模式需要添加一个iv
-    public static final String CIPHER_ALGORITHM = "AES/CBC/PKCS7Padding";
 
+public class AES{
+    // 密钥
+    public static String key = "AD42F6697B035B7580E4FEF93BE20BAD";
+    private static String charset = "utf-8";
+    // 偏移量
+    private static int offset = 16;
+    private static String transformation = "AES/CBC/PKCS5Padding";
+    private static String algorithm = "AES";
     /**
-     * 微信 数据解密<br/>
-     * 对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充<br/>
-     * 对称解密的目标密文:encrypted=Base64_Decode(encryptData)<br/>
-     * 对称解密秘钥:key = Base64_Decode(session_key),aeskey是16字节<br/>
-     * 对称解密算法初始向量:iv = Base64_Decode(iv),同样是16字节<br/>
+     * 加密
      *
-     * @param encrypted 目标密文
-     * @param session_key 会话ID
-     * @param iv 加密算法的初始向量
+     * @param content
+     * @return
      */
-    public static JSONObject wxDecrypt(String encrypted, String session_key, String iv) {
-        String json = null;
-        byte[] encrypted64 = Base64.decodeBase64(encrypted);
-        byte[] key64 = Base64.decodeBase64(session_key);
-        byte[] iv64 = Base64.decodeBase64(iv);
-        byte[] data;
-        try {
-            init();
-            json = new String(decrypt(encrypted64, key64, generateIV(iv64)));
-        } catch (Exception e) {
-            System.out.println("解密微信手机号失败:" + e.getMessage());
-        }
-        return JSONUtil.parseObj(json);
+    public static String encrypt(String content) {
+        return encrypt(content, key);
     }
-
     /**
-     * 初始化密钥
+     * 解密
+     *
+     * @param content
+     * @return
      */
-    public static void init() throws Exception {
-        Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
-        KeyGenerator.getInstance(KEY_NAME).init(128);
+    public static String decrypt(String content) {
+        return decrypt(content, key);
     }
-
     /**
-     * 生成iv
+     * 加密
+     *
+     * @param content 需要加密的内容
+     * @param key     加密密码
+     * @return
      */
-    public static AlgorithmParameters generateIV(byte[] iv) throws Exception {
-        // iv 为一个 16 字节的数组,这里采用和 iOS 端一样的构造方法,数据全为0
-        // Arrays.fill(iv, (byte) 0x00);
-        AlgorithmParameters params = AlgorithmParameters.getInstance(KEY_NAME);
-        params.init(new IvParameterSpec(iv));
-        return params;
+    public static String encrypt(String content, String key) {
+        try {
+            SecretKeySpec skey = new SecretKeySpec(key.getBytes(), algorithm);
+            IvParameterSpec iv = new IvParameterSpec(key.getBytes(), 0, offset);
+            Cipher cipher = Cipher.getInstance(transformation);
+            byte[] byteContent = content.getBytes(charset);
+            cipher.init(Cipher.ENCRYPT_MODE, skey, iv);// 初始化
+            byte[] result = cipher.doFinal(byteContent);
+            return new Base64().encodeToString(result); // 加密
+        } catch (Exception e) {
+            // LogUtil.exception(e);
+        }
+        return null;
     }
-
     /**
-     * 生成解密
+     * AES(256)解密
+     *
+     * @param content 待解密内容
+     * @param key     解密密钥
+     * @return 解密之后
+     * @throws Exception
      */
-    public static byte[] decrypt(byte[] encryptedData, byte[] keyBytes, AlgorithmParameters iv)
-            throws Exception {
-        Key key = new SecretKeySpec(keyBytes, KEY_NAME);
-        Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
-        // 设置为解密模式
-        cipher.init(Cipher.DECRYPT_MODE, key, iv);
-        return cipher.doFinal(encryptedData);
+    public static String decrypt(String content, String key) {
+        try {
+            SecretKeySpec skey = new SecretKeySpec(key.getBytes(), algorithm);
+            IvParameterSpec iv = new IvParameterSpec(key.getBytes(), 0, offset);
+            Cipher cipher = Cipher.getInstance(transformation);
+            cipher.init(Cipher.DECRYPT_MODE, skey, iv);// 初始化
+            byte[] result = cipher.doFinal(new Base64().decode(content));
+            return new String(result); // 解密
+        } catch (Exception e) {
+            //LogUtil.exception(e);
+        }
+        return null;
     }
-
-
-
-}
+    public static void main(String[] args) throws Exception {
+        String s = "hello world";
+        // 加密
+        System.out.println("加密前:" + s);
+        String encryptResultStr = encrypt(s);
+        System.out.println("加密后:" + encryptResultStr);
+        // 解密
+        System.out.println("解密后:" + decrypt(encryptResultStr));
+    }
+}

+ 9 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/vo/WeixinUser.java

@@ -14,6 +14,7 @@ public class WeixinUser<extattr> {
     private  String position;//职务信息
     private  String gender;//性别
     private  String email;//邮箱
+    private  String biz_mail;//
     private  String avatar;//头像url
     private  String telephone;//座机
     private  String alias;//别名
@@ -34,6 +35,14 @@ public class WeixinUser<extattr> {
     private  String external_position;
     private List<Object> direct_leader=new ArrayList<>();
 
+    public String getBiz_mail() {
+        return biz_mail;
+    }
+
+    public void setBiz_mail(String biz_mail) {
+        this.biz_mail = biz_mail;
+    }
+
     public String getExternal_position() {
         return external_position;
     }