Browse Source

维修统计数据

guarantee-lsq 3 years ago
parent
commit
db6c3aad98
16 changed files with 409 additions and 28 deletions
  1. 28 0
      platform-common/src/main/java/com/platform/common/constant/CommonConstants.java
  2. 2 0
      platform-dao/src/main/java/com/platform/dao/dto/repair/RepairApplicationFormDTO.java
  3. 4 0
      platform-dao/src/main/java/com/platform/dao/dto/repair/RepairFeeDTO.java
  4. 1 0
      platform-dao/src/main/java/com/platform/dao/enums/SysConfigEnum.java
  5. 2 0
      platform-dao/src/main/java/com/platform/dao/mapper/repair/RepairApplicationFormMapper.java
  6. 8 0
      platform-dao/src/main/java/com/platform/dao/mapper/repair/RepairFeeMapper.java
  7. 94 0
      platform-dao/src/main/java/com/platform/dao/vo/query/repair/RepairFeeVO.java
  8. 86 0
      platform-dao/src/main/java/com/platform/dao/vo/query/workplace/WorkplaceRepairVO.java
  9. 4 0
      platform-dao/src/main/java/com/platform/dao/vo/repair/RepairApplicationFormVO.java
  10. 19 0
      platform-dao/src/main/resources/mapper/repair/RepairApplicationFormMapper.xml
  11. 16 0
      platform-dao/src/main/resources/mapper/repair/RepairFeeMapper.xml
  12. 4 1
      platform-rest/src/main/java/com/platform/rest/controller/repair/RepairFeeController.java
  13. 7 0
      platform-service/src/main/java/com/platform/service/repair/RepairApplicationFormService.java
  14. 3 2
      platform-service/src/main/java/com/platform/service/repair/RepairFeeService.java
  15. 85 25
      platform-service/src/main/java/com/platform/service/repair/impl/RepairApplicationFormServiceImpl.java
  16. 46 0
      platform-service/src/main/java/com/platform/service/repair/impl/RepairFeeServiceImpl.java

+ 28 - 0
platform-common/src/main/java/com/platform/common/constant/CommonConstants.java

@@ -197,4 +197,32 @@ public interface CommonConstants {
      * 工作流历史记录
      */
     String ACT_AUDIT_RECORD = "ACT_AUDIT_RECORD";
+
+    /**
+     * 维修状态
+     */
+    /**
+     * 待接收
+     */
+    int NOT_ALLOCATED = 1;
+    /**
+     * 维修中
+     */
+    int PROCESSING = 2;
+    /**
+     * 待审核
+     */
+    int WAIT_SUBMIT = 3;
+    /**
+     * 审核中
+     */
+    int NOT_ACCEPTANCE = 4;
+    /**
+     * 已驳回
+     */
+    int REBACK = 5;
+    /**
+     * 	已完成
+     */
+    int FINISHED = 6;
 }

+ 2 - 0
platform-dao/src/main/java/com/platform/dao/dto/repair/RepairApplicationFormDTO.java

@@ -317,4 +317,6 @@ public class RepairApplicationFormDTO extends BaseDTO implements Serializable {
      * 搜索结束时间:报修时间
      */
     private LocalDateTime searchEndTime;
+
+    private String searchTime;
 }

+ 4 - 0
platform-dao/src/main/java/com/platform/dao/dto/repair/RepairFeeDTO.java

@@ -138,4 +138,8 @@ public class RepairFeeDTO extends BaseDTO implements Serializable {
      */
     private LocalDateTime searchEndTime;
 
+    private String repairUserId;
+
+    private String searchTime;
+
 }

+ 1 - 0
platform-dao/src/main/java/com/platform/dao/enums/SysConfigEnum.java

@@ -40,6 +40,7 @@ public enum SysConfigEnum {
     REPAIR_OVERTIME_MINUTE_THIRD("维修超时预警第三阶段"),
     CHECK_JOB_WORK("每周工作负荷"),
     SPARE_WARN_EMAIL("最低库存邮箱"),
+    REPAIR_FEE_TYPE_MAPS("维修费用类别集合"),
     SPARE_WARN_FORREST_EMAIL("保养库存邮件邮箱");
     private final String typeName;
 

+ 2 - 0
platform-dao/src/main/java/com/platform/dao/mapper/repair/RepairApplicationFormMapper.java

@@ -36,4 +36,6 @@ public interface RepairApplicationFormMapper extends MyMapper<RepairApplicationF
      * @return
      */
     String selectNoById(Object id);
+
+    List<RepairApplicationFormVO> getWorkplaceRepairData(RepairApplicationFormDTO model);
 }

+ 8 - 0
platform-dao/src/main/java/com/platform/dao/mapper/repair/RepairFeeMapper.java

@@ -3,6 +3,7 @@ package com.platform.dao.mapper.repair;
 import com.platform.dao.config.MyMapper;
 import com.platform.dao.dto.repair.RepairFeeDTO;
 import com.platform.dao.entity.repair.RepairFee;
+import com.platform.dao.vo.query.repair.RepairFeeVO;
 import org.springframework.stereotype.Component;
 import java.util.List;
 
@@ -28,4 +29,11 @@ public interface RepairFeeMapper extends MyMapper<RepairFee> {
      * @return
      */
     RepairFee selectById(Object id);
+
+    /**
+     * 获取工作台的饼状图data
+     * @param model
+     * @return
+     */
+    List<RepairFeeVO> listForWorkplacePie(RepairFeeDTO model);
 }

+ 94 - 0
platform-dao/src/main/java/com/platform/dao/vo/query/repair/RepairFeeVO.java

@@ -0,0 +1,94 @@
+package com.platform.dao.vo.query.repair;
+
+import com.platform.common.bean.BaseVO;
+import com.platform.dao.entity.upms.SysFile;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+public class RepairFeeVO extends BaseVO implements Serializable {
+    /**
+     * 设备id
+     */
+    private String sbId;
+    /**
+     * 维修单id
+     */
+    private String repairId;
+    /**
+     * 设备id
+     */
+    private String sbNo;
+    /**
+     * 设备id
+     */
+    private String sbName;
+    /**
+     * 设备id
+     */
+    private String typeId;
+    /**
+     * 设备id
+     */
+    private String sbTypeName;
+    /**
+     * 设备id
+     */
+    private String sbLevel;
+    /**
+     * 工单类型
+     */
+    private Integer category;
+    /**
+     * 费用金额
+     */
+    private Double fee;
+    /**
+     * 费用类别
+     */
+    private Integer type;
+    /**
+     * 费用原因
+     */
+    private String reason;
+    /**
+     * 费用描述
+     */
+    private String descripition;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 货币类型
+     */
+    private Integer moneyType;
+    /**
+     * 费用日期
+     */
+    private LocalDate feeDate;
+    /**
+     * 单号:系统内部的单号,不是维修单号或者其他的单号
+     */
+    private String no;
+    /**
+     * 委外单号
+     */
+    private String repairNo;
+
+    private List<SysFile> imageList;
+
+    private List<SysFile> fileList;
+
+    private String typeName;
+
+    private BigDecimal repairNum;
+}

+ 86 - 0
platform-dao/src/main/java/com/platform/dao/vo/query/workplace/WorkplaceRepairVO.java

@@ -0,0 +1,86 @@
+package com.platform.dao.vo.query.workplace;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 维修工作台数据返回VO
+ */
+@Data
+public class WorkplaceRepairVO implements Serializable {
+    /**
+     * 待维修工单数
+     */
+    private BigDecimal waitForRepairNum;
+
+    /**
+     * 审核工单数
+     */
+    private BigDecimal verifyRepairNum;
+
+    /**
+     * 已完成工单数
+     */
+    private BigDecimal completedRepairNum;
+    /**
+     * 驳回工单数
+     */
+    private BigDecimal refusedRepairNum;
+
+    /**
+     * 维修工单总数
+     */
+    private BigDecimal repairTotalNum;
+
+    /**
+     * 委外待维修工单数
+     */
+    private BigDecimal outWaitForRepairNum;
+
+    /**
+     * 委外审核工单数
+     */
+    private BigDecimal outVerifyRepairNum;
+    /**
+     * 委外驳回工单数
+     */
+    private BigDecimal outRefusedRepairNum;
+
+    /**
+     * 委外已完成工单数
+     */
+    private BigDecimal outCompletedRepairNum;
+
+    /**
+     * 委外维修工单总数
+     */
+    private BigDecimal outRepairTotalNum;
+
+    /**
+     * 普通维修费用
+     */
+    private BigDecimal repairFee;
+
+    /**
+     * 委外维修费用
+     */
+    private BigDecimal outRepairFee;
+
+    /**
+     * 总工单数
+     */
+    private BigDecimal totalNum;
+    /**
+     * 总维修费
+     */
+    private BigDecimal totalFee;
+
+    public WorkplaceRepairVO(){
+        this.waitForRepairNum = this.verifyRepairNum = this.completedRepairNum = this.refusedRepairNum = this.repairTotalNum
+                = this.outRepairTotalNum = this.outCompletedRepairNum = this.outRefusedRepairNum = this.outVerifyRepairNum
+                = this.outWaitForRepairNum = this.outRepairFee = this.repairFee = this.totalFee = this.totalNum = new BigDecimal(0);
+    }
+
+}

+ 4 - 0
platform-dao/src/main/java/com/platform/dao/vo/repair/RepairApplicationFormVO.java

@@ -351,4 +351,8 @@ public class RepairApplicationFormVO extends BaseVO implements Serializable {
      * 其他
      */
     private String otherChangeContent;
+
+    private BigDecimal tempTotalNum;
+
+    private BigDecimal tempTotalFee;
 }

+ 19 - 0
platform-dao/src/main/resources/mapper/repair/RepairApplicationFormMapper.xml

@@ -113,4 +113,23 @@
         from t_repair_application_form
         where id = #{id,jdbcType=VARCHAR}
     </select>
+
+    <!-- 维修统计数据 -->
+    <select id="getWorkplaceRepairData" parameterType="com.platform.dao.dto.repair.RepairApplicationFormDTO"
+            resultType="com.platform.dao.vo.repair.RepairApplicationFormVO">
+        select count(1) as tempTotalNum,sum(fee.fee) as tempTotalFee,rf.status from t_repair_application_form rf
+        join t_repair_fee fee on fee.repair_id = rf.id
+        <where>
+            <if test="repairUserId != null">
+                and rf.repair_user_id = #{repairUserId}
+            </if>
+            <if test="searchTime != null">
+                and rf.repair_start_time like concat('',#{searchTime},'%')
+            </if>
+            <if test="type != null">
+                and rf.type = #{type}
+            </if>
+        </where>
+        group by rf.status
+    </select>
 </mapper>

+ 16 - 0
platform-dao/src/main/resources/mapper/repair/RepairFeeMapper.xml

@@ -86,4 +86,20 @@
         from t_repair_fee
         where id = #{id,jdbcType=VARCHAR}
     </select>
+
+    <!-- 维修费用数据 -->
+    <select id="listForWorkplacePie" parameterType="com.platform.dao.dto.repair.RepairFeeDTO"
+            resultType="com.platform.dao.vo.query.repair.RepairFeeVO">
+        select count(1) as repairNum,sum(fee.fee) as fee,fee.type from t_repair_application_form rf
+        join t_repair_fee fee on fee.repair_id = rf.id
+        <where>
+            <if test="repairUserId != null">
+                and rf.repair_user_id = #{repairUserId}
+            </if>
+            <if test="searchTime != null">
+                and rf.repair_start_time like concat('',#{searchTime},'%')
+            </if>
+        </where>
+        group by fee.type
+    </select>
 </mapper>

+ 4 - 1
platform-rest/src/main/java/com/platform/rest/controller/repair/RepairFeeController.java

@@ -1,5 +1,6 @@
 package com.platform.rest.controller.repair;
 
+import com.platform.common.util.JsonUtils;
 import com.platform.common.util.R;
 import com.platform.dao.dto.repair.RepairFeeDTO;
 import com.platform.dao.entity.repair.RepairFee;
@@ -52,7 +53,9 @@ public class RepairFeeController {
   @PostMapping
   @PreAuthorize("@pms.hasPermission('repair-fees-add')")
   public R save(@Validated({AddGroup.class}) @RequestBody RepairFeeDTO repairFeeDTO) {
-      return new R<>(repairFeeService.saveModelByDTO(repairFeeDTO));
+    System.out.println("---------------------------------"+JsonUtils.objectToJson(repairFeeDTO));
+    return new R<>(null);
+    //return new R<>(repairFeeService.saveModelByDTO(repairFeeDTO));
   }
 
   /**

+ 7 - 0
platform-service/src/main/java/com/platform/service/repair/RepairApplicationFormService.java

@@ -8,6 +8,7 @@ import com.platform.dao.dto.repair.RepairFormDTO;
 import com.platform.dao.entity.repair.RepairApplicationForm;
 import com.platform.dao.entity.repair.RepairForm;
 import com.platform.dao.vo.query.check.CheckJobVO;
+import com.platform.dao.vo.query.workplace.WorkplaceRepairVO;
 import com.platform.dao.vo.repair.RepairApplicationFormVO;
 import com.platform.dao.vo.repair.RepairFormVO;
 import com.platform.dao.vo.report.RepairReport24VO;
@@ -121,4 +122,10 @@ public interface RepairApplicationFormService extends IBaseService<RepairApplica
     List<RepairReportMttr> getMonthReportMtrr(RepairApplicationFormDTO repairApplicationFormDTO, Integer year, LocalDate startMonth, LocalDate endMonth);
 
     List<RepairSbInfoReport>  getSbInfoReport(RepairApplicationFormDTO dto, Integer year);
+
+    /**
+     * 获取维修工作台数据
+     * @return
+     */
+    WorkplaceRepairVO getWorkplaceRepairData(String userId,String searchTime);
 }

+ 3 - 2
platform-service/src/main/java/com/platform/service/repair/RepairFeeService.java

@@ -1,10 +1,9 @@
 package com.platform.service.repair;
 
-import com.platform.dao.dto.repair.RepairApplicationFormDTO;
 import com.platform.dao.dto.repair.RepairFeeDTO;
 import com.platform.dao.entity.repair.RepairFee;
+import com.platform.dao.vo.query.repair.RepairFeeVO;
 import com.platform.dao.vo.report.RepairReportFee;
-import com.platform.dao.vo.report.RepairReportMttr;
 import com.platform.dao.vo.report.RepairSbInfoReportFee;
 import com.platform.service.base.IBaseService;
 
@@ -30,4 +29,6 @@ public interface RepairFeeService extends IBaseService<RepairFee, RepairFeeDTO>
     List<RepairReportFee> getMonthReport(RepairFeeDTO repairFeeDTO, Integer year, LocalDate startMonth, LocalDate endMonth);
 
     List<RepairSbInfoReportFee> getSbInfoReport(RepairFeeDTO dto, Integer year);
+
+    List<RepairFeeVO> listForWorkplacePie(String userId,String searchTime);
 }

+ 85 - 25
platform-service/src/main/java/com/platform/service/repair/impl/RepairApplicationFormServiceImpl.java

@@ -2,13 +2,13 @@ package com.platform.service.repair.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.platform.common.bean.DictVO;
 import com.platform.common.cache.ConfigCache;
 import com.platform.common.cache.DictCache;
+import com.platform.common.constant.CommonConstants;
 import com.platform.common.constant.RedisKeyConstants;
 import com.platform.common.enums.DataFilterTypeEnum;
 import com.platform.common.exception.BusinessException;
@@ -16,20 +16,11 @@ import com.platform.common.model.UserInfo;
 import com.platform.common.util.*;
 import com.platform.dao.bean.MyVOPage;
 import com.platform.dao.dto.repair.RepairApplicationFormDTO;
-import com.platform.dao.dto.repair.RepairCheckDTO;
-import com.platform.dao.dto.repair.RepairFormDTO;
 import com.platform.dao.dto.sb.SbInfoDTO;
-import com.platform.dao.dto.store.InStoreDetailDTO;
 import com.platform.dao.dto.upms.SysUserDTO;
-import com.platform.dao.entity.check.CheckJob;
 import com.platform.dao.entity.repair.RepairApplicationForm;
-import com.platform.dao.entity.repair.RepairCheck;
-import com.platform.dao.entity.repair.RepairForm;
 import com.platform.dao.entity.repair.RepairReason;
 import com.platform.dao.entity.sb.SbInfo;
-import com.platform.dao.entity.sb.SbInspectionFill;
-import com.platform.dao.entity.store.InStoreDetail;
-import com.platform.dao.entity.upms.SysConfig;
 import com.platform.dao.entity.upms.SysFile;
 import com.platform.dao.entity.upms.SysUser;
 import com.platform.dao.enums.*;
@@ -40,17 +31,13 @@ import com.platform.dao.mapper.repair.RepairReasonMapper;
 import com.platform.dao.mapper.upms.SysFileMapper;
 import com.platform.dao.mapper.upms.SysUserMapper;
 import com.platform.dao.util.MessageTemplateUtil;
-import com.platform.dao.util.UserUtil;
 import com.platform.dao.vo.SysUserVO;
-import com.platform.dao.vo.query.upms.SysDeptVO;
+import com.platform.dao.vo.query.workplace.WorkplaceRepairVO;
 import com.platform.dao.vo.repair.RepairApplicationFormVO;
-import com.platform.dao.vo.repair.RepairCheckVO;
-import com.platform.dao.vo.repair.RepairFormVO;
 import com.platform.dao.vo.report.RepairReport24VO;
 import com.platform.dao.vo.report.RepairReportMttr;
 import com.platform.dao.vo.report.RepairSbInfoReport;
 import com.platform.dao.vo.sb.SbInfoVO;
-import com.platform.office.annotation.Excel;
 import com.platform.service.base.impl.BaseServiceImpl;
 import com.platform.service.event.WorkplaceBacklogEvent;
 import com.platform.service.repair.RepairApplicationFormService;
@@ -60,25 +47,20 @@ import com.platform.service.upms.SysUserDeptService;
 import com.platform.service.upms.SysUserService;
 import com.platform.service.util.SysFileUtils;
 import com.platform.service.wechat.util.WeChatMessageUtil;
-import freemarker.template.Configuration;
-import freemarker.template.Template;
-import freemarker.template.TemplateException;
 import lombok.AllArgsConstructor;
-import org.springframework.core.io.ClassPathResource;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import tk.mybatis.mapper.weekend.Weekend;
 import tk.mybatis.mapper.weekend.WeekendCriteria;
 
-import javax.annotation.Resource;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.StringWriter;
-import java.lang.reflect.Array;
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -870,6 +852,84 @@ public class RepairApplicationFormServiceImpl extends BaseServiceImpl<RepairAppl
         return result;
     }
 
+    @Override
+    public WorkplaceRepairVO getWorkplaceRepairData(String userId,String searchTime) {
+        WorkplaceRepairVO vo = new WorkplaceRepairVO();
+        // 获取内部维修数据
+        RepairApplicationFormDTO queryDTO = new RepairApplicationFormDTO();
+        queryDTO.setType(RepairApplicationFormTypeEnum.IN.getValue());
+        queryDTO.setSearchTime(searchTime);
+        queryDTO.setRepairUserId(userId);
+        List<RepairApplicationFormVO> list = mapper.getWorkplaceRepairData(queryDTO);
+        if(list != null && list.size() > 0){
+            for(RepairApplicationFormVO result : list){
+                packageInfo(RepairApplicationFormTypeEnum.IN.getValue(),result,vo);
+            }
+        }
+        queryDTO.setType(RepairApplicationFormTypeEnum.OUT.getValue());
+        list = mapper.getWorkplaceRepairData(queryDTO);
+        if(list != null && list.size() > 0){
+            for(RepairApplicationFormVO result : list){
+                packageInfo(RepairApplicationFormTypeEnum.OUT.getValue(),result,vo);
+            }
+        }
+        // 统计总和数据
+        vo.setTotalFee(vo.getRepairFee().add(vo.getOutRepairFee()));
+        vo.setTotalNum(vo.getRepairTotalNum().add(vo.getOutRepairTotalNum()));
+        return vo;
+    }
+
+    /**
+     * 数据封装
+     * @param type  工单维修类型 内部还是外部
+     * @param result 结果数据
+     * @param vo 返回数据
+     */
+    private void packageInfo(Integer type,RepairApplicationFormVO result,WorkplaceRepairVO vo){
+        BigDecimal tempNum = result.getTempTotalNum();
+        if(RepairApplicationFormTypeEnum.IN.getValue() == type){
+            vo.setRepairFee(vo.getRepairFee().add(result.getTempTotalFee()));
+            vo.setRepairTotalNum(vo.getRepairTotalNum().add(tempNum));
+            // 内部维修
+            switch (result.getStatus().intValue()){
+                case CommonConstants.NOT_ALLOCATED:
+                case CommonConstants.PROCESSING:
+                    vo.setWaitForRepairNum(vo.getWaitForRepairNum().add(tempNum));
+                    break;
+                case CommonConstants.WAIT_SUBMIT:
+                case CommonConstants.NOT_ACCEPTANCE:
+                    vo.setVerifyRepairNum(vo.getVerifyRepairNum().add(tempNum));
+                    break;
+                case CommonConstants.REBACK:
+                    vo.setRefusedRepairNum(vo.getRefusedRepairNum().add(tempNum));
+                    break;
+                case CommonConstants.FINISHED:
+                    vo.setCompletedRepairNum(vo.getCompletedRepairNum().add(tempNum));
+                    break;
+            }
+        }else if(RepairApplicationFormTypeEnum.OUT.getValue() == type) {
+            vo.setOutRepairFee(vo.getOutRepairFee().add(result.getTempTotalFee()));
+            vo.setOutRepairTotalNum(vo.getOutRepairTotalNum().add(tempNum));
+            // 委外
+            switch (result.getStatus()){
+                case CommonConstants.NOT_ALLOCATED:
+                case CommonConstants.PROCESSING:
+                    vo.setOutWaitForRepairNum(vo.getOutWaitForRepairNum().add(tempNum));
+                    break;
+                case CommonConstants.WAIT_SUBMIT:
+                case CommonConstants.NOT_ACCEPTANCE:
+                    vo.setOutVerifyRepairNum(vo.getOutVerifyRepairNum().add(tempNum));
+                    break;
+                case CommonConstants.REBACK:
+                    vo.setOutRefusedRepairNum(vo.getOutRefusedRepairNum().add(tempNum));
+                    break;
+                case CommonConstants.FINISHED:
+                    vo.setOutCompletedRepairNum(vo.getOutCompletedRepairNum().add(tempNum));
+                    break;
+            }
+        }
+    }
+
     /**
      * 1: 如果年份是当前年份,则统计到当前月份
      * 2:如果不是当前年份,则统计全年的

+ 46 - 0
platform-service/src/main/java/com/platform/service/repair/impl/RepairFeeServiceImpl.java

@@ -1,6 +1,7 @@
 package com.platform.service.repair.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import com.alibaba.fastjson.JSONArray;
 import com.github.pagehelper.PageHelper;
 import com.platform.common.bean.AbstractPageResultBean;
 import com.platform.common.bean.DictVO;
@@ -17,25 +18,31 @@ import com.platform.dao.dto.repair.RepairFeeDTO;
 import com.platform.dao.entity.repair.RepairApplicationForm;
 import com.platform.dao.entity.repair.RepairFee;
 import com.platform.dao.entity.sb.SbInfo;
+import com.platform.dao.entity.upms.SysConfig;
 import com.platform.dao.entity.upms.SysFile;
 import com.platform.dao.enums.RepairApplicationFormCategoryEnum;
+import com.platform.dao.enums.SysConfigEnum;
 import com.platform.dao.enums.SysFileTypeEnum;
 import com.platform.dao.mapper.repair.RepairApplicationFormMapper;
 import com.platform.dao.mapper.repair.RepairFeeMapper;
 import com.platform.dao.mapper.upms.SysFileMapper;
+import com.platform.dao.vo.query.repair.RepairFeeVO;
 import com.platform.dao.vo.repair.RepairApplicationFormVO;
+import com.platform.dao.vo.report.CheckJobReportWeekHoursVO;
 import com.platform.dao.vo.report.RepairReportFee;
 import com.platform.dao.vo.report.RepairReportMttr;
 import com.platform.dao.vo.report.RepairSbInfoReportFee;
 import com.platform.service.base.impl.BaseServiceImpl;
 import com.platform.service.repair.RepairFeeService;
 import com.platform.service.sb.SbInfoService;
+import com.platform.service.upms.SysConfigService;
 import com.platform.service.util.SysFileUtils;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import tk.mybatis.mapper.weekend.Weekend;
 import tk.mybatis.mapper.weekend.WeekendCriteria;
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
@@ -58,6 +65,8 @@ public class RepairFeeServiceImpl extends BaseServiceImpl<RepairFeeMapper, Repai
 
     private final SbInfoService sbInfoService;
 
+    private final SysConfigService sysConfigService;
+
     @Override
     public int batchDelete(List<String> ids) {
         Weekend<RepairFee> weekend = new Weekend<>(RepairFee.class);
@@ -288,4 +297,41 @@ public class RepairFeeServiceImpl extends BaseServiceImpl<RepairFeeMapper, Repai
         }
         return result;
     }
+
+    @Override
+    public List<RepairFeeVO> listForWorkplacePie(String userId,String searchTime) {
+        // 查询统计费用类别数据
+        RepairFeeDTO queryDTO = new RepairFeeDTO();
+        queryDTO.setSearchTime(searchTime);
+        queryDTO.setRepairUserId(userId);
+        List<RepairFeeVO> list = mapper.listForWorkplacePie(queryDTO) == null ? new ArrayList<>() : mapper.listForWorkplacePie(queryDTO);
+        SysConfig sysConfig = sysConfigService.getByCode(SysConfigEnum.REPAIR_FEE_TYPE_MAPS.toString());
+        if(sysConfig != null) {
+            List<RepairFeeVO> voList = JSONArray.parseArray(sysConfig.getContent(), RepairFeeVO.class);
+            BigDecimal defaultNum = new BigDecimal(0);
+            double defaultFee = 0.0;
+            for(RepairFeeVO vo: voList){
+                Integer type = vo.getType();
+                vo.setFee(defaultFee);
+                vo.setRepairNum(defaultNum);
+                for(RepairFeeVO result : list){
+                    if(type == result.getType()){
+                        vo.setFee(result.getFee());
+                        vo.setRepairNum(result.getRepairNum());
+                        break;
+                    }
+                }
+            }
+            return voList;
+        }
+        return null;
+    }
+
+    public static void main(String[] args) {
+        String content = "[{\"typeName\":\"维修-配件\",\"type\":1},{\"typeName\":\"维修-人工\",\"type\":2},{\"typeName\":\"备件费用\",\"type\":3},{\"typeName\":\"维护保养费用\",\"type\":4},{\"typeName\":\"改造费用\",\"type\":5}]";
+        List<RepairFeeVO> voList = JSONArray.parseArray(content, RepairFeeVO.class);
+        for(RepairFeeVO vo : voList){
+            System.out.println(vo.getTypeName()+"=="+vo.getType());
+        }
+    }
 }