LiGuang 3 years ago
parent
commit
e57b54d216
24 changed files with 401 additions and 117 deletions
  1. 81 35
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendanceRule/controller/AttendanceRuleController.java
  2. 6 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/makeUpCard/controller/MakeUpCardController.java
  3. 1 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/makeUpCard/mapper/MakeUpCardMapper.java
  4. 6 0
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/makeUpCard/mapper/xml/MakeUpCardMapper.xml
  5. 1 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/makeUpCard/service/IMakeUpCardService.java
  6. 2 2
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/makeUpCard/service/impl/MakeUpCardServiceImpl.java
  7. 7 0
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/shift/controller/ShiftController.java
  8. 1 0
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/shift/mapper/ShiftMapper.java
  9. 4 0
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/shift/mapper/xml/ShiftMapper.xml
  10. 1 0
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/shift/service/IShiftService.java
  11. 6 0
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/shift/service/impl/ShiftServiceImpl.java
  12. 2 0
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/statutoryleave/entity/StatutoryLeave.java
  13. 9 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userShift/mapper/UserShiftMapper.java
  14. 33 20
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userShift/mapper/xml/UserShiftMapper.xml
  15. 7 2
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userShift/service/IUserShiftService.java
  16. 152 20
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userShift/service/impl/UserShiftServiceImpl.java
  17. 32 15
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
  18. 15 7
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUser.java
  19. 12 6
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
  20. 11 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/controller/workOvertimeController.java
  21. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/mapper/workOvertimeMapper.java
  22. 7 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/mapper/xml/workOvertimeMapper.xml
  23. 2 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/service/IworkOvertimeService.java
  24. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/service/impl/workOvertimeServiceImpl.java

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

@@ -1,14 +1,18 @@
 package org.jeecg.modules.geke.attendanceRule.controller;
-
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.util.DateUtils;
 import org.jeecg.common.util.UUIDGenerator;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.geke.attendanceRule.entity.AttendanceRule;
@@ -20,6 +24,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.entity.UserShift;
 import org.jeecg.modules.geke.userShift.service.IUserShiftService;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
@@ -35,7 +40,6 @@ import org.springframework.web.servlet.ModelAndView;
 import com.alibaba.fastjson.JSON;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-
  /**
  * @Description: 打卡规则
  * @Author: jeecg-boot
@@ -94,26 +98,42 @@ public class AttendanceRuleController extends JeecgController<AttendanceRule, IA
 	@AutoLog(value = "打卡规则-添加")
 	@ApiOperation(value="打卡规则-添加", notes="打卡规则-添加")
 	@PostMapping(value = "/add")
-	public Result<?> add(@RequestBody AttendanceRule attendanceRule) {
-		List<UserRule>list=new ArrayList<>();
-		attendanceRule.setId(UUIDGenerator.generate());
-		if (attendanceRule.getRuleType().equals("1")){
-			if (attendanceRule.getUserId()!=null&&!attendanceRule.getUserId().equals("")){
-				String[] split = attendanceRule.getUserId().split(",");
-				for (String id:split){
-					UserRule userRule=new UserRule();
-					userRule.setUserId(id);
-					userRule.setRuleId(attendanceRule.getId());
-					list.add(userRule);
+	public Result<?> add(@RequestBody AttendanceRule attendanceRule,String years) throws IOException {
+		List<AttendanceRule>list=new ArrayList<>();
+		List<String> strings = Arrays.asList(attendanceRule.getUserId().split(","));
+		if (!attendanceRule.getType().equals("1")&&!attendanceRule.getType().equals("3")){
+			ObjectMapper mapper=new ObjectMapper();
+			List ls = mapper.readValue(attendanceRule.getRuleType(), List.class);
+			List<UserShift>lt=new ArrayList<>();
+			ls.forEach(str->{
+					Map user=(Map)str;
+					UserShift shift=new UserShift();
+					shift.setShiftId(user.get("shiftid").toString());
+					shift.setUserId(user.get("userid").toString());
+					Date date = null;
+				try {
+					date = DateUtils.parseDate(user.get("date").toString(), "yyyy-MM-dd HH:mm:ss");
+				} catch (ParseException e) {
+					e.printStackTrace();
 				}
-				userRuleService.saveBatch(list);
-				attendanceRule.setUserId("");
-				attendanceRule.setUserName("");
-			}
-
+					shift.setShiftDate(date);
+					lt.add(shift);
+			});
+			userShiftService.saveBatch(lt);
 		}
-		attendanceRuleService.save(attendanceRule);
 
+		strings.forEach(str->{
+			AttendanceRule ar=new AttendanceRule();
+			ar.setUserId(str);
+			ar.setId(UUIDGenerator.generate());
+			ar.setType(attendanceRule.getType());
+			ar.setStartDate(attendanceRule.getStartDate());
+			ar.setEndDate(attendanceRule.getEndDate());
+			ar.setWorkDay(attendanceRule.getWorkDay());
+			list.add(ar);
+		});
+
+		attendanceRuleService.saveBatch(list);
 		return Result.OK("添加成功!");
 	}
 	
@@ -126,26 +146,52 @@ public class AttendanceRuleController extends JeecgController<AttendanceRule, IA
 	@AutoLog(value = "打卡规则-编辑")
 	@ApiOperation(value="打卡规则-编辑", notes="打卡规则-编辑")
 	@PutMapping(value = "/edit")
-	public Result<?> edit(@RequestBody AttendanceRule attendanceRule) {
+	public Result<?> edit(@RequestBody AttendanceRule attendanceRule) throws IOException, ParseException {
 		List<UserRule>list=new ArrayList<>();
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+		List<String> strings = Arrays.asList(attendanceRule.getUserId().split(","));
 		List<String>ids=new ArrayList<>();
-		ids.add(attendanceRule.getId());
-		userRuleService.delteusers(ids);
-		if (attendanceRule.getRuleType().equals("1")){
-			if (attendanceRule.getUserId()!=null&&!attendanceRule.getUserId().equals("")){
-				String[] split = attendanceRule.getUserId().split(",");
-				for (String id:split){
-					UserRule userRule=new UserRule();
-					userRule.setUserId(id);
-					userRule.setRuleId(attendanceRule.getId());
-					list.add(userRule);
+		if (!attendanceRule.getType().equals("1")&&!attendanceRule.getType().equals("3")){
+			ObjectMapper mapper=new ObjectMapper();
+			List ls = mapper.readValue(attendanceRule.getRuleType(), List.class);
+			Map one=(Map)ls.get(0);
+			Date date1 = DateUtils.parseDate(one.get("date").toString(), "yyyy-MM-dd HH:mm:ss");
+			String format = sdf.format(date1);
+			strings.forEach(s->{
+				userShiftService.deleteUserShift(s,format);
+			});
+			List<UserShift>lt=new ArrayList<>();
+			ls.forEach(str->{
+				Map user=(Map)str;
+				UserShift shift=new UserShift();
+				shift.setShiftId(user.get("shiftid").toString());
+				shift.setUserId(user.get("userid").toString());
+				Date date = null;
+				try {
+					date = DateUtils.parseDate(user.get("date").toString(), "yyyy-MM-dd HH:mm:ss");
+				} catch (ParseException e) {
+					e.printStackTrace();
 				}
-				userRuleService.saveBatch(list);
-				attendanceRule.setUserId("");
-				attendanceRule.setUserName("");
-			}
+				shift.setShiftDate(date);
+				lt.add(shift);
+			});
+			userShiftService.saveBatch(lt);
 		}
-		attendanceRuleService.updateById(attendanceRule);
+//		ids.add(attendanceRule.getId());
+//		userRuleService.delteusers(ids);
+//			if (attendanceRule.getUserId()!=null&&!attendanceRule.getUserId().equals("")){
+//				String[] split = attendanceRule.getUserId().split(",");
+//				for (String id:split){
+//					UserRule userRule=new UserRule();
+//					userRule.setUserId(id);
+//					userRule.setRuleId(attendanceRule.getId());
+//					list.add(userRule);
+//				}
+//				userRuleService.saveBatch(list);
+//				attendanceRule.setUserId("");
+//				attendanceRule.setUserName("");
+//			}
+//		attendanceRuleService.updateById(attendanceRule);
 		return Result.OK("编辑成功!");
 	}
 	

+ 6 - 1
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/makeUpCard/controller/MakeUpCardController.java

@@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletResponse;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.util.DateUtils;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.geke.makeUpCard.entity.MakeUpCard;
 import org.jeecg.modules.geke.makeUpCard.service.IMakeUpCardService;
@@ -66,8 +67,12 @@ public class MakeUpCardController extends JeecgController<MakeUpCard, IMakeUpCar
 								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
 								   HttpServletRequest req) {
 		QueryWrapper<MakeUpCard> queryWrapper = QueryGenerator.initQueryWrapper(makeUpCard, req.getParameterMap());
+		String date="";
+		if (makeUpCard.getTime()!=null){
+			date=DateUtils.formatDate(makeUpCard.getTime());
+		}
 		Page<MakeUpCard> page = new Page<MakeUpCard>(pageNo, pageSize);
-		Page<MakeUpCard> lists = makeUpCardService.lists(page, makeUpCard.getCode(), makeUpCard.getUserId());
+		Page<MakeUpCard> lists = makeUpCardService.lists(page, makeUpCard.getCode(), makeUpCard.getUserId(),makeUpCard.getDept(),date);
 		return Result.OK(lists);
 	}
 	

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

@@ -17,5 +17,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 public interface MakeUpCardMapper extends BaseMapper<MakeUpCard> {
     int deleteDate(@Param("startDate")String startDate);
 
-    List<MakeUpCard>lists(Page<MakeUpCard> page,@Param("code")String code,@Param("username")String username);
+    List<MakeUpCard>lists(Page<MakeUpCard> page,@Param("code")String code,@Param("username")String username,@Param("dept")String dept,@Param("date")String date);
 }

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

@@ -19,5 +19,11 @@
     <if test="username!=null and ''!=username">
         and b.realname LIKE concat(concat('%',#{username}),'%')
     </if>
+        <if test="dept!=null and ''!=dept">
+            and c.depart_name LIKE concat(concat('%',#{dept}),'%')
+        </if>
+        <if test="date!=null and ''!=date">
+            and  date_format(a.time,'%Y-%m-%d')=date_format(#{date},'%Y-%m-%d')
+        </if>
     </select>
 </mapper>

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

@@ -16,5 +16,5 @@ import java.util.Map;
 public interface IMakeUpCardService extends IService<MakeUpCard> {
     int deleteDate(String startDate);
 
-    Page<MakeUpCard> lists(Page<MakeUpCard> page,String code,String username);
+    Page<MakeUpCard> lists(Page<MakeUpCard> page,String code,String username,String dept,String date);
 }

+ 2 - 2
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/makeUpCard/service/impl/MakeUpCardServiceImpl.java

@@ -28,7 +28,7 @@ public class MakeUpCardServiceImpl extends ServiceImpl<MakeUpCardMapper, MakeUpC
     }
 
     @Override
-    public Page<MakeUpCard> lists(Page<MakeUpCard> page, String code, String username) {
-        return page.setRecords(makeUpCardMapper.lists(page,code,username));
+    public Page<MakeUpCard> lists(Page<MakeUpCard> page, String code, String username,String dept,String date) {
+        return page.setRecords(makeUpCardMapper.lists(page,code,username, dept, date));
     }
 }

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

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

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

@@ -16,4 +16,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 public interface ShiftMapper extends BaseMapper<Shift> {
 
     List<Map<String,Object>>listUserShift(@Param("userid") String userid,@Param("date") String date);
+    List<Map<String,Object>>query();
 }

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

@@ -12,4 +12,8 @@
 </if>
  order by b.shift_date desc
     </select>
+    <select id="query" resultType="java.util.Map">
+        select id,name,date_format(start_date,'%H:%i:%s') as 'startDate', date_format(end_date,'%H:%i:%s') as 'endDate' from geke_shift
+
+    </select>
 </mapper>

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

@@ -17,5 +17,6 @@ public interface IShiftService extends IService<Shift> {
 
 
     List<Map<String,Object>> listUserShift(String userid, String date);
+    List<Map<String,Object>>queryst();
 
 }

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

@@ -26,4 +26,10 @@ public class ShiftServiceImpl extends ServiceImpl<ShiftMapper, Shift> implements
     public List<Map<String, Object>> listUserShift(String userid, String date) {
         return shiftMapper.listUserShift(userid,date);
     }
+
+
+    @Override
+    public List<Map<String,Object>>queryst(){
+        return shiftMapper.query();
+    }
 }

+ 2 - 0
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/statutoryleave/entity/StatutoryLeave.java

@@ -52,6 +52,8 @@ public class StatutoryLeave {
 	@Excel(name = "日薪资倍数", width = 15)
     @ApiModelProperty(value = "日薪资倍数")
 	private java.lang.String sum;
+
+	private java.lang.String type;
 	/**创建人*/
 	@Excel(name = "创建人", width = 15)
 	@ApiModelProperty(value = "创建人")

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

@@ -22,6 +22,10 @@ public interface UserShiftMapper extends BaseMapper<UserShift> {
 
     List<UserDept> getDepNamesByUserIds(@Param("userIds")List<String> userIds);
 
+    //根据已有排班人员筛选未排班人员
+    List<Map<String,Object>>getUserNot(Page<Map<String,Object>> page,@Param("userids")List<String>userids);
+
+  List<Map<String,Object>>getUserByids(@Param("ids")List<String>ids);
     /**
      * 根据用户id和时间查询用户当天是否排班
      * @param userid
@@ -41,9 +45,13 @@ public interface UserShiftMapper extends BaseMapper<UserShift> {
 
     List<Map<String,Object>> getMothUserShifts(@Param("userid")String userid, @Param("date")String date);
 
-    List<Map<String,Object>>getUsers(Page<Map<String,Object>> page,@Param("deptids")List<String> deptids,@Param("userid")List<String> userids,@Param("type")String type);
+    List<Map<String,Object>>getUsers(Page<Map<String,Object>> page);
+    //查询规则人员
+    List<String>getUserids();
 
     int deleteUserids(@Param("userids") List<String>userids);
 
     List<String>uids(@Param("depts") List<String> depts);
+
+   Map<String,Object>ShiftCount(@Param("id")String id,@Param("date")String date);
 }

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

@@ -68,26 +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.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=")">
-                #{id}
-            </foreach>
-        </if>
-        <if test="userid!=null and userid.size()>0 and type==2">
-            and a.id not in
-            <foreach collection="userid" index="index" item="id" open="(" separator="," close=")">
-                #{id}
-            </foreach>
-        </if>
-        <if test="userid!=null and userid.size()>0 and type==1">
-            and a.id  in
-            <foreach collection="userid" index="index" item="id" open="(" separator="," close=")">
-                #{id}
-            </foreach>
-        </if>
-       order by a.create_time desc
+    select a.id as 'rid',type,a.user_id as 'id', a.work_day as'workDay',b.realname from geke_attendance_rule a left join sys_user b on a.user_id=b.id
     </select>
     <delete id="deleteUserids">
        delete from geke_user_shift where 1=1
@@ -110,4 +91,36 @@ order by a.shift_date desc
         </if>
 
     </select>
+    <select id="getUserNot" resultType="java.util.Map">
+        select id ,realname from sys_user where 1=1
+        <if test="userids!=null and userids.size()>0">
+            and id not in
+            <foreach collection="userids" index="index" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </if>
+    </select>
+    <select id="getUserids" resultType="java.lang.String">
+        select user_id from geke_user_rule
+    </select>
+    <select id="ShiftCount" resultType="java.util.Map">
+        select count(shift_id) as 'count' from geke_user_shift where 1=1
+        <if test="id!=null and ''!=id">
+            and shift_id=#{id}
+        </if>
+
+        <if test="date!=null and ''!=date">
+            and date_format(shift_date,'%Y-%m-%d')=date_format(#{date},'%Y-%m-%d')
+        </if>
+        GROUP BY shift_id
+    </select>
+    <select id="getUserByids" resultType="java.util.Map">
+        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>
 </mapper>

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

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

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

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.geke.shift.mapper.ShiftMapper;
 import org.jeecg.modules.geke.userShift.entity.UserDept;
 import org.jeecg.modules.geke.userShift.entity.UserShift;
 import org.jeecg.modules.geke.userShift.entity.UserShiftVo;
@@ -33,6 +34,9 @@ public class UserShiftServiceImpl extends ServiceImpl<UserShiftMapper, UserShift
     @Autowired
     private  UserShiftMapper userShiftMapper;
 
+    @Autowired
+    private ShiftMapper shiftMapper;
+
 
 
     @Override
@@ -118,41 +122,169 @@ public class UserShiftServiceImpl extends ServiceImpl<UserShiftMapper, UserShift
     }
 
     @Override
-    public IPage<Map<String, Object>> mothUserShift(String date,Integer pageNo,Integer pageSize,List<String>deptids,List<String> userid,String type) throws ParseException {
+    public IPage<Map<String, Object>> mothUserShift(String date,Integer pageNo,Integer pageSize,String type) throws ParseException {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         Page<Map<String, Object>> page = new Page<Map<String, Object>>(pageNo, pageSize);
+        List<String>userids=new ArrayList<>();
         List<String> mySubDepIdsByDepId=null;
-        IPage<Map<String, Object>> users = getUsers(page,deptids,userid,type);
+        IPage<Map<String, Object>> users= getUsers(page);
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(sdf.parse(date));
 
         int year = calendar.get(Calendar.YEAR);//年份
         int month = calendar.get(calendar.MONTH) + 1;//月份
         int actualMaximum = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);//获取前端传过来的时间获取月份的总天数
+        if (type.equals("1")) {
+            if (users.getRecords()!=null&&users.getRecords().size()>0) {
+                users.getRecords().forEach(str -> {
+                    userids.add(str.get("id").toString());
+                });
+            }
+            if (userids != null) {
+                Map<String, String> dep = getDepNamesByUserIds(userids);
+                users.getRecords().forEach(st -> {
+                    st.put("deptName", dep.get(st.get("id").toString()));
+                });
+            }
 
-        for(int i=1;i<=actualMaximum;i++){
-            for (Map user:users.getRecords()){
-                String shiftid="";
-                String  shiftname="";
-                List<Map<String, Object>> id = userShiftMapper.getOneUserShift(user.get("id").toString(), year +"-"+ month+"-" + i, "");
-               if (id.size()>0) {
-                   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);
+            for (int i = 1; i <= actualMaximum; i++) {
+                for (Map user : users.getRecords()) {
+
+                    if (!user.get("type").equals("1") && !user.get("type").equals("3")) {
+                        String shiftname = "";
+                        List<Map<String, Object>> id = userShiftMapper.getOneUserShift(user.get("id").toString(), year + "-" + month + "-" + i, "");
+                        if (id.size() > 0) {
+                            if (id.get(0).get("id").equals("0") || id.get(0).get("id") == "0") {
+                                shiftname = "休息";
+                            } else {
+                                shiftname = id.get(0).get("name").toString();
+                            }
+                        }
+                        user.put("a" + i, shiftname);
+                    } else {
+                        String[] workDays = user.get("workDay").toString().split(",");
+                        String d = year + "-" + month + "-" + i + " :00:00:00";
+                        Date dates = DateUtils.str2Date(d, sdf);
+                        String is = "0";
+                        String ts = String.valueOf(dates.getDay());
+                        for (String ws : workDays) {
+                            if (String.valueOf(dates.getDay()).equals(ws)) {
+                                is = "1";
+                            }
+                        }
+
+                        if (is.equals("1")) {
+                            user.put("a" + i, "班");
+                        } else {
+                            user.put("a" + i, "休");
+                        }
+                    }
+                }
             }
+        }else if (type.equals("2")){
+            if (users.getRecords()!=null){
+                users.getRecords().forEach(s->{
+                    userids.add(s.get("id").toString());
+                });
+            }
+            users = getUserNot(page, userids);
+                    users.getRecords().forEach(str->{
+                        userids.add(str.get("id").toString());
+                    });
+                    Map<String, String> dep = getDepNamesByUserIds(userids);
+                    users.getRecords().forEach(st -> {
+                        st.put("deptName", dep.get(st.get("id").toString()));
+                    });
         }
-
         return users;
     }
 
     @Override
-    public IPage<Map<String, Object>> getUsers(Page<Map<String, Object>> page,List<String> deptids,List<String> userid,String type) {
-        return page.setRecords(userShiftMapper.getUsers(page,deptids,userid,type));
+    public List<Map<String, Object>> mothUserShifts(String date, String type, String userid) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        List<String>userids=new ArrayList<>();
+        List<String> mySubDepIdsByDepId=null;
+        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);//获取前端传过来的时间获取月份的总天数
+        List<Map<String, Object>> userByids = userShiftMapper.getUserByids(Arrays.asList(userid.split(",")));
+        if (!type.equals("2")){
+            if (userByids!=null){
+                for (int i = 1; i <= actualMaximum; i++) {
+                    int ts=i;
+                    userByids.forEach(st->{
+                        st.put("a"+ts,"");
+                        st.put("shiftid"+ts,"");
+                    });
+                }
+            }
+        }else {
+            if (userByids!=null){
+                for (int i = 1; i <= actualMaximum; i++) {
+                    int ts=i;
+                    userByids.forEach(st->{
+                        String shiftname = "";
+                        String sid = "";
+                        List<Map<String, Object>> id = userShiftMapper.getOneUserShift(st.get("id").toString(), year + "-" + month + "-" + ts, "");
+                        if (id.size() > 0) {
+                            if (id.get(0).get("id").equals("0") || id.get(0).get("id") == "0") {
+                                shiftname = "休息";
+                                sid="0";
+                            } else {
+                                shiftname = id.get(0).get("name").toString();
+                                sid=id.get(0).get("id").toString();
+                            }
+                        }
+                        st.put("a" + ts, shiftname);
+                        st.put("shiftid"+ts,sid);
+                    });
+                }
+            }
+        }
+
+        return userByids;
+    }
+
+    @Override
+    public IPage<Map<String, Object>> getUserNot(Page<Map<String, Object>> page, List<String> userids) {
+        return page.setRecords(userShiftMapper.getUserNot(page,userids));
+    }
+
+    @Override
+    public IPage<Map<String, Object>> getUsers(Page<Map<String, Object>> page) {
+        return page.setRecords(userShiftMapper.getUsers(page));
+    }
+
+    @Override
+    public List<Map<String, Object>> mothUserByCount(String date) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        Map<String,Object>mt=new HashMap<>();
+        mt.put("id","0");
+        mt.put("name","休息");
+        List<Map<String, Object>> query = shiftMapper.query();
+        query.add(mt);
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(sdf.parse(date));
+        int year = calendar.get(Calendar.YEAR);//年份
+        int month = calendar.get(calendar.MONTH) + 1;//月份
+        int actualMaximum = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);//获取前端传过来的时间获取月份的总天数
+       if (query.size()>0&&query!=null) {
+           for (int i = 1; i <= actualMaximum; i++) {
+               int c=i;
+               query.forEach(str->{
+                   String cout="0";
+                   String d = year + "-" + month + "-" + c;
+                   Map<String, Object> maps = userShiftMapper.ShiftCount(str.get("id").toString(),d);
+                   if (maps!=null&&maps.get("count")!=null&&!maps.get("count").equals("")){
+                       cout=maps.get("count").toString();
+                   }
+                   str.put("b" + c, cout);
+               });
+           }
+       }
+        return query;
     }
 }

+ 32 - 15
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java

@@ -14,6 +14,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.mail.EmailException;
 import org.apache.commons.mail.HtmlEmail;
+import org.apache.ibatis.annotations.Param;
 import org.apache.poi.sl.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Workbook;
@@ -312,6 +313,7 @@ public class SysUserController {
 				result.error500("未找到对应实体");
 			}else {
 				SysUser user = JSON.parseObject(jsonObject.toJSONString(), SysUser.class);
+				user.setDepartIds(jsonObject.getString("selecteddeparts").toString());
 				user.setUpdateTime(new Date());
 				//String passwordEncode = PasswordUtil.encrypt(user.getUsername(), user.getPassword(), sysUser.getSalt());
 				user.setPassword(sysUser.getPassword());
@@ -1677,22 +1679,37 @@ public class SysUserController {
     public Result<?> queryMothByUser(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                      @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                      HttpServletRequest req, UserShift userShift,String deptid,String usertid,String type,String ruleid) throws ParseException {
-        String deptids="";
-        List<String> userids=null;
-        List<String> mySubDepIdsByDepId=null;
-        if (deptid!=null&&!deptid.equals("")){
-            mySubDepIdsByDepId=Arrays.asList(deptid.split(","));
-        }if (usertid!=null&&!usertid.equals("")){
-            userids=Arrays.asList(usertid.split(","));
-        }if (type.equals("1")||type=="1"){
-            userids=new ArrayList<>();
-            List<Map<String, Object>> users = userRuleService.users(ruleid);
-            for (Map ids:users){
-                userids.add(ids.get("id").toString());
-            }
-        }
+//        String deptids="";
+//        List<String> userids=null;
+//        List<String> mySubDepIdsByDepId=null;
+//        if (deptid!=null&&!deptid.equals("")){
+//            mySubDepIdsByDepId=Arrays.asList(deptid.split(","));
+//        }if (usertid!=null&&!usertid.equals("")){
+//            userids=Arrays.asList(usertid.split(","));
+//        }if (type.equals("1")||type=="1"){
+//            userids=new ArrayList<>();
+//            List<Map<String, Object>> users = userRuleService.users(ruleid);
+//            for (Map ids:users){
+//                userids.add(ids.get("id").toString());
+//            }
+//        }
+
+        IPage<Map<String, Object>> maps = userShiftService.mothUserShift(DateUtils.formatDate(userShift.getShiftDate()),pageNo,pageSize,type);
+        return Result.OK(maps);
+    }
+
+
+    @GetMapping(value = "/queryMothByUsers")
+    public Result<?> queryMothByUsers(HttpServletRequest req, UserShift userShift,String deptid,String usertid,String type) throws ParseException {
+        List<Map<String, Object>> maps = userShiftService.mothUserShifts(DateUtils.formatDate(userShift.getShiftDate()), type, usertid);
+        return Result.OK(maps);
+    }
 
-        IPage<Map<String, Object>> maps = userShiftService.mothUserShift(DateUtils.formatDate(userShift.getShiftDate()),pageNo,pageSize,mySubDepIdsByDepId,userids,type);
+    @PostMapping(value = "/queryMothByCount")
+    public Result<?> queryMothByCount(@RequestBody UserShift userShift) throws ParseException {
+        Date shiftDate = userShift.getShiftDate();
+       String s= DateUtils.formatDate(userShift.getShiftDate(),"yyyy-MM-dd HH:mm:ss");
+        List<Map<String, Object>> maps = userShiftService.mothUserByCount(s);
         return Result.OK(maps);
     }
 

+ 15 - 7
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUser.java

@@ -49,11 +49,11 @@ public class SysUser implements Serializable {
     /**
      * 真实姓名
      */
-    @Excel(name = "真实姓名", width = 15)
+    @Excel(name = "*真实姓名", width = 15)
     private String realname;
 
     /**英文名**/
-    @Excel(name="英文名",width = 15)
+    @Excel(name="*英文名",width = 15)
     private  String egName;
     /**
      * 工号,唯一键
@@ -61,7 +61,7 @@ public class SysUser implements Serializable {
     @Excel(name = "工号", width = 15)
     private String workNo;
 
-    @Excel(name = "身份证号码", width = 15)
+    @Excel(name = "*身份证号码", width = 15)
     private String sfzCode;
 
     /**
@@ -74,6 +74,7 @@ public class SysUser implements Serializable {
 
     @Excel(name = "公积金账号", width = 15)
     private String syFund;
+
     /**
      * 密码
      */
@@ -114,7 +115,7 @@ public class SysUser implements Serializable {
     /**
      * 性别(1:男 2:女)
      */
-    @Excel(name = "性别", width = 15,dicCode="sex")
+    @Excel(name = "*性别", width = 15,dicCode="sex")
     @Dict(dicCode = "sex")
     private Integer sex;
 
@@ -122,20 +123,27 @@ public class SysUser implements Serializable {
     /**
      * 电子邮件
      */
-    @Excel(name = "电子邮件", width = 15)
+    @Excel(name = "*电子邮件", width = 15)
     private String email;
 
 
     /**
      * 电话
      */
-    @Excel(name = "电话", width = 15)
+    @Excel(name = "*电话", width = 15)
     private String phone;
 
     /**部门名称*/
-    @Excel(name = "部门", width = 15)
+    @Excel(name = "*部门", width = 15)
     private transient String orgCodeTxt;
 
+
+    @Excel(name = "银行账号", width = 15)
+    private String bankCard;
+
+
+    @Excel(name = "开户行", width = 15)
+    private String bankAddr;
     /**
      * 雇佣状态 10在职 20离退 30离职
      */

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

@@ -417,21 +417,27 @@ on a.depart_name=b.orgCodeTxt
 	</select>
 
 	<select id="kQueryUser"  resultType="org.jeecg.modules.system.entity.SysUser">
-		select *from sys_user where del_flag='0'
+		select DISTINCT a.*from sys_user a
+		left join sys_user_depart b on a.id=b.user_id
+		left join sys_depart c on b.dep_id=c.id
+		where a.del_flag='0'
 		<if test="user.realname!=null and ''!=user.realname">
-			and realname like concat(concat('%',#{user.realname}),'%')
+			and a.realname like concat(concat('%',#{user.realname}),'%')
 		</if>
 		<if test="user.sex!=null and ''!=user.sex">
-			and sex=#{user.sex}
+			and a.sex=#{user.sex}
 		</if>
 		<if test="user.phone!=null and ''!=user.phone">
-			and phone like concat(concat('%',#{user.phone}),'%')
+			and a.phone like concat(concat('%',#{user.phone}),'%')
 		</if>
 		<if test="user.workNo!=null and ''!=user.workNo">
-			and work_no like concat(concat('%',#{user.workNo}),'%')
+			and a.work_no like concat(concat('%',#{user.workNo}),'%')
 		</if>
 		<if test="user.employmentStatus!=null and ''!=user.employmentStatus">
-			and employment_status=#{user.employmentStatus}
+			and a.employment_status=#{user.employmentStatus}
+		</if>
+		<if test="user.orgCodeTxt!=null and ''!=user.orgCodeTxt">
+			and c.depart_name like concat(concat('%',#{user.orgCodeTxt}),'%')
 		</if>
 		order by create_time DESC
 	</select>

+ 11 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/controller/workOvertimeController.java

@@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletResponse;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.util.DateUtils;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.workOvertime.entity.workOvertime;
 import org.jeecg.modules.workOvertime.service.IworkOvertimeService;
@@ -80,7 +81,16 @@ public class workOvertimeController extends JeecgController<workOvertime, IworkO
 									@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
 									HttpServletRequest req) {
 		 Page<workOvertime> page = new Page<workOvertime>(pageNo, pageSize);
-		 IPage<workOvertime> pageList = workOvertimeService.getWork(page,workOvertime.getPerson(),workOvertime.getCode());
+		 String startDate="";
+		 String endDate="";
+		 if (workOvertime.getBeginDate()!=null){
+		 	startDate=DateUtils.formatDate(workOvertime.getBeginDate());
+		 } if (workOvertime.getEndDate()!=null){
+		 	endDate=DateUtils.formatDate(workOvertime.getEndDate());
+		 }
+
+
+		 IPage<workOvertime> pageList = workOvertimeService.getWork(page,workOvertime.getPerson(),workOvertime.getCode(),startDate ,endDate);
 		 return Result.OK(pageList);
 	 }
 	/**

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/mapper/workOvertimeMapper.java

@@ -18,6 +18,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 public interface workOvertimeMapper extends BaseMapper<workOvertime> {
     String getOne(@Param("userid")String userid,@Param("date") String date);
 
-    List<workOvertime>getworkList(Page<workOvertime> page,@Param("name")String name,@Param("code")String code);
+    List<workOvertime>getworkList(Page<workOvertime> page,@Param("name")String name,@Param("code")String code,@Param("startDate")String startDate,@Param("endDate")String endDate);
 
 }

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

@@ -19,8 +19,14 @@
     and  a.code=#{code}
 </if>
 <if test="name!=null and ''!=name">
-    and b.realname=#{name}
+    and b.realname  like concat(concat('%',#{name}),'%')
 </if>
+<if test="startDate!=null and ''!=startDate">
+    and date_format(a.begin_date,'%Y-%m-%d')>=#{startDate}
+</if>
+        <if test="endDate!=null and ''!=endDate">
+            and date_format(a.end_date,'%Y-%m-%d')&lt;=#{endDate}
+        </if>
 order by a.commit_date desc
     </select>
 </mapper>

+ 2 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/service/IworkOvertimeService.java

@@ -2,6 +2,7 @@ package org.jeecg.modules.workOvertime.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.workOvertime.entity.workOvertime;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -16,5 +17,5 @@ import java.util.Map;
 public interface IworkOvertimeService extends IService<workOvertime> {
     Boolean workSave(workOvertime work);
 
-    IPage<workOvertime> getWork(Page<workOvertime> page,String name, String code);
+    IPage<workOvertime> getWork(Page<workOvertime> page, String name, String code,String startDate,String endDate);
 }

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

@@ -36,7 +36,7 @@ public class workOvertimeServiceImpl extends ServiceImpl<workOvertimeMapper, wor
     }
 
     @Override
-    public IPage<workOvertime> getWork(Page<workOvertime> page, String name, String code) {
-        return page.setRecords(works.getworkList(page,name,code));
+    public IPage<workOvertime> getWork(Page<workOvertime> page, String name, String code,String startDate,String endDate) {
+        return page.setRecords(works.getworkList(page,name,code,startDate, endDate));
     }
 }