From b51035f9b991bb08f8afd6fa60e04e548da9a74e Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 14 八月 2023 17:57:29 +0800
Subject: [PATCH] 新增员工绩效\工资报表导出接口

---
 server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java           |   10 +++++
 server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java              |   11 +++++
 server/src/main/java/doumeemes/dao/ext/dto/QueryUserSalaryListDTO.java             |    5 ++
 server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java          |    4 ++
 server/src/main/java/doumeemes/dao/ext/dto/QuerySalaryStatisticDTO.java            |    2 
 server/src/main/java/doumeemes/dao/ext/vo/UserSalaryListVO.java                    |   13 ++++++
 log/eva.log                                                                        |    0 
 server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java            |    6 +++
 server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java |   29 ++++++++++++++
 server/src/main/resources/mappers/WorkorderRecordExtMapper.xml                     |   38 ++++++++++++++-----
 10 files changed, 105 insertions(+), 13 deletions(-)

diff --git a/log/eva.log b/log/eva.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/log/eva.log
diff --git a/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java b/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java
index 071ff92..1c7d59d 100644
--- a/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java
+++ b/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java
@@ -175,6 +175,16 @@
     public void exportExcel (@RequestBody PageWrap<QueryWorkorderRecordExtDTO> pageWrap, HttpServletResponse response) {
         workorderRecordExtService.exportExcel(pageWrap,response);
     }
+    @ApiOperation("瀵煎嚭鍛樺伐缁╂晥鏄庣粏")
+    @PostMapping("/exportUserSalary")
+    public void exportUserSalary (@RequestBody PageWrap<QueryUserSalaryListDTO> pageWrap, HttpServletResponse response) {
+        workorderRecordExtService.exportUserSalary(pageWrap,response);
+    }
+    @ApiOperation("瀵煎嚭宸ヨ祫鎶ヨ〃")
+    @PostMapping("/exportSalaryStatistics")
+    public void exportSalaryStatistics (@RequestBody PageWrap<QuerySalaryStatisticDTO> pageWrap, HttpServletResponse response) {
+        workorderRecordExtService.exportSalaryStatistics(pageWrap,response);
+    }
 
     @ApiOperation("鏍规嵁ID鏌ヨ")
     @GetMapping("/{id}")
diff --git a/server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java b/server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java
index ea33fb8..010996c 100644
--- a/server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java
+++ b/server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java
@@ -2,6 +2,8 @@
 
 import doumeemes.core.constants.ResponseStatus;
 import doumeemes.core.exception.BusinessException;
+import doumeemes.dao.ext.vo.UserBaseInfoVO;
+import doumeemes.dao.ext.vo.UserSalaryListVO;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import org.apache.commons.lang3.BooleanUtils;
@@ -170,6 +172,10 @@
         return new ArrayList<>(sortedFields.values());
     }
 
+    public static void main(String[] args) {
+        ExcelExporter m = new ExcelExporter();
+        ExcelExporter.build(UserSalaryListVO.class).getColumns();
+    }
     /**
      * 閰嶇疆鏁版嵁鍗曞厓鏍�
      */
diff --git a/server/src/main/java/doumeemes/dao/ext/dto/QuerySalaryStatisticDTO.java b/server/src/main/java/doumeemes/dao/ext/dto/QuerySalaryStatisticDTO.java
index ef5771d..63e0adb 100644
--- a/server/src/main/java/doumeemes/dao/ext/dto/QuerySalaryStatisticDTO.java
+++ b/server/src/main/java/doumeemes/dao/ext/dto/QuerySalaryStatisticDTO.java
@@ -22,7 +22,7 @@
     private Integer rootDepartId;
     @ApiModelProperty(value = "寮�濮嬫椂闂�")
     @JsonFormat(pattern = "yyyy-MM-dd")
-    private Date stateDate;
+    private Date startDate;
     @ApiModelProperty(value = "缁撴潫鏃堕棿")
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date endDate;
diff --git a/server/src/main/java/doumeemes/dao/ext/dto/QueryUserSalaryListDTO.java b/server/src/main/java/doumeemes/dao/ext/dto/QueryUserSalaryListDTO.java
index 93e9397..049cf7d 100644
--- a/server/src/main/java/doumeemes/dao/ext/dto/QueryUserSalaryListDTO.java
+++ b/server/src/main/java/doumeemes/dao/ext/dto/QueryUserSalaryListDTO.java
@@ -1,6 +1,7 @@
 package doumeemes.dao.ext.dto;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import doumeemes.core.annotation.excel.ExcelColumn;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -21,11 +22,13 @@
     private Integer procedureId;
     @ApiModelProperty(value = "鐗╂枡缂栫爜", example = "1")
     private Integer materialId;
+    @ApiModelProperty(value = "鐗╂枡鍚嶇О鎴栫墿鏂檆ode缂栫爜" )
+    private String materialName;
     @ApiModelProperty(value = "鏍圭粍缁囩紪鐮�", example = "1",hidden = true)
     private Integer rootDepartId;
     @ApiModelProperty(value = "寮�濮嬫椂闂�")
     @JsonFormat(pattern = "yyyy-MM-dd")
-    private Date stateDate;
+    private Date startDate;
     @ApiModelProperty(value = "缁撴潫鏃堕棿")
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date endDate;
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 f00415d..792ddfb 100644
--- a/server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java
+++ b/server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java
@@ -23,6 +23,17 @@
     private Integer userId;
     @ApiModelProperty(value = "鐢熸垚浜哄憳淇℃伅")
     private UserBaseInfoVO userInfo;
+
+    @ApiModelProperty(value = "鐢熶骇浜哄憳濮撳悕",hidden = true)
+    @ExcelColumn(name="鐢熶骇浜哄憳濮撳悕")
+    private String userName;
+    @ApiModelProperty(value = "鎵�灞為儴闂ㄧ紪鐮�", example = "1",hidden = true)
+    @ExcelColumn(name="鎵�灞為儴闂ㄧ紪鐮�")
+    private Integer departId;
+
+    @ApiModelProperty(value = "鎵�灞為儴闂ㄥ悕绉�",hidden = true)
+    @ExcelColumn(name="鎵�灞為儴闂ㄥ悕绉�")
+    private String departName;
     @ApiModelProperty(value = "璁′欢宸ヨ祫锛堝垎锛�", example = "1")
     @ExcelColumn(name="璁′欢宸ヨ祫锛堝垎锛�")
     private BigDecimal jijianSalary;
diff --git a/server/src/main/java/doumeemes/dao/ext/vo/UserSalaryListVO.java b/server/src/main/java/doumeemes/dao/ext/vo/UserSalaryListVO.java
index 71bc585..7e44571 100644
--- a/server/src/main/java/doumeemes/dao/ext/vo/UserSalaryListVO.java
+++ b/server/src/main/java/doumeemes/dao/ext/vo/UserSalaryListVO.java
@@ -22,9 +22,22 @@
     @ApiModelProperty(value = "鐢熸垚浜哄憳淇℃伅")
     private UserBaseInfoVO userInfo;
 
+    @ApiModelProperty(value = "鐢熶骇浜哄憳濮撳悕",hidden = true)
+    @ExcelColumn(name="鐢熶骇浜哄憳濮撳悕")
+    private String userName;
+    @ApiModelProperty(value = "鎵�灞為儴闂ㄧ紪鐮�", example = "1",hidden = true)
+    @ExcelColumn(name="鎵�灞為儴闂ㄧ紪鐮�")
+    private Integer departId;
+
+    @ApiModelProperty(value = "鎵�灞為儴闂ㄥ悕绉�",hidden = true)
+    @ExcelColumn(name="鎵�灞為儴闂ㄥ悕绉�")
+    private String departName;
     @ApiModelProperty(value = "鐗╂枡缂栫爜", example = "1")
     @ExcelColumn(name="鐗╂枡缂栫爜")
     private String materialCode;
+    @ApiModelProperty(value = "鐗╂枡鍚嶇О", example = "1")
+    @ExcelColumn(name="鐗╂枡鍚嶇О")
+    private String materialName;
     @ApiModelProperty(value = "鐗╂枡涓婚敭", example = "1")
     @ExcelColumn(name="鐗╂枡涓婚敭")
     private Integer materialId;
diff --git a/server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java b/server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java
index 7620570..5fe02b9 100644
--- a/server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java
+++ b/server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java
@@ -52,4 +52,8 @@
    PageData<SalaryStatisticsListVO> salaryStatistic(PageWrap<QuerySalaryStatisticDTO> pageWrap);
 
     PageData<UserSalaryListVO> userSalaryPage(PageWrap<QueryUserSalaryListDTO> pageWrap);
+
+    void exportUserSalary(PageWrap<QueryUserSalaryListDTO> pageWrap, HttpServletResponse response);
+
+    void exportSalaryStatistics(PageWrap<QuerySalaryStatisticDTO> pageWrap, HttpServletResponse response);
 }
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 6b36bd8..c200c20 100644
--- a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java
@@ -173,13 +173,16 @@
         PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
 
         //鏁版嵁鏉冮檺
-        List<Integer> dataPermission = user.getDepartPermissionList();
+//        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));
+                if(Constants.formatBigdecimal4Float(model.getNum()).compareTo(new BigDecimal(0))>1){
+                    model.setRate(Constants.formatBigdecimal4Float(model.getQualifiedNum()).divide(model.getNum()).multiply(new BigDecimal(100)));
+                }
             }
         }
         return PageData.from(new PageInfo<>(result));
@@ -1670,6 +1673,30 @@
 
 
     @Override
+    public void exportUserSalary(PageWrap<QueryUserSalaryListDTO> pageWrap, HttpServletResponse response) {
+        List<UserSalaryListVO> result=this.userSalaryPage(pageWrap).getRecords();
+        for(UserSalaryListVO model : result) {
+            if(model.getUserInfo()!=null){
+                model.setUserName(model.getUserInfo().getUserName());
+                model.setDepartName(model.getUserInfo().getDepartName());
+            }
+        }
+        ExcelExporter.build(UserSalaryListVO.class).export(result, "鍛樺伐缁╂晥鏄庣粏"+System.currentTimeMillis(), response);
+
+    }
+    @Override
+    public void exportSalaryStatistics(PageWrap<QuerySalaryStatisticDTO> pageWrap, HttpServletResponse response){
+        List<SalaryStatisticsListVO> result=this.salaryStatistic(pageWrap).getRecords();
+        for(SalaryStatisticsListVO model : result) {
+            if(model.getUserInfo()!=null){
+                model.setUserName(model.getUserInfo().getUserName());
+                model.setDepartName(model.getUserInfo().getDepartName());
+            }
+        }
+        ExcelExporter.build(SalaryStatisticsListVO.class).export(result, "宸ヨ祫鎶ヨ〃"+System.currentTimeMillis(), response);
+
+    }
+    @Override
     public void exportExcel(PageWrap<QueryWorkorderRecordExtDTO> pageWrap, HttpServletResponse response) {
         List<WorkorderRecordExtListVO> result=this.findPage(pageWrap).getRecords();
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
diff --git a/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml b/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml
index 3f53846..c8fb3d7 100644
--- a/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml
+++ b/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml
@@ -432,29 +432,41 @@
     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
+    ,d.name as unitName,a.PROCEDURE_ID,f.`NAME` as procedureName,a.CREATE_USER as userId
+    ,sum(a.QUALIFIED_NUM) as qualifiedNum
+    ,sum(a.UNQUALIFIED_NUM) 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 material_distribute m on b.MATERIAL_ID = m.ID
+    left join material c on m.MATERIAL_ID = c.ID
+    left join unit 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}
+      AND  a.`ROOT_DEPART_ID` = #{rootDepartId}
+    </if>
+    <if test="procedureId != null">
+      AND  a.`PROCEDURE_ID` = #{procedureId}
+    </if>
+    <if test="materialName != null and materialName !=''">
+      AND  (c.`name` like concat('%', #{materialName},'%') or c.`code` like concat('%', #{materialName},'%'))
+    </if>
+    <if test="startDate != null">
+      AND  a.`CREATE_TIME` >= #{startDate}
+    </if>
+    <if test="endDate != null">
+      AND   #{endDate} >= a.`CREATE_TIME`
     </if>
     <if test="userId != null">
-      AND  `CREATE_USER` = #{userId}
+      AND  a.`CREATE_USER` = #{userId}
     </if>
     group by  a.`WORKORDER_ID`
-    <!--order by a.`CREATE_TIME` desc-->
+    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
+    select `CREATE_USER` as userId ,sum(CASE  WHEN salary_type=0 THEN salary ELSE 0 END ) as jijianSalary
     ,sum(CASE  WHEN salary_type=0 THEN  0 ELSE salary  END ) as jishiSalary
     ,count(id) as num
     ,sum(salary) as totalSalary
@@ -466,6 +478,12 @@
     <if test="userId != null">
       AND  `CREATE_USER` = #{userId}
     </if>
+    <if test="startDate != null">
+      AND  a.`CREATE_TIME` >= #{startDate}
+    </if>
+    <if test="endDate != null">
+      AND   #{endDate} >= a.`CREATE_TIME`
+    </if>
     group by  `CREATE_USER`
    <!-- order by `CREATE_TIME` desc-->
   </select>

--
Gitblit v1.9.3