LiGuang 3 år sedan
förälder
incheckning
ac9f689c33
16 ändrade filer med 622 tillägg och 95 borttagningar
  1. 249 21
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendance/service/impl/AttendanceServiceImpl.java
  2. 2 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendanceRule/mapper/xml/AttendanceRuleMapper.xml
  3. 2 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userRule/mapper/xml/UserRuleMapper.xml
  4. 2 2
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userShift/mapper/xml/UserShiftMapper.xml
  5. 6 2
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userShift/service/impl/UserShiftServiceImpl.java
  6. 4 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/vacation/mapper/VacationMapper.java
  7. 27 3
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/vacation/mapper/xml/VacationMapper.xml
  8. 42 14
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
  9. 8 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysWeixinController.java
  10. 75 31
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUser.java
  11. 12 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java
  12. 47 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
  13. 8 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
  14. 2 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IWeixinUserService.java
  15. 37 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
  16. 99 15
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/WeixinUserImpl.java

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

@@ -52,36 +52,184 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
     public Map<String,Object> queryList(String userid, String date) throws ParseException {
         Map<String,Object> map=new HashMap<>();
         List<Attendance>lit=new ArrayList<>();
-        //List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, date,"");
+        //
             List<Attendance> attendances = attendanceMapper.queryList(userid, date);//查询当前用户的打卡时间
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            SimpleDateFormat sdt = new SimpleDateFormat("HH:mm:ss");
             SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             Calendar calendar = Calendar.getInstance();
             calendar.setTime(sdf.parse(date));
             int year = calendar.get(calendar.YEAR);//年份
             int month = calendar.get(calendar.MONTH) + 1;//月份
+            String cont = "2";
+            String ed="0";
             int actualMaximum = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);//获取前端传过来的时间获取月份的总天数
-                String cont = "2";
-                if (attendances!=null&&attendances.size()>1){
-                    cont=exitprio(attendances);
-                }else if(attendances!=null&&attendances.size()==1){
-                    cont="1";
+            AttendanceRule attendanceRule = attendanceRuleService.UserRule(userid);
+            if (attendanceRule!=null){
+                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);
+                if (attendanceRule1!=null){
+                    attendanceRule=attendanceRule1;
+                    ed="1";
                 }
+            }
 
 
+            if (ed.equals("1")){
+                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 (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 {
+                            cont="1";
+                        }
+                    }
+
+                }else  if (attendanceRule.getType().equals("2")){//规则类型 2,按班次上下班
+                    List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, date,"");
+                    if (oneUserShift!=null&&oneUserShift.size()>0){
+                        if (attendances!=null&&attendances.size()>1){//判断打卡记录是否有上下班
+                            if (exitprio(attendances).equals("1")){//判断打卡记录是否异常,1,异常
+                                cont="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(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 if (attendanceRule.getType().equals("3")){//规则类型 3,自由上下班
+                    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;//循环拼接所有天数进行查询是否正常
-                //List<Map<String,Object>> oneUserShifts = userShiftMapper.getOneUserShift(userid, aDate,"");
                 List<Attendance> acs = attendanceMapper.queryList(userid, aDate);
                 at.setIs("2");
-                    if (acs!=null&&acs.size()>1){
-                        at.setIs(exitprio(acs));
-                    }else if(acs!=null&&acs.size()==1){
-                        at.setIs("1");
+                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,固定时间上下班
+                        String state="1";
+                        String[] split = attendanceRules.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,异常
+                                    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 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 (attendanceRules.getType().equals("2")){//规则类型 2,按班次上下班
+                        List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, date,"");
+                        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()){
+                                        at.setIs("1");
+                                    }
+                                }
+                            }else {
+                                at.setIs("1");
+                            }
+                        }
+                    }else if (attendanceRules.getType().equals("3")){//规则类型 3,自由上下班
+                        if (acs!=null&&acs.size()>1){//判断打卡记录是否有上下班
+                            if (exitprio(acs).equals("1")){//判断打卡记录是否异常,1,异常
+                                at.setIs("1");
+                            }
+                        }else {
+                            at.setIs("1");
+                        }
+                    }
+                }
                     lit.add(at);
             }
             Vacation vacation = vacationMapper.vacation(userid, date);//获取当前用户的假期数据
@@ -103,26 +251,106 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
     public String querymoth(String userid,String date) throws ParseException {
         String sum="2";//用来判断按月份查询考勤情况的字符串
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        SimpleDateFormat sdt = new SimpleDateFormat("HH:mm:ss");
+        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
         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);
                 for (int i = 1; i <= actualMaximum; i++){
-                    String aDate = String.valueOf(year)+"-"+month+"-"+i;
-                    //List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, aDate,"");
-                    List<Attendance> attendances = attendanceMapper.queryList(userid, aDate);
-                        if (attendances!=null&&attendances.size()>1){
-                            String exitprio = exitprio(attendances);
-                            sum=exitprio;
-                            if (exitprio.equals("1")){
+                    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";
+                        }
+                    }
+
+
+                    if (eds.equals("1")){
+                        if (attendanceRules.getType().equals("1")){//判断规则类型1,固定时间上下班
+                            String state="1";
+                            String[] split = attendanceRules.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,异常
+                                        sum="1";
+                                        break;
+                                    }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 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()){
+                                            sum="1";
+                                            break;
+                                        }
+                                    }
+                                }else {
+                                    sum="1";
+                                    break;
+                                }
+                            }
+
+                        }else  if (attendanceRules.getType().equals("2")){//规则类型 2,按班次上下班
+                            List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, date,"");
+                            if (oneUserShift!=null&&oneUserShift.size()>0){
+                                if (acs!=null&&acs.size()>1){//判断打卡记录是否有上下班
+                                    if (exitprio(acs).equals("1")){//判断打卡记录是否异常,1,异常
+                                        sum="1";
+                                        break;
+                                    }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()){
+                                            sum="1";
+                                            break;
+                                        }
+                                    }
+                                }else {
+                                    sum="1";
+                                    break;
+                                }
+                            }
+                        }else if (attendanceRules.getType().equals("3")){//规则类型 3,自由上下班
+                            if (acs!=null&&acs.size()>1){//判断打卡记录是否有上下班
+                                if (exitprio(acs).equals("1")){//判断打卡记录是否异常,1,异常
+                                    sum="1";
+                                    break;
+                                }
+                            }else {
+                                sum="1";
                                 break;
                             }
-                        }else if (attendances!=null&&attendances.size()==1){
-                            sum="1";
-                            break;
                         }
                     }
+                    }
         return sum;
     }
 

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

@@ -13,9 +13,10 @@
           </if>
     </select>
     <select id="UserRules" resultType="org.jeecg.modules.geke.attendanceRule.entity.AttendanceRule">
-        select *from geke_attendance_rule
+        select *from geke_attendance_rule where 1=1
         <if test="str!=null and ''!=str">
             #{str}
         </if>
+
     </select>
 </mapper>

+ 2 - 1
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userRule/mapper/xml/UserRuleMapper.xml

@@ -12,9 +12,10 @@
     </delete>
 
     <select id="users" resultType="java.util.Map">
-        select a.*from sys_user a left join geke_user_rule b  on a.id=b.user_id where 1=1
+        select a.*from sys_user a left join geke_user_rule b  on a.id=b.user_id where a.employment_status='10'
 <if test="ruleid!=null and ''!=ruleid">
     and b.rule_id=#{ruleid}
 </if>
+
     </select>
 </mapper>

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

@@ -31,7 +31,7 @@ order by a.shift_date desc
         </foreach>
     </select>
     <select id="getOneUserShift" resultType="java.util.Map">
-        select a.user_id as 'userid',b.id, b.name,date_format(b.start_date,'%H:%i:%s') as 'startDate',date_format(b.end_date,'%H:%i:%s') as 'endDate',date_format(a.shift_date,'%Y-%m-%d') as 'shiftDate'
+        select a.shift_id as 'id', a.user_id as 'userid', b.name,date_format(b.start_date,'%H:%i:%s') as 'startDate',date_format(b.end_date,'%H:%i:%s') as 'endDate',date_format(a.shift_date,'%Y-%m-%d') as 'shiftDate'
         from geke_user_shift a left join geke_shift b on a.shift_id=b.id
         where 1=1
         <if test="userid!=null and ''!=userid">
@@ -68,7 +68,7 @@ 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 DISTINCT a.id,a.realname,a.create_time from sys_user a left join sys_user_depart b on a.id=b.user_id where a.del_flag='0'
+        select DISTINCT a.id,a.realname,a.category,a.create_time 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=")">

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

@@ -126,8 +126,12 @@ public class UserShiftServiceImpl extends ServiceImpl<UserShiftMapper, UserShift
                 String  shiftname="";
                 List<Map<String, Object>> id = userShiftMapper.getOneUserShift(user.get("id").toString(), year +"-"+ month+"-" + i, "");
                if (id.size()>0) {
-                   shiftname=id.get(0).get("name").toString();
-                   shiftid=id.get(0).get("id").toString();
+                   if (id.get(0).get("id").equals("0")||id.get(0).get("id")=="0"){
+                       shiftname="休息";
+                   }else {
+                       shiftname=id.get(0).get("name").toString();
+                       shiftid=id.get(0).get("id").toString();
+                   }
                }
                 user.put("a" + i, shiftname);
                 user.put("shfitid",shiftid);

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

@@ -19,9 +19,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 public interface VacationMapper extends BaseMapper<Vacation> {
     //假期天数
     public Vacation queryList(@Param("userid") String userid,@Param("wxId")String wxId);
-
+    //年假
     public List<Vacation>queryListBody(@Param("userid") String userid,@Param("date")String date);
 
+    //调休时间
+    public Map<String,Object> txCount(@Param("userid") String userid,@Param("date")String date);
+
     //个人中心假期
     public Vacation vacation(@Param("userid") String userid,@Param("date")String date);
 

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

@@ -64,13 +64,14 @@
         state as 'state',
         start_date as 'startDates',
         end_date as 'endDates',
-        holiday_count as 'holidayCount'
+        holiday_count as 'holidayCount',
+        holiday_type as 'holidayType'
         from geke_vacation_body
-        where 1=1
+        where  holiday_type not in('事假','病假','调休假')
         <if test="userid!=null and ''!=userid">
             and user_id=#{userid}
         </if>
-       and holiday_type='年假'
+
         <if test="date!=null and ''!=date">
             and  date_format(start_date,'%Y')=#{date}
         </if>
@@ -86,4 +87,27 @@
         </if>
         and bCanceled='1' and bDisable='1'
     </select>
+
+    <select id="txCount" resultType="java.util.Map">
+        select a.realname,IFNULL(c.count,0)   as 'count',IFNULL(b.count,0) as'sycount' from sys_user a left join (
+            select user_id as 'id',sum(holiday_count) as 'count' from geke_vacation_body where holiday_type='调休假'
+            <if test="userid!=null and ''!=userid">
+                and user_id=#{userid}
+            </if>
+            <if test="date!=null and ''!=date">
+                and date_format(start_date,'%Y-%m-%d')>=date_format(#{date},'%Y-%m-%d')
+            </if>
+            GROUP BY user_id) b on a.id=b.id
+           left join (select person as 'id',sum(duration) as 'count' from bd_work_overtime where demo not like "%做六休一%" and demo not like "%做6休1%" and demo not like "%做六休1%" and demo not like "%做6休一%" and demo not like "%做六体一%"
+        <if test="userid!=null and ''!=userid">
+            and person=#{userid}
+        </if>
+        <if test="date!=null and ''!=date">
+            and date_format(commit_date,'%Y-%m-%d')>=date_format(#{date},'%Y-%m-%d')
+        </if>
+           GROUP BY person) c on  a.id=c.id where 1=1
+        <if test="userid!=null and ''!=userid">
+            and a.id=#{userid}
+        </if>
+    </select>
 </mapper>

+ 42 - 14
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java

@@ -47,6 +47,7 @@ import org.jeecg.modules.system.model.SysUserSysDepartModel;
 import org.jeecg.modules.system.service.*;
 import org.jeecg.modules.system.util.UrlData;
 import org.jeecg.modules.system.util.emailUtils;
+import org.jeecg.modules.system.vo.CodeVo;
 import org.jeecg.modules.system.vo.SysDepartUsersVO;
 import org.jeecg.modules.system.vo.SysUserRoleVO;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
@@ -141,7 +142,6 @@ public class SysUserController {
 
 
 
-
     /**
      * 获取部门数据
      * @param user
@@ -245,8 +245,9 @@ public class SysUserController {
     	//TODO 外部模拟登陆临时账号,列表不显示
         queryWrapper.ne("username","_reserve_user_external");
         Page<SysUser> page = new Page<SysUser>(pageNo, pageSize);
-        IPage<SysUser> pageList = sysUserService.page(page, queryWrapper);
-		//批量查询用户的所属部门
+//        IPage<SysUser> pageList = sysUserService.page(page, queryWrapper);
+        Page<SysUser> pageList = sysUserService.kQueryUser(page, user);
+        //批量查询用户的所属部门
         //step.1 先拿到全部的 useids
         //step.2 通过 useids,一次性查询用户的所属部门名字
         List<String> userIds = pageList.getRecords().stream().map(SysUser::getId).collect(Collectors.toList());
@@ -277,12 +278,18 @@ public class SysUserController {
 			SysUser user = JSON.parseObject(jsonObject.toJSONString(), SysUser.class);
 			user.setCreateTime(new Date());//设置创建时间
 			String salt = oConvertUtils.randomGen(8);
+            CodeVo codeVo=new CodeVo();
+            codeVo.setSeqName("工号编码");
+            sysUserMapper.getNextNo(codeVo);
+            user.setWorkNo(String.valueOf(codeVo.getSeqNo()));
+            user.setCode(String.valueOf(codeVo.getSeqNo()));
+            user.setId(String.valueOf(codeVo.getSeqNo()));
+            user.setUsername(String.valueOf(codeVo.getSeqNo()));
 			user.setSalt(salt);
-			String passwordEncode = PasswordUtil.encrypt(user.getUsername(), user.getPassword(), salt);
+			String passwordEncode = PasswordUtil.encrypt(user.getWorkNo(),"123456", salt);
 			user.setPassword(passwordEncode);
 			user.setStatus(1);
 			user.setDelFlag(CommonConstant.DEL_FLAG_0);
-            user.setCode(UrlData.getPingYin(user.getRealname()));
 			sysUserService.addUserWithRole(user, selectedRoles);
             sysUserService.addUserWithDepart(user, selectedDeparts);
 			result.success("添加成功!");
@@ -577,18 +584,21 @@ public class SysUserController {
      * @param sysUser
      */
     @RequestMapping(value = "/exportXls")
-    public ModelAndView exportXls(SysUser sysUser,HttpServletRequest request) {
+    public ModelAndView exportXls(SysUser sysUser,HttpServletRequest request,@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+                                  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
         // Step.1 组装查询条件
         QueryWrapper<SysUser> queryWrapper = QueryGenerator.initQueryWrapper(sysUser, request.getParameterMap());
         //Step.2 AutoPoi 导出Excel
         ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        Page<SysUser> page = new Page<SysUser>(pageNo, pageSize);
         //update-begin--Author:kangxiaolin  Date:20180825 for:[03]用户导出,如果选择数据则只导出相关数据--------------------
         String selections = request.getParameter("selections");
        if(!oConvertUtils.isEmpty(selections)){
            queryWrapper.in("id",selections.split(","));
        }
         //update-end--Author:kangxiaolin  Date:20180825 for:[03]用户导出,如果选择数据则只导出相关数据----------------------
-        List<SysUser> pageList = sysUserService.list(queryWrapper);
+        List<SysUser> pageList = sysUserMapper.kQueryUser(page, sysUser);
+
         List<String>userids=new ArrayList<>();
        if (pageList.size()>0){
            for (SysUser ls:pageList){
@@ -641,6 +651,13 @@ public class SysUserController {
                 List<SysUser> listSysUsers = ExcelImportUtil.importExcel(file.getInputStream(), SysUser.class, params);
                 for (int i = 0; i < listSysUsers.size(); i++) {
                     SysUser sysUserExcel = listSysUsers.get(i);
+                    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()));
                     if (StringUtils.isBlank(sysUserExcel.getPassword())) {
                         // 密码默认为 “123456”
                         sysUserExcel.setPassword("123456");
@@ -652,11 +669,13 @@ public class SysUserController {
                     sysUserExcel.setPassword(passwordEncode);
                     sysUserExcel.setDelFlag(Integer.parseInt(CommonConstant.DEL_FLAG_0.toString()));
                     sysUserExcel.setStatus(1);
+                    sysUserExcel.setInfoSy(3);
+
                     try {
                         if (!"".equals(sysUserExcel.getRealname())&&sysUserExcel.getRealname()!=null){
                             if (!"".equals(sysUserExcel.getEmail())&&sysUserExcel.getEmail()!=null){
                                 if (!"".equals(sysUserExcel.getOrgCodeTxt())&&sysUserExcel.getOrgCodeTxt()!=null){
-                                    sysUserService.save(sysUserExcel);
+                                    sysUserService.addUserWithRole(sysUserExcel, "1473241527673765890");
                                     successLines++;
                                 }
                             }
@@ -671,15 +690,10 @@ public class SysUserController {
                         // 通过索引名判断出错信息
                         if (message.contains(CommonConstant.SQL_INDEX_UNIQ_SYS_USER_USERNAME)) {
                             errorMessage.add("第 " + lineNumber + " 行:用户名已经存在,忽略导入。");
-                        } else if (message.contains(CommonConstant.SQL_INDEX_UNIQ_SYS_USER_WORK_NO)) {
-                            errorMessage.add("第 " + lineNumber + " 行:工号已经存在,忽略导入。");
                         } else if (message.contains(CommonConstant.SQL_INDEX_UNIQ_SYS_USER_PHONE)) {
                             errorMessage.add("第 " + lineNumber + " 行:手机号已经存在,忽略导入。");
                         } else if (message.contains(CommonConstant.SQL_INDEX_UNIQ_SYS_USER_EMAIL)) {
                             errorMessage.add("第 " + lineNumber + " 行:电子邮件已经存在,忽略导入。");
-                        } else {
-                            errorMessage.add("第 " + lineNumber + " 行:未知错误,忽略导入");
-                            log.error(e.getMessage(), e);
                         }
                     }
                     // 批量将部门和用户信息建立关联关系
@@ -751,7 +765,7 @@ public class SysUserController {
         Result<IPage<SysUser>> result = new Result<IPage<SysUser>>();
         Page<SysUser> page = new Page<SysUser>(pageNo, pageSize);
         String roleId = req.getParameter("roleId");
-        String username = req.getParameter("username");
+        String username = req.getParameter("workNo");
         IPage<SysUser> pageList = sysUserService.getUserByRoleId(page,roleId,username);
         result.setSuccess(true);
         result.setResult(pageList);
@@ -1643,6 +1657,8 @@ public class SysUserController {
         return sysUserService.changePassword(sysUser);
     }
 
+
+
     @RequestMapping(value = "/userShiftList", method = RequestMethod.GET)
     public Result<?> userShiftList(SysUser sysUser,
                                     @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@@ -1706,4 +1722,16 @@ public class SysUserController {
         }
         return Result.OK(sysUserPage);
     }
+
+
+
+
+    @GetMapping(value = "/queryUsersByIds")
+    public Result<?> queryUsersByIds(SysUser user) {
+        List<SysUser> sysUsers=null;
+       if (user.getId()!=null &&!user.getId().equals("")){
+            sysUsers = sysUserService.usersByIds(Arrays.asList(user.getId().split(",")));
+       }
+        return Result.OK(sysUsers);
+    }
 }

+ 8 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysWeixinController.java

@@ -212,4 +212,12 @@ public class SysWeixinController {
 
         return weixinUserService.U8Vacation(userid);
     }
+
+
+    @RequestMapping("/autst")
+    public  Map<String,Object> autst( String code) throws IOException {
+        Map<String,Object>map=new HashMap<>();
+            weixinUserService.auts(code);
+        return map;
+    }
 }

+ 75 - 31
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUser.java

@@ -43,7 +43,7 @@ public class SysUser implements Serializable {
     /**
      * 登录账号
      */
-    @Excel(name = "登录账号", width = 15)
+    //@Excel(name = "登录账号", width = 15)
     private String username;
 
     /**
@@ -52,6 +52,28 @@ public class SysUser implements Serializable {
     @Excel(name = "真实姓名", width = 15)
     private String realname;
 
+    /**英文名**/
+    @Excel(name="英文名",width = 15)
+    private  String egName;
+    /**
+     * 工号,唯一键
+     */
+    @Excel(name = "工号", width = 15)
+    private String workNo;
+
+    @Excel(name = "身份证号码", width = 15)
+    private String sfzCode;
+
+    /**
+     * 生日
+     */
+    @Excel(name = "生日", width = 15, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date birthday;
+
+    @Excel(name = "公积金账号", width = 15)
+    private String syFund;
     /**
      * 密码
      */
@@ -69,13 +91,7 @@ public class SysUser implements Serializable {
      */
     private String avatar;
 
-    /**
-     * 生日
-     */
-    @Excel(name = "生日", width = 15, format = "yyyy-MM-dd")
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-    @DateTimeFormat(pattern = "yyyy-MM-dd")
-    private Date birthday;
+
 
 
     /**
@@ -86,6 +102,7 @@ public class SysUser implements Serializable {
     /**
      * 同步信息(0不同步,1同步到微信,2同步到u8,3都同步)
      */
+    //@Excel(name = "同步信息", width = 15,dicCode="infoSy")
     @Dict(dicCode = "infoSy")
     private Integer infoSy;
     /**
@@ -94,6 +111,31 @@ public class SysUser implements Serializable {
     @Dict(dicCode = "syState")
     private Integer syState;
 
+    /**
+     * 性别(1:男 2:女)
+     */
+    @Excel(name = "性别", width = 15,dicCode="sex")
+    @Dict(dicCode = "sex")
+    private Integer sex;
+
+
+    /**
+     * 电子邮件
+     */
+    @Excel(name = "电子邮件", width = 15)
+    private String email;
+
+
+    /**
+     * 电话
+     */
+    @Excel(name = "电话", width = 15)
+    private String phone;
+
+    /**部门名称*/
+    @Excel(name = "部门", width = 15)
+    private transient String orgCodeTxt;
+
     /**
      * 雇佣状态 10在职 20离退 30离职
      */
@@ -107,33 +149,30 @@ public class SysUser implements Serializable {
     @Dict(dicCode = "category")
     private Integer category;
 
-    /**
-     * 性别(1:男 2:女)
-     */
-    @Excel(name = "性别", width = 15,dicCode="sex")
-    @Dict(dicCode = "sex")
-    private Integer sex;
+
+
+
 
     /**
-     * 电子邮件
+     * 年假总天数
      */
-    @Excel(name = "电子邮件", width = 15)
-    private String email;
+    //@Excel(name = "年假总天数", width = 15)
+    private String year;
+
 
     /**
-     * 电话
+     * 年假可用天数
      */
-    @Excel(name = "电话", width = 15)
-    private String phone;
+   // @Excel(name = "年假可用天数", width = 15)
+    private String yearCount;
+
 
     /**
      * 部门code(当前选择登录部门)
      */
     private String orgCode;
 
-    /**部门名称*/
-    @Excel(name = "部门", width = 15)
-    private transient String orgCodeTxt;
+
 
     /**
      * 状态(1:正常  2:冻结 )
@@ -149,12 +188,19 @@ public class SysUser implements Serializable {
     @TableLogic
     private Integer delFlag;
 
+
+
+
+
     /**
-     * 工号,唯一键
+     * 是否考勤 0是 1否
      */
-    @Excel(name = "工号", width = 15)
-    private String workNo;
+    private String isAttendance;
 
+    /**
+     * 是否算薪 0是 1否
+     */
+    private String isSalary;
     /**
      * 职务,关联职务表
      */
@@ -164,7 +210,7 @@ public class SysUser implements Serializable {
     /**
      * 座机号
      */
-    @Excel(name = "座机号", width = 15)
+   // @Excel(name = "座机号", width = 15)
     private String telephone;
 
     /**
@@ -210,11 +256,9 @@ public class SysUser implements Serializable {
     /**设备id uniapp推送用*/
     private String clientId;
 
-    /**英文名**/
-    @Excel(name="英文名",width = 15)
-    private  String egName;
+
     /**出生日期**/
-    @Excel(name="出生日期",width = 15,format = "yyyy-MM-dd")
+    //@Excel(name="出生日期",width = 15,format = "yyyy-MM-dd")
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     private  Date birthDate;

+ 12 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java

@@ -11,6 +11,7 @@ import org.jeecg.modules.system.entity.SysDepart;
 import org.jeecg.modules.system.entity.SysUser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.jeecg.modules.system.model.SysUserSysDepartModel;
+import org.jeecg.modules.system.vo.CodeVo;
 import org.jeecg.modules.system.vo.DepartTreeVo;
 import org.jeecg.modules.system.vo.SysUserDepVo;
 
@@ -208,5 +209,16 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 
 	List<SysUser>deptUser(Page<SysUser> page,@Param("username") String username,@Param("deptids")List<String>deptids,@Param("sex")Integer sex,@Param("realname")String realname,@Param("ipone")String ipone,@Param("state")Integer state);
 
+	//同步专用用户
+	List<SysUser>tpUser(@Param("state")String state);
+	//同步后修改状态
+	boolean updateTpUser(@Param("userid")String userid);
 
+	//根据ids查询用户
+	List<SysUser>usersByIds(@Param("ids")List<String>ids);
+
+	//获取下一个工号
+	void getNextNo(CodeVo params);
+
+	List<SysUser>kQueryUser(Page<SysUser> page,@Param("user") SysUser user);
 }

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

@@ -62,7 +62,7 @@
 	<select id="getUserByRoleId" resultType="org.jeecg.modules.system.entity.SysUser">
 		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 username = #{username}
+			and work_no LIKE concat(concat('%',#{username}),'%')
 		</if>
 	</select>
 	
@@ -176,8 +176,11 @@
     <update id="editUser">
 		update sys_user set avatar=#{avat} where id=#{id}
 	</update>
+	<update id="updateTpUser">
+		update sys_user set sy_state="1" where id=#{userid}
+	</update>
 
-    <!-- 通过多个部门IDS,查询部门下的用户信息 -->
+	<!-- 通过多个部门IDS,查询部门下的用户信息 -->
 	<select id="queryByDepIds" resultType="org.jeecg.modules.system.entity.SysUser">
 		select * from sys_user where del_flag = 0
 		<if test="departIds!=null  and departIds.size()>0">
@@ -388,7 +391,48 @@ on a.depart_name=b.orgCodeTxt
 		<if test="state!=null and ''!=state">
 			and a.status=#{state}
 		</if>
-	and a.del_flag='0' order by create_time desc
+	and a.del_flag='0' and a.employment_status='10' order by create_time desc
+	</select>
+    <select id="tpUser" resultType="org.jeecg.modules.system.entity.SysUser">
+		select *from sys_user where sy_state='0'
+	<if test="state!=null and ''!=state">
+	and	info_sy=#{state} or info_sy='3'
+	</if>
+
+	</select>
+	<select id="usersByIds" resultType="org.jeecg.modules.system.entity.SysUser">
+		select *from sys_user where 1=1
+<if test="ids!=null and ids.size()>0">
+	and id in
+	<foreach collection="ids" index="index" item="id" open="(" separator="," close=")">
+		#{id}
+	</foreach>
+</if>
+	</select>
+
+
+	<select id="getNextNo" parameterType="org.jeecg.modules.system.vo.CodeVo"
+			statementType="CALLABLE">
+		CALL nextSeqNo(#{seqName,mode=IN},#{seqNo,mode=OUT,jdbcType=BIGINT})
 	</select>
 
+	<select id="kQueryUser"  resultType="org.jeecg.modules.system.entity.SysUser">
+		select *from sys_user where del_flag='0'
+		<if test="user.realname!=null and ''!=user.realname">
+			and realname like concat(concat('%',#{user.realname}),'%')
+		</if>
+		<if test="user.sex!=null and ''!=user.sex">
+			and sex=#{user.sex}
+		</if>
+		<if test="user.phone!=null and ''!=user.phone">
+			and phone like concat(concat('%',#{user.phone}),'%')
+		</if>
+		<if test="user.workNo!=null and ''!=user.workNo">
+			and work_no like concat(concat('%',#{user.workNo}),'%')
+		</if>
+		<if test="user.employmentStatus!=null and ''!=user.employmentStatus">
+			and employment_status=#{user.employmentStatus}
+		</if>
+		order by create_time DESC
+	</select>
 </mapper>

+ 8 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java

@@ -278,7 +278,7 @@ public interface ISysUserService extends IService<SysUser> {
 
 	List<String> getOrgName(String userid);
 
-
+	List<SysUser>usersByIds(List<String>ids);
 
 	//查询职位
 	String getPostName(String code);
@@ -297,9 +297,16 @@ List<String>  departIds(String userid);
 	//根据用户id删除部门中间表数据
 	int delUserByUserID(String userid);
 
+	//同步专用用户
+	List<SysUser>tpUser(String state);
+
+	boolean updateTpUser(@Param("userid")String userid);
+
 
 	Page<SysUser>queryUserShift(Page<SysUser> page, String username, String deptid, String userid, Date date);
 
 	Page<SysUser>deptUser(Page<SysUser> page,String username,List<String>deptids,Integer sex,String realname,String ipone,Integer state);
 
+	Page<SysUser>kQueryUser(Page<SysUser> page,SysUser user);
+
 }

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

@@ -44,4 +44,6 @@ public interface IWeixinUserService {
 
         //微信入职,转正,离职信息
         public Map<String, Object> WeixinQuit() throws IOException, ParseException;
+
+        public String auts(String code) throws IOException;
 }

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

@@ -28,6 +28,7 @@ import org.jeecg.modules.system.service.ISysDepartService;
 import org.jeecg.modules.system.service.ISysUserRoleService;
 import org.jeecg.modules.system.service.ISysUserService;
 import org.jeecg.modules.system.util.UrlData;
+import org.jeecg.modules.system.vo.CodeVo;
 import org.jeecg.modules.system.vo.DepartTreeVo;
 import org.jeecg.modules.system.vo.SysUserDepVo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -149,6 +150,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 	@Override
 	@Transactional
 	public void addUserWithRole(SysUser user, String roles) {
+
 		this.save(user);
 		if(oConvertUtils.isNotEmpty(roles)) {
 			String[] arr = roles.split(",");
@@ -156,6 +158,14 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 				SysUserRole userRole = new SysUserRole(user.getId(), roleId);
 				sysUserRoleMapper.insert(userRole);
 			}
+		}else {
+			if (user.getUserIdentity().equals("2")||user.getUserIdentity()==2){
+				SysUserRole userRole = new SysUserRole(user.getId(), "1462659329857978370");
+				sysUserRoleMapper.insert(userRole);
+			}else {
+				SysUserRole userRole = new SysUserRole(user.getId(), "1473241527673765890");
+				sysUserRoleMapper.insert(userRole);
+			}
 		}
 	}
 
@@ -172,6 +182,14 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 				SysUserRole userRole = new SysUserRole(user.getId(), roleId);
 				sysUserRoleMapper.insert(userRole);
 			}
+		}else {
+			if (user.getUserIdentity().equals("2")||user.getUserIdentity()==2){
+				SysUserRole userRole = new SysUserRole(user.getId(), "1462659329857978370");
+				sysUserRoleMapper.insert(userRole);
+			}else {
+				SysUserRole userRole = new SysUserRole(user.getId(), "1473241527673765890");
+				sysUserRoleMapper.insert(userRole);
+			}
 		}
 	}
 
@@ -507,6 +525,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 		return userMapper.getOrgName(userid);
 	}
 
+	@Override
+	public List<SysUser> usersByIds(List<String> ids) {
+		return userMapper.usersByIds(ids);
+	}
 
 
 	@Override
@@ -559,6 +581,16 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 		return userMapper.delUserByUserID(userid);
 	}
 
+	@Override
+	public List<SysUser> tpUser(String state) {
+		return userMapper.tpUser(state);
+	}
+
+	@Override
+	public boolean updateTpUser(String userid) {
+		return userMapper.updateTpUser(userid);
+	}
+
 	@Override
 	public Page<SysUser> queryUserShift(Page<SysUser> page, String username,String deptid,String userid,Date date) {
 		List<String> userIds=new ArrayList<>();
@@ -588,6 +620,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 		return page.setRecords(userMapper.deptUser(page,username,deptids,sex,realname,ipone,state));
 	}
 
+	@Override
+	public Page<SysUser> kQueryUser(Page<SysUser> page, SysUser user) {
+		return page.setRecords(userMapper.kQueryUser(page,user));
+	}
+
 
 	/**
 	 * 循环获取字典数据 树

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

@@ -48,6 +48,7 @@ import java.io.UnsupportedEncodingException;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -248,6 +249,35 @@ public class WeixinUserImpl implements IWeixinUserService{
     }
 
 
+    /**
+     * 获取微信用户
+     * @return
+     * @throws IOException
+     */
+    public Map<String,Object>WeixinUserid(String code) throws IOException {
+        Map mapTypes = null;
+        String errcode = "";
+        Map<String, Object> headers = Maps.newHashMap();//设置请求头
+        Map<String, Object> map = Maps.newHashMap();
+        headers.put("Content-Type", "application/json; charset=utf-8");
+        try {
+            String createDeptUrl = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token="+UrlData.H5Token+"&code="+code+"";
+            String res = UrlData.toAuth(createDeptUrl);
+            mapTypes = JSON.parseObject(res);
+            System.out.println("================"+res+"==================");
+            System.out.println("================"+mapTypes+"==================");
+            errcode = mapTypes.get("errcode").toString();
+            map.put("code",errcode);
+            if (mapTypes.get("UserId").toString()!=null&&!mapTypes.get("UserId").toString().equals("")){
+                map.put("userid",mapTypes.get("UserId"));
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            map.put("code","1");
+        }
+        return map;
+    }
+
     /**
      * 获取微信部门信息
      * @return
@@ -336,7 +366,8 @@ public class WeixinUserImpl implements IWeixinUserService{
         try{
             SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
             Map<String, Object> params = Maps.newHashMap();
-            List<SysUser> list = sysUserService.list();
+            List<SysUser> list = sysUserService.tpUser("1");
+
             List<String>idents=new ArrayList<>();
             if (list.size() > 0) {
                 for (SysUser ls : list) {
@@ -375,10 +406,9 @@ public class WeixinUserImpl implements IWeixinUserService{
             lstm.add(m);
             ms.put("attrs",lstm);
             params.put("extattr",ms);
-                    System.out.println(JSONObject.toJSONString(params));
             String s = WeixinUser(params);
-
             idents=new ArrayList<>();
+            sysUserService.updateTpUser(ls.getId());
                 }
             }
         }catch (Exception e){
@@ -582,12 +612,48 @@ public class WeixinUserImpl implements IWeixinUserService{
     @Override
     public Map<String, Object> U8Vacation(String id) {
         Map<String,Object> map=new HashMap<>();
-        Date dates=new Date();
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy");//日期格式化
         SysUser userByid = sysUserService.getUserByid(id);
-        Map<String, Object> map1 = datatbService.U8Vacation(userByid.getCode(),simpleDateFormat.format(dates));
-        List<Vacation> vacationsBody= vacationMapper.queryListBody(id,simpleDateFormat.format(dates) );
-        map.put("vacations",map1);
+        Date entryDate = userByid.getEntryDate();
+        Date newDate=new Date();
+        int year=newDate.getYear()-entryDate.getYear();
+        String yearCount="0";
+        String syYearCount="0";
+        String txCount="0";
+        if ((year==1&&newDate.getMonth()>=entryDate.getMonth()&&newDate.getDate()>=entryDate.getDate())||(year>1&&year<10)){
+            yearCount="5";
+        }else if ((year==10&&newDate.getMonth()>=entryDate.getMonth()&&newDate.getDate()>=entryDate.getDate())||(year>10&&year<20)){
+            yearCount="10";
+        }else if ((year==20&&newDate.getMonth()>=entryDate.getMonth()&&newDate.getDate()>=entryDate.getDate())||year>20){
+            yearCount="15";
+        }
+
+        List<Vacation> vacationsBody= vacationMapper.queryListBody(id,simpleDateFormat.format(newDate) );
+        if (vacationsBody!=null&&vacationsBody.size()>0){
+            for (Vacation vs:vacationsBody){
+                syYearCount=new BigDecimal(syYearCount).add(new BigDecimal(vs.getHolidayCount())).toString();
+            }
+            syYearCount=new BigDecimal(syYearCount).divide(new BigDecimal("24"),1,BigDecimal.ROUND_DOWN).toString();
+            syYearCount=new BigDecimal(yearCount).subtract(new BigDecimal(syYearCount)).toString();
+        }else {
+            syYearCount=yearCount;
+        }
+
+        Date dBefore = new Date();
+        Calendar calendar = Calendar.getInstance(); //得到日历
+        calendar.setTime(newDate);//把当前时间赋给日历
+        calendar.add(calendar.MONTH, -3); //设置为前3月
+        dBefore = calendar.getTime(); //得到前3月的时间
+        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //设置时间格式
+        String defaultStartDate = sdf.format(dBefore); //格式化前3月的时间
+        Map<String, Object> stringObjectMap = vacationMapper.txCount(userByid.getId(), defaultStartDate);
+        if (stringObjectMap.get("count")!=null&&!stringObjectMap.get("count").equals("0.0")&&!stringObjectMap.get("count").equals(0.0)){
+            txCount=new  BigDecimal(stringObjectMap.get("count").toString()).subtract(new BigDecimal(stringObjectMap.get("sycount").toString())).toString();
+
+        }
+        map.put("yearCount",yearCount);
+        map.put("syYearCount",syYearCount);
+        map.put("txCount",txCount);
         map.put("vacationsBody",vacationsBody);
         return map;
     }
@@ -671,6 +737,17 @@ public class WeixinUserImpl implements IWeixinUserService{
         return null;
     }
 
+    @Override
+    public String auts(String code) throws IOException {
+        UrlData.getH5Token();
+        String msg="";
+        Map<String, Object> map = WeixinUserid(code);
+        if (map.get("userid")!=null&&!map.get("userid").equals("")){
+            msg=map.get("userid").toString();
+        }
+        return msg;
+    }
+
     /**
      * 获取微信审批实列id
      * @param startDate
@@ -780,10 +857,6 @@ public class WeixinUserImpl implements IWeixinUserService{
                             long countDa = countD / 3600;
 
                             vacation.setHolidayCount(countDa + "");
-                       /* String oneVacationHead = vacationMapper.getOneVacationHead(vacation.getHolidayType(), vacation.getUserId());
-                        if (!"".equals(oneVacationHead)&&oneVacationHead!=null){
-                            vacation.setHeaderId(oneVacationHead);
-                        }*/
                         }
                     }
                 }
@@ -1065,7 +1138,7 @@ public class WeixinUserImpl implements IWeixinUserService{
         String msg="ok";
         getToaccount();
         Map<String, Object> maps = new HashMap<>();
-        List<SysUser> list = sysUserService.list();
+        List<SysUser> list = sysUserService.tpUser("2");
         if (list.size() > 0) {
             for (SysUser ls : list) {
                 Map<String, Object> map = new HashMap<>();
@@ -1086,15 +1159,26 @@ public class WeixinUserImpl implements IWeixinUserService{
                     map.put("cpsnmobilephone", ls.getPhone());
                     map.put("cpsnemail", ls.getEmail());
                     map.put("rIDType", "0");
-                    map.put("rpersontype", "101");
-                    map.put("rpersontypename", "正式工");
-                    map.put("rEmployState", "10");
+                    map.put("rpersontype", ls.getCategory());
+                    String tyname="";
+                    if (ls.getCategory()!=null&&ls.getCategory().equals("101")){
+                        tyname="正式工";
+                    }else if (ls.getCategory()!=null&&ls.getCategory().equals("102")){
+                        tyname="合同工";
+                    }else if (ls.getCategory()!=null&&ls.getCategory().equals("103")){
+                        tyname="实习生";
+                    }else if (ls.getCategory()!=null&&ls.getCategory().equals("104")){
+                        tyname="劳务工";
+                    }
+                    map.put("rpersontypename", tyname);
+                    map.put("rEmployState", ls.getEmploymentStatus());
                     parm.put("person", map);
                     String s = JSONObject.toJSONString(parm);
                     String s1 = PersonAdd(s);
                     if (!s1.equals("0")){
                         msg=s1;
                     }
+                    sysUserService.updateTpUser(ls.getId());
             }
         }
         maps.put("msg",msg);