From f2343d4e86b4dfe53122a1bd62d7d2f263c3ed3d Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 14 八月 2023 15:51:23 +0800
Subject: [PATCH] 新增员工绩效分页查询接口

---
 server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java           |   12 +
 server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java              |   14 --
 server/src/main/java/doumeemes/dao/ext/WorkorderRecordExtMapper.java               |    7 
 server/src/main/java/doumeemes/dao/ext/dto/QueryUserSalaryListDTO.java             |   35 +++++++
 server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java          |    4 
 server/src/main/java/doumeemes/dao/ext/vo/UserSalaryListVO.java                    |   59 +++++++++++
 server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java |   61 +++++++----
 server/src/main/resources/mappers/WorkorderRecordExtMapper.xml                     |   24 ++++
 server/src/main/java/doumeemes/dao/ext/vo/UserBaseInfoVO.java                      |   36 +++++++
 9 files changed, 208 insertions(+), 44 deletions(-)

diff --git a/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java b/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java
index 305e561..071ff92 100644
--- a/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java
+++ b/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java
@@ -15,11 +15,9 @@
 import doumeemes.dao.ext.bean.EndCheckApBean;
 import doumeemes.dao.ext.beanDto.QueryWStockDto;
 import doumeemes.dao.ext.dto.QuerySalaryStatisticDTO;
+import doumeemes.dao.ext.dto.QueryUserSalaryListDTO;
 import doumeemes.dao.ext.dto.QueryWorkorderRecordExtDTO;
-import doumeemes.dao.ext.vo.SalaryStatisticsListVO;
-import doumeemes.dao.ext.vo.WStockExtListForWorkorderVO;
-import doumeemes.dao.ext.vo.WStockExtListVO;
-import doumeemes.dao.ext.vo.WorkorderRecordExtListVO;
+import doumeemes.dao.ext.vo.*;
 import doumeemes.service.business.WorkorderRecordService;
 import doumeemes.service.ext.WorkorderExtService;
 import doumeemes.service.ext.WorkorderRecordExtService;
@@ -142,6 +140,12 @@
     public ApiResponse<PageData<WorkorderRecordExtListVO>> findPage (@RequestBody PageWrap<QueryWorkorderRecordExtDTO> pageWrap) {
         return ApiResponse.success(workorderRecordExtService.findPage(pageWrap));
     }
+    @ApiOperation("鍛樺伐缁╂晥鍒嗛〉鏌ヨ")
+    @PostMapping("/userSalary")
+    @RequiresPermissions("ext:workorderrecordext:query")
+    public ApiResponse<PageData<UserSalaryListVO>> userSalaryPage (@RequestBody PageWrap<QueryUserSalaryListDTO> pageWrap) {
+        return ApiResponse.success(workorderRecordExtService.userSalaryPage(pageWrap));
+    }
     @ApiOperation("宸ヨ祫鎶ヨ〃缁熻鍒嗛〉鏌ヨ")
     @PostMapping("/salaryStatistic")
     @RequiresPermissions("ext:workorderrecordext:query")
diff --git a/server/src/main/java/doumeemes/dao/ext/WorkorderRecordExtMapper.java b/server/src/main/java/doumeemes/dao/ext/WorkorderRecordExtMapper.java
index a892a10..6697c0b 100644
--- a/server/src/main/java/doumeemes/dao/ext/WorkorderRecordExtMapper.java
+++ b/server/src/main/java/doumeemes/dao/ext/WorkorderRecordExtMapper.java
@@ -3,10 +3,8 @@
 import doumeemes.dao.business.model.WorkorderRecord;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import doumeemes.dao.ext.dto.QuerySalaryStatisticDTO;
-import doumeemes.dao.ext.vo.SalaryStatisticsListVO;
-import doumeemes.dao.ext.vo.WOutboundRecordExtListVO;
-import doumeemes.dao.ext.vo.WStockExtListForWorkorderVO;
-import doumeemes.dao.ext.vo.WorkorderRecordExtListVO;
+import doumeemes.dao.ext.dto.QueryUserSalaryListDTO;
+import doumeemes.dao.ext.vo.*;
 import doumeemes.dao.ext.dto.QueryWorkorderRecordExtDTO;
 import io.lettuce.core.dynamic.annotation.Param;
 
@@ -38,4 +36,5 @@
     List<WorkorderRecordExtListVO> checkIsWork(@Param("ids")String ids);
 
 
+    List<UserSalaryListVO> userSalaryPage(QueryUserSalaryListDTO model);
 }
diff --git a/server/src/main/java/doumeemes/dao/ext/dto/QueryUserSalaryListDTO.java b/server/src/main/java/doumeemes/dao/ext/dto/QueryUserSalaryListDTO.java
new file mode 100644
index 0000000..93e9397
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/ext/dto/QueryUserSalaryListDTO.java
@@ -0,0 +1,35 @@
+package doumeemes.dao.ext.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2022/04/20 10:56
+ */
+@Data
+@ApiModel("鍛樺伐缁╂晥鍒嗛〉鏌ヨ璇锋眰鍙傛暟")
+public class QueryUserSalaryListDTO {
+    @ApiModelProperty(value = "鐢熶骇浜哄憳缂栫爜", example = "1")
+    private Integer userId;
+    @ApiModelProperty(value = "宸ュ簭缂栫爜", example = "1")
+    private Integer procedureId;
+    @ApiModelProperty(value = "鐗╂枡缂栫爜", example = "1")
+    private Integer materialId;
+    @ApiModelProperty(value = "鏍圭粍缁囩紪鐮�", example = "1",hidden = true)
+    private Integer rootDepartId;
+    @ApiModelProperty(value = "寮�濮嬫椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date stateDate;
+    @ApiModelProperty(value = "缁撴潫鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date endDate;
+    @ApiModelProperty(value = "鏁版嵁鏉冮檺閮ㄩ棬缂栫爜闆嗗悎" ,hidden = true)
+    private List<Integer> departIds;
+
+}
diff --git a/server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java b/server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java
index c7bc2ed..f00415d 100644
--- a/server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java
+++ b/server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java
@@ -18,21 +18,11 @@
 @Data
 @ApiModel("宸ヨ祫鎶ヨ〃缁熻鍒嗛〉鏁版嵁")
 public class SalaryStatisticsListVO implements Serializable{
-
     @ApiModelProperty(value = "鐢熶骇浜哄憳缂栫爜", example = "1")
     @ExcelColumn(name="鐢熶骇浜哄憳缂栫爜")
     private Integer userId;
-    @ApiModelProperty(value = "鐢熶骇浜哄憳濮撳悕")
-    @ExcelColumn(name="鐢熶骇浜哄憳濮撳悕")
-    private String userName;
-    @ApiModelProperty(value = "鎵�灞為儴闂ㄧ紪鐮�", example = "1")
-    @ExcelColumn(name="鎵�灞為儴闂ㄧ紪鐮�")
-    private Integer departId;
-
-    @ApiModelProperty(value = "鎵�灞為儴闂ㄥ悕绉�")
-    @ExcelColumn(name="鎵�灞為儴闂ㄥ悕绉�")
-    private String departName;
-
+    @ApiModelProperty(value = "鐢熸垚浜哄憳淇℃伅")
+    private UserBaseInfoVO userInfo;
     @ApiModelProperty(value = "璁′欢宸ヨ祫锛堝垎锛�", example = "1")
     @ExcelColumn(name="璁′欢宸ヨ祫锛堝垎锛�")
     private BigDecimal jijianSalary;
diff --git a/server/src/main/java/doumeemes/dao/ext/vo/UserBaseInfoVO.java b/server/src/main/java/doumeemes/dao/ext/vo/UserBaseInfoVO.java
new file mode 100644
index 0000000..c65802b
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/ext/vo/UserBaseInfoVO.java
@@ -0,0 +1,36 @@
+package doumeemes.dao.ext.vo;
+
+import doumeemes.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2022/04/20 10:56
+ */
+@Data
+@ApiModel("鐢ㄦ埛鍩烘湰淇℃伅鏁版嵁")
+public class UserBaseInfoVO implements Serializable{
+
+    @ApiModelProperty(value = "鐢熶骇浜哄憳缂栫爜", example = "1")
+    @ExcelColumn(name="鐢熶骇浜哄憳缂栫爜")
+    private Integer userId;
+    @ApiModelProperty(value = "鐢熶骇浜哄憳濮撳悕鍜岄儴闂ㄥ悕绉扮粍鍚�")
+    @ExcelColumn(name="鐢熶骇浜哄憳濮撳悕鍜岄儴闂ㄥ悕绉扮粍鍚�")
+    private String nameAndDepart;
+    @ApiModelProperty(value = "鐢熶骇浜哄憳濮撳悕")
+    @ExcelColumn(name="鐢熶骇浜哄憳濮撳悕")
+    private String userName;
+    @ApiModelProperty(value = "鎵�灞為儴闂ㄧ紪鐮�", example = "1")
+    @ExcelColumn(name="鎵�灞為儴闂ㄧ紪鐮�")
+    private Integer departId;
+
+    @ApiModelProperty(value = "鎵�灞為儴闂ㄥ悕绉�")
+    @ExcelColumn(name="鎵�灞為儴闂ㄥ悕绉�")
+    private String departName;
+
+}
diff --git a/server/src/main/java/doumeemes/dao/ext/vo/UserSalaryListVO.java b/server/src/main/java/doumeemes/dao/ext/vo/UserSalaryListVO.java
new file mode 100644
index 0000000..71bc585
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/ext/vo/UserSalaryListVO.java
@@ -0,0 +1,59 @@
+package doumeemes.dao.ext.vo;
+
+import doumeemes.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2022/04/20 10:56
+ */
+@Data
+@ApiModel("鍛樺伐缁╂晥鍒嗛〉鏁版嵁")
+public class UserSalaryListVO implements Serializable{
+
+    @ApiModelProperty(value = "鐢熶骇浜哄憳缂栫爜", example = "1")
+    @ExcelColumn(name="鐢熶骇浜哄憳缂栫爜")
+    private Integer userId;
+    @ApiModelProperty(value = "鐢熸垚浜哄憳淇℃伅")
+    private UserBaseInfoVO userInfo;
+
+    @ApiModelProperty(value = "鐗╂枡缂栫爜", example = "1")
+    @ExcelColumn(name="鐗╂枡缂栫爜")
+    private String materialCode;
+    @ApiModelProperty(value = "鐗╂枡涓婚敭", example = "1")
+    @ExcelColumn(name="鐗╂枡涓婚敭")
+    private Integer materialId;
+    @ApiModelProperty(value = "宸ュ崟缂栫爜", example = "1")
+    @ExcelColumn(name="宸ュ崟缂栫爜")
+    private String workorderCode;
+    @ApiModelProperty(value = "宸ュ崟鏂欎富閿�", example = "1")
+    @ExcelColumn(name="宸ュ崟涓婚敭")
+    private Integer workorderId;
+    @ApiModelProperty(value = "宸ュ簭涓婚敭", example = "1")
+    @ExcelColumn(name="宸ュ簭涓婚敭")
+    private Integer procedureId;
+    @ApiModelProperty(value = "宸ュ簭鍚嶇О")
+    @ExcelColumn(name="宸ュ簭鍚嶇О")
+    private String procedureName;
+    @ApiModelProperty(value = "鍗曚綅")
+    @ExcelColumn(name="鍗曚綅")
+    private String unitName;
+    @ApiModelProperty(value = "鎶ュ伐鏁�")
+    @ExcelColumn(name="鎶ュ伐鏁�")
+    private BigDecimal num;
+    @ApiModelProperty(value = "鑹搧鏁�")
+    @ExcelColumn(name="鑹搧鏁�")
+    private BigDecimal qualifiedNum;
+    @ApiModelProperty(value = "涓嶈壇鍝佹暟")
+    @ExcelColumn(name="涓嶈壇鍝佹暟")
+    private BigDecimal unQualifiedNum;
+    @ApiModelProperty(value = "鍚堟牸鐜囷紙%锛�")
+    @ExcelColumn(name="鍚堟牸鐜�")
+    private BigDecimal rate;
+
+}
diff --git a/server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java b/server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java
index c1f4d46..7620570 100644
--- a/server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java
+++ b/server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java
@@ -7,8 +7,10 @@
 import doumeemes.dao.business.model.WorkorderRecord;
 import doumeemes.dao.ext.bean.EndCheckApBean;
 import doumeemes.dao.ext.dto.QuerySalaryStatisticDTO;
+import doumeemes.dao.ext.dto.QueryUserSalaryListDTO;
 import doumeemes.dao.ext.dto.QueryWorkorderRecordExtDTO;
 import doumeemes.dao.ext.vo.SalaryStatisticsListVO;
+import doumeemes.dao.ext.vo.UserSalaryListVO;
 import doumeemes.dao.ext.vo.WorkorderRecordExtListVO;
 
 import javax.servlet.http.HttpServletResponse;
@@ -48,4 +50,6 @@
    void exportExcel(PageWrap<QueryWorkorderRecordExtDTO> pageWrap ,HttpServletResponse response);
 
    PageData<SalaryStatisticsListVO> salaryStatistic(PageWrap<QuerySalaryStatisticDTO> pageWrap);
+
+    PageData<UserSalaryListVO> userSalaryPage(PageWrap<QueryUserSalaryListDTO> pageWrap);
 }
diff --git a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java
index e121285..6b36bd8 100644
--- a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java
@@ -149,30 +149,37 @@
         }
         //鍙兘鏌ョ湅褰撳墠鏍圭粍缁囩殑鏁版嵁
         pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId());
-        pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId());
         PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
-
-        //鏁版嵁鏉冮檺
-        List<Integer> dataPermission = user.getDepartPermissionList();
-        if(dataPermission!=null){
-//            pageWrap.getModel().setUserId(user.getId());
-//            pageWrap.getModel().setDepartIds(dataPermission);
-           /*if(dataPermission.size() == 0){
-                //鍙兘鐪嬭嚜宸辩殑(鐢熶骇浜哄憳淇℃伅锛�
-                //  pageWrap.getModel().setProUserId(user.getId());
-                //闇�姹傚彉鏇� 鏌ョ湅鏁版嵁鏉冮檺鑼冨洿鍐呯殑鏁版嵁锛堣蛋鍒涘缓浜烘垨鑰呯敓浜т汉鍛樹负鎴戞暟鎹潈闄愯寖鍥村唴锛夛紱
-                pageWrap.getModel().setCreateUser(user.getId());
-            }else{
-                //鍚﹀垯璧版暟鎹潈闄�
-                pageWrap.getModel().setDepartIds(dataPermission);
-            }*/
-        }
         List<SalaryStatisticsListVO> result = workorderRecordExtMapper.salaryStatistic(pageWrap.getModel());
         if(result!=null){
             List<DepartmentExtListVO> allDepartList = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_DEPART_LIST_KEY+user.getCompany().getId(),ArrayList.class);
             for(SalaryStatisticsListVO model : result){
                 //鏌ヨ鐢熶骇浜哄憳濮撳悕
-                initProUser(user,model,allDepartList);
+//                model.setUserName(initProUser(user,model.getUserId(),allDepartList));
+                    model.setUserInfo(initProUser(user,model.getUserId(),allDepartList));
+            }
+        }
+        return PageData.from(new PageInfo<>(result));
+    }
+    @Override
+    public  PageData<UserSalaryListVO> userSalaryPage(PageWrap<QueryUserSalaryListDTO> pageWrap) {
+        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝鎮ㄦ棤鏉冮檺杩涜璇ユ搷浣滐紒");
+        }
+        //鍙兘鏌ョ湅褰撳墠鏍圭粍缁囩殑鏁版嵁
+        pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId());
+        pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId());
+        PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
+
+        //鏁版嵁鏉冮檺
+        List<Integer> dataPermission = user.getDepartPermissionList();
+        List<UserSalaryListVO> result = workorderRecordExtMapper.userSalaryPage(pageWrap.getModel());
+        if(result!=null){
+            List<DepartmentExtListVO> allDepartList = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_DEPART_LIST_KEY+user.getCompany().getId(),ArrayList.class);
+            for(UserSalaryListVO model : result){
+                //鏌ヨ鐢熶骇浜哄憳濮撳悕
+                model.setUserInfo(initProUser(user,model.getUserId(),allDepartList));
             }
         }
         return PageData.from(new PageInfo<>(result));
@@ -193,20 +200,28 @@
             data.setProcedureName(comp.getName()+"-"+dName);
         }
     }
-    private void initProUser(LoginUserInfo user, SalaryStatisticsListVO data, List<DepartmentExtListVO> allDepartList) {
-        if(data.getUserId() ==null){
-            return;
+    private UserBaseInfoVO initProUser(LoginUserInfo user, Integer userId, List<DepartmentExtListVO> allDepartList) {
+        if(userId ==null){
+            return null;
         }
+
         CompanyUser query=new CompanyUser();
-        query.setUserId(data.getUserId());
+        query.setUserId(userId);
         query.setRootDepartId(user.getRootDepartment().getId());
         query.setDeleted(Constants.ZERO);
         CompanyUser comp= companyUserExtMapper.selectOne(new QueryWrapper<>(query).last(" limit 1"));
         if(comp!=null){
+            UserBaseInfoVO userinfo = new UserBaseInfoVO();
             DepartmentExtListVO d = departmentExtService.getModelById(user.getCompany().getId(),comp.getDepartmentId(),allDepartList);
             String dName =d==null?"":StringUtils.defaultString(d.getName(),"");
-            data.setUserName(comp.getName()+"-"+dName);
+            userinfo.setNameAndDepart (comp.getName()+"-"+dName);
+            userinfo.setDepartId(d.getId());
+            userinfo.setUserId(userId);
+            userinfo.setUserName(comp.getName());
+            userinfo.setDepartName(d.getName());
+            return  userinfo;
         }
+        return null;
     }
     @Override
     public List<WorkorderRecordExtListVO> findAll(QueryWorkorderRecordExtDTO pageWrap) {
diff --git a/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml b/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml
index 8989776..3f53846 100644
--- a/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml
+++ b/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml
@@ -431,6 +431,28 @@
     </where>
     limit 1
   </select>
+  <select id="userSalaryPage" parameterType="doumeemes.dao.ext.dto.QueryUserSalaryListDTO" resultType="doumeemes.dao.ext.vo.UserSalaryListVO">
+
+    select a.WORKORDER_ID,b.`CODE` as workorderCode,c.`NAME` as materialName,c.code as materialCode
+    ,d.name as unitName,a.PROCEDURE_ID,f.`NAME` as procedureName
+    ,sum(CASE  WHEN a.DONE_TYPE=0 THEN a.num ELSE 0 END ) as qualifiedNum
+    ,sum(CASE  WHEN a.DONE_TYPE=0 THEN  0 ELSE a.num  END ) as unQualifiedNum
+    ,sum(a.num) as NUM
+    from `workorder_record` a
+    left join workorder b on a.WORKORDER_ID=b.id
+    left join material c on b.MATERIAL_ID = c.ID
+    left join unit_distribute d on a.UNIT_ID = d.ID
+    left join procedures f on a.PROCEDURE_ID =f.ID
+    where a.DELETED = 0
+    <if test="rootDepartId != null">
+      AND  `ROOT_DEPART_ID` = #{rootDepartId}
+    </if>
+    <if test="userId != null">
+      AND  `CREATE_USER` = #{userId}
+    </if>
+    group by  a.`WORKORDER_ID`
+    <!--order by a.`CREATE_TIME` desc-->
+  </select>
   <select id="salaryStatistic" parameterType="doumeemes.dao.ext.dto.QuerySalaryStatisticDTO" resultType="doumeemes.dao.ext.vo.SalaryStatisticsListVO">
     select `CREATE_USER` ,sum(CASE  WHEN salary_type=0 THEN salary ELSE 0 END ) as jijiaSalry
     ,sum(CASE  WHEN salary_type=0 THEN  0 ELSE salary  END ) as jishiSalary
@@ -445,7 +467,7 @@
       AND  `CREATE_USER` = #{userId}
     </if>
     group by  `CREATE_USER`
-
+   <!-- order by `CREATE_TIME` desc-->
   </select>
   <select id="selectListNew" parameterType="doumeemes.dao.ext.dto.QueryWorkorderRecordExtDTO" resultMap="WorkorderRecordExtListVO">
     SELECT

--
Gitblit v1.9.3