Ver código fonte

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/controller/workOvertimeController.java
#	jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/entity/workOvertime.java
#	jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/service/impl/workOvertimeServiceImpl.java
ysh 3 anos atrás
pai
commit
fbd98be7c1
26 arquivos alterados com 587 adições e 182 exclusões
  1. 26 2
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/makeUpCard/controller/MakeUpCardController.java
  2. 42 24
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/makeUpCard/entity/MakeUpCard.java
  3. 9 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/makeUpCard/mapper/MakeUpCardMapper.java
  4. 26 4
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/makeUpCard/mapper/xml/MakeUpCardMapper.xml
  5. 31 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/makeUpCard/service/impl/MakeUpCardServiceImpl.java
  6. 3 2
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userPrize/controller/UserPrizeController.java
  7. 20 5
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userPrize/entity/UserPrize.java
  8. 2 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userPrize/mapper/UserPrizeMapper.java
  9. 8 5
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userPrize/mapper/xml/UserPrizeMapper.xml
  10. 2 1
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userPrize/service/IUserPrizeService.java
  11. 33 22
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userPrize/service/impl/UserPrizeServiceImpl.java
  12. 21 17
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPositionController.java
  13. 81 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
  14. 22 7
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysPosition.java
  15. 96 16
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUser.java
  16. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysPositionMapper.java
  17. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java
  18. 8 4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysPositionMapper.xml
  19. 8 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
  20. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
  21. 36 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysPositionServiceImpl.java
  22. 22 22
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
  23. 28 20
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/controller/workOvertimeController.java
  24. 28 13
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/entity/workOvertime.java
  25. 3 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/mapper/xml/workOvertimeMapper.xml
  26. 29 6
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/service/impl/workOvertimeServiceImpl.java

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

@@ -8,9 +8,12 @@ import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import org.apache.shiro.SecurityUtils;
 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.system.vo.LoginUser;
 import org.jeecg.common.util.DateUtils;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.geke.makeUpCard.entity.MakeUpCard;
@@ -28,6 +31,7 @@ import org.jeecgframework.poi.excel.entity.ImportParams;
 import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartHttpServletRequest;
@@ -49,7 +53,10 @@ import io.swagger.annotations.ApiOperation;
 public class MakeUpCardController extends JeecgController<MakeUpCard, IMakeUpCardService> {
 	@Autowired
 	private IMakeUpCardService makeUpCardService;
-	
+
+
+	 @Value("${jeecg.path.upload}")
+	 private String upLoadPath;
 	/**
 	 * 分页列表查询
 	 *
@@ -154,7 +161,24 @@ public class MakeUpCardController extends JeecgController<MakeUpCard, IMakeUpCar
    */
   @RequestMapping(value = "/exportXls")
   public ModelAndView exportXls(HttpServletRequest request, MakeUpCard makeUpCard) {
-      return super.exportXls(request, makeUpCard, MakeUpCard.class, "补卡信息");
+	  String date="";
+	  if (makeUpCard.getTime()!=null){
+		  date=DateUtils.formatDate(makeUpCard.getTime());
+	  }
+	  Page<MakeUpCard> page = new Page<MakeUpCard>(1, 10000);
+	  Page<MakeUpCard> lists = makeUpCardService.lists(page, makeUpCard.getCode(), makeUpCard.getUserId(),makeUpCard.getDept(),date);
+	  // Step.3 AutoPoi 导出Excel
+	  LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+	  ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+	  mv.addObject(NormalExcelConstants.FILE_NAME, "补卡信息列表"); //此处设置的filename无效 ,前端会重更新设置一下
+	  mv.addObject(NormalExcelConstants.CLASS, MakeUpCard.class);
+	  //update-begin--Author:liusq  Date:20210126 for:图片导出报错,ImageBasePath未设置--------------------
+	  ExportParams  exportParams=new ExportParams("补卡信息列表", "导出人:" + sysUser.getRealname(), "补卡信息列表");
+	  exportParams.setImageBasePath(upLoadPath);
+	  //update-end--Author:liusq  Date:20210126 for:图片导出报错,ImageBasePath未设置----------------------
+	  mv.addObject(NormalExcelConstants.PARAMS,exportParams);
+	  mv.addObject(NormalExcelConstants.DATA_LIST, lists.getRecords());
+	  return mv;
   }
 
   /**

+ 42 - 24
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/makeUpCard/entity/MakeUpCard.java

@@ -32,46 +32,64 @@ public class MakeUpCard {
 	@TableId(type = IdType.ASSIGN_ID)
     @ApiModelProperty(value = "id")
 	private java.lang.String id;
-	/**审批编号*/
-	@Excel(name = "审批编号", width = 15)
-    @ApiModelProperty(value = "审批编号")
-	private java.lang.String code;
-	/**提交时间*/
-	@Excel(name = "提交时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "提交时间")
-	private java.util.Date commitDate;
-	/**异常状态(文本)*/
-	@Excel(name = "异常状态(文本)", width = 15)
-    @ApiModelProperty(value = "异常状态(文本)")
-	private java.lang.String state;
-	/**补卡时间*/
-	@Excel(name = "补卡时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "补卡时间")
-	private java.util.Date time;
+
 	/**用户id*/
-	@Excel(name = "用户id", width = 15)
+	@Excel(name = "姓名", width = 15)
     @ApiModelProperty(value = "用户id")
 	private java.lang.String userId;
+	/**备用虚拟字段-**/
+	@Excel(name = "一级部门", width = 15)
+	private transient  String deptName;
+
+	/**备用虚拟字段**/
+	@Excel(name = "二级部门", width = 15)
+	private transient  String deptName2;
+
+	/**备用虚拟字段**/
+	@Excel(name = "三级部门", width = 15)
+	private transient  String deptName3;
 	/**部门*/
-	@Excel(name = "部门", width = 15)
+	@Excel(name = "末级部门", width = 15)
     @ApiModelProperty(value = "部门")
 	private java.lang.String dept;
 	/**补卡事由*/
 	@Excel(name = "补卡事由", width = 15)
     @ApiModelProperty(value = "补卡事由")
 	private java.lang.String demo;
+	/**异常状态(文本)*/
+	@Excel(name = "异常状态(文本)", width = 15)
+	@ApiModelProperty(value = "异常状态(文本)")
+	private java.lang.String state;
+	/**补卡时间*/
+	@Excel(name = "补卡时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "补卡时间")
+	private java.util.Date time;
+	/**提交时间*/
+	@Excel(name = "提交时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "提交时间")
+	private java.util.Date commitDate;
+	/**审批编号*/
+	@Excel(name = "审批编号", width = 15)
+	@ApiModelProperty(value = "审批编号")
+	private java.lang.String code;
 	/**创建人*/
-	@Excel(name = "创建人", width = 15)
     @ApiModelProperty(value = "创建人")
 	private java.lang.String createBy;
 	/**创建时间*/
-	@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
 	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "创建时间")
 	private java.util.Date createTime;
+
+
+
+	/**备用虚拟字段**/
+	private transient  String order;
+
+	/**备用虚拟字段**/
+	private transient  String deptCode;
 }

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

@@ -17,5 +17,13 @@ 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,@Param("dept")String dept,@Param("date")String date);
+    List<MakeUpCard>lists(Page<MakeUpCard> page,@Param("code")String code,@Param("username")String username,@Param("deptids")List<String> deptids,@Param("date")String date);
+    /**
+     *  根据部门Id查询,当前和下级所有部门IDS
+     * @param departId
+     * @return
+     */
+    List<String> getSubDepIdsByDepId(@org.springframework.data.repository.query.Param("departId") String departId);
+
+    List<Map<String,Object>>listDeptTop(@org.springframework.data.repository.query.Param("codes")List<String>codes);
 }

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

@@ -9,22 +9,44 @@
         </if>
     </delete>
     <select id="lists" resultType="org.jeecg.modules.geke.makeUpCard.entity.MakeUpCard">
-        select a.id, a.code,a.commit_date as 'commitDate',a.state,a.demo,a.time,b.realname as 'userId',c.depart_name as'dept' from geke_make_up_card a
+        select a.id, a.code,a.commit_date as 'commitDate',a.state,a.demo,a.time,b.realname as 'userId',c.depart_name as'dept',c.org_type as 'order'
+            ,c.org_code as 'deptCode'
+            from geke_make_up_card a
             left join sys_user b on a.user_id=b.id
             left join sys_depart c on a.dept=c.id
-            where 1=1
+            where b.del_flag='0'
         <if test="code!=null and ''!=code">
             and a.code LIKE concat(concat('%',#{code}),'%')
         </if>
     <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 test="deptids!=null and deptids.size()>0">
+            and c.id in
+            <foreach collection="deptids" index="index" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
         </if>
         <if test="date!=null and ''!=date">
             and  date_format(a.time,'%Y-%m-%d')=date_format(#{date},'%Y-%m-%d')
         </if>
         order by a.commit_date desc
     </select>
+
+    <!-- 根据部门Id查询,当前和下级所有部门IDS -->
+    <select id="getSubDepIdsByDepId" resultType="java.lang.String">
+        select id from sys_depart where del_flag = '0' and org_code like concat((select org_code from sys_depart where id=#{departId}),'%')
+    </select>
+
+    <select id="listDeptTop" resultType="java.util.Map">
+        select *from sys_depart where 1=1
+        <if test="codes!=null and codes.size()>0">
+            and org_code in
+            <foreach collection="codes" index="index" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </if>
+        order by org_type asc
+    </select>
+
 </mapper>

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

@@ -1,6 +1,7 @@
 package org.jeecg.modules.geke.makeUpCard.service.impl;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.modules.geke.attendanceRule.service.IAttendanceRuleService;
 import org.jeecg.modules.geke.makeUpCard.entity.MakeUpCard;
 import org.jeecg.modules.geke.makeUpCard.mapper.MakeUpCardMapper;
 import org.jeecg.modules.geke.makeUpCard.service.IMakeUpCardService;
@@ -9,6 +10,8 @@ import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -29,6 +32,33 @@ public class MakeUpCardServiceImpl extends ServiceImpl<MakeUpCardMapper, MakeUpC
 
     @Override
     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));
+        List<String> subDepIdsByDepId=null;
+        if (dept!=null){
+            subDepIdsByDepId= makeUpCardMapper.getSubDepIdsByDepId(dept);
+       }
+        List<MakeUpCard> lists = makeUpCardMapper.lists(page, code, username, subDepIdsByDepId, date);
+        if (lists!=null&&lists.size()>0){
+            lists.forEach(str->{
+                String codet=str.getDeptCode();
+                List<String>codes=new ArrayList<>();
+                for (int i=0;i<codet.length();i=i+2){
+                    codes.add(codet.substring(0,i+2));
+                }
+                List<Map<String,Object>> sysDeparts = makeUpCardMapper.listDeptTop(codes);
+                if (sysDeparts!=null&&sysDeparts.size()>0){
+                    sysDeparts.forEach(st->{
+                        if (st.get("org_type").equals("1")||st.get("org_type").equals(1)){
+                            str.setDeptName(st.get("depart_name").toString());
+                        }else if (st.get("org_type").equals("2")||st.get("org_type").equals(2)){
+                            str.setDeptName2(st.get("depart_name").toString());
+                        }else if (st.get("org_type").equals("3")||st.get("org_type").equals(3)){
+                            str.setDeptName3(st.get("depart_name").toString());
+                        }
+                    });
+                }
+
+            });
+        }
+        return page.setRecords(lists);
     }
 }

+ 3 - 2
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userPrize/controller/UserPrizeController.java

@@ -12,6 +12,7 @@ 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.oConvertUtils;
+import org.jeecg.modules.geke.makeUpCard.entity.MakeUpCard;
 import org.jeecg.modules.geke.userPrize.entity.UserPrize;
 import org.jeecg.modules.geke.userPrize.service.IUserPrizeService;
 import java.util.Date;
@@ -66,8 +67,8 @@ public class UserPrizeController extends JeecgController<UserPrize, IUserPrizeSe
 								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
 								   HttpServletRequest req) {
 		QueryWrapper<UserPrize> queryWrapper = QueryGenerator.initQueryWrapper(userPrize, req.getParameterMap());
-		Page<Map<String,Object>> page = new Page<Map<String,Object>>(pageNo, pageSize);
-		Page<Map<String,Object>> lists = userPrizeService.lists(page, userPrize);
+		Page<UserPrize> page = new Page<UserPrize>(pageNo, pageSize);
+		Page<UserPrize>lists = userPrizeService.lists(page, userPrize);
 		return Result.OK(lists);
 	}
 	

+ 20 - 5
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userPrize/entity/UserPrize.java

@@ -12,6 +12,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import org.jeecg.common.aspect.annotation.Dict;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
@@ -37,23 +38,34 @@ public class UserPrize {
     @ApiModelProperty(value = "员工id")
 	private java.lang.String userId;
 	/**部门id*/
-	@Excel(name = "部门id", width = 15)
+	/**用户所属组织**/
+	@Excel(name = "一级部门", width = 15)
+	private transient  String deptName;
+	/**用户所属组织**/
+	@Excel(name = "二级部门", width = 15)
+	private  transient String deptName1;
+	/**用户所属组织**/
+	@Excel(name = "三级部门", width = 15)
+	private transient  String deptName2;
+
+	/**用户所属组织**/
+	@Excel(name = "末级部门", width = 15)
+	private transient  String deptNames;
+
     @ApiModelProperty(value = "部门id")
 	private java.lang.String deptId;
 	/**类型(0奖励,1惩罚)*/
-	@Excel(name = "类型(0奖励,1惩罚)", width = 15)
-    @ApiModelProperty(value = "类型(0奖励,1惩罚)")
+	@Excel(name = "类型", width = 15,dicCode="work_type")
+	@Dict(dicCode = "work_type")
 	private java.lang.String type;
 	/**备注*/
 	@Excel(name = "备注", width = 15)
     @ApiModelProperty(value = "备注")
 	private java.lang.String demo;
 	/**创建人*/
-	@Excel(name = "创建人", width = 15)
     @ApiModelProperty(value = "创建人")
 	private java.lang.String createBy;
 	/**创建时间*/
-	@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
 	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "创建时间")
@@ -66,4 +78,7 @@ public class UserPrize {
 	private java.util.Date date;
 
 	private  transient String realname;
+
+	private  transient String orgCode;
+
 }

+ 2 - 1
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userPrize/mapper/UserPrizeMapper.java

@@ -5,6 +5,7 @@ import java.util.Map;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.geke.makeUpCard.entity.MakeUpCard;
 import org.jeecg.modules.geke.userPrize.entity.UserPrize;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -16,7 +17,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface UserPrizeMapper extends BaseMapper<UserPrize> {
 
-    List<Map<String,Object>>lists(Page<Map<String,Object>> page, @Param("userPrize") UserPrize userPrize,@Param("date")String date);
+    List<UserPrize>lists(Page<UserPrize> page, @Param("userPrize") UserPrize userPrize, @Param("date")String date,@Param("deptids")List<String>deptids);
 
     List<Map<String,Object>>queryDept(@Param("userid")String userid);
 

+ 8 - 5
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userPrize/mapper/xml/UserPrizeMapper.xml

@@ -2,8 +2,8 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.geke.userPrize.mapper.UserPrizeMapper">
 
-    <select id="lists" resultType="java.util.Map">
-        select DISTINCT b.id as'userid',b.realname as 'realname',a.id,a.demo,a.date,a.type from geke_user_prize a
+    <select id="lists" resultType="org.jeecg.modules.geke.userPrize.entity.UserPrize">
+        select DISTINCT b.id as'userid',b.realname as 'realname',a.id,a.demo,a.date,a.type,a.create_by as 'createBy' from geke_user_prize a
         left join sys_user b on a.user_id=b.id
         left join sys_user_depart c on b.id=c.user_id
         left join sys_depart d on c.dep_id=d.id
@@ -11,8 +11,11 @@
         <if test="userPrize.realname!=null and ''!=userPrize.realname">
             and b.realname like concat(concat('%',#{userPrize.realname}),'%')
         </if>
-        <if test="userPrize.deptId!=null and ''!=userPrize.deptId">
-            and d.depart_name like concat(concat('%',#{userPrize.deptId}),'%')
+        <if test="deptids!=null and deptids.size()>0">
+            and d.id in
+            <foreach collection="deptids" index="index" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
         </if>
         <if test="userPrize.demo!=null and ''!=userPrize.demo">
             and a.demo like concat(concat('%',#{userPrize.demo}),'%')
@@ -28,7 +31,7 @@
         </if>
     </select>
     <select id="queryDept" resultType="java.util.Map">
-        select d.id,d.depart_name as 'name' from sys_user_depart c
+        select d.id,d.depart_name as 'name',d.org_code as 'code' from sys_user_depart c
         left join sys_depart d on c.dep_id=d.id
         left join sys_user a on a.id=c.user_id
         where a.del_flag='0'

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

@@ -2,6 +2,7 @@ package org.jeecg.modules.geke.userPrize.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.geke.makeUpCard.entity.MakeUpCard;
 import org.jeecg.modules.geke.userPrize.entity.UserPrize;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -15,5 +16,5 @@ import java.util.Map;
  * @Version: V1.0
  */
 public interface IUserPrizeService extends IService<UserPrize> {
-    Page<Map<String,Object>> lists(Page<Map<String,Object>> page,UserPrize userPrize);
+    Page<UserPrize> lists(Page<UserPrize> page, UserPrize userPrize);
 }

+ 33 - 22
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userPrize/service/impl/UserPrizeServiceImpl.java

@@ -2,6 +2,8 @@ package org.jeecg.modules.geke.userPrize.service.impl;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.geke.makeUpCard.entity.MakeUpCard;
+import org.jeecg.modules.geke.makeUpCard.mapper.MakeUpCardMapper;
 import org.jeecg.modules.geke.userPrize.entity.UserPrize;
 import org.jeecg.modules.geke.userPrize.mapper.UserPrizeMapper;
 import org.jeecg.modules.geke.userPrize.service.IUserPrizeService;
@@ -10,6 +12,7 @@ import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -24,36 +27,44 @@ public class UserPrizeServiceImpl extends ServiceImpl<UserPrizeMapper, UserPrize
     @Autowired
     private  UserPrizeMapper userPrizeMapper;
 
+    @Autowired
+    private MakeUpCardMapper makeUpCardMapper;
+
     @Override
-    public Page<Map<String,Object>> lists(Page<Map<String,Object>> page, UserPrize userPrize) {
+    public Page<UserPrize> lists(Page<UserPrize> page, UserPrize userPrize) {
         String date="";
+        List<String> subDepIdsByDepId=null;
         if (userPrize.getDate()!=null){
             date = DateUtils.formatDate(userPrize.getDate());
         }
-        Page<Map<String,Object>> userPrizePage = page.setRecords(userPrizeMapper.lists(page, userPrize,date));
-        userPrizePage.getRecords().forEach(str->{
-            List<Map<String, Object>> userid = userPrizeMapper.queryDept(str.get("userid").toString());
+        if (userPrize.getDeptId()!=null){
+            subDepIdsByDepId= makeUpCardMapper.getSubDepIdsByDepId(userPrize.getDeptId());
+        }
+        List<UserPrize> lists = userPrizeMapper.lists(page, userPrize, date,subDepIdsByDepId);
+        lists.forEach(str->{
+            List<Map<String, Object>> userid = userPrizeMapper.queryDept(str.getUserId());
             if (userid!=null){
-                String deptid="";
-                String deptname="";
-                for (Map s:userid){
-                    if (deptid.equals("")){
-                        deptid=s.get("id").toString();
-                    }else {
-                        deptid=deptid+","+s.get("id").toString();
-                    }
-
-
-                    if (deptname.equals("")){
-                        deptname=s.get("name").toString();
-                    }else {
-                        deptname=deptname+","+s.get("name").toString();
-                    }
+                String code=userid.get(0).get("code").toString();
+                str.setDeptNames(userid.get(0).get("name").toString());
+                str.setDeptId(userid.get(0).get("id").toString());
+                List<String> codes = new ArrayList<>();
+                for (int i = 0; i < code.length(); i = i + 2) {
+                    codes.add(code.substring(0, i + 2));
+                }
+                List<Map<String,Object>> sysDeparts = makeUpCardMapper.listDeptTop(codes);
+                if (sysDeparts!=null&&sysDeparts.size()>0){
+                    sysDeparts.forEach(st->{
+                        if (st.get("org_type").equals("1")||st.get("org_type").equals(1)){
+                            str.setDeptName(st.get("depart_name").toString());
+                        }else if (st.get("org_type").equals("2")||st.get("org_type").equals(2)){
+                            str.setDeptName1(st.get("depart_name").toString());
+                        }else if (st.get("org_type").equals("3")||st.get("org_type").equals(3)){
+                            str.setDeptName2(st.get("depart_name").toString());
+                        }
+                    });
                 }
-                str.put("deptid",deptid);
-                str.put("deptname",deptname);
             }
         });
-        return userPrizePage;
+        return page.setRecords(lists);
     }
 }

+ 21 - 17
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPositionController.java

@@ -8,10 +8,12 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ss.formula.functions.T;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.ImportExcelUtil;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.quartz.service.IQuartzJobService;
@@ -232,28 +234,30 @@ public class SysPositionController {
      * @param response
      */
     @RequestMapping(value = "/exportXls")
-    public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+    public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response,SysPosition sysPosition) {
         // Step.1 组装查询条件
-        QueryWrapper<SysPosition> queryWrapper = null;
-        try {
-            String paramsStr = request.getParameter("paramsStr");
-            if (oConvertUtils.isNotEmpty(paramsStr)) {
-                String deString = URLDecoder.decode(paramsStr, "UTF-8");
-                SysPosition sysPosition = JSON.parseObject(deString, SysPosition.class);
-                queryWrapper = QueryGenerator.initQueryWrapper(sysPosition, request.getParameterMap());
-            }
-        } catch (UnsupportedEncodingException e) {
-            e.printStackTrace();
-        }
-
+//        QueryWrapper<SysPosition> queryWrapper = null;
+//        try {
+//            String paramsStr = request.getParameter("paramsStr");
+//            if (oConvertUtils.isNotEmpty(paramsStr)) {
+//                String deString = URLDecoder.decode(paramsStr, "UTF-8");
+//                SysPosition  sysPosition = JSON.parseObject(deString, SysPosition.class);
+//                queryWrapper = QueryGenerator.initQueryWrapper(sysPosition, request.getParameterMap());
+//            }
+//        } catch (UnsupportedEncodingException e) {
+//            e.printStackTrace();
+//        }
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         //Step.2 AutoPoi 导出Excel
         ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
-        List<SysPosition> pageList = sysPositionService.list(queryWrapper);
+        Page<SysPosition> page = new Page<SysPosition>(1, 10000);
+        IPage<SysPosition> pageList = sysPositionService.lists(page,sysPosition);
+        //List<SysPosition> pageList = sysPositionService.list(queryWrapper);
         //导出文件名称
-        mv.addObject(NormalExcelConstants.FILE_NAME, "职务表列表");
+        mv.addObject(NormalExcelConstants.FILE_NAME, "职表列表");
         mv.addObject(NormalExcelConstants.CLASS, SysPosition.class);
-        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("职务表列表数据", "导出人:Jeecg", "导出信息"));
-        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("职位表列表数据", "导出人:"+sysUser.getRealname(), "导出信息"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList.getRecords());
         return mv;
     }
 

+ 81 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java

@@ -33,6 +33,8 @@ import org.jeecg.common.system.util.JwtUtil;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.*;
 import org.jeecg.modules.geke.attendance.service.IAttendanceService;
+import org.jeecg.modules.geke.attendanceRule.entity.AttendanceRule;
+import org.jeecg.modules.geke.attendanceRule.service.IAttendanceRuleService;
 import org.jeecg.modules.geke.historyWages.entity.HistoryWages;
 import org.jeecg.modules.geke.historyWages.service.IHistoryWagesService;
 import org.jeecg.modules.geke.sysFile.entity.SysFile;
@@ -143,6 +145,9 @@ public class SysUserController {
 	@Autowired
 	private RedisUtil redisUtil;
 
+	@Autowired
+    private IAttendanceRuleService attendanceRuleService;
+
     @Value("${jeecg.path.upload}")
     private String upLoadPath;
 
@@ -256,12 +261,32 @@ 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);
+        String deptids="";
+        String state="0";
+        List<String> mySubDepIdsByDepId=null;
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        List<SysUserRole> userRole = sysUserRoleService.list(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, sysUser.getId()));
+        if (userRole!=null&&userRole.size()>0){
+            for (SysUserRole role:userRole){
+                if (role.getRoleId().equals("1462659329857978370")){
+                    List<SysDepart> list = this.sysDepartService.queryUserDeparts(sysUser.getId());
+                    for (SysDepart depart:list){
+                        deptids+=depart.getId()+",";
+                        if (depart.getId().equals("1")){
+                            state="1";
+                        }
+                    }
+                    if (state.equals("0")){
+                        mySubDepIdsByDepId = sysDepartService.getMySubDepIdsByDepId(deptids);
+                    }
+                }
+            }
+        }
         List<String> subDepIdsByDepId=null;
         if (user.getOrgCodeTxt()!=null){
             subDepIdsByDepId= sysDepartService.getSubDepIdsByDepId(user.getOrgCodeTxt());
         }
-        Page<SysUser> pageList = sysUserService.kQueryUser(page, user,subDepIdsByDepId);
+        Page<SysUser> pageList = sysUserService.kQueryUser(page, user,subDepIdsByDepId,mySubDepIdsByDepId);
         //批量查询用户的所属部门
         //step.1 先拿到全部的 useids
         //step.2 通过 useids,一次性查询用户的所属部门名字
@@ -347,6 +372,19 @@ public class SysUserController {
             }
 			sysUserService.addUserWithRole(user, selectedRoles);
             sysUserService.addUserWithDepart(user, selectedDeparts);
+            if (jsonObject.getString("type")!=null){
+                AttendanceRule attendanceRule=new AttendanceRule();
+                attendanceRule.setUserId(String.valueOf(codeVo.getSeqNo()));
+                attendanceRule.setType(jsonObject.getString("type").toString());
+                if (jsonObject.getString("type").equals(1)||jsonObject.getString("type").equals("1")){
+                    String str="2022-01-02 10:00:00";
+                    String end="2022-01-02 19:00:00";
+                    attendanceRule.setWorkDay("0,1,2,3,4,5,6");
+                    attendanceRule.setStartDate(DateUtils.parseDate(str,"yyyy-MM-dd HH:mm:ss"));
+                    attendanceRule.setEndDate(DateUtils.parseDate(end,"yyyy-MM-dd HH:mm:ss"));
+                }
+                attendanceRuleService.save(attendanceRule);
+            }
             HistoryWages historyWages=new HistoryWages();
             historyWages.setUserId(user.getId());
             historyWages.setWagesOne(user.getWagesOne());
@@ -408,6 +446,23 @@ public class SysUserController {
                 sysUserService.updateNullPhoneEmail();
                 service.deleteByUserId(user.getId());
                 List<HistoryWages> one = historyWagesService.getOne(user.getId());
+                if (jsonObject.getString("type")!=null){
+                    AttendanceRule ats = attendanceRuleService.UserRule(user.getId());
+                    if (ats!=null){
+                        attendanceRuleService.removeById(ats.getId());
+                    }
+                    AttendanceRule attendanceRule=new AttendanceRule();
+                    attendanceRule.setUserId(user.getId());
+                    attendanceRule.setType(jsonObject.getString("type").toString());
+                    if (jsonObject.getString("type").equals(1)||jsonObject.getString("type").equals("1")){
+                        String str="2022-01-02 10:00:00";
+                        String end="2022-01-02 19:00:00";
+                        attendanceRule.setWorkDay("0,1,2,3,4,5,6");
+                        attendanceRule.setStartDate(DateUtils.parseDate(str,"yyyy-MM-dd HH:mm:ss"));
+                        attendanceRule.setEndDate(DateUtils.parseDate(end,"yyyy-MM-dd HH:mm:ss"));
+                    }
+                    attendanceRuleService.save(attendanceRule);
+                }
                 HistoryWages history =new HistoryWages();
                 history.setWagesBase(user.getWagesBase());
                 history.setWagesOne(user.getWagesOne());
@@ -739,7 +794,7 @@ public class SysUserController {
         if (sysUser.getOrgCodeTxt()!=null){
             subDepIdsByDepId= sysDepartService.getSubDepIdsByDepId(sysUser.getOrgCodeTxt());
         }
-        List<SysUser> pageList = sysUserMapper.kQueryUser(page, sysUser,subDepIdsByDepId);
+        List<SysUser> pageList = sysUserMapper.kQueryUser(page, sysUser,subDepIdsByDepId,null);
 
         List<String>userids=new ArrayList<>();
        if (pageList.size()>0){
@@ -750,6 +805,29 @@ public class SysUserController {
                Map<String,String>  useDepNames = sysUserService.getDepNamesByUserIds(userids);
                pageList.forEach(item->{
                    item.setOrgCodeTxt(useDepNames.get(item.getId()));
+                   List<String> orgName = sysUserService.getOrgName(item.getId());
+                   List<SysUserDepVo> depNamesByUserIds = sysUserMapper.getDepNamesByUserIds(Arrays.asList(item.getId().split(",")));
+                   if (orgName!=null&&orgName.size()>0){
+                       item.setOrgText(sysUserService.getOrgName(item.getId()).get(0));
+                   }if (depNamesByUserIds!=null&&depNamesByUserIds.size()>0&&!depNamesByUserIds.get(0).getOrgType().equals("0")){
+                       String code=depNamesByUserIds.get(0).getOrgCode();
+                       List<String>codes=new ArrayList<>();
+                       for (int i=0;i<code.length();i=i+2){
+                           codes.add(code.substring(0,i+2));
+                       }
+                       List<SysDepart> sysDeparts = sysDepartService.listDeptTop(codes);
+                       if (sysDeparts!=null&&sysDeparts.size()>0){
+                           sysDeparts.forEach(str->{
+                               if (str.getOrgType().equals("1")){
+                                   item.setDel2(str.getDepartName());
+                               }else if (str.getOrgType().equals("2")){
+                                   item.setDel3(str.getDepartName());
+                               }else if (str.getOrgType().equals("3")){
+                                   item.setDel4(str.getDepartName());
+                               }
+                           });
+                       }
+                   }
                });
            }
 

+ 22 - 7
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysPosition.java

@@ -35,16 +35,27 @@ public class SysPosition {
     /**
      * 职务编码
      */
-    @Excel(name = "职编码", width = 15)
-    @ApiModelProperty(value = "职编码")
+    @Excel(name = "职编码", width = 15)
+    @ApiModelProperty(value = "职编码")
     private java.lang.String code;
     /**
      * 职务名称
      */
-    @Excel(name = "职名称", width = 15)
-    @ApiModelProperty(value = "职名称")
+    @Excel(name = "职名称", width = 15)
+    @ApiModelProperty(value = "职名称")
     private java.lang.String name;
 
+    /**用户所属组织**/
+    @Excel(name = "一级部门", width = 15)
+    private transient  String deptName1;
+    /**用户所属组织**/
+    @Excel(name = "二级部门", width = 15)
+    private  transient String deptName2;
+    /**用户所属组织**/
+    @Excel(name = "三级部门", width = 15)
+    private transient  String deptName3;
+
+    @Excel(name = "末级部门", width = 15)
     @ApiModelProperty(value = "部门名称")
     private java.lang.String deptName;
 
@@ -54,14 +65,14 @@ public class SysPosition {
     /**
      * 职级
      */
-    @Excel(name = "职级", width = 15,dicCode ="position_rank")
+
     @ApiModelProperty(value = "职级")
     @Dict(dicCode = "position_rank")
     private java.lang.String postRank;
     /**
      * 公司id
      */
-    @Excel(name = "公司id", width = 15)
+
     @ApiModelProperty(value = "公司id")
     private java.lang.String companyId;
     /**
@@ -91,7 +102,11 @@ public class SysPosition {
     /**
      * 组织机构编码
      */
-    @Excel(name = "组织机构编码", width = 15)
+
     @ApiModelProperty(value = "组织机构编码")
     private java.lang.String sysOrgCode;
+
+
+
+    private transient  String orgCode;
 }

+ 96 - 16
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUser.java

@@ -44,6 +44,11 @@ public class SysUser implements Serializable {
      */
     //@Excel(name = "登录账号", width = 15)
     private String username;
+    /**
+     * 工号,唯一键
+     */
+    @Excel(name = "工号", width = 15)
+    private String workNo;
 
     /**
      * 真实姓名
@@ -54,15 +59,13 @@ public class SysUser implements Serializable {
     /**英文名**/
     @Excel(name="*英文名",width = 15)
     private  String egName;
-    /**
-     * 工号,唯一键
-     */
-    @Excel(name = "工号", width = 15)
-    private String workNo;
 
     @Excel(name = "*身份证号码", width = 15)
     private String sfzCode;
-
+    /**
+     * 年龄
+     */
+    private Integer age;
     /**
      * 生日
      */
@@ -71,8 +74,7 @@ public class SysUser implements Serializable {
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date birthday;
 
-    @Excel(name = "*公积金账号", width = 15)
-    private String syFund;
+
 
     /**
      * 密码
@@ -133,18 +135,100 @@ public class SysUser implements Serializable {
      */
     @Excel(name = "*电话", width = 15)
     private String phone;
+
+
     /**
      * 备注
      */
     private String remarks;
+
+    /**
+     * 国籍
+     */
+    private String nationality;
+
+    /**
+     * 试用时间(按月)
+     */
+    private String trialMoth;
+
+    /**
+     * 试用结束时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date trialEndDate;
+
+    /**
+     * 社会工龄(按月)
+     */
+    private String workMoth;
+
+    /**
+     * 司龄(按月)
+     */
+    private String divisionMoth;
+
+    /**
+     * 户口地址
+     */
+    private String homeAddr;
+
+    /**
+     * 学历
+     */
+    private String education;
+
+    /**
+     * 毕业学校
+     */
+    private String school;
+
+    /**
+     * 合同日期一
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date contractDate;
+
+    /**
+     * 合同日期二
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date contractDate2;
+
+    /**
+     * 合同日期三
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date contractDate3;
+
+    /**
+     * 分摊部门
+     */
+    private  String shareDept;
     /**
      * 家庭住址
      */
     private String addr;
+    /**用户所属组织**/
+    @Excel(name = "一级部门", width = 15)
+    private transient  String del2;
+    /**用户所属组织**/
+    @Excel(name = "二级部门", width = 15)
+    private  transient String del3;
+    /**用户所属组织**/
+    @Excel(name = "三级部门", width = 15)
+    private transient  String del4;
     /**部门名称*/
-    @Excel(name = "*部门", width = 15)
+    @Excel(name = "*末级部门", width = 15)
     private transient String orgCodeTxt;
 
+    @Excel(name = "*公积金账号", width = 15)
+    private String syFund;
+
     @Excel(name = "*银行卡号", width = 15)
     @TableField(typeHandler = AESEncryptHandler.class)
     private String bankCard;
@@ -317,14 +401,10 @@ public class SysUser implements Serializable {
 
     /**用户所属组织**/
     private  transient  String orgText;
-    /**用户所属组织**/
-    private transient  String del2;
-    /**用户所属组织**/
-    private  transient String del3;
-    /**用户所属组织**/
-    private transient  String del4;
+
     /**用户所属组织**/
     private transient  String del5;
 
-
+    /**备用虚拟字段**/
+    private transient  String type;
 }

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

@@ -19,7 +19,7 @@ public interface SysPositionMapper extends BaseMapper<SysPosition> {
     //根据获取企业微信的职位名称查询对应code值
     String getOne(@Param("name")String name);
 
-    List<SysPosition> lists(Page<SysPosition> page, @Param("sysPosition") SysPosition sysPosition);
+    List<SysPosition> lists(Page<SysPosition> page, @Param("sysPosition") SysPosition sysPosition,@Param("deptids")List<String> deptids);
 
     List<SysPosition>listByDept(Page<SysPosition> page, @Param("deptids")List<String> deptids);
 

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

@@ -220,7 +220,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 	//获取下一个工号
 	void getNextNo(CodeVo params);
 
-	List<SysUser>kQueryUser(Page<SysUser> page,@Param("user") SysUser user,@Param("deptids")List<String> deptids);
+	List<SysUser>kQueryUser(Page<SysUser> page,@Param("user") SysUser user,@Param("deptids")List<String> deptids,@Param("mydeptids")List<String>mydeptids);
 
 	//根据员工姓名查询部门
 	List<Map<String,Object>>getDeptByUserName(@Param("username")String username);

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

@@ -10,10 +10,13 @@
 
     </select>
     <select id="lists" resultType="org.jeecg.modules.system.entity.SysPosition">
-        select a.*,b.depart_name as 'deptName' from sys_position a left join sys_depart b on a.dept_id=b.id
+        select a.*,b.depart_name as 'deptName', b.org_code as 'orgCode'  from sys_position a left join sys_depart b on a.dept_id=b.id
         where 1=1
-        <if test="sysPosition.deptName!=null and ''!=sysPosition.deptName">
-            and b.depart_name like concat(concat('%',#{sysPosition.deptName}),'%')
+        <if test="deptids!=null and deptids.size()>0">
+            and b.id in
+            <foreach collection="deptids" index="index" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
         </if>
         <if test="sysPosition.code!=null and ''!=sysPosition.code">
             and a.code like concat(concat('%',#{sysPosition.code}),'%')
@@ -24,7 +27,8 @@
          order by create_time desc
     </select>
     <select id="listByDept" resultType="org.jeecg.modules.system.entity.SysPosition">
-        select a.*,b.depart_name as 'deptName' from sys_position a left join sys_depart b on a.dept_id=b.id
+        select a.*,b.depart_name as 'deptName', b.org_code as 'orgCode'
+        from sys_position a left join sys_depart b on a.dept_id=b.id
         where 1=1
         <if test="deptids!=null and deptids.size()>0">
         and b.id in

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

@@ -429,9 +429,10 @@ on a.depart_name=b.orgCodeTxt
 	</select>
 
 	<select id="kQueryUser"  resultMap="userMap">
-		select DISTINCT a.*from sys_user a
+		select DISTINCT a.*,d.type as 'type' 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
+		left join geke_attendance_rule d on a.id=d.user_id
 		where a.del_flag='0'
 		<if test="user.realname!=null and ''!=user.realname">
 			and a.realname like concat(concat('%',#{user.realname}),'%')
@@ -454,6 +455,12 @@ on a.depart_name=b.orgCodeTxt
 				#{id}
 			</foreach>
 		</if>
+		<if test="mydeptids!=null and mydeptids.size()>0">
+			and c.id in
+			<foreach collection="mydeptids" index="index" item="id" open="(" separator="," close=")">
+				#{id}
+			</foreach>
+		</if>
 		<if test="user.category!=null and ''!=user.category">
 			and a.category=#{user.category}
 		</if>

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

@@ -307,7 +307,7 @@ List<String>  departIds(String userid);
 
 	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,List<String> deptids);
+	Page<SysUser>kQueryUser(Page<SysUser> page,SysUser user,List<String> deptids,List<String>mydeptids);
 
 	List<Map<String,Object>>getDeptByUserName(String username);
 

+ 36 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysPositionServiceImpl.java

@@ -3,14 +3,18 @@ package org.jeecg.modules.system.service.impl;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.jeecg.common.util.PasswordUtil;
+import org.jeecg.modules.system.entity.SysDepart;
 import org.jeecg.modules.system.entity.SysPosition;
 import org.jeecg.modules.system.mapper.SysPositionMapper;
+import org.jeecg.modules.system.service.ISysDepartService;
 import org.jeecg.modules.system.service.ISysPositionService;
 import org.jeecg.modules.system.util.UrlData;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 职务表
@@ -23,6 +27,9 @@ public class SysPositionServiceImpl extends ServiceImpl<SysPositionMapper, SysPo
     @Autowired
     private  SysPositionMapper positionMapper;
 
+    @Autowired
+    private ISysDepartService sysDepartService;
+
     @Override
     public String getOne(String name) {
         String one = positionMapper.getOne(name);
@@ -40,7 +47,35 @@ public class SysPositionServiceImpl extends ServiceImpl<SysPositionMapper, SysPo
 
     @Override
     public Page<SysPosition> lists(Page<SysPosition> page, SysPosition sysPosition) {
-        return page.setRecords(positionMapper.lists(page,sysPosition));
+        List<String> subDepIdsByDepId=null;
+        if (sysPosition.getDeptId()!=null){
+            subDepIdsByDepId= sysDepartService.getSubDepIdsByDepId(sysPosition.getDeptId());
+        }
+        List<SysPosition> lists = positionMapper.lists(page, sysPosition, subDepIdsByDepId);
+        if (lists!=null&&lists.size()>0){
+            lists.forEach(str->{
+                String code=str.getOrgCode();
+                if (code!=null) {
+                    List<String> codes = new ArrayList<>();
+                    for (int i = 0; i < code.length(); i = i + 2) {
+                        codes.add(code.substring(0, i + 2));
+                    }
+                    List<SysDepart> sysDeparts = sysDepartService.listDeptTop(codes);
+                    if (sysDeparts != null && sysDeparts.size() > 0) {
+                        sysDeparts.forEach(st -> {
+                            if (st.getOrgType().equals("1")) {
+                                str.setDeptName1(st.getDepartName());
+                            } else if (st.getOrgType().equals("2")) {
+                                str.setDeptName2(st.getDepartName());
+                            } else if (st.getOrgType().equals("3")) {
+                                str.setDeptName3(st.getDepartName());
+                            }
+                        });
+                    }
+                }
+            });
+        }
+        return page.setRecords(lists);
     }
 
     @Override

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

@@ -159,13 +159,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 				sysUserRoleMapper.insert(userRole);
 			}
 		}else {
-			if (user.getUserIdentity().equals("1")||user.getUserIdentity()==1){
+			//if (user.getUserIdentity().equals("1")||user.getUserIdentity()==1){
 				SysUserRole userRole = new SysUserRole(user.getId(), "1473241527673765890");
 				sysUserRoleMapper.insert(userRole);
-			}else if (user.getUserIdentity().equals("2")||user.getUserIdentity()==2){
-				SysUserRole userRole = new SysUserRole(user.getId(), "1462659329857978370");
-				sysUserRoleMapper.insert(userRole);
-			}
+//			}else if (user.getUserIdentity().equals("2")||user.getUserIdentity()==2){
+//				SysUserRole userRole = new SysUserRole(user.getId(), "1462659329857978370");
+//				sysUserRoleMapper.insert(userRole);
+//			}
 		}
 	}
 
@@ -175,21 +175,21 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 	public void editUserWithRole(SysUser user, String roles) {
 		this.updateById(user);
 		//先删后加
-		if(oConvertUtils.isNotEmpty(roles)) {
-			String[] arr = roles.split(",");
-			sysUserRoleMapper.delete(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, user.getId()));
-
-			for (String roleId : arr) {
-				SysUserRole userRole = new SysUserRole(user.getId(), roleId);
-				sysUserRoleMapper.insert(userRole);
-			}
-		}else {
-			if (user.getUserIdentity().equals("1")||user.getUserIdentity()==1){
-				sysUserRoleMapper.delete(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, user.getId()));
-				SysUserRole userRole = new SysUserRole(user.getId(), "1473241527673765890");
-				sysUserRoleMapper.insert(userRole);
-			}
-		}
+//		if(oConvertUtils.isNotEmpty(roles)) {
+//			String[] arr = roles.split(",");
+//			sysUserRoleMapper.delete(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, user.getId()));
+//
+//			for (String roleId : arr) {
+//				SysUserRole userRole = new SysUserRole(user.getId(), roleId);
+//				sysUserRoleMapper.insert(userRole);
+//			}
+//		}else {
+//			if (user.getUserIdentity().equals("1")||user.getUserIdentity()==1){
+//				sysUserRoleMapper.delete(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, user.getId()));
+//				SysUserRole userRole = new SysUserRole(user.getId(), "1473241527673765890");
+//				sysUserRoleMapper.insert(userRole);
+//			}
+//		}
 	}
 
 
@@ -620,8 +620,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 	}
 
 	@Override
-	public Page<SysUser> kQueryUser(Page<SysUser> page, SysUser user,List<String> deptids) {
-		return page.setRecords(userMapper.kQueryUser(page,user,deptids));
+	public Page<SysUser> kQueryUser(Page<SysUser> page, SysUser user,List<String> deptids,List<String>mydeptids) {
+		return page.setRecords(userMapper.kQueryUser(page,user,deptids,mydeptids));
 	}
 
 	@Override

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

@@ -1,6 +1,5 @@
 package org.jeecg.modules.workOvertime.controller;
 
-import java.text.ParseException;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
@@ -10,14 +9,14 @@ import java.net.URLDecoder;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.apache.shiro.SecurityUtils;
 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.system.vo.LoginUser;
 import org.jeecg.common.util.DateUtils;
 import org.jeecg.common.util.oConvertUtils;
-import org.jeecg.modules.viewClockIn.entity.ViewClockIn;
+import org.jeecg.modules.geke.makeUpCard.entity.MakeUpCard;
 import org.jeecg.modules.workOvertime.entity.workOvertime;
 import org.jeecg.modules.workOvertime.service.IworkOvertimeService;
 import java.util.Date;
@@ -33,6 +32,7 @@ import org.jeecgframework.poi.excel.entity.ImportParams;
 import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartHttpServletRequest;
@@ -55,22 +55,11 @@ public class workOvertimeController extends JeecgController<workOvertime, IworkO
 	@Autowired
 	private IworkOvertimeService workOvertimeService;
 
-	 /**
-	  * 获取加班信息
-	  * @param jsonObject
-	  * @return
-	  * @throws ParseException
-	  */
-	 @RequestMapping(value = "/getJiaBan", method = RequestMethod.PUT)
-	 public List<workOvertime> getJiaBan(@RequestBody JSONObject jsonObject) throws ParseException {
-		 String viewDate = jsonObject.get("viewDate").toString();
-		 String username = jsonObject.get("username").toString();
-		 List<workOvertime> list = workOvertimeService.getJiaBan(username,viewDate);
-		 return list;
-	 }
-
-	 /**
+	 @Value("${jeecg.path.upload}")
+	 private String upLoadPath;
+	/**
 	 * 分页列表查询
+	 *
 	 * @param workOvertime
 	 * @param pageNo
 	 * @param pageSize
@@ -189,7 +178,26 @@ public class workOvertimeController extends JeecgController<workOvertime, IworkO
    */
   @RequestMapping(value = "/exportXls")
   public ModelAndView exportXls(HttpServletRequest request, workOvertime workOvertime) {
-      return super.exportXls(request, workOvertime, workOvertime.class, "加班表");
+	  String startDate="";
+	  String endDate="";
+	  if (workOvertime.getBeginDate()!=null){
+		  startDate=DateUtils.formatDate(workOvertime.getBeginDate());
+	  } if (workOvertime.getEndDate()!=null){
+		  endDate=DateUtils.formatDate(workOvertime.getEndDate());
+	  }
+	  Page<workOvertime> page = new Page<workOvertime>(1, 10000);
+	  IPage<workOvertime> pageList = workOvertimeService.getWork(page,workOvertime.getPerson(),workOvertime.getCode(),startDate ,endDate);
+	  LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+	  ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+	  mv.addObject(NormalExcelConstants.FILE_NAME, "加班信息列表"); //此处设置的filename无效 ,前端会重更新设置一下
+	  mv.addObject(NormalExcelConstants.CLASS, workOvertime.class);
+	  //update-begin--Author:liusq  Date:20210126 for:图片导出报错,ImageBasePath未设置--------------------
+	  ExportParams  exportParams=new ExportParams("加班信息列表", "导出人:" + sysUser.getRealname(), "加班信息列表");
+	  exportParams.setImageBasePath(upLoadPath);
+	  //update-end--Author:liusq  Date:20210126 for:图片导出报错,ImageBasePath未设置----------------------
+	  mv.addObject(NormalExcelConstants.PARAMS,exportParams);
+	  mv.addObject(NormalExcelConstants.DATA_LIST, pageList.getRecords());
+      return mv;
   }
 
   /**

+ 28 - 13
jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/entity/workOvertime.java

@@ -36,20 +36,20 @@ public class workOvertime {
 	@Excel(name = "加班人员", width = 15)
     @ApiModelProperty(value = "加班人员")
 	private String person;
-	/**审批编号*/
-	@Excel(name = "审批编号", width = 15)
-    @ApiModelProperty(value = "审批编号")
-	private String code;
 
-	private String setInfo;
-	/**提交时间*/
-	@Excel(name = "提交时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(value = "提交时间")
-	private Date commitDate;
+	/**备用虚拟字段-**/
+	@Excel(name = "一级部门", width = 15)
+	private transient  String deptName;
+
+	/**备用虚拟字段**/
+	@Excel(name = "二级部门", width = 15)
+	private transient  String deptName2;
+
+	/**备用虚拟字段**/
+	@Excel(name = "三级部门", width = 15)
+	private transient  String deptName3;
 	/**申请人部门*/
-	@Excel(name = "申请人部门", width = 15)
+	@Excel(name = "末级部门", width = 15)
     @ApiModelProperty(value = "申请人部门")
 	private String dept;
 	/**加班事由*/
@@ -72,10 +72,25 @@ public class workOvertime {
 	@Excel(name = "加班时长", width = 15)
     @ApiModelProperty(value = "加班时长")
 	private String duration;
+
+	/**提交时间*/
+	@Excel(name = "提交时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "提交时间")
+	private Date commitDate;
+	/**审批编号*/
+	@Excel(name = "审批编号", width = 15)
+	@ApiModelProperty(value = "审批编号")
+	private String code;
 	/**创建时间*/
-	@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
 	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "创建时间")
 	private Date createTime;
+
+
+
+	/**备用虚拟字段**/
+	private transient  String deptCode;
 }

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

@@ -12,7 +12,9 @@
 </if>
     </select>
     <select id="getworkList" resultType="org.jeecg.modules.workOvertime.entity.workOvertime">
-        select a.code,a.demo,a.begin_date,a.end_date,a.commit_date,a.duration,b.realname as 'person',c.depart_name as 'dept' from bd_work_overtime a left  join sys_user b on a.person=b.id left join sys_depart
+        select a.code,a.demo,a.begin_date,a.end_date,a.commit_date,a.duration,b.realname as 'person',c.depart_name as 'dept'
+        , c.org_code as 'deptCode'
+        from bd_work_overtime a left  join sys_user b on a.person=b.id left join sys_depart
         c on a.dept=c.id
         where 1=1
 <if test="code!=null and ''!=code">

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

@@ -2,8 +2,9 @@ package org.jeecg.modules.workOvertime.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.apache.ibatis.annotations.Param;
 import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.system.entity.SysDepart;
+import org.jeecg.modules.system.service.ISysDepartService;
 import org.jeecg.modules.workOvertime.entity.workOvertime;
 import org.jeecg.modules.workOvertime.mapper.workOvertimeMapper;
 import org.jeecg.modules.workOvertime.service.IworkOvertimeService;
@@ -12,6 +13,7 @@ import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -25,6 +27,9 @@ public class workOvertimeServiceImpl extends ServiceImpl<workOvertimeMapper, wor
     @Autowired
     private  workOvertimeMapper works;
 
+    @Autowired
+    private ISysDepartService sysDepartService;
+
     @Override
     public Boolean workSave(workOvertime work) {
 //        Boolean b=true;
@@ -40,10 +45,28 @@ public class workOvertimeServiceImpl extends ServiceImpl<workOvertimeMapper, wor
 
     @Override
     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));
-    }
-
-    public List<workOvertime> getJiaBan(String person, String viewDate) {
-        return works.getJiaBan(person,viewDate);
+        List<workOvertime> workOvertimes = works.getworkList(page, name, code, startDate, endDate);
+        if (workOvertimes!=null){
+            workOvertimes.forEach(str->{
+                List<String>codes=new ArrayList<>();
+                String codet=str.getDeptCode();
+                for (int i=0;i<codet.length();i=i+2){
+                    codes.add(codet.substring(0,i+2));
+                }
+                List<SysDepart> sysDeparts = sysDepartService.listDeptTop(codes);
+                if (sysDeparts!=null&&sysDeparts.size()>0) {
+                    sysDeparts.forEach(st -> {
+                        if (st.getOrgType().equals("1")) {
+                            str.setDeptName(st.getDepartName());
+                        } else if (st.getOrgType().equals("2")) {
+                            str.setDeptName2(st.getDepartName());
+                        } else if (st.getOrgType().equals("3")) {
+                            str.setDeptName3(st.getDepartName());
+                        }
+                    });
+                }
+            });
+        }
+        return page.setRecords(workOvertimes);
     }
 }