소스 검색

填报及时率修改
工时成本统计修改

yurk 2 년 전
부모
커밋
6a27c706d5

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ExpenseSheetController.java

@@ -83,9 +83,9 @@ public class ExpenseSheetController {
 
     }
     @RequestMapping("/deny")
-    public HttpRespMsg deny(Integer id) {
+    public HttpRespMsg deny(Integer id,String denyReason) {
 
-        return expenseSheetService.deny(id);
+        return expenseSheetService.deny(id,denyReason);
 
     }
     @RequestMapping("/importData")

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/GroupParticipatorController.java

@@ -39,5 +39,10 @@ public class GroupParticipatorController {
         msg.data = gpList.stream().map(GroupParticipator::getUserId).collect(Collectors.toList());
         return msg;
     }
+
+    @RequestMapping("/importData")
+    public HttpRespMsg importData(){
+        return null;
+    }
 }
 

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -241,8 +241,8 @@ public class ProjectController {
      * id 项目id
      */
     @RequestMapping("/getProjectCost")
-    public HttpRespMsg getProjectCost(String startDate, String endDate, @RequestParam Integer id) {
-        return projectService.getProjectCost(startDate, endDate, id, request);
+    public HttpRespMsg getProjectCost(String startDate, String endDate, @RequestParam Integer id,@RequestParam(defaultValue = "0") Integer stateKey) {
+        return projectService.getProjectCost(startDate, endDate, id,stateKey, request);
     }
 
     /**

+ 12 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ExpenseSheet.java

@@ -1,26 +1,26 @@
 package com.management.platform.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
-import java.time.LocalDate;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
-import java.io.Serializable;
-import java.util.List;
-
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.util.List;
+
 /**
  * <p>
  * 
  * </p>
  *
  * @author Seyason
- * @since 2021-10-14
+ * @since 2022-08-12
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -100,6 +100,11 @@ public class ExpenseSheet extends Model<ExpenseSheet> {
     @TableField("operator_id")
     private String operatorId;
 
+    /**
+     * 驳回原因
+     */
+    @TableField("deny_reason")
+    private String denyReason;
 
     @TableField(exist = false)
     private List<ExpenseItem> invoiceList;

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java

@@ -30,7 +30,7 @@ public interface ProjectMapper extends BaseMapper<Project> {
     List<Map<String, Object>> getCustomDataSum(@Param("companyId") Integer companyId, @Param("startDate") String startDate, @Param("endDate") String endDate,
                                           @Param("projectId") Integer projectId, @Param("userId") String userId);
 
-    List<Map<String, Object>> getProjectCost(@Param("companyId")Integer companyId,@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("projectId") Integer projectId, @Param("userId") String userId,@Param("deptIds")List<Integer> deptIds,@Param("filterDeptIds")List<Integer> filterDeptIds);
+    List<Map<String, Object>> getProjectCost(@Param("companyId")Integer companyId,@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("projectId") Integer projectId,@Param("stateKey")Integer stateKey, @Param("userId") String userId,@Param("deptIds")List<Integer> deptIds,@Param("filterDeptIds")List<Integer> filterDeptIds);
 
     List<Map<String, Object>> getProjectCusDataSumItem(@Param("companyId") Integer companyId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("projectId") Integer projectId, @Param("userId") String userId);
     List<Map<String, Object>> getProjectCusDataDetailItem(@Param("companyId") Integer companyId, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("projectId") Integer projectId, @Param("userId") String userId);

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ExpenseSheetService.java

@@ -29,7 +29,7 @@ public interface ExpenseSheetService extends IService<ExpenseSheet> {
 
     HttpRespMsg approve(Integer id);
 
-    HttpRespMsg deny(Integer id);
+    HttpRespMsg deny(Integer id,String denyReason);
 
     HttpRespMsg importData(HttpServletRequest request, MultipartFile[] files);
 }

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java

@@ -50,7 +50,7 @@ public interface ProjectService extends IService<Project> {
 
     HttpRespMsg getTimeCost(String startDate, String endDate, String userId, HttpServletRequest request);
 
-    HttpRespMsg getProjectCost(String startDate, String endDate, Integer projectId, HttpServletRequest request);
+    HttpRespMsg getProjectCost(String startDate, String endDate, Integer projectId,Integer stateKey, HttpServletRequest request);
 
     HttpRespMsg getCostInStage(String startDate, String endDate, Integer projectId, HttpServletRequest request);
 

+ 8 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ExpenseSheetServiceImpl.java

@@ -65,8 +65,12 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
     public HttpRespMsg add(ExpenseSheet sheet, String items, String userId) {
         HttpRespMsg msg = new HttpRespMsg();
         User user = userMapper.selectById(userId);
+        List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "费用审核");
         boolean isNew = false;
         if (sheet.getId() == null) {
+            if(functionDeptList.size()>0){
+                sheet.setStatus(0);
+            }
             isNew = true;
             //检查code不能重复
             Integer num = expenseSheetMapper.selectCount(new QueryWrapper<ExpenseSheet>().eq("company_id", user.getCompanyId()).eq("code", sheet.getCode()));
@@ -75,6 +79,8 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
                 return msg;
             }
         }
+        sheet.setStatus(1);
+        sheet.setDenyReason(null);
         sheet.setOperatorId(userId);//设置操作人id
         JSONArray array = JSONArray.parseArray(items);
         sheet.setOwnerName(userMapper.selectById(sheet.getOwnerId()).getName());
@@ -186,10 +192,11 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
     }
 
     @Override
-    public HttpRespMsg deny(Integer id) {
+    public HttpRespMsg deny(Integer id,String denyReason) {
         ExpenseSheet sheet = new ExpenseSheet();
         sheet.setId(id);
         sheet.setStatus(2);
+        sheet.setDenyReason(denyReason);
         expenseSheetMapper.updateById(sheet);
         return new HttpRespMsg();
     }

+ 26 - 16
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -45,7 +45,6 @@ import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
-import java.time.Period;
 import java.time.chrono.ChronoLocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -1113,7 +1112,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     }
                     //统计每个项目中的人员时间成本投入
                     int curProjectId = (Integer)map.get("id");
-                    List<Map<String, Object>> membList = projectMapper.getProjectCost(companyId,startDate, endDate, curProjectId, userId,deptIds,filterDeptIds);
+                    List<Map<String, Object>> membList = projectMapper.getProjectCost(companyId,startDate, endDate, curProjectId,null, userId,deptIds,filterDeptIds);
                     map.put("membList", membList);
                     for (Map<String, Object> membMap : membList) {
                         double pTotalTime = 0;
@@ -1379,7 +1378,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
     //获取某个项目每个人分别需要的工时
     @Override
-    public HttpRespMsg getProjectCost(String startDate, String endDate, Integer projectId, HttpServletRequest request) {
+    public HttpRespMsg getProjectCost(String startDate, String endDate, Integer projectId,Integer stateKey, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
             User targetUser = userMapper.selectById(request.getHeader("Token"));
@@ -1420,7 +1419,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 if (timeType.getFixMonthcost() == 0) {
                     Map<String, Object> resultMap = new HashMap<>();
                     //数据下 非负责部门人员数据不展示
-                    List<Map<String, Object>> list = projectMapper.getProjectCost(companyId,startDate, endDate, projectId, null,deptIds,null);
+                    List<Map<String, Object>> list = projectMapper.getProjectCost(companyId,startDate, endDate, projectId,stateKey, null,deptIds,null);
                     BigDecimal totalMoneyCost = BigDecimal.valueOf(0);
                     for (Map<String, Object> map : list) {
                         if (!map.containsKey("costMoney")) {
@@ -1437,7 +1436,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     endDate = endDate + "-31";
                     List<Map<String, Object>> userMonthTimeCostList = projectMapper.getUserMonthTimeCost(companyId, startDate+"-01", endDate+"-31");
 
-                    List<Map<String, Object>> list = projectMapper.getProjectCost(companyId,startDate, endDate, projectId, null,deptIds,null);
+                    List<Map<String, Object>> list = projectMapper.getProjectCost(companyId,startDate, endDate, projectId,stateKey, null,deptIds,null);
 
                     //检查财务表中是否已经导入成本
                     List<Finance> financeList = financeMapper.selectList(new QueryWrapper<Finance>().eq("ymonth", startDate).eq("company_id", companyId));
@@ -4562,20 +4561,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<TimelinessRateVO> resultList=new ArrayList<>();
         for (User user : userList){
             long days =dateTimeList.size();
-            //请假的不参与及时率统计
             List<LeaveSheet> leaveSheets = leaveSheetList.stream().filter(ls -> ls.getOwnerId().equals(user.getId())
                     &&(ls.getStartDate().isAfter(ChronoLocalDate.from(sDate))||ls.getStartDate().isEqual(ChronoLocalDate.from(sDate)))
                     &&(ls.getEndDate().isBefore(ChronoLocalDate.from(eDate))||ls.getEndDate().isEqual(ChronoLocalDate.from(eDate)))).collect(Collectors.toList());
-            if(leaveSheets.size()>0){
-                for (LeaveSheet leaveSheet : leaveSheets) {
-                    Period next = Period.between(leaveSheet.getStartDate(),leaveSheet.getEndDate());
-                    if(next.getDays()<1){
-                        days-=1;
-                    }else {
-                        days-=next.getDays();
-                    }
-                }
-            }
             TimelinessRateVO timelinessRateVO=new TimelinessRateVO();
             timelinessRateVO.setUserName(user.getName());
             timelinessRateVO.setTimelinessRate(String.valueOf(dft.format(0)));
@@ -4584,6 +4572,26 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 timelinessRateVO.setDepartmentName(first.get().getDepartmentName());
             }
             List<Map<String, Object>> mapList = listMap.get(user.getName());
+            //请假的不参与及时率统计
+            if(leaveSheets.size()>0){
+                for (LeaveSheet leaveSheet : leaveSheets) {
+                    List<LocalDateTime> leaveDateList = getDays(leaveSheet.getStartDate().atTime(LocalTime.MIN), leaveSheet.getEndDate().atTime(LocalTime.MIN));
+                    if(leaveSheet.getTimeDays()<=1){
+                        days-=1;
+                    }else{
+                        days-=leaveSheet.getTimeDays();
+                    }
+                    for (LocalDateTime localDateTime : leaveDateList) {
+                        if(mapList.stream().anyMatch(ml->{
+                            Object date = ml.get("createDate");
+                            LocalDate createDate = LocalDate.parse(String.valueOf(date));
+                            return createDate.isEqual(localDateTime.toLocalDate());
+                        })){
+                            days++;
+                        }
+                    }
+                }
+            }
             //去填未填日报非工作日
             for (LocalDateTime localDateTime : dateTimeList) {
                 if(mapList!=null){
@@ -4623,6 +4631,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         }
                     }
                 }
+                System.out.println(days);
+                System.out.println(num);
                 BigDecimal bigDecimal=new BigDecimal(num);
                 BigDecimal divide;
                 if(days!=0){

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ExpenseSheetMapper.xml

@@ -16,11 +16,12 @@
         <result column="remark" property="remark" />
         <result column="total_amount" property="totalAmount" />
         <result column="operator_id" property="operatorId" />
+        <result column="deny_reason" property="denyReason" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, code, company_id, owner_id, owner_name, create_date, ticket_num, type, status, remark, total_amount, operator_id
+        id, code, company_id, owner_id, owner_name, create_date, ticket_num, type, status, remark, total_amount, operator_id, deny_reason
     </sql>
 
 </mapper>

+ 9 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -277,7 +277,15 @@
         FROM report AS a
         JOIN user AS b ON a.creator_id = b.id
         left join department on department.department_id = a.dept_id
-        WHERE a.company_id=#{companyId} and (a.state = 1 or a.state =0)
+        WHERE a.company_id=#{companyId}
+        <choose>
+            <when test="stateKey!=null and stateKey==1">
+                and  a.state = 1
+            </when>
+            <otherwise>
+                and (a.state = 1 or a.state =0)
+            </otherwise>
+        </choose>
         <if test="projectId != null">
             and a.project_id = #{projectId}
         </if>