Commit 1ef86aa6 authored by suhuiguang's avatar suhuiguang

1.需求A071统计需求

parent 4f029726
package com.yeejoin.amos.boot.module.jg.api.bo;
import lombok.Data;
/**
* @author Administrator
*/
@Data
public class JgBizCountDataBO {
/**
* 接收机构公司编码
*/
private String receiveCompanyCode;
/**
* 业务类型
*/
private String bizType;
/**
* 流程状态
*/
private String status;
/**
* 数量
*/
private Long num;
/**
* 设备种类
*/
private String equList;
/**
* 设备类别
*/
private String equCategory;
/**
* 设备品种
*/
private String equDefine;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import lombok.Data;
import java.util.Objects;
/**
* @author Administrator
*/
@Data
public class JgBizCountDataDto {
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
JgBizCountDataDto that = (JgBizCountDataDto) o;
return receiveCompanyCode.equals(that.receiveCompanyCode) &&
bizType.equals(that.bizType) &&
equList.equals(that.equList) &&
equCategory.equals(that.equCategory) &&
Objects.equals(equDefine, that.equDefine);
}
@Override
public int hashCode() {
return Objects.hash(receiveCompanyCode, bizType, equList, equCategory, equDefine);
}
/**
* 接收机构公司编码
*/
private String receiveCompanyCode;
/**
* 业务类型
*/
private String bizType;
/**
* 设备种类
*/
private String equList;
/**
* 设备类别
*/
private String equCategory;
/**
* 设备品种
*/
private String equDefine;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @author Administrator
*/
@Data
@ApiModel("检索条件")
public class ReportAnalysisSearchDTO {
@ApiModelProperty("开始日期")
@DateTimeFormat(pattern = "yyyy-MM-dd")
Date beginDate;
@ApiModelProperty("结束日期")
@DateTimeFormat(pattern = "yyyy-MM-dd")
Date endDate;
@ApiModelProperty("业务类型")
String bizType;
@ApiModelProperty("接收机构")
String receiveOrgCode;
@ApiModelProperty("设备种类code")
String equList;
@ApiModelProperty("设备类别code")
String equCategory;
@ApiModelProperty("设备品种code")
String equDefine;
@ApiModelProperty("排序逗号分开,逗号前字段,逗号后升序或者降序")
String sort;
public String getSortField(){
return StringUtils.isNotEmpty(sort) ? sort.contains(",") ? sort.split(",")[0] : "" : "";
}
public String getSortOrder(){
if(StringUtils.isNotEmpty(sort) && sort.contains(",") && "ascend".equals(sort.split(",")[1])){
return "asc";
}
return "desc";
}
}
......@@ -452,4 +452,11 @@ public class JgInstallationNotice extends BaseEntity {
*/
@TableField(value = "other_accessories")
private String otherAccessories;
/**
* 接收机构公司的org_code
*/
@TableField("receive_company_org_code")
private String receiveCompanyOrgCode;
}
......@@ -351,4 +351,10 @@ public class JgMaintainNotice extends BaseEntity {
*/
@TableField(value = "inform_number")
private String informNumber;
/**
* 接收机构公司的org_code
*/
@TableField("receive_company_org_code")
private String receiveCompanyOrgCode;
}
......@@ -296,4 +296,9 @@ public class JgMaintenanceContract extends BaseEntity {
@TableField(value = "other_accessories")
private String otherAccessories;
/**
* 接收机构公司的org_code
*/
@TableField("receive_company_org_code")
private String receiveCompanyOrgCode;
}
......@@ -358,4 +358,10 @@ public class JgReformNotice extends BaseEntity {
@TableField(value = "other_accessories", typeHandler = FastjsonTypeHandler.class)
private List<JSONObject> otherAccessories;
/**
* 接收机构公司的org_code
*/
@TableField("receive_company_org_code")
private String receiveCompanyOrgCode;
}
......@@ -338,4 +338,11 @@ public class JgTransferNotice extends BaseEntity {
*/
@TableField(value = "other_accessories")
private String otherAccessories;
/**
* 接收机构公司的org_code
*/
@TableField("receive_company_org_code")
private String receiveCompanyOrgCode;
}
......@@ -2,6 +2,9 @@ package com.yeejoin.amos.boot.module.jg.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.module.jg.api.bo.JgBizCountDataBO;
import com.yeejoin.amos.boot.module.jg.api.dto.ReportAnalysisSearchDTO;
import com.yeejoin.amos.boot.module.ymt.api.entity.EquipmentCategory;
import org.apache.ibatis.annotations.Param;
......@@ -61,5 +64,29 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
* @return 地市code
*/
String selectCityCompanyCode(@Param("receiveCompanyCode") String receiveCompanyCode, @Param("exclusionIds") String[] exclusionIds);
/**
* 告知业务统计
* @param reportAnalysisSearchDTO 条件
* @return 过程数据
*/
List<JgBizCountDataBO> queryForNoticeCountData(@Param("param") ReportAnalysisSearchDTO reportAnalysisSearchDTO);
List<CompanyBo> queryJGCompanyCodeName(String orgCode);
/**
* 维保备案统计数据查询
* @param reportAnalysisSearchDTO 检索条件
* @return List<JgBizCountDataBO>
*/
List<JgBizCountDataBO> queryForMaintenanceCountData(@Param("param") ReportAnalysisSearchDTO reportAnalysisSearchDTO);
/**
* 登记类统计数据查询
* @param reportAnalysisSearchDTO 检索条件
* @return List<JgBizCountDataBO>
*/
List<JgBizCountDataBO> queryForRegisterCountData(@Param("param") ReportAnalysisSearchDTO reportAnalysisSearchDTO);
}
package com.yeejoin.amos.boot.module.jg.api.service;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.module.jg.api.dto.ReportAnalysisSearchDTO;
import com.yeejoin.amos.boot.module.jg.api.vo.JgBizCountBaseVo;
import com.yeejoin.amos.boot.module.jg.api.vo.JgBizEquipStateCountVo;
import java.util.Date;
import java.util.List;
import java.util.Map;
public interface IReportAnalysisService {
/**
* 告知类统计列表
* @param reportAnalysisSearchDTO 检索条件
* @return List<JgBizCountBaseVo>
*/
List<JgBizCountBaseVo> getNoticeCountList(ReportAnalysisSearchDTO reportAnalysisSearchDTO);
/**
* 登记类统计列表
* @param reportAnalysisSearchDTO 检索条件
* @return List<JgBizCountBaseVo>
*/
List<JgBizCountBaseVo> getRegisterCountList(ReportAnalysisSearchDTO reportAnalysisSearchDTO);
/**
* 维保备案业务办理设备情况统计表
* @param reportAnalysisSearchDTO 检索条件
* @return List<JgBizCountBaseVo>
*/
List<JgBizCountBaseVo> getMaintenanceCountList(ReportAnalysisSearchDTO reportAnalysisSearchDTO);
/**
* 设备状态情况统计表
* @param reportAnalysisSearchDTO 检索条件
* @return List<JgBizCountBaseVo>
*/
List<JgBizEquipStateCountVo> getEquipStatusCountList(ReportAnalysisSearchDTO reportAnalysisSearchDTO);
/**
* 查询当前登录人的管辖机构树,显示本级级所有下级
* @param selectedOrgInfo 登录人信息
* @return List<CompanyBo>
*/
List<CompanyBo> getReceiveCompanyTreeWithAuth(ReginParams selectedOrgInfo);
/**
* 业务类型枚举
* @param groupKey 分组
* @return List<Map<String, Object>>
*/
List<Map<String, Object>> getBizTypeList(String groupKey);
}
package com.yeejoin.amos.boot.module.jg.api.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import java.io.Serializable;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author shg
*/
@Data
@ApiModel("监管业务办理统计基础对象")
public class JgBizCountBaseVo implements Serializable {
public JgBizCountBaseVo() {
this.id = UUID.randomUUID().toString();
}
private String id;
@ApiModelProperty("业务大类")
private String bizGroup;
@ApiModelProperty("业务类型code")
private String bizType;
@ApiModelProperty("业务类型名称")
private String bizTypeName;
@ApiModelProperty("接收机构")
private String receiveCompanyName;
@ApiModelProperty("设备种类")
private String equListName;
@ApiModelProperty("设备类别")
private String equCategoryName;
@ApiModelProperty("设备品种")
private String equDefineName;
@ApiModelProperty("已发起数量")
private Long launchesNumber;
@ApiModelProperty("已完成数量")
private Long finishedNumber;
@AllArgsConstructor
@Getter
public enum BizType {
/**
* 业务类型枚举
*/
maintainNotice("维修告知", "notice"),
installNotice("安装告知", "notice"),
transferNotice("移转告知", "notice"),
reformNotice("改造告知", "notice"),
maintenanceContract("电梯维保备案", "maintenance"),
useRegistration("使用登记", "registrer"),
reformRegistration("改造变更登记", "registrer"),
transferRegistration("移转变更登记", "registrer"),
unitRegistration("单位变更登记", "registrer");
/**
* 描述
*/
private String name;
/**
* 组
*/
private String group;
/**
* 按照类型获取枚举
*
* @param group 分组
* @return List<Map < String, String>>
*/
public static List<Map<String, Object>> getBizTypeListByGroup(String group) {
return Arrays.stream(BizType.values()).filter(e -> e.group.equals(group)).map(e -> {
Map<String, Object> map = new HashMap<>();
map.put("key", e);
map.put("name", e.getName());
return map;
}).collect(Collectors.toList());
}
}
public String getBizTypeName() {
for (BizType c : BizType.values()) {
if (bizType != null && bizType.equals(c.name())) {
return c.getName();
}
}
return null;
}
public static void sortList(List<JgBizCountBaseVo> list, String sortByField, String sortOrder) {
Comparator<JgBizCountBaseVo> comparator;
switch (sortByField) {
case "launchesNumber":
comparator = Comparator.comparingLong(JgBizCountBaseVo::getLaunchesNumber);
break;
case "finishedNumber":
comparator = Comparator.comparingLong(JgBizCountBaseVo::getFinishedNumber);
break;
default:
// 默认按 launchesNumber 字段排序
comparator = Comparator.comparingLong(JgBizCountBaseVo::getLaunchesNumber);
break;
}
if ("desc".equalsIgnoreCase(sortOrder)) {
comparator = comparator.reversed();
}
list.sort(comparator);
}
}
package com.yeejoin.amos.boot.module.jg.api.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Comparator;
import java.util.List;
import java.util.UUID;
/**
* @author shg
*/
@Data
@ApiModel("监管业务办理统计基础对象")
public class JgBizEquipStateCountVo implements Serializable {
public JgBizEquipStateCountVo() {
this.id = UUID.randomUUID().toString();
}
private String id;
@ApiModelProperty("地市管辖机构")
private String cityManagementUnitName;
@ApiModelProperty("区县管辖机构")
private String countyManagementUnitName;
@ApiModelProperty("直接管辖机构")
private String managementUnitName;
@ApiModelProperty("设备种类")
private String equListName;
@ApiModelProperty("设备类别")
private String equCategoryName;
@ApiModelProperty("设备品种")
private String equDefineName;
@ApiModelProperty("总数设备数量")
private Long totalNumber;
@ApiModelProperty("在用设备数量")
private Long inUseNumber;
@ApiModelProperty("停用设备数量")
private Long stopUseNumber;
@ApiModelProperty("报废注销数量")
private Long scrapCancel;
public static void sortList(List<JgBizEquipStateCountVo> list, String sortByField, String sortOrder) {
Comparator<JgBizEquipStateCountVo> comparator;
switch (sortByField) {
case "totalNumber":
comparator = Comparator.comparingLong(JgBizEquipStateCountVo::getTotalNumber);
break;
case "inUseNumber":
comparator = Comparator.comparingLong(JgBizEquipStateCountVo::getInUseNumber);
break;
case "scrapCancel":
comparator = Comparator.comparingLong(JgBizEquipStateCountVo::getScrapCancel);
break;
case "stopUseNumber":
comparator = Comparator.comparingLong(JgBizEquipStateCountVo::getStopUseNumber);
break;
default:
// 默认按 launchesNumber 字段排序
comparator = Comparator.comparingLong(JgBizEquipStateCountVo::getTotalNumber);
break;
}
if ("desc".equalsIgnoreCase(sortOrder)) {
comparator = comparator.reversed();
}
list.sort(comparator);
}
}
package com.yeejoin.amos.boot.module.jg.biz.controller;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jg.api.dto.ReportAnalysisSearchDTO;
import com.yeejoin.amos.boot.module.jg.api.service.IReportAnalysisService;
import com.yeejoin.amos.boot.module.jg.api.vo.JgBizCountBaseVo;
import com.yeejoin.amos.boot.module.jg.api.vo.JgBizEquipStateCountVo;
import com.yeejoin.amos.boot.module.ymt.api.common.StringUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.List;
import java.util.Map;
/**
* @author Administrator
*/
@RestController
@RequestMapping(value = "/report-analysis")
@Api(tags = "报表分析")
public class ReportAnalysisController extends BaseController {
private IReportAnalysisService reportAnalysisService;
public ReportAnalysisController(IReportAnalysisService reportAnalysisService) {
this.reportAnalysisService = reportAnalysisService;
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/notice/count/list")
@ApiOperation("告知类业务办理情况统计列表")
public ResponseModel<List<JgBizCountBaseVo>> getNoticeCountList(ReportAnalysisSearchDTO reportAnalysisSearchDTO) {
//设置默认数据权限过滤条件
this.setDefaultFilterParam(reportAnalysisSearchDTO);
List<JgBizCountBaseVo> result = reportAnalysisService.getNoticeCountList(reportAnalysisSearchDTO);
return ResponseHelper.buildResponse(result);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/maintenance/count/list")
@ApiOperation("维保备案业务办理情况统计列表")
public ResponseModel<List<JgBizCountBaseVo>> getMaintenanceCountList(ReportAnalysisSearchDTO reportAnalysisSearchDTO) {
//设置默认数据权限过滤条件
this.setDefaultFilterParam(reportAnalysisSearchDTO);
List<JgBizCountBaseVo> result = reportAnalysisService.getMaintenanceCountList(reportAnalysisSearchDTO);
return ResponseHelper.buildResponse(result);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/register/count/list")
@ApiOperation("登记类业务办理情况统计列表")
public ResponseModel<List<JgBizCountBaseVo>> getRegisterCountList(ReportAnalysisSearchDTO reportAnalysisSearchDTO) {
//设置默认数据权限过滤条件
this.setDefaultFilterParam(reportAnalysisSearchDTO);
List<JgBizCountBaseVo> result = reportAnalysisService.getRegisterCountList(reportAnalysisSearchDTO);
return ResponseHelper.buildResponse(result);
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping(value = "/equip-status/count/list")
@ApiOperation("设备状态情况统计列表")
public ResponseModel<List<JgBizEquipStateCountVo>> getEquipStatusCountList(ReportAnalysisSearchDTO reportAnalysisSearchDTO) {
//设置默认数据权限过滤条件
this.setDefaultFilterParam(reportAnalysisSearchDTO);
List<JgBizEquipStateCountVo> result = reportAnalysisService.getEquipStatusCountList(reportAnalysisSearchDTO);
return ResponseHelper.buildResponse(result);
}
private void setDefaultFilterParam(ReportAnalysisSearchDTO reportAnalysisSearchDTO){
if(StringUtils.isEmpty(reportAnalysisSearchDTO.getReceiveOrgCode())){
reportAnalysisSearchDTO.setReceiveOrgCode(getSelectedOrgInfo().getCompany().getOrgCode());
}
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/receive-company/tree")
@ApiOperation("查询当前登录人的管辖机构树,显示本级及所有下级")
public ResponseModel<List<CompanyBo>> getReceiveCompanyTreeWithAuth() {
List<CompanyBo> result = reportAnalysisService.getReceiveCompanyTreeWithAuth(getSelectedOrgInfo());
return ResponseHelper.buildResponse(result);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/biz-type/list")
@ApiOperation("业务类型枚举")
public ResponseModel<List<Map<String,Object>>> getBizTypeList(@RequestParam String group) {
List<Map<String,Object>> result = reportAnalysisService.getBizTypeList(group);
return ResponseHelper.buildResponse(result);
}
}
......@@ -43,6 +43,8 @@ public class ApplicationRunnerImpl implements ApplicationRunner {
private JgChangeRegistrationNameServiceImpl changeRegistrationNameService;
private ReportAnalysisServiceImpl reportAnalysisService;
public ApplicationRunnerImpl(JgUseRegistrationServiceImpl useRegistrationService,
CommonServiceImpl commonService,
JgInstallationNoticeServiceImpl installationNoticeService,
......@@ -56,7 +58,8 @@ public class ApplicationRunnerImpl implements ApplicationRunner {
JgEnableDisableServiceImpl jgEnableDisableService,
JgMaintenanceContractServiceImpl maintenanceContractService,
JgScrapCancelServiceImpl scrapCancelService,
JgChangeRegistrationNameServiceImpl changeRegistrationNameService) {
JgChangeRegistrationNameServiceImpl changeRegistrationNameService,
ReportAnalysisServiceImpl reportAnalysisService) {
this.commonService = commonService;
this.useRegistrationService = useRegistrationService;
......@@ -84,6 +87,8 @@ public class ApplicationRunnerImpl implements ApplicationRunner {
this.scrapCancelService = scrapCancelService;
this.changeRegistrationNameService =changeRegistrationNameService;
this.reportAnalysisService = reportAnalysisService;
}
......@@ -167,5 +172,8 @@ public class ApplicationRunnerImpl implements ApplicationRunner {
jgChangeRegistrationNames.forEach(registrationName -> {
commonService.saveExecuteFlowData2Redis(registrationName.getInstanceId(), changeRegistrationNameService.buildInstanceRuntimeData(registrationName));
});
// 统计接收机构树 根节点缓存预热
reportAnalysisService.initRootOrgReceiveTree2Redis();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment