LiGuang 3 년 전
부모
커밋
0291369ab9
19개의 변경된 파일331개의 추가작업 그리고 91개의 파일을 삭제
  1. 1 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendance/mapper/AttendanceMapper.java
  2. 97 75
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendance/service/impl/AttendanceServiceImpl.java
  3. 44 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendanceRule/controller/AttendanceRuleController.java
  4. 1 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendanceRule/mapper/AttendanceRuleMapper.java
  5. 10 3
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendanceRule/mapper/xml/AttendanceRuleMapper.xml
  6. 1 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendanceRule/service/IAttendanceRuleService.java
  7. 1 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendanceRule/service/impl/AttendanceRuleServiceImpl.java
  8. 4 0
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userShift/mapper/UserShiftMapper.java
  9. 20 0
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userShift/mapper/xml/UserShiftMapper.xml
  10. 4 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userShift/service/IUserShiftService.java
  11. 10 0
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userShift/service/impl/UserShiftServiceImpl.java
  12. 1 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/vacation/mapper/VacationMapper.java
  13. 5 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
  14. 4 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserRoleMapper.java
  15. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
  16. 3 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserRoleService.java
  17. 3 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IWeixinUserService.java
  18. 5 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserRoleServiceImpl.java
  19. 116 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/WeixinUserImpl.java

+ 1 - 1
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendance/mapper/AttendanceMapper.java

@@ -32,5 +32,5 @@ public interface AttendanceMapper extends BaseMapper<Attendance> {
      * @return
      */
     int DeleteDateAttendance(@Param("StartDate")String StartDate,@Param("EndDate")String EndDate,@Param("userids")List<String> userids);
-    Map<String,Object> getOneWork(@Param("userId")String userId, @Param("date")String date);
+   List< Map<String,Object>> getOneWork(@Param("userId")String userId, @Param("date")String date);
 }

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

@@ -69,15 +69,11 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
                 ed="1";
             }else {
                 List<UserDept> depNamesByUserIds = userShiftMapper.getDepNamesByUserIds(Arrays.asList(userid.split(",")));
-                String str=" and ";
-                for (int i=0;i<depNamesByUserIds.size();i++){
-                    if (i<depNamesByUserIds.size()-1){
-                        str+="find_in_set("+depNamesByUserIds.get(i).getId()+",dept) or";
-                    }else {
-                        str+="find_in_set("+depNamesByUserIds.get(i).getId()+",dept)";
-                    }
-                }
-                AttendanceRule attendanceRule1 = attendanceRuleService.UserRules(str);
+                List<String>deps=new ArrayList<>();
+               depNamesByUserIds.forEach(st->{
+                   deps.add(st.getId());
+               });
+                AttendanceRule attendanceRule1 = attendanceRuleService.UserRules(deps);
                 if (attendanceRule1!=null){
                     attendanceRule=attendanceRule1;
                     ed="1";
@@ -134,12 +130,23 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
                         }
                     }
                 }else if (attendanceRule.getType().equals("3")){//规则类型 3,自由上下班
-                    if (attendances!=null&&attendances.size()>1){//判断打卡记录是否有上下班
-                        if (exitprio(attendances).equals("1")){//判断打卡记录是否异常,1,异常
-                            cont="1";
+                    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";
                         }
-                    }else {
-                        cont="1";
                     }
                 }
             }
@@ -151,31 +158,27 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
                 List<Attendance> acs = attendanceMapper.queryList(userid, aDate);
                 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(",")));
-                    String str="where ";
-                    for (int is=0;i<depNamesByUserIds.size();is++){
-                        if (is<depNamesByUserIds.size()-1){
-                            str+="find_in_set("+depNamesByUserIds.get(is).getId()+",dept) or";
-                        }else {
-                            str+="find_in_set("+depNamesByUserIds.get(is).getId()+",dept)";
-                        }
-                    }
-                    AttendanceRule attendanceRule1 = attendanceRuleService.UserRules(str);
-                    if (attendanceRule1!=null){
-                        attendanceRules=attendanceRule1;
-                        eds="1";
-                    }
-                }
-
-
-                if (eds.equals("1")){
-                    if (attendanceRules.getType().equals("1")){//判断规则类型1,固定时间上下班
+//                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")){
+                    if (attendanceRule.getType().equals("1")){//判断规则类型1,固定时间上下班
                         String state="1";
-                        String[] split = attendanceRules.getWorkDay().split(",");//获取工作日
+                        String[] split = attendanceRule.getWorkDay().split(",");//获取工作日
                         Date da = DateUtils.str2Date(aDate, sdf);
                         for (String day:split){
                             if (day.equals(String.valueOf(da.getDay()))){
@@ -188,8 +191,8 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
                                 if (exitprio(acs).equals("1")){//判断打卡记录是否异常,1,异常
                                     at.setIs("1");
                                 }else {
-                                    Date startDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendanceRules.getStartDate()), sd);
-                                    Date endDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendanceRules.getEndDate()), sd);
+                                    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()){
@@ -201,8 +204,8 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
                             }
                         }
 
-                    }else  if (attendanceRules.getType().equals("2")){//规则类型 2,按班次上下班
-                        List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, date,"");
+                    }else  if (attendanceRule.getType().equals("2")){//规则类型 2,按班次上下班
+                        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,异常
@@ -220,7 +223,18 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
                                 at.setIs("1");
                             }
                         }
-                    }else if (attendanceRules.getType().equals("3")){//规则类型 3,自由上下班
+                    }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 (states.equals("2")){
                         if (acs!=null&&acs.size()>1){//判断打卡记录是否有上下班
                             if (exitprio(acs).equals("1")){//判断打卡记录是否异常,1,异常
                                 at.setIs("1");
@@ -228,12 +242,13 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
                         }else {
                             at.setIs("1");
                         }
+                        }
                     }
                 }
                     lit.add(at);
             }
-            Vacation vacation = vacationMapper.vacation(userid, date);//获取当前用户的假期数据
-        Map<String, Object> oneWork = attendanceMapper.getOneWork(userid, date);
+        List<Vacation> vacation = vacationMapper.vacation(userid, date);//获取当前用户的假期数据
+        List< Map<String,Object>> oneWork = attendanceMapper.getOneWork(userid, date);
         map.put("date",attendances);
         map.put("data",vacation);
         map.put("day",lit);
@@ -259,31 +274,27 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
         int year = calendar.get(calendar.YEAR);//年份
         int month = calendar.get(calendar.MONTH) + 1;//月份
         int actualMaximum = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
-                for (int i = 1; i <= actualMaximum; i++){
-                    String aDate = String.valueOf(year) + "-" + month + "-" + i;//循环拼接所有天数进行查询是否正常
-                    List<Attendance> acs = attendanceMapper.queryList(userid, aDate);
-                    String eds="0";
-                    AttendanceRule attendanceRules = attendanceRuleService.UserRule(userid);
-                    if (attendanceRules!=null){
-                        eds="1";
-                    }else {
-                        List<UserDept> depNamesByUserIds = userShiftMapper.getDepNamesByUserIds(Arrays.asList(userid.split(",")));
-                        String str="where ";
-                        for (int is=0;i<depNamesByUserIds.size();is++){
-                            if (is<depNamesByUserIds.size()-1){
-                                str+="find_in_set("+depNamesByUserIds.get(is).getId()+",dept) or";
-                            }else {
-                                str+="find_in_set("+depNamesByUserIds.get(is).getId()+",dept)";
-                            }
-                        }
-                        AttendanceRule attendanceRule1 = attendanceRuleService.UserRules(str);
-                        if (attendanceRule1!=null){
-                            attendanceRules=attendanceRule1;
-                            eds="1";
-                        }
-                    }
 
+        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";
+            }
+        }
 
+        for (int i = 1; i <= actualMaximum; i++){
+                    String aDate = String.valueOf(year) + "-" + month + "-" + i;//循环拼接所有天数进行查询是否正常
+                    List<Attendance> acs = attendanceMapper.queryList(userid, aDate);
                     if (eds.equals("1")){
                         if (attendanceRules.getType().equals("1")){//判断规则类型1,固定时间上下班
                             String state="1";
@@ -317,7 +328,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
                             }
 
                         }else  if (attendanceRules.getType().equals("2")){//规则类型 2,按班次上下班
-                            List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, date,"");
+                            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,异常
@@ -339,14 +350,25 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
                                 }
                             }
                         }else if (attendanceRules.getType().equals("3")){//规则类型 3,自由上下班
-                            if (acs!=null&&acs.size()>1){//判断打卡记录是否有上下班
-                                if (exitprio(acs).equals("1")){//判断打卡记录是否异常,1,异常
-                                    sum="1";
+                            String states="1";
+                            String[] split = attendanceRules.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,异常
+                                        sum = "1";
+                                        break;
+                                    }
+                                } else {
+                                    sum = "1";
                                     break;
                                 }
-                            }else {
-                                sum="1";
-                                break;
                             }
                         }
                     }

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

@@ -20,6 +20,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.modules.geke.userRule.entity.UserRule;
 import org.jeecg.modules.geke.userRule.service.IUserRuleService;
+import org.jeecg.modules.geke.userShift.service.IUserShiftService;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
@@ -51,6 +52,9 @@ public class AttendanceRuleController extends JeecgController<AttendanceRule, IA
 
 	@Autowired
 	private IUserRuleService userRuleService;
+
+	@Autowired
+	private IUserShiftService userShiftService;
 	/**
 	 * 分页列表查询
 	 *
@@ -155,10 +159,29 @@ public class AttendanceRuleController extends JeecgController<AttendanceRule, IA
 	@ApiOperation(value="打卡规则-通过id删除", notes="打卡规则-通过id删除")
 	@DeleteMapping(value = "/delete")
 	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
+		AttendanceRule byId = attendanceRuleService.getById(id);
 		attendanceRuleService.removeById(id);
 			List<String>ids=new ArrayList<>();
+			List<String>userids=new ArrayList<>();
 			ids.add(id);
 			userRuleService.delteusers(ids);
+		if (byId.getType().equals("2")){
+			if (byId.getRuleType().equals("2")){
+				List<String> uids = userShiftService.uids(Arrays.asList(byId.getDept().split(",")));
+				if (uids!=null&&uids.size()>0){
+					userids.addAll(uids);
+				}
+			}
+			else {
+				List<Map<String, Object>> users = userRuleService.users(id);
+				if (users != null && users.size() > 0 && users.get(0).get("id") != null && !users.get(0).get("id").equals("")) {
+					users.forEach(str -> {
+						userids.add(str.get("id").toString());
+					});
+				}
+			}
+			userShiftService.deleteUserids(userids);
+		}
 		return Result.OK("删除成功!");
 	}
 	
@@ -172,8 +195,28 @@ public class AttendanceRuleController extends JeecgController<AttendanceRule, IA
 	@ApiOperation(value="打卡规则-批量删除", notes="打卡规则-批量删除")
 	@DeleteMapping(value = "/deleteBatch")
 	public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+			Arrays.asList(ids.split(",")).forEach(str->{
+				List<String>userids=new ArrayList<>();
+				AttendanceRule byId = attendanceRuleService.getById(str);
+				if (byId.getType().equals("2")){
+					if (byId.getRuleType().equals("2")){
+						List<String> uids = userShiftService.uids(Arrays.asList(byId.getDept().split(",")));
+						if (uids!=null&&uids.size()>0){
+							userids.addAll(uids);
+						}
+					}else {
+						List<Map<String, Object>> users = userRuleService.users(str);
+						if (users != null && users.size() > 0 && users.get(0).get("id") != null && !users.get(0).get("id").equals("")) {
+							users.forEach(strs -> {
+								userids.add(strs.get("id").toString());
+							});
+						}
+					}
+					userShiftService.deleteUserids(userids);
+				}
+		});
 		this.attendanceRuleService.removeByIds(Arrays.asList(ids.split(",")));
-			userRuleService.delteusers(Arrays.asList(ids.split(",")));
+		userRuleService.delteusers(Arrays.asList(ids.split(",")));
 		return Result.OK("批量删除成功!");
 	}
 	

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

@@ -21,5 +21,5 @@ public interface AttendanceRuleMapper extends BaseMapper<AttendanceRule> {
     //查询用户的考勤规则
     AttendanceRule UserRule(@Param("userid")String userid);
 
-    AttendanceRule UserRules(@Param("str")String str);
+    AttendanceRule UserRules(@Param("str")List<String> str);
 }

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

@@ -13,9 +13,16 @@
           </if>
     </select>
     <select id="UserRules" resultType="org.jeecg.modules.geke.attendanceRule.entity.AttendanceRule">
-        select *from geke_attendance_rule where 1=1
-        <if test="str!=null and ''!=str">
-            #{str}
+        select *from geke_attendance_rule where 1=1 and
+        <if test="str!=null and ''!=str.size()>0">
+            <foreach collection="str" index="index" item="id">
+            <if test="str.size()-1&lt;index">
+                find_in_set(#{id},dept) or
+            </if>
+                <if test="str.size()-1==index">
+                    find_in_set(#{id},dept)
+                </if>
+            </foreach>
         </if>
 
     </select>

+ 1 - 1
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendanceRule/service/IAttendanceRuleService.java

@@ -17,5 +17,5 @@ public interface IAttendanceRuleService extends IService<AttendanceRule> {
 
     AttendanceRule UserRule(String userid);
 
-    AttendanceRule UserRules(String str);
+    AttendanceRule UserRules(List<String> str);
 }

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

@@ -32,7 +32,7 @@ public class AttendanceRuleServiceImpl extends ServiceImpl<AttendanceRuleMapper,
     }
 
     @Override
-    public AttendanceRule UserRules(String str) {
+    public AttendanceRule UserRules(List<String>  str) {
         return attendanceRuleMapper.UserRules(str);
     }
 }

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

@@ -42,4 +42,8 @@ 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,@Param("deptids")List<String> deptids,@Param("userid")List<String> userids,@Param("type")String type);
+
+    int deleteUserids(@Param("userids") List<String>userids);
+
+    List<String>uids(@Param("depts") List<String> depts);
 }

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

@@ -89,5 +89,25 @@ order by a.shift_date desc
         </if>
        order by a.create_time desc
     </select>
+    <delete id="deleteUserids">
+       delete from geke_user_shift where 1=1
+        <if test="userids!=null and userids.size()>0">
+            and user_id in
+            <foreach collection="userids" index="index" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </if>
+    </delete>
 
+    <select id="uids" resultType="java.lang.String">
+        select a.id from sys_user a left join sys_user_depart b on a.id=b.user_id
+        where 1=1
+        <if test="depts!=null and depts.size()>0">
+            and b.dep_id in
+            <foreach collection="depts" index="index" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </if>
+
+    </select>
 </mapper>

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

@@ -22,12 +22,15 @@ public interface IUserShiftService extends IService<UserShift> {
     public boolean addUserShift(String shift, String userids, Date date);
 
     int deleteUserShift(String userid,String date);
-
+    //根据部门列表获取用户id
+    List<String>uids(@Param("depts") List<String> depts);
     //用户排班数据
     public Page<UserShiftVo>  queryUserShift(Page<UserShiftVo> page,String username);
 
     //获取用户部门
     public Map<String,String> getDepNamesByUserIds(List<String> userIds);
+    //根据用户列表删除规则用户数据
+    int deleteUserids(List<String>userids);
 
     public boolean addUserShifts(UserShift userShift);
 

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

@@ -63,6 +63,11 @@ public class UserShiftServiceImpl extends ServiceImpl<UserShiftMapper, UserShift
         return userShiftMapper.deleteUserShift(userid,date);
     }
 
+    @Override
+    public List<String> uids(List<String> depts) {
+        return userShiftMapper.uids(depts);
+    }
+
     @Override
     public Page<UserShiftVo> queryUserShift(Page<UserShiftVo> page, String username) {
         List<UserShiftVo> userShiftVos = userShiftMapper.queryUserShift(page, username);
@@ -95,6 +100,11 @@ public class UserShiftServiceImpl extends ServiceImpl<UserShiftMapper, UserShift
         return res;
     }
 
+    @Override
+    public int deleteUserids(List<String> userids) {
+        return userShiftMapper.deleteUserids(userids);
+    }
+
     @Override
     public boolean addUserShifts(UserShift userShift) {
         userShiftMapper.deleteUserShift(userShift.getUserId(),DateUtils.formatDate(userShift.getShiftDate()));

+ 1 - 1
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/vacation/mapper/VacationMapper.java

@@ -26,7 +26,7 @@ public interface VacationMapper extends BaseMapper<Vacation> {
     public Map<String,Object> txCount(@Param("userid") String userid,@Param("date")String date);
 
     //个人中心假期
-    public Vacation vacation(@Param("userid") String userid,@Param("date")String date);
+    public List<Vacation> vacation(@Param("userid") String userid,@Param("date")String date);
 
     public Vacation getOne(@Param("id")String id);
 

+ 5 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java

@@ -783,6 +783,9 @@ public class SysUserController {
     public Result<String> addSysUserRole(@RequestBody SysUserRoleVO sysUserRoleVO) {
         Result<String> result = new Result<String>();
         try {
+            sysUserRoleVO.getUserIdList().forEach(str->{
+                sysUserRoleService.deleteUserid(str);
+            });
             String sysRoleId = sysUserRoleVO.getRoleId();
             for(String sysUserId:sysUserRoleVO.getUserIdList()) {
                 SysUserRole sysUserRole = new SysUserRole(sysUserId,sysRoleId);
@@ -860,7 +863,7 @@ public class SysUserController {
         Result<IPage<SysUser>> result = new Result<IPage<SysUser>>();
         Page<SysUser> page = new Page<SysUser>(pageNo, pageSize);
         String depId = req.getParameter("depId");
-        String username = req.getParameter("username");
+        String workNo = req.getParameter("workNo");
         //根据部门ID查询,当前和下级所有的部门IDS
         List<String> subDepids = new ArrayList<>();
         //部门id为空时,查询我的部门下所有用户
@@ -874,7 +877,7 @@ public class SysUserController {
             subDepids = sysDepartService.getSubDepIdsByDepId(depId);
         }
         if(subDepids != null && subDepids.size()>0){
-            IPage<SysUser> pageList = sysUserService.getUserByDepIds(page,subDepids,username);
+            IPage<SysUser> pageList = sysUserService.getUserByDepIds(page,subDepids,workNo);
             //批量查询用户的所属部门
             //step.1 先拿到全部的 useids
             //step.2 通过 useids,一次性查询用户的所属部门名字

+ 4 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserRoleMapper.java

@@ -1,6 +1,8 @@
 package org.jeecg.modules.system.mapper;
 
 import java.util.List;
+
+import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.jeecg.modules.system.entity.SysUserRole;
@@ -22,4 +24,6 @@ public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
 	@Select("select id from sys_role where id in (select role_id from sys_user_role where user_id = (select id from sys_user where username=#{username}))")
 	List<String> getRoleIdByUserName(@Param("username") String username);
 
+	@Delete("delete from sys_user_role where user_id=#{userid}")
+	int deleteUserid(@Param("userid")String userid);
 }

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

@@ -54,7 +54,7 @@
 			)
 		</if>
 		<if test="username!=null and username!=''">
-			and username = #{username}
+			and work_no LIKE concat(concat('%',#{username}),'%')
 		</if>
 	</select>
 

+ 3 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserRoleService.java

@@ -2,6 +2,7 @@ package org.jeecg.modules.system.service;
 
 import java.util.Map;
 
+import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.system.entity.SysUserRole;
 
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -16,4 +17,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ISysUserRoleService extends IService<SysUserRole> {
    Boolean saveUserRole(SysUserRole sysUserRole);
+
+   int deleteUserid(String userid);
 }

+ 3 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IWeixinUserService.java

@@ -45,5 +45,8 @@ public interface IWeixinUserService {
         //微信入职,转正,离职信息
         public Map<String, Object> WeixinQuit() throws IOException, ParseException;
 
+        //微信补卡信息
+        public Map<String, Object> WeixinUpCard() throws IOException, ParseException;
+
         public String auts(String code) throws IOException;
 }

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

@@ -34,4 +34,9 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
 
         return super.save(sysUserRole);
     }
+
+    @Override
+    public int deleteUserid(String userid) {
+        return sysUserRoleMapper.deleteUserid(userid);
+    }
 }

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

@@ -17,6 +17,8 @@ import org.jeecg.common.constant.FillRuleConstant;
 import org.jeecg.common.util.*;
 import org.jeecg.modules.geke.attendance.entity.Attendance;
 import org.jeecg.modules.geke.attendance.service.IAttendanceService;
+import org.jeecg.modules.geke.makeUpCard.entity.MakeUpCard;
+import org.jeecg.modules.geke.makeUpCard.service.IMakeUpCardService;
 import org.jeecg.modules.geke.salary.entity.Salary;
 import org.jeecg.modules.geke.salary.service.ISalaryService;
 import org.jeecg.modules.geke.userquit.entity.UserQuit;
@@ -33,14 +35,13 @@ import org.jeecg.modules.system.entity.*;
 import org.jeecg.modules.system.mapper.SysPositionMapper;
 import org.jeecg.modules.system.service.*;
 import org.jeecg.modules.system.util.MyHttpUtils;
-import org.jeecg.modules.system.util.UrlData;
 import org.jeecg.modules.system.vo.*;
 import org.jeecg.modules.workOvertime.entity.workOvertime;
 import org.jeecg.modules.workOvertime.service.IworkOvertimeService;
 import org.jeecg.modules.workOvertime.service.impl.workOvertimeServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
+import org.jeecg.modules.system.util.UrlData;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
@@ -93,6 +94,9 @@ public class WeixinUserImpl implements IWeixinUserService{
     @Autowired
     private RedisUtil redisUtil;
 
+    @Autowired
+    private IMakeUpCardService makeUpCardService;
+
     @Autowired
     private IUserQuitService userQuitService;
 
@@ -616,7 +620,11 @@ public class WeixinUserImpl implements IWeixinUserService{
         SysUser userByid = sysUserService.getUserByid(id);
         Date entryDate = userByid.getEntryDate();
         Date newDate=new Date();
-        int year=newDate.getYear()-entryDate.getYear();
+        int year=0;
+        if (entryDate!=null){
+            year= newDate.getYear()-entryDate.getYear();
+        }
+
         String yearCount="0";
         String syYearCount="0";
         String txCount="0";
@@ -737,6 +745,111 @@ public class WeixinUserImpl implements IWeixinUserService{
         return null;
     }
 
+    /**
+     * 补卡
+     * @return
+     * @throws IOException
+     * @throws ParseException
+     */
+    @Override
+    public Map<String, Object> WeixinUpCard() throws IOException, ParseException {
+        UrlData.getVacationToken();
+        UrlData.getToken();
+        String msg="ok";
+        Calendar calendar = Calendar.getInstance();//获取系统时间实列
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");//日期格式化
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        int actualMaximum = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);//获取前端传过来的时间获取月份的总天数
+        String sDate = "";
+        String eDate = "";
+        Date stDate = null;
+        Date enDate = null;
+        long startDate;
+        long endDate;
+        sDate = simpleDateFormat.format(new Date()) + "-01 00:00:00";
+        eDate = simpleDateFormat.format(new Date()) + "-" + actualMaximum + " 23:59:59";
+        stDate = sdf.parse(sDate);
+        enDate = sdf.parse(eDate);
+        startDate = stDate.getTime() / 1000;
+        endDate = enDate.getTime() / 1000;
+        List<String> list = WeixinVacationList(String.valueOf(startDate), String.valueOf(endDate),"2");
+        makeUpCardService.deleteDate(sDate);
+        List<MakeUpCard>ls=new ArrayList<>();
+        list.forEach(str->{
+            try {
+                MakeUpCard makeUpCard = WxUpCard(str);
+                if (makeUpCard!=null){
+                    ls.add(makeUpCard);
+                }
+                System.out.println(makeUpCard);
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        });
+        makeUpCardService.saveBatch(ls);
+        System.out.println(list);
+        return null;
+    }
+
+
+    /**
+     * 获取微信审批实列-补卡信息
+     * @param ls
+     * @return
+     * @throws IOException
+     */
+    public MakeUpCard WxUpCard(String ls) throws IOException {
+        Map<String, Object> headers = Maps.newHashMap();//请求头集合
+        headers.put("Content-Type", "application/json; charset=utf-8");
+        ObjectMapper mapper = new ObjectMapper();//json转换实列
+        Map<String, Object> params = Maps.newHashMap();
+        MakeUpCard work=null;
+        String errcode = "";
+        Map mapTypes = null;
+        try {
+            String createUrl = "https://qyapi.weixin.qq.com/cgi-bin/oa/getapprovaldetail?access_token=" + UrlData.VacationToken;//调用企业微信审批详情接口
+            params.put("sp_no", ls);//审批id参数
+            String res = MyHttpUtils.httpPostRequestWithJson(createUrl, headers, params);//发送请求
+            mapTypes = JSON.parseObject(res);//json格式转换为map集合
+            errcode = mapTypes.get("errcode").toString();//获取接口返回的状态码
+            if (errcode.equals("0")) {//判断接口是否请求成功
+                WeixinApproval weixinApproval = JSONArray.parseObject(mapTypes.get("info").toString(), WeixinApproval.class);//字符串转实体类
+                if (weixinApproval != null&&weixinApproval.getSp_status().equals("2")) {//获取数据库字段所需的数据
+                    work=new MakeUpCard();
+                    work.setCode(weixinApproval.getSp_no());
+                    String us = weixinApproval.getApplyer().toString();
+                    mapTypes = JSON.parseObject(us);
+                    work.setUserId(mapTypes.get("userid").toString());
+                    work.setDept(mapTypes.get("partyid").toString());
+                    work.setCommitDate(new Date(Long.valueOf(weixinApproval.getApply_time()) * 1000));
+                    List<Object> apply_data = weixinApproval.getApply_data();
+                    String o = apply_data.get(0).toString();
+                    mapTypes = JSON.parseObject(o);
+                    String contents = mapTypes.get("contents").toString();
+                    List<Map<String, Object>> tl = mapper.readValue(contents, new TypeReference<List<Map<String, Object>>>() {
+                    });
+                    Map value = null;
+                    Map types = null;
+                    for (Map ll : tl) {
+                        Object s = ll.get("control");
+                        if (s.equals("PunchCorrection")){
+                          types=(Map)  ll.get("value");
+                          types=(Map) types.get("punch_correction");
+                          work.setState(types.get("state").toString());
+                          work.setTime(new Date(Long.valueOf(types.get("time").toString()) * 1000));
+                        }else if (s.equals("Textarea")){
+                            types=(Map)  ll.get("value");
+                            work.setDemo(types.get("text").toString());
+                        }
+                    }
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return work;
+    }
+
     @Override
     public String auts(String code) throws IOException {
         UrlData.getH5Token();