1 年之前
父節點
當前提交
10e55e9542

+ 40 - 0
platform-dao/src/main/java/com/platform/dao/vo/report/AllPreparationReportVO.java

@@ -0,0 +1,40 @@
+package com.platform.dao.vo.report;
+
+import com.platform.dao.vo.query.preparation.PreparationVO;
+import com.platform.dao.vo.repair.RepairApplicationFormVO;
+import com.platform.office.annotation.Excel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author cyz
+ */
+@Data
+@Accessors(chain = true)
+public class AllPreparationReportVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 周
+     */
+    @Excel(name = "年", orderNum = "1")
+    private Integer year;
+    /**
+     * 月份
+     */
+    @Excel(name = "月份", orderNum = "2")
+    private Integer month;
+
+    /**
+     * 次数
+     */
+    @Excel(name = "次数", orderNum = "3")
+    private Integer num;
+
+    /**
+     * 明细列表
+     */
+    List<PreparationVO> detailList;
+}

+ 36 - 0
platform-dao/src/main/java/com/platform/dao/vo/report/PreparationReportByStatusVO.java

@@ -0,0 +1,36 @@
+package com.platform.dao.vo.report;
+
+import com.platform.dao.vo.query.preparation.PreparationVO;
+import com.platform.office.annotation.Excel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author cyz
+ */
+@Data
+@Accessors(chain = true)
+public class PreparationReportByStatusVO implements Serializable {
+    private String statusName;
+
+    private static final long serialVersionUID = 1L;
+    /**
+     * 周
+     */
+    @Excel(name = "状态", orderNum = "1" ,dicCode = "REPAIR_PREPARATION_STATUS")
+    private Integer status;
+
+    /**
+     * 次数
+     */
+    @Excel(name = "数量", orderNum = "3")
+    private Integer num;
+
+    /**
+     * 明细列表
+     */
+    List<PreparationVO> detailList;
+}

+ 52 - 31
platform-rest/src/main/java/com/platform/rest/controller/preparation/PreparationController.java

@@ -6,6 +6,7 @@ import com.platform.common.util.R;
 import com.platform.common.validation.group.AddGroup;
 import com.platform.common.validation.group.UpdateGroup;
 import com.platform.dao.dto.preparation.PreparationDTO;
+import com.platform.dao.dto.repair.RepairApplicationFormDTO;
 import com.platform.dao.entity.preparation.Preparation;
 import com.platform.dao.util.ExcelUtil;
 import com.platform.dao.vo.export.preparation.ExportPreparationVO;
@@ -18,6 +19,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDate;
 import java.util.List;
 
 /**
@@ -31,7 +33,7 @@ import java.util.List;
 @RequestMapping("/preparation/preparations")
 public class PreparationController {
 
-  private final  PreparationService preparationService;
+  private final PreparationService preparationService;
 
   /**
    * 通过id查询单条记录
@@ -40,8 +42,8 @@ public class PreparationController {
    * @return R
    */
   @GetMapping("/{id}")
-  public R<PreparationVO> getById(@PathVariable("id") String id){
-      return new R<>(preparationService.getVOById(id));
+  public R<PreparationVO> getById(@PathVariable("id") String id) {
+    return new R<>(preparationService.getVOById(id));
   }
 
   /**
@@ -54,7 +56,7 @@ public class PreparationController {
   @PostMapping
   @PreAuthorize("@pms.hasPermission('preparation-preparations-add')")
   public R save(@Validated({AddGroup.class}) @RequestBody PreparationDTO preparationDTO) {
-      return new R<>(preparationService.saveByDTO(preparationDTO));
+    return new R<>(preparationService.saveByDTO(preparationDTO));
   }
 
   /**
@@ -67,12 +69,11 @@ public class PreparationController {
   @PutMapping("/{id}")
   @PreAuthorize("@pms.hasPermission('preparation-preparations-edit')")
   public R update(@PathVariable("id") String id, @Validated({UpdateGroup.class}) @RequestBody PreparationDTO preparationDTO) {
-      preparationService.modModelByDTO(preparationDTO);
-      return new R<>();
+    preparationService.modModelByDTO(preparationDTO);
+    return new R<>();
   }
 
 
-                                                                                                                                      
   /**
    * 通过id删除一条记录
    *
@@ -82,36 +83,36 @@ public class PreparationController {
   @SysLog("删除筹建管理")
   @DeleteMapping("/{id}")
   @PreAuthorize("@pms.hasPermission('preparation-preparations-del')")
-  public R removeById(@PathVariable String id){
+  public R removeById(@PathVariable String id) {
     preparationService.deleteByPrimaryKey(id);
     return new R<>();
   }
 
-    /**
-     * 批量记录
-     *
-     * @param ids 主键
-     * @return R
-     */
-    @SysLog("批量删除筹建管理")
-    @DeleteMapping("")
-    @PreAuthorize("@pms.hasPermission('preparation-preparations-del')")
-    public R removeIds(@RequestBody List<String> ids){
-        preparationService.batchDelete(ids);
-        return new R<>();
-    }
+  /**
+   * 批量记录
+   *
+   * @param ids 主键
+   * @return R
+   */
+  @SysLog("批量删除筹建管理")
+  @DeleteMapping("")
+  @PreAuthorize("@pms.hasPermission('preparation-preparations-del')")
+  public R removeIds(@RequestBody List<String> ids) {
+    preparationService.batchDelete(ids);
+    return new R<>();
+  }
 
   /**
    * 获取分页
    *
-   * @param pageNum 当前页码
-   * @param pageSize 每页条数
+   * @param pageNum        当前页码
+   * @param pageSize       每页条数
    * @param preparationDTO 筹建管理DTO
    * @return R
    */
   @GetMapping("/page")
   public R<AbstractPageResultBean<PreparationVO>> query(PreparationDTO preparationDTO, @RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "20") int pageSize) {
-      return new R<>(preparationService.selectPageList(preparationDTO, pageNum, pageSize));
+    return new R<>(preparationService.selectPageList(preparationDTO, pageNum, pageSize));
   }
 
   /**
@@ -122,15 +123,15 @@ public class PreparationController {
    */
   @GetMapping("")
   public R query(PreparationDTO preparationDTO) {
-      return new R<>(preparationService.getModelListByDTO(preparationDTO));
+    return new R<>(preparationService.getModelListByDTO(preparationDTO));
   }
 
   /**
-     * 筹建管理导出
-     *
-     * @param preparationDTO 筹建管理DTO
-     * @return R
-     */
+   * 筹建管理导出
+   *
+   * @param preparationDTO 筹建管理DTO
+   * @return R
+   */
   @GetMapping("/export")
   @SysLog("筹建管理导出")
   @PreAuthorize("@pms.hasPermission('preparation-preparations-export')")
@@ -155,6 +156,7 @@ public class PreparationController {
 
   /**
    * 派单
+   *
    * @param preparationDTO 筹建单DTO
    * @return R
    */
@@ -169,7 +171,26 @@ public class PreparationController {
 
   @GetMapping("/test/{epcId}")
   public R saveTest(@PathVariable("epcId") String epcId) {
-    System.out.println("--------------------------------------------------------"+epcId);
+    System.out.println("--------------------------------------------------------" + epcId);
     return new R<>();
   }
+
+
+  /**
+   *
+   */
+  @GetMapping("/getAllPreparationReport")
+  @SysLog("筹建报表统计")
+  public R getAllPreparationReport(PreparationDTO dto, @RequestParam(required = false) Integer year, @RequestParam(required = false) LocalDate startMonth, @RequestParam(required = false) LocalDate endMonth) {
+    return new R(preparationService.getAllPreparationReport(dto, year, startMonth, endMonth));
+  }
+
+  /**
+   *
+   */
+  @GetMapping("/getPreparationReportGroupByStatus")
+  @SysLog("筹建报表统计")
+  public R getPreparationReportGroupByStatus(PreparationDTO dto, @RequestParam(required = false) Integer year, @RequestParam(required = false) LocalDate startMonth, @RequestParam(required = false) LocalDate endMonth) {
+    return new R(preparationService.getPreparationReportGroupByStatus(dto, year, startMonth, endMonth));
+  }
 }

+ 11 - 1
platform-service/src/main/java/com/platform/service/preparation/PreparationService.java

@@ -1,10 +1,16 @@
 package com.platform.service.preparation;
 
+import com.platform.dao.dto.repair.RepairApplicationFormDTO;
 import com.platform.dao.vo.query.preparation.PreparationVO;
 import com.platform.dao.dto.preparation.PreparationDTO;
 import com.platform.dao.entity.preparation.Preparation;
 import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.dao.vo.report.AllPreparationReportVO;
+import com.platform.dao.vo.report.PreparationReportByStatusVO;
+import com.platform.dao.vo.report.RepairReport24VO;
 import com.platform.service.base.IBaseService;
+
+import java.time.LocalDate;
 import java.util.List;
 
 /**
@@ -14,8 +20,12 @@ import java.util.List;
  * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
  */
 public interface PreparationService extends IBaseService<Preparation, PreparationDTO> {
+    List<PreparationReportByStatusVO> getPreparationReportGroupByStatus(PreparationDTO dto, Integer year, LocalDate startMonth, LocalDate endMonth);
+
+ List<AllPreparationReportVO> getAllPreparationReport(PreparationDTO dto, Integer year, LocalDate startMonth, LocalDate endMonth);
+
 
-   /**
+ /**
     * 批量删除
     *
     * @param ids :

+ 178 - 0
platform-service/src/main/java/com/platform/service/preparation/impl/PreparationServiceImpl.java

@@ -3,12 +3,16 @@ package com.platform.service.preparation.impl;
 import com.github.pagehelper.PageHelper;
 import com.platform.common.bean.AbstractPageResultBean;
 import com.platform.common.cache.ConfigCache;
+import com.platform.common.cache.DictCache;
+import com.platform.common.constant.CommonConstants;
 import com.platform.common.exception.DeniedException;
 import com.platform.common.model.UserInfo;
 import com.platform.common.util.*;
 import com.platform.dao.bean.MyPage;
 import com.platform.dao.dto.preparation.PreparationDTO;
+import com.platform.dao.dto.repair.RepairRecordTemplateData;
 import com.platform.dao.dto.upms.SysUserDTO;
+import com.platform.dao.entity.customize.CustomFieldTemplateData;
 import com.platform.dao.entity.preparation.Preparation;
 import com.platform.dao.entity.sb.SbPosition;
 import com.platform.dao.entity.upms.SysFile;
@@ -23,6 +27,10 @@ import com.platform.dao.util.MessageTemplateUtil;
 import com.platform.dao.vo.SysUserRoleVO;
 import com.platform.dao.vo.SysUserVO;
 import com.platform.dao.vo.query.preparation.PreparationVO;
+import com.platform.dao.vo.repair.RepairApplicationFormVO;
+import com.platform.dao.vo.report.AllPreparationReportVO;
+import com.platform.dao.vo.report.PreparationReportByStatusVO;
+import com.platform.dao.vo.report.RepairReport24VO;
 import com.platform.service.base.impl.BaseServiceImpl;
 import com.platform.service.event.WorkplaceBacklogEvent;
 import com.platform.service.preparation.PreparationService;
@@ -34,6 +42,7 @@ import tk.mybatis.mapper.weekend.Weekend;
 import tk.mybatis.mapper.weekend.WeekendCriteria;
 
 import javax.annotation.Resource;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -62,6 +71,175 @@ public class PreparationServiceImpl extends BaseServiceImpl<PreparationMapper, P
     @Resource
     private SysUserRoleMapper sysUserRoleMapper;
 
+    @Override
+    public List<PreparationReportByStatusVO> getPreparationReportGroupByStatus(PreparationDTO dto, Integer searchYear, LocalDate startMonth, LocalDate endMonth) {
+        List<Map<String, LocalDateTime>> monthStartAndEndList = new ArrayList<Map<String, LocalDateTime>>();
+        LocalDateTime searchStartTime = null;
+        LocalDateTime searchEndTime = null;
+        if (searchYear != null) {
+            LocalDate localDate = LocalDate.now();
+            int year = localDate.getYear();
+            // 如2021-10-15号码,则month=10,需要计算到11月份,需要加1
+            int month = localDate.getMonthValue();
+            if (searchYear < year) {
+                month = 12;
+                year = searchYear;
+            }
+            monthStartAndEndList = DateUtils.getMonthStartAndEndByYear(year, month);
+            // 当前年份只统计到当前月,历史年份统计全年
+            searchStartTime = DateUtils.getFirstDayOfThisYear(year);
+            searchEndTime = DateUtils.getLastDayOfMonth(year, month);
+        } else {
+            monthStartAndEndList = DateUtils.getMonthStartAndEndByYear(startMonth, endMonth);
+            searchStartTime = DateUtils.getFirstDayOfMonth(startMonth);
+            searchEndTime = DateUtils.getLastDayOfMonth(endMonth);
+        }
+
+        dto.setCreatedTimeEnd(searchStartTime);
+        dto.setCreatedTimeEnd(searchEndTime);
+        List<PreparationVO> list = mapper.selectList(dto);
+        List<PreparationReportByStatusVO> result = new ArrayList<>();
+        Integer draftNum = 0;
+        Integer waiting_allocationNum = 0;
+        Integer allocationedNum = 0;
+        Integer complatedNum = 0;
+        Integer revokedNum = 0;
+        PreparationReportByStatusVO draft = new PreparationReportByStatusVO();
+        PreparationReportByStatusVO waiting = new PreparationReportByStatusVO();
+        PreparationReportByStatusVO allocationed = new PreparationReportByStatusVO();
+        PreparationReportByStatusVO complated = new PreparationReportByStatusVO();
+        PreparationReportByStatusVO revoked = new PreparationReportByStatusVO();
+        List<PreparationVO> draftList = new ArrayList<>();
+        List<PreparationVO> waitingList = new ArrayList<>();
+        List<PreparationVO> allocationedList = new ArrayList<>();
+        List<PreparationVO> complatedList = new ArrayList<>();
+        List<PreparationVO> revokedList = new ArrayList<>();
+        for (PreparationVO vo:list){
+            if (DictCache.getValueByCode("REPAIR_PREPARATION_STATUS","draft").equals(vo.getStatus())){
+                draft.setStatusName("草稿");
+                draftList.add(vo);
+                draft.setStatus(0);
+                draftNum++;
+            }else if (DictCache.getValueByCode("REPAIR_PREPARATION_STATUS","waiting_allocation").equals(vo.getStatus())){
+                draft.setStatusName("待分配");
+                waitingList.add(vo);
+                waiting.setStatus(1);
+                waiting_allocationNum++;
+            }else if (DictCache.getValueByCode("REPAIR_PREPARATION_STATUS","allocationed").equals(vo.getStatus())){
+                allocationed.setStatusName("已分配");
+                allocationedList.add(vo);
+                allocationed.setStatus(2);
+                allocationedNum++;
+            }else if (DictCache.getValueByCode("REPAIR_PREPARATION_STATUS","complated").equals(vo.getStatus())){
+                complated.setStatusName("已完成");
+                complatedList.add(vo);
+                complated.setStatus(3);
+                complatedNum++;
+            }else if (DictCache.getValueByCode("REPAIR_PREPARATION_STATUS","revoked").equals(vo.getStatus())){
+                revoked.setStatusName("已撤销");
+                revokedList.add(vo);
+                revoked.setStatus(4);
+                revokedNum++;
+            }
+
+        }
+        List<PreparationReportByStatusVO> list1 = new ArrayList<>();
+        if (draftNum!=0){
+            draft.setNum(draftNum);
+            draft.setDetailList(draftList);
+            list1.add(draft);
+        }
+        if (waiting_allocationNum!=0){
+            waiting.setNum(waiting_allocationNum);
+            waiting.setDetailList(waitingList);
+            list1.add(waiting);
+        }
+        if (allocationedNum!=0) {
+            allocationed.setNum(allocationedNum);
+            allocationed.setDetailList(allocationedList);
+            list1.add(allocationed);
+        }
+        if (complatedNum!=0){
+            complated.setNum(complatedNum);
+            complated.setDetailList(complatedList);
+            list1.add(complated);
+        }
+        if (revokedNum!=0){
+            revoked.setNum(revokedNum);
+            revoked.setDetailList(revokedList);
+            list1.add(revoked);
+        }
+        return list1;
+    }
+
+    @Override
+    public List<AllPreparationReportVO> getAllPreparationReport(PreparationDTO dto, Integer searchYear, LocalDate startMonth, LocalDate endMonth) {
+        List<Map<String, LocalDateTime>> monthStartAndEndList = new ArrayList<Map<String, LocalDateTime>>();
+        LocalDateTime searchStartTime = null;
+        LocalDateTime searchEndTime = null;
+        if (searchYear != null) {
+            LocalDate localDate = LocalDate.now();
+            int year = localDate.getYear();
+            // 如2021-10-15号码,则month=10,需要计算到11月份,需要加1
+            int month = localDate.getMonthValue();
+            if (searchYear < year) {
+                month = 12;
+                year = searchYear;
+            }
+            monthStartAndEndList = DateUtils.getMonthStartAndEndByYear(year, month);
+            // 当前年份只统计到当前月,历史年份统计全年
+            searchStartTime = DateUtils.getFirstDayOfThisYear(year);
+            searchEndTime = DateUtils.getLastDayOfMonth(year, month);
+        } else {
+            monthStartAndEndList = DateUtils.getMonthStartAndEndByYear(startMonth, endMonth);
+            searchStartTime = DateUtils.getFirstDayOfMonth(startMonth);
+            searchEndTime = DateUtils.getLastDayOfMonth(endMonth);
+        }
+
+        dto.setCreatedTimeEnd(searchStartTime);
+        dto.setCreatedTimeEnd(searchEndTime);
+        List<PreparationVO> list = mapper.selectList(dto);
+        List<AllPreparationReportVO> result = new ArrayList<AllPreparationReportVO>();
+
+        for (Map<String, LocalDateTime> map : monthStartAndEndList) {
+            int i = 0;
+            AllPreparationReportVO vo = new AllPreparationReportVO();
+            List<PreparationVO> detailList = new ArrayList<PreparationVO>();
+            vo.setYear(map.get("searchStartTimeMonth").getYear());
+            vo.setMonth(map.get("searchStartTimeMonth").getMonthValue());
+
+//            // 维修描述
+//            Weekend<CustomFieldTemplateData> weekend = new Weekend<>(CustomFieldTemplateData.class);
+//            WeekendCriteria<CustomFieldTemplateData, Object> weekendCriteria = weekend.weekendCriteria();
+//            weekendCriteria = weekendCriteria.andEqualTo(CustomFieldTemplateData::getRemark, CommonConstants.REPAIR_RECORD);
+//            weekendCriteria.andLessThan(CustomFieldTemplateData::getCreatedTime,map.get("searchEndTimeMonth"));
+//            weekendCriteria.andGreaterThan(CustomFieldTemplateData::getCreatedTime,map.get("searchStartTimeMonth"));
+//            List<CustomFieldTemplateData> listCustomer = customFieldTemplateDataMapper.selectByExample(weekend);
+//            Map<String,CustomFieldTemplateData> dataMap = new HashMap<>();
+//            if(listCustomer != null && listCustomer.size() > 0){
+//                listCustomer.forEach(item->{
+//                    String key = item.getObjId() + "&" + item.getCreatedUserId();
+//                    CustomFieldTemplateData tempData = dataMap.get(key);
+//                    if(tempData == null){
+//                        dataMap.put(key,item);
+//                    }
+//                });
+//            }
+            for (PreparationVO preparationVO : list) {
+                if (preparationVO.getApplyTime().isAfter(map.get("searchStartTimeMonth")) && preparationVO.getApplyTime().isBefore(map.get("searchEndTimeMonth"))) {
+                    i++;
+                    // 维修专业
+
+                    detailList.add(preparationVO);
+                }
+            }
+            vo.setNum(i);
+            vo.setDetailList(detailList);
+            result.add(vo);
+        }
+        return result;
+    }
+
     @Override
     public int batchDelete(List<String> ids) {
         Weekend<Preparation> weekend = new Weekend<>(Preparation.class);