bobol
11 months ago
8 changed files with 354 additions and 2 deletions
@ -0,0 +1,31 @@ |
|||
package com.lzbi.draft.controller; |
|||
|
|||
import com.lzbi.common.core.domain.AjaxResult; |
|||
import com.lzbi.draft.entity.req.TargetDraftMonthReportReq; |
|||
import com.lzbi.draft.entity.vo.TargetDraftMonthReportVO; |
|||
import com.lzbi.draft.service.ReportService; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.web.bind.annotation.GetMapping; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 报表Controller |
|||
* |
|||
* @author lienbo |
|||
* @date 2023-12-12 |
|||
*/ |
|||
@RestController |
|||
@RequestMapping("/report") |
|||
public class ReportController { |
|||
|
|||
@Autowired |
|||
private ReportService reportService; |
|||
|
|||
@GetMapping("/targetDraftMonthReport") |
|||
public List<TargetDraftMonthReportVO> targetDraftMonthReport(TargetDraftMonthReportReq targetDraftMonthReportReq) { |
|||
return reportService.getTargetDraftMonthReport(targetDraftMonthReportReq); |
|||
} |
|||
} |
@ -0,0 +1,22 @@ |
|||
package com.lzbi.draft.entity.dto; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.math.BigDecimal; |
|||
|
|||
/** |
|||
* 月指标报表查询dto |
|||
*/ |
|||
@Data |
|||
public class TargetDraftMonthReportValueDTO { |
|||
|
|||
/** |
|||
* 统计单元编码 |
|||
*/ |
|||
private String assetCode; |
|||
|
|||
/** |
|||
* 值 |
|||
*/ |
|||
private BigDecimal value; |
|||
} |
@ -0,0 +1,42 @@ |
|||
package com.lzbi.draft.entity.req; |
|||
|
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class TargetDraftMonthReportReq { |
|||
|
|||
/** |
|||
* 指标模型编码数组 |
|||
*/ |
|||
public static final String[] TARGET_MODEL_CODE_ARR = new String[]{"MJ01","SSLL01","SSRL01","LJRL01","GW01","HW01","GY01","HY01","GW02","HW02","GY02","HY02","FMGD01","FMFK01","SXSW01","YCGJ01","CNFS01","KGM201","JGM201","YC01","WC01","JW01","WC02","EJW01","YC02"}; |
|||
|
|||
/** |
|||
* 公司id |
|||
*/ |
|||
private Long companyId; |
|||
|
|||
/** |
|||
* 组织id |
|||
*/ |
|||
private Long orgId; |
|||
|
|||
/** |
|||
* 专业编码 |
|||
*/ |
|||
private String fieldCode; |
|||
|
|||
/** |
|||
* 年 |
|||
*/ |
|||
private String year; |
|||
|
|||
/** |
|||
* 月 |
|||
*/ |
|||
private String month; |
|||
|
|||
/** |
|||
* 指标模型编码 |
|||
*/ |
|||
private String targetModelCode; |
|||
} |
@ -0,0 +1,144 @@ |
|||
package com.lzbi.draft.entity.vo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.math.BigDecimal; |
|||
|
|||
@Data |
|||
public class TargetDraftMonthReportVO { |
|||
|
|||
/** |
|||
* 统计单元编码 |
|||
*/ |
|||
private String assetCode; |
|||
|
|||
/** |
|||
* 统计单元名称 |
|||
*/ |
|||
private String assetName; |
|||
|
|||
/** |
|||
* 面积 |
|||
*/ |
|||
private BigDecimal MJ01; |
|||
|
|||
/** |
|||
* 瞬时流量 |
|||
*/ |
|||
private BigDecimal SSLL01; |
|||
|
|||
/** |
|||
* 瞬时热量 |
|||
*/ |
|||
private BigDecimal SSRL01; |
|||
|
|||
/** |
|||
* 累计热量 |
|||
*/ |
|||
private BigDecimal LJRL01; |
|||
|
|||
/** |
|||
* 供温 |
|||
*/ |
|||
private BigDecimal GW01; |
|||
|
|||
/** |
|||
* 回温 |
|||
*/ |
|||
private BigDecimal HW01; |
|||
|
|||
/** |
|||
* 供压 |
|||
*/ |
|||
private BigDecimal GY01; |
|||
|
|||
/** |
|||
* 回压 |
|||
*/ |
|||
private BigDecimal HY01; |
|||
|
|||
/** |
|||
* 供温 |
|||
*/ |
|||
private BigDecimal GW02; |
|||
|
|||
/** |
|||
* 回温 |
|||
*/ |
|||
private BigDecimal HW02; |
|||
|
|||
/** |
|||
* 供压 |
|||
*/ |
|||
private BigDecimal GY02; |
|||
|
|||
/** |
|||
* 回压 |
|||
*/ |
|||
private BigDecimal HY02; |
|||
|
|||
/** |
|||
* 阀门给定 |
|||
*/ |
|||
private BigDecimal FMGD01; |
|||
|
|||
/** |
|||
* 阀门反馈 |
|||
*/ |
|||
private BigDecimal FMFK01; |
|||
|
|||
/** |
|||
* 水箱水位 |
|||
*/ |
|||
private BigDecimal SXSW01; |
|||
|
|||
/** |
|||
* 一次管径 |
|||
*/ |
|||
private BigDecimal YCGJ01; |
|||
|
|||
/** |
|||
* 采暖方式 |
|||
*/ |
|||
private BigDecimal CNFS01; |
|||
|
|||
/** |
|||
* KG/㎡ |
|||
*/ |
|||
private BigDecimal KGM201; |
|||
|
|||
/** |
|||
* JG/㎡ |
|||
*/ |
|||
private BigDecimal JGM201; |
|||
|
|||
/** |
|||
* 压差 |
|||
*/ |
|||
private BigDecimal YC01; |
|||
|
|||
/** |
|||
* 温差 |
|||
*/ |
|||
private BigDecimal WC01; |
|||
|
|||
/** |
|||
* 均温 |
|||
*/ |
|||
private BigDecimal JW01; |
|||
|
|||
/** |
|||
* 温差 |
|||
*/ |
|||
private BigDecimal WC02; |
|||
|
|||
/** |
|||
* 二均温 |
|||
*/ |
|||
private BigDecimal EJW01; |
|||
|
|||
/** |
|||
* 压差 |
|||
*/ |
|||
private BigDecimal YC02; |
|||
} |
@ -0,0 +1,71 @@ |
|||
package com.lzbi.draft.service; |
|||
|
|||
import com.alibaba.fastjson2.JSONArray; |
|||
import com.alibaba.fastjson2.JSONObject; |
|||
import com.lzbi.draft.entity.dto.TargetDraftMonthReportValueDTO; |
|||
import com.lzbi.draft.entity.req.TargetDraftMonthReportReq; |
|||
import com.lzbi.draft.entity.vo.TargetDraftMonthReportVO; |
|||
import com.lzbi.draft.mapper.DcBusiTargetDraftMonthMapper; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.lang.reflect.Field; |
|||
import java.util.List; |
|||
import java.util.concurrent.CompletableFuture; |
|||
import java.util.concurrent.CountDownLatch; |
|||
|
|||
@Slf4j |
|||
@Service |
|||
public class ReportService { |
|||
|
|||
@Resource |
|||
private DcBusiTargetDraftMonthMapper dcBusiTargetDraftMonthMapper; |
|||
|
|||
@Autowired |
|||
private ThreadPoolTaskExecutor threadPoolTaskExecutor; |
|||
|
|||
public List<TargetDraftMonthReportVO> getTargetDraftMonthReport(TargetDraftMonthReportReq targetDraftMonthReportReq) { |
|||
Class<TargetDraftMonthReportVO> targetDraftMonthReportVOClass = TargetDraftMonthReportVO.class; |
|||
List<TargetDraftMonthReportVO> list = dcBusiTargetDraftMonthMapper.selectTargetDraftMonthReportVO(targetDraftMonthReportReq); |
|||
CountDownLatch countDownLatch = new CountDownLatch(TargetDraftMonthReportReq.TARGET_MODEL_CODE_ARR.length); |
|||
for (String targetModelCode : TargetDraftMonthReportReq.TARGET_MODEL_CODE_ARR) { |
|||
threadPoolTaskExecutor.execute(() -> { |
|||
TargetDraftMonthReportReq req = JSONObject.parseObject(JSONObject.toJSONString(targetDraftMonthReportReq), TargetDraftMonthReportReq.class); |
|||
req.setTargetModelCode(targetModelCode); |
|||
List<TargetDraftMonthReportValueDTO> targetDraftMonthReportValueDTOS = dcBusiTargetDraftMonthMapper.selectTargetDraftMonthReportValue(req); |
|||
log.info("{} 执行完成,结果是 {}", targetModelCode, JSONArray.toJSONString(targetDraftMonthReportValueDTOS)); |
|||
for (int i = 0, len = list.size(); i < len; i++) { |
|||
TargetDraftMonthReportVO targetDraftMonthReportVO = list.get(i); |
|||
for (int j = targetDraftMonthReportValueDTOS.size() - 1; j >= 0; j--) { |
|||
TargetDraftMonthReportValueDTO targetDraftMonthReportValueDTO = targetDraftMonthReportValueDTOS.get(j); |
|||
if (targetDraftMonthReportVO.getAssetCode().equals(targetDraftMonthReportValueDTO.getAssetCode())) { |
|||
try { |
|||
Field declaredField = targetDraftMonthReportVOClass.getDeclaredField(targetModelCode); |
|||
if (!declaredField.isAccessible()) { |
|||
declaredField.setAccessible(true); |
|||
} |
|||
declaredField.set(targetDraftMonthReportVO, targetDraftMonthReportValueDTO.getValue()); |
|||
} catch (NoSuchFieldException e) { |
|||
throw new RuntimeException(e); |
|||
} catch (IllegalAccessException e) { |
|||
throw new RuntimeException(e); |
|||
} |
|||
targetDraftMonthReportValueDTOS.remove(j); |
|||
break; |
|||
} |
|||
} |
|||
} |
|||
countDownLatch.countDown(); |
|||
}); |
|||
} |
|||
try { |
|||
countDownLatch.await(); |
|||
} catch (InterruptedException e) { |
|||
log.error("门闩异常", e); |
|||
} |
|||
return list; |
|||
} |
|||
} |
Loading…
Reference in new issue