From d55a33338a5300b706a9ee5f67cafa33a1e37611 Mon Sep 17 00:00:00 2001 From: bobol Date: Fri, 26 Jan 2024 17:22:09 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=8C=87=E6=A0=87=E5=BD=95=E5=85=A5?= =?UTF-8?q?=E5=8D=95=202=E3=80=81=E5=BE=AE=E4=BF=A1=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-dev.yml | 13 + .../common/config/GoalServerApiConfig.java | 20 ++ .../lzbi/common/config/GoalServerConfig.java | 16 + .../lzbi/common/constant/BizConstants.java | 31 +- .../constant/TargetModelCodeConstants.java | 126 ++++++++ .../lzbi/asset/domain/DcBaseAssetInfo.java | 10 + .../mapper/DcBusiWorkReadConfigMapper.java | 6 + .../service/DcBusiParamSourceService.java | 13 +- .../DcBusiMonthPlanBillMasterService.java | 6 +- .../DcBusiTargetInputMasterService.java | 230 +++++++++----- .../DcBusiTargetDraftDaynewController.java | 2 +- .../draft/domain/DcBusiTargetDraftDaynew.java | 4 + .../domain/vo/ProductionDailySheetVO.java | 2 +- .../mapper/DcBusiTargetDraftDaynewMapper.java | 23 +- .../mapper/DcBusiTargetDraftMonthMapper.java | 16 + .../DcBusiTargetDraftDaynewService.java | 2 +- .../mapper/DcBaseAssetTargetMapper.java | 2 + .../lzbi/wechat/controller/BizController.java | 34 +- .../wechat/controller/LoginController.java | 9 +- .../wechat/domain/dto/ParamsContrastDTO.java | 31 ++ .../domain/dto/TargetModelValueDTO.java | 37 +++ .../WechatAccessTokenResp.java} | 4 +- .../WechatBaseResp.java} | 4 +- .../WechatCodeLoginResp.java} | 4 +- .../WechatPhoneNumberResp.java} | 4 +- .../lzbi/wechat/domain/vo/TargetPlanVO.java | 25 ++ .../lzbi/wechat/domain/vo/TargetResultVO.java | 36 +++ .../com/lzbi/wechat/domain/vo/TargetVO.java | 17 +- .../com/lzbi/wechat/service/DeptService.java | 117 +++++-- .../com/lzbi/wechat/service/LoginService.java | 181 +++++++++++ .../lzbi/wechat/service/TargetService.java | 296 ++++++++++++------ .../lzbi/wechat/service/WechatService.java | 22 +- .../wechat/webSocket/HeatSourceServer.java | 149 +++++++++ .../mapper/asset/DcBaseAssetInfoMapper.xml | 74 ++--- .../asset/DcBusiTargetDraftDaynewMapper.xml | 89 +++++- .../asset/DcBusiTargetDraftMonthMapper.xml | 34 ++ .../asset/DcBusiWorkReadConfigMapper.xml | 25 ++ .../targetFolder/DcBaseAssetTargetMapper.xml | 29 ++ .../resources/mapper/system/SysDeptMapper.xml | 3 + 39 files changed, 1420 insertions(+), 326 deletions(-) create mode 100644 lzbi-common/src/main/java/com/lzbi/common/config/GoalServerApiConfig.java create mode 100644 lzbi-common/src/main/java/com/lzbi/common/config/GoalServerConfig.java create mode 100644 lzbi-common/src/main/java/com/lzbi/common/constant/TargetModelCodeConstants.java create mode 100644 lzbi-module/src/main/java/com/lzbi/wechat/domain/dto/ParamsContrastDTO.java create mode 100644 lzbi-module/src/main/java/com/lzbi/wechat/domain/dto/TargetModelValueDTO.java rename lzbi-module/src/main/java/com/lzbi/wechat/domain/{rep/WechatAccessTokenRep.java => resp/WechatAccessTokenResp.java} (57%) rename lzbi-module/src/main/java/com/lzbi/wechat/domain/{rep/WechatBaseRep.java => resp/WechatBaseResp.java} (73%) rename lzbi-module/src/main/java/com/lzbi/wechat/domain/{rep/WechatCodeLoginRep.java => resp/WechatCodeLoginResp.java} (79%) rename lzbi-module/src/main/java/com/lzbi/wechat/domain/{rep/WechatPhoneNumberRep.java => resp/WechatPhoneNumberResp.java} (78%) create mode 100644 lzbi-module/src/main/java/com/lzbi/wechat/domain/vo/TargetPlanVO.java create mode 100644 lzbi-module/src/main/java/com/lzbi/wechat/domain/vo/TargetResultVO.java create mode 100644 lzbi-module/src/main/java/com/lzbi/wechat/service/LoginService.java create mode 100644 lzbi-module/src/main/java/com/lzbi/wechat/webSocket/HeatSourceServer.java diff --git a/lzbi-admin/src/main/resources/application-dev.yml b/lzbi-admin/src/main/resources/application-dev.yml index 3435ab3..f1554fb 100644 --- a/lzbi-admin/src/main/resources/application-dev.yml +++ b/lzbi-admin/src/main/resources/application-dev.yml @@ -142,3 +142,16 @@ wechat: accessToken: https://api.weixin.qq.com/cgi-bin/token?appid={appid}&secret={secret}&grant_type={grant_type} # 获取手机号 phoneNumber: https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token={access_token} + +# 外部服务 +goal-server: + # iot平台服务地址 + iot: http://127.0.0.1:9010 + +# 外部服务接口 +goal-server-api: + # 获取组织资产参数树形结构 + getOrgAssetParamsTree: ${goal-server.iot}/biz/common/orgAssetParamsTree + # 获取组织资产参数树形结构 + getParamsValue: ${goal-server.iot}/biz/common/paramsValue + diff --git a/lzbi-common/src/main/java/com/lzbi/common/config/GoalServerApiConfig.java b/lzbi-common/src/main/java/com/lzbi/common/config/GoalServerApiConfig.java new file mode 100644 index 0000000..081dbe9 --- /dev/null +++ b/lzbi-common/src/main/java/com/lzbi/common/config/GoalServerApiConfig.java @@ -0,0 +1,20 @@ +package com.lzbi.common.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Data +@Component +@ConfigurationProperties(prefix = "goal-server-api") +public class GoalServerApiConfig { + + /** + * 获取组织资产参数树形结构 + */ + private String getOrgAssetParamsTree; + /** + * 获取参数值 + */ + private String getParamsValue; +} diff --git a/lzbi-common/src/main/java/com/lzbi/common/config/GoalServerConfig.java b/lzbi-common/src/main/java/com/lzbi/common/config/GoalServerConfig.java new file mode 100644 index 0000000..3379494 --- /dev/null +++ b/lzbi-common/src/main/java/com/lzbi/common/config/GoalServerConfig.java @@ -0,0 +1,16 @@ +package com.lzbi.common.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Data +@Component +@ConfigurationProperties(prefix = "goal-server") +public class GoalServerConfig { + + /** + * iot平台服务地址 + */ + private String iot; +} diff --git a/lzbi-common/src/main/java/com/lzbi/common/constant/BizConstants.java b/lzbi-common/src/main/java/com/lzbi/common/constant/BizConstants.java index f0e1f3f..0c94884 100644 --- a/lzbi-common/src/main/java/com/lzbi/common/constant/BizConstants.java +++ b/lzbi-common/src/main/java/com/lzbi/common/constant/BizConstants.java @@ -36,18 +36,39 @@ public interface BizConstants { } /** - * 资产类别 + * 统计单元级别 */ - interface DcAssetAttr { + interface DcAssetLevel { + /** + * 集团 + */ + String BLOC = "0"; + /** + * 公司 + */ + String COMPANY = "10"; + /** + * 热源 + */ + String HEAT_SOURCE = "20"; /** * 换热站 */ - String HEAT_EXCHANGE_STATION = "1001"; + String HEAT_EXCHANGE_STATION = "30"; + } + /** + * 统计单元类型 + */ + interface DcAssetType { /** - * 热源 + * 报表 + */ + String REPORT = "0"; + /** + * 计算 */ - String HEAT_SOURCE = "1002"; + String COMPUTE = "1"; } } diff --git a/lzbi-common/src/main/java/com/lzbi/common/constant/TargetModelCodeConstants.java b/lzbi-common/src/main/java/com/lzbi/common/constant/TargetModelCodeConstants.java new file mode 100644 index 0000000..6450840 --- /dev/null +++ b/lzbi-common/src/main/java/com/lzbi/common/constant/TargetModelCodeConstants.java @@ -0,0 +1,126 @@ +package com.lzbi.common.constant; + +public class TargetModelCodeConstants { + public static final String 热源厂电耗率 = "00001"; + public static final String 热耗率 = "00002"; + public static final String 单位面积耗原煤 = "00003"; + public static final String 单位面积耗标煤 = "00004"; + public static final String 一次网耗水率 = "00005"; + public static final String 二次网耗电率 = "00006"; + public static final String 二次网耗水率 = "00007"; + public static final String 总锅炉效率 = "00008"; + public static final String 产热标准煤耗率 = "00009"; + public static final String 发电标准煤耗率 = "00010"; + public static final String 供汽损耗率 = "00011"; + public static final String 单耗消石灰 = "00012"; + public static final String 单耗氨水 = "00013"; + public static final String 单耗氧化镁 = "00014"; + public static final String 单耗石灰石粉 = "00015"; + public static final String 单耗纯碱 = "00016"; + public static final String 单耗液氧 = "00017"; + public static final String 单耗电石渣 = "00018"; + public static final String 单耗氧化钙 = "00019"; + public static final String 室外平均气温 = "00020"; + public static final String 总开栓面积 = "00021"; + public static final String 自管开栓面积 = "00022"; + public static final String 总产热量 = "00023"; + public static final String 供暖供热量 = "00024"; + public static final String 从大唐购热量 = "00025"; + public static final String 供汽量 = "00026"; + public static final String 售汽量 = "00027"; + public static final String 生产用原煤总量 = "00028"; + public static final String 生产用标煤总量 = "00029"; + public static final String 进煤量 = "00030"; + public static final String 煤库存 = "00031"; + public static final String 发电量 = "00032"; + public static final String 上网电量 = "00033"; + public static final String 总厂用电量 = "00034"; + public static final String 耗自发电量 = "00035"; + public static final String 购市政电量 = "00036"; + public static final String 二次网耗电量 = "00037"; + public static final String 热源耗水量 = "00038"; + public static final String 一次网补水量 = "00039"; + public static final String 从大唐补一次网水量 = "00040"; + public static final String 二次网耗水量 = "00041"; + public static final String 汽炉运行台数 = "00042"; + public static final String 汽炉运行出力 = "00043"; + public static final String 汽炉产汽量 = "00044"; + public static final String 汽炉产热量 = "00045"; + public static final String 汽炉供热量 = "00046"; + public static final String 汽炉热效率 = "00047"; + public static final String 水炉运行台数 = "00048"; + public static final String 水炉运行容量 = "00049"; + public static final String 水炉产热量 = "00050"; + public static final String 水炉热效率 = "00051"; + public static final String 供汽供热量 = "00052"; + public static final String 总供热量 = "00053"; + public static final String 一次网供水温度 = "00054"; + public static final String 一次网回水温度 = "00055"; + public static final String 汽炉耗原煤量 = "00056"; + public static final String 水炉耗原煤量 = "00057"; + public static final String 入炉煤热值 = "00058"; + public static final String 锅炉点火耗燃料油 = "00059"; + public static final String 消石灰 = "00060"; + public static final String 氨水 = "00061"; + public static final String 氧化镁 = "00062"; + public static final String 石灰石粉 = "00063"; + public static final String 纯碱 = "00064"; + public static final String 电石渣 = "00065"; + public static final String 氧化钙 = "00066"; + public static final String 液体氢氧化钠 = "00067"; + public static final String 盐酸 = "00068"; + public static final String 生物质进量 = "00069"; + public static final String 生物质耗用 = "00070"; + public static final String 生物质库存 = "00071"; + public static final String 生物质热值 = "00072"; + public static final String 液氧 = "00073"; + public static final String 汽炉颗粒物折算排放浓度 = "00074"; + public static final String 汽炉二氧化硫折算排放浓度 = "00075"; + public static final String 汽炉氮氧化物折算排放浓度 = "00076"; + public static final String 水炉颗粒物折算排放浓度 = "00077"; + public static final String 水炉二氧化硫折算排放浓度 = "00078"; + public static final String 水炉氮氧化物折算排放浓度 = "00079"; + public static final String 烟气余热回收耗电量 = "00080"; + public static final String 烟气余热回收热量 = "00081"; + public static final String 中水汽动热泵提取热量 = "00082"; + public static final String 中水电动热泵耗电量 = "00083"; + public static final String 中水电动热泵产热量 = "00084"; + public static final String 燃气锅炉产热量 = "00085"; + public static final String 一次网水耗 = "ycwsh"; + public static final String 一次网电耗 = "ycwdh"; + public static final String 一次网煤耗 = "ycwmh"; + public static final String 总产汽量 = "zcql"; + public static final String 总发电量 = "zfdl"; + public static final String 二次网水耗 = "ecwsh"; + public static final String 二次网电耗 = "ecwdh"; + public static final String 循环流量 = "xhll"; + public static final String 一次网供温 = "ycwgw"; + public static final String 一次网回温 = "ycwhw"; + public static final String 一次网水单耗 = "ycwsdh"; + public static final String 一次网电单耗 = "ycwddh"; + public static final String 一次网煤单耗 = "ycwmdh"; + public static final String 单产热量 = "dcrl"; + public static final String 单产汽量 = "dcql"; + public static final String 单发电量 = "dfdl"; + public static final String 二次网水单耗 = "ecwsdh"; + public static final String 二次网电单耗 = "ecwddh"; + public static final String 一次网水耗累计 = "ycwshlj"; + public static final String 一次网电耗累计 = "ycwdhlj"; + public static final String 一次网煤耗累计 = "ycwmhlj"; + public static final String 总产热量累计 = "zcrllj"; + public static final String 总产汽量累计 = "zcqllj"; + public static final String 总发电量累计 = "zfdllj"; + public static final String 二次网水耗累计 = "ecwshlj"; + public static final String 二次网电耗累计 = "ecwdhlj"; + public static final String 循环流量累计 = "xhlllj"; + public static final String 一次网供温累计 = "ycwgwlj"; + public static final String 一次网回温累计 = "ycwhwlj"; + public static final String 一次网水单耗累计 = "ycwsdhlj"; + public static final String 一次网电单耗累计 = "ycwddhlj"; + public static final String 一次网煤单耗累计 = "ycwmdhlj"; + public static final String 单产热量累计 = "dcrllj"; + public static final String 单产汽量累计 = "dcqllj"; + public static final String 单发电量累计 = "dfdllj"; + public static final String 二次网水单耗累计 = "ecwsdhlj"; + public static final String 二次网电单耗累计 = "ecwddhlj"; +} diff --git a/lzbi-module/src/main/java/com/lzbi/asset/domain/DcBaseAssetInfo.java b/lzbi-module/src/main/java/com/lzbi/asset/domain/DcBaseAssetInfo.java index cd026ad..da65c7f 100644 --- a/lzbi-module/src/main/java/com/lzbi/asset/domain/DcBaseAssetInfo.java +++ b/lzbi-module/src/main/java/com/lzbi/asset/domain/DcBaseAssetInfo.java @@ -58,6 +58,16 @@ public class DcBaseAssetInfo extends BaseModuleEntity { @ApiModelProperty(name = "统计单元状态",notes = "statusAsset") private String statusAsset; + /** 统计单元级别(0集团 10公司 20热源 30换热站) */ + @Excel(name = "统计单元级别", readConverterExp = "0=集团,1=0公司,2=0热源,3=0换热站") + @ApiModelProperty(name = "统计单元级别",notes = "") + private String assetLevel; + + /** 统计单元类型(0日报 1统计) */ + @Excel(name = "统计单元类型", readConverterExp = "0=日报,1=统计") + @ApiModelProperty(name = "统计单元类型",notes = "") + private String assetType; + /** 所属公司 */ @Excel(name = "所属公司") @ApiModelProperty(name = "所属公司",notes = "comanyId") diff --git a/lzbi-module/src/main/java/com/lzbi/asset/mapper/DcBusiWorkReadConfigMapper.java b/lzbi-module/src/main/java/com/lzbi/asset/mapper/DcBusiWorkReadConfigMapper.java index 325cb4e..013c127 100644 --- a/lzbi-module/src/main/java/com/lzbi/asset/mapper/DcBusiWorkReadConfigMapper.java +++ b/lzbi-module/src/main/java/com/lzbi/asset/mapper/DcBusiWorkReadConfigMapper.java @@ -1,9 +1,13 @@ package com.lzbi.asset.mapper; import java.util.List; + +import com.lzbi.asset.domain.DcBaseAssetInfo; import com.lzbi.asset.domain.DcBusiWorkReadConfig; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.lzbi.common.AssetQueryParams; +import com.lzbi.wechat.domain.dto.ParamsContrastDTO; +import org.apache.ibatis.annotations.Param; /** * 互联参数读取数据对照Mapper接口 @@ -31,6 +35,8 @@ public interface DcBusiWorkReadConfigMapper extends BaseMapper selectDcBusiWorkReadConfigList(DcBusiWorkReadConfig dcBusiWorkReadConfig); public List selectDcBusiWorkReadConfigMainList(AssetQueryParams assetQueryParams); + List selectDcBusiWorkReadConfigByAssetTarget(@Param("targetModelCodeList") List targetModelCodeList, @Param("dcBaseAssetInfo") DcBaseAssetInfo dcBaseAssetInfo); + /** * 新增互联参数读取数据对照 * diff --git a/lzbi-module/src/main/java/com/lzbi/asset/service/DcBusiParamSourceService.java b/lzbi-module/src/main/java/com/lzbi/asset/service/DcBusiParamSourceService.java index 9ffff5d..bc1bc61 100644 --- a/lzbi-module/src/main/java/com/lzbi/asset/service/DcBusiParamSourceService.java +++ b/lzbi-module/src/main/java/com/lzbi/asset/service/DcBusiParamSourceService.java @@ -3,20 +3,16 @@ package com.lzbi.asset.service; import com.alibaba.fastjson2.JSONArray; import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.lzbi.asset.domain.DcBusiParamSource; import com.lzbi.asset.domain.ElementTreeVO; -import com.lzbi.asset.domain.TreeVO; import com.lzbi.asset.mapper.DcBusiParamSourceMapper; +import com.lzbi.common.config.GoalServerApiConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.lzbi.asset.domain.DcBusiParamSource; -import org.springframework.util.CollectionUtils; import org.springframework.web.client.RestTemplate; import java.util.ArrayList; -import java.util.Collection; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; /** * 采集参数来源信息表;(dc_busi_param_source)表服务接口 @@ -29,6 +25,9 @@ public class DcBusiParamSourceService extends ServiceImpl selectByVo( DcBusiParamSource dcBusiParamSource){ return baseMapper.selectByVo(dcBusiParamSource); } @@ -41,7 +40,7 @@ public class DcBusiParamSourceService extends ServiceImpl elementTreeVOS = JSONArray.parseArray(result, ElementTreeVO.class); elementTreeVO.setIsLeaf(Boolean.TRUE); diff --git a/lzbi-module/src/main/java/com/lzbi/bill/service/DcBusiMonthPlanBillMasterService.java b/lzbi-module/src/main/java/com/lzbi/bill/service/DcBusiMonthPlanBillMasterService.java index 0eafad2..80df9bf 100644 --- a/lzbi-module/src/main/java/com/lzbi/bill/service/DcBusiMonthPlanBillMasterService.java +++ b/lzbi-module/src/main/java/com/lzbi/bill/service/DcBusiMonthPlanBillMasterService.java @@ -203,9 +203,9 @@ public class DcBusiMonthPlanBillMasterService extends ServiceImpl dcBusiTargetDraftDaynews = dcBusiTargetDraftMonthMapper.selectDcBusiTargetDraftMonthList(dcBusiTargetDraftMonth); + List dcBusiTargetDraftMonthList = dcBusiTargetDraftMonthMapper.selectDcBusiTargetDraftMonthList(dcBusiTargetDraftMonth); // 如果底稿表数据为空,则新增底稿数据,否则,加上计划值修改 - if (CollectionUtils.isEmpty(dcBusiTargetDraftDaynews)) { + if (CollectionUtils.isEmpty(dcBusiTargetDraftMonthList)) { dcBusiTargetDraftMonth.setCompanyName(master.getCompanyName()); dcBusiTargetDraftMonth.setOrgName(master.getOrganizeName()); dcBusiTargetDraftMonth.setFieldName(subList.get(i).getFieldName()); @@ -221,7 +221,7 @@ public class DcBusiMonthPlanBillMasterService extends ServiceImpl implements IService -{ +public class DcBusiTargetInputMasterService extends ServiceImpl implements IService { @Resource private DcBaseAssetInfoMapper dcBaseAssetInfoMapper; @@ -68,16 +66,18 @@ public class DcBusiTargetInputMasterService extends ServiceImpl selectDcBusiTargetInputMasterList(DcBusiTargetInputMaster dcBusiTargetInputMaster) - { + public List selectDcBusiTargetInputMasterList(DcBusiTargetInputMaster dcBusiTargetInputMaster) { return baseMapper.selectDcBusiTargetInputMasterList(dcBusiTargetInputMaster); } /** * 新增指标录入单 - * + * * @param dcBusiTargetInputMaster 指标录入单 * @return 结果 */ @Transactional(rollbackFor = Exception.class) - public int insertDcBusiTargetInputMaster(DcBusiTargetInputMaster dcBusiTargetInputMaster) - { + public int insertDcBusiTargetInputMaster(DcBusiTargetInputMaster dcBusiTargetInputMaster) { dcBusiTargetInputSubMapper.batchInsertDcBusiTargetInputSub(dcBusiTargetInputMaster.getSubList()); dcBusiTargetInputMaster.setCreatedTime(DateUtils.getNowDate()); dcBusiTargetInputMaster.setDeptId(SecurityUtils.getDeptId()); @@ -121,38 +119,35 @@ public class DcBusiTargetInputMasterService extends ServiceImpl> data = new ArrayList<>(); + List> data = new ArrayList<>(); //每行数据处理 for (int i = 0; i < rows; i++) { //获取一行数据 XSSFRow row = sheetAt.getRow(i); if (null != row) { - List cells = IteratorUtils.toList(row.cellIterator()); - List cellList = new ArrayList<>(); - for (int i1 = 0, len1 = cells.size(); i1 < len1; i1++) { - cellList.add(formatter.formatCellValue(cells.get(i1))); + int cellLength = row.getPhysicalNumberOfCells(); + List cellList = new ArrayList<>(); + for (int i1 = 0; i1 < cellLength; i1++) { + Cell cell = row.getCell(i1); + if (null != cell) { + // 获取单元格内容的类型 + CellType cellType = cell.getCellType(); + if (null != cellType && cellType.equals(CellType.FORMULA)) { +// throw new RuntimeException("excel中不能存在公式!"); + } else { + cellList.add(formatter.formatCellValue(cell, formulaEvaluator)); + } + } else { + cellList.add(""); + } } data.add(cellList); } @@ -194,7 +202,7 @@ public class DcBusiTargetInputMasterService extends ServiceImpl { String v = row.get(index); - if (StringUtils.isNotBlank(v)) { + if (StringUtils.isNotBlank(v) && !v.contains("-")) { DcBusiTargetInputSub dcBusiTargetInputSub = new DcBusiTargetInputSub(); dcBusiTargetInputSub.setTargetCode(dcBaseAssetTarget.getTargetCode()); dcBusiTargetInputSub.setTargetName(dcBaseAssetTarget.getTargetName()); @@ -281,7 +289,16 @@ public class DcBusiTargetInputMasterService extends ServiceImpl dcBusiTargetDraftDaynews = dcBusiTargetDraftDaynewMapper.selectDcBusiTargetDraftDaynewByTargetInput(master); + if (!CollectionUtils.isEmpty(dcBusiTargetDraftDaynews)) { + DcBusiTargetDraftDaynew dcBusiTargetDraftDaynew = dcBusiTargetDraftDaynews.get(0); + String msg = "%s中,%s(指标)%s年%s月%s日,已存在"; + throw new RuntimeException(String.format(msg, dcBusiTargetDraftDaynew.getAssetNameAlias(), dcBusiTargetDraftDaynew.getTagetName(), dcBusiTargetDraftDaynew.getDateYear(), dcBusiTargetDraftDaynew.getDateMonth(), dcBusiTargetDraftDaynew.getDateDay())); + } + DcBusiTargetInputSub subParams = new DcBusiTargetInputSub(); subParams.setBillNoMaster(billNo); List dcBusiTargetInputSubList = dcBusiTargetInputSubMapper.selectDcBusiTargetInputSubList(subParams); @@ -334,6 +359,7 @@ public class DcBusiTargetInputMasterService extends ServiceImpl targetCodeList = dcBusiTargetInputSubList.stream().map(DcBusiTargetInputSub::getTargetCode).collect(Collectors.toList()); List dcBaseAssetTargets = dcBaseAssetTargetMapper.selectDcBaseAssetTargetByTargetCodeList(targetCodeList); + Map> targetModelMap = dcBaseAssetTargets.stream().collect(Collectors.groupingBy(DcBaseAssetTarget::getTargetCode)); Map targetModelCodeMap = dcBaseAssetTargets.stream().collect(Collectors.toMap(DcBaseAssetTarget::getTargetCode, DcBaseAssetTarget::getTargetModelCode)); for (DcBusiTargetInputSub dcBusiTargetInputSub : dcBusiTargetInputSubList) { String day = dcBusiTargetInputSub.getDay(); @@ -345,23 +371,67 @@ public class DcBusiTargetInputMasterService extends ServiceImpl dcBusiTargetDraftDaynewList = dcBusiTargetDraftDaynewMapper.selectDcBusiTargetDraftDaynewList(dcBusiTargetDraftDaynew); - if (CollectionUtils.isEmpty(dcBusiTargetDraftDaynewList)) { - dcBusiTargetDraftDaynew.setCompanyName(dcBusiTargetInputSub.getCompanyName()); - dcBusiTargetDraftDaynew.setOrganizeName(dcBusiTargetInputSub.getOrganizeName()); - dcBusiTargetDraftDaynew.setAssetName(dcBusiTargetInputSub.getAssetName()); - dcBusiTargetDraftDaynew.setFieldName(dcBusiTargetInputSub.getFieldName()); - dcBusiTargetDraftDaynew.setTagetName(dcBusiTargetInputSub.getTargetName()); - dcBusiTargetDraftDaynew.setValueResult(dcBusiTargetInputSub.getValResult()); - dcBusiTargetDraftDaynew.setTargetModelCode(targetModelCodeMap.get(dcBusiTargetInputSub.getTargetCode())); - newList.add(dcBusiTargetDraftDaynew); - } else { - String msg = "{} 中 {} {}-{}-{},已存在"; - throw new RuntimeException(String.format(msg, dcBusiTargetInputSub.getAssetNameAlias(), dcBusiTargetInputSub.getTargetName(), year, month, StringUtils.leftPad(day, 2, "0"))); - } + dcBusiTargetDraftDaynew.setDateDay(StringUtils.leftPad(day, 2, "0")); + dcBusiTargetDraftDaynew.setCompanyName(dcBusiTargetInputSub.getCompanyName()); + dcBusiTargetDraftDaynew.setOrganizeName(dcBusiTargetInputSub.getOrganizeName()); + dcBusiTargetDraftDaynew.setAssetName(dcBusiTargetInputSub.getAssetName()); + dcBusiTargetDraftDaynew.setFieldName(dcBusiTargetInputSub.getFieldName()); + dcBusiTargetDraftDaynew.setTagetName(dcBusiTargetInputSub.getTargetName()); + dcBusiTargetDraftDaynew.setValueResult(dcBusiTargetInputSub.getValResult()); + dcBusiTargetDraftDaynew.setTargetModelCode(targetModelCodeMap.get(dcBusiTargetInputSub.getTargetCode())); + newList.add(dcBusiTargetDraftDaynew); } dcBusiTargetDraftDaynewMapper.batchInsertDcBusiTargetDraftDaynew(newList); + Map> targetMap = dcBusiTargetInputSubList.stream().collect(Collectors.groupingBy(DcBusiTargetInputSub::getTargetCode)); + targetMap.forEach((targetCode, subList) -> { + DcBusiTargetDraftMonth dcBusiTargetDraftMonth = new DcBusiTargetDraftMonth(); + DcBusiTargetInputSub dcBusiTargetInputSub = subList.get(0); + dcBusiTargetDraftMonth.setCompanyId(dcBusiTargetInputSub.getCompanyId()); + dcBusiTargetDraftMonth.setOrgId(dcBusiTargetInputSub.getOragnizeId()); + dcBusiTargetDraftMonth.setFieldCode(dcBusiTargetInputSub.getFieldCode()); + dcBusiTargetDraftMonth.setAssetCode(dcBusiTargetInputSub.getAssetCode()); + dcBusiTargetDraftMonth.setTargetCode(dcBusiTargetInputSub.getTargetCode()); + dcBusiTargetDraftMonth.setCountYear(year); + dcBusiTargetDraftMonth.setCountMonth(month); + List dcBusiTargetDraftMonthList = dcBusiTargetDraftMonthMapper.selectDcBusiTargetDraftMonthList(dcBusiTargetDraftMonth); + if (CollectionUtils.isEmpty(dcBusiTargetDraftMonthList)) { + dcBusiTargetDraftMonth.setCompanyName(dcBusiTargetInputSub.getCompanyName()); + dcBusiTargetDraftMonth.setOrgName(dcBusiTargetInputSub.getOrganizeName()); + dcBusiTargetDraftMonth.setFieldName(dcBusiTargetInputSub.getFieldName()); + dcBusiTargetDraftMonth.setAssetName(dcBusiTargetInputSub.getAssetName()); + dcBusiTargetDraftMonth.setTargetName(dcBusiTargetInputSub.getTargetName()); + List dcBaseAssetTargets1 = targetModelMap.get(dcBusiTargetInputSub.getTargetCode()); + DcBaseAssetTarget dcBaseAssetTarget = dcBaseAssetTargets1.get(0); + if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(dcBaseAssetTarget)) { + dcBusiTargetDraftMonth.setTargetModelCode(dcBaseAssetTarget.getTargetModelCode()); + dcBusiTargetDraftMonth.setTargetUint(dcBaseAssetTarget.getFieldUnit()); + dcBusiTargetDraftMonth.setTargetNameAlias(dcBaseAssetTarget.getTargetNameAlias()); + } + dcBusiTargetDraftMonth.setCountDate(year + "-" + month); + List resultList = subList.stream().map(DcBusiTargetInputSub::getValResult).collect(Collectors.toList()); + BigDecimal result = new BigDecimal(0); + for (BigDecimal v : resultList) { + result = result.add(v); + } + dcBusiTargetDraftMonth.setValResult(result); + dcBusiTargetDraftMonthMapper.insertDcBusiTargetDraftMonth(dcBusiTargetDraftMonth); + } else { + dcBusiTargetDraftMonth = dcBusiTargetDraftMonthList.get(0); + List resultList = subList.stream().map(DcBusiTargetInputSub::getValResult).collect(Collectors.toList()); + BigDecimal result = new BigDecimal(0); + for (BigDecimal v : resultList) { + result = result.add(v); + } + BigDecimal valResult = dcBusiTargetDraftMonth.getValResult(); + if (null == valResult) { + valResult = result; + } else { + valResult = valResult.add(result); + } + dcBusiTargetDraftMonth.setValResult(valResult); + dcBusiTargetDraftMonthMapper.updateDcBusiTargetDraftMonth(dcBusiTargetDraftMonth); + } + }); } // 修改审核状态为已处理 master.setCheckStatus("2"); @@ -376,6 +446,7 @@ public class DcBusiTargetInputMasterService extends ServiceImpl dateNewList = dcBusiTargetDraftDaynewMapper.selectDcBusiTargetDraftDaynewByTargetInput(master); + if (!CollectionUtils.isEmpty(dateNewList)) { + List idList = dateNewList.stream().map(dcBusiTargetDraftDaynew -> String.valueOf(dcBusiTargetDraftDaynew.getId())).collect(Collectors.toList()); + String[] ids = idList.toArray(new String[]{}); + dcBusiTargetDraftDaynewMapper.deleteDcBusiTargetDraftDaynewByIds(ids); + } DcBusiTargetInputSub subParams = new DcBusiTargetInputSub(); subParams.setBillNoMaster(billNo); List dcBusiTargetInputSubList = dcBusiTargetInputSubMapper.selectDcBusiTargetInputSubList(subParams); - List newList = new ArrayList<>(); if (!CollectionUtils.isEmpty(dcBusiTargetInputSubList)) { String year = master.getYear(); String month = master.getMonth(); - for (DcBusiTargetInputSub dcBusiTargetInputSub : dcBusiTargetInputSubList) { - String day = dcBusiTargetInputSub.getDay(); - DcBusiTargetDraftDaynew dcBusiTargetDraftDaynew = new DcBusiTargetDraftDaynew(); - dcBusiTargetDraftDaynew.setCompanyId(dcBusiTargetInputSub.getCompanyId()); - dcBusiTargetDraftDaynew.setOrganizeId(dcBusiTargetInputSub.getOragnizeId()); - dcBusiTargetDraftDaynew.setAssetCode(dcBusiTargetInputSub.getAssetCode()); - dcBusiTargetDraftDaynew.setFieldCode(dcBusiTargetInputSub.getFieldCode()); - dcBusiTargetDraftDaynew.setTargetCode(dcBusiTargetInputSub.getTargetCode()); - dcBusiTargetDraftDaynew.setDateYear(year); - dcBusiTargetDraftDaynew.setDateMonth(month); - dcBusiTargetDraftDaynew.setDateDay(day); - List dcBusiTargetDraftDaynewList = dcBusiTargetDraftDaynewMapper.selectDcBusiTargetDraftDaynewList(dcBusiTargetDraftDaynew); - if (!CollectionUtils.isEmpty(dcBusiTargetDraftDaynewList)) { - newList.addAll(dcBusiTargetDraftDaynewList); + Map> targetMap = dcBusiTargetInputSubList.stream().collect(Collectors.groupingBy(DcBusiTargetInputSub::getTargetCode)); + targetMap.forEach((targetCode, subList) -> { + DcBusiTargetDraftMonth dcBusiTargetDraftMonth = new DcBusiTargetDraftMonth(); + DcBusiTargetInputSub dcBusiTargetInputSub = subList.get(0); + dcBusiTargetDraftMonth.setCompanyId(dcBusiTargetInputSub.getCompanyId()); + dcBusiTargetDraftMonth.setOrgId(dcBusiTargetInputSub.getOragnizeId()); + dcBusiTargetDraftMonth.setFieldCode(dcBusiTargetInputSub.getFieldCode()); + dcBusiTargetDraftMonth.setAssetCode(dcBusiTargetInputSub.getAssetCode()); + dcBusiTargetDraftMonth.setTargetCode(dcBusiTargetInputSub.getTargetCode()); + dcBusiTargetDraftMonth.setCountYear(year); + dcBusiTargetDraftMonth.setCountMonth(month); + List dcBusiTargetDraftMonthList = dcBusiTargetDraftMonthMapper.selectDcBusiTargetDraftMonthList(dcBusiTargetDraftMonth); + if (!CollectionUtils.isEmpty(dcBusiTargetDraftMonthList)) { + dcBusiTargetDraftMonth = dcBusiTargetDraftMonthList.get(0); + List resultList = subList.stream().map(DcBusiTargetInputSub::getValResult).collect(Collectors.toList()); + BigDecimal valResult = dcBusiTargetDraftMonth.getValResult(); + BigDecimal result = new BigDecimal(0); + for (BigDecimal v : resultList) { + result = result.add(v); + } + if (null == valResult) { + valResult = new BigDecimal(0); + } else { + valResult = valResult.subtract(result); + } + dcBusiTargetDraftMonth.setValResult(valResult); + dcBusiTargetDraftMonthMapper.updateDcBusiTargetDraftMonth(dcBusiTargetDraftMonth); } - } - if (!CollectionUtils.isEmpty(newList)) { - List idList = newList.stream().map(DcBusiTargetDraftDaynew::getId).collect(Collectors.toList()); - Long[] ids = idList.toArray(new Long[]{}); - dcBusiTargetDraftDaynewMapper.deleteDcBusiTargetDraftDaynewByIds(ids); - } + }); } // 修改审核状态为已处理 master.setCheckStatus("1"); diff --git a/lzbi-module/src/main/java/com/lzbi/draft/controller/DcBusiTargetDraftDaynewController.java b/lzbi-module/src/main/java/com/lzbi/draft/controller/DcBusiTargetDraftDaynewController.java index 1d8a81b..6cde257 100644 --- a/lzbi-module/src/main/java/com/lzbi/draft/controller/DcBusiTargetDraftDaynewController.java +++ b/lzbi-module/src/main/java/com/lzbi/draft/controller/DcBusiTargetDraftDaynewController.java @@ -124,7 +124,7 @@ public class DcBusiTargetDraftDaynewController extends BaseController @PreAuthorize("@ss.hasPermi('bi:dcBusiTargetDraftDaynew:remove')") @Log(title = "指标数据底稿日-新结构", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) + public AjaxResult remove(@PathVariable String[] ids) { return toAjax(dcBusiTargetDraftDaynewService.deleteDcBusiTargetDraftDaynewByIds(ids)); } diff --git a/lzbi-module/src/main/java/com/lzbi/draft/domain/DcBusiTargetDraftDaynew.java b/lzbi-module/src/main/java/com/lzbi/draft/domain/DcBusiTargetDraftDaynew.java index 98685c6..920f970 100644 --- a/lzbi-module/src/main/java/com/lzbi/draft/domain/DcBusiTargetDraftDaynew.java +++ b/lzbi-module/src/main/java/com/lzbi/draft/domain/DcBusiTargetDraftDaynew.java @@ -62,6 +62,10 @@ public class DcBusiTargetDraftDaynew extends BaseModuleEntity @ApiModelProperty(name = "统计单元名称",notes = "assetName") private String assetName; + /** 统计单元名称 */ + @ApiModelProperty(name = "统计单元别名",notes = "assetNameAlias", hidden = true) + private String assetNameAlias; + /** 指标编码 */ @Excel(name = "指标编码") @ApiModelProperty(name = "指标编码",notes = "targetCode") diff --git a/lzbi-module/src/main/java/com/lzbi/draft/domain/vo/ProductionDailySheetVO.java b/lzbi-module/src/main/java/com/lzbi/draft/domain/vo/ProductionDailySheetVO.java index f0d1ffe..1ca4780 100644 --- a/lzbi-module/src/main/java/com/lzbi/draft/domain/vo/ProductionDailySheetVO.java +++ b/lzbi-module/src/main/java/com/lzbi/draft/domain/vo/ProductionDailySheetVO.java @@ -22,6 +22,6 @@ public class ProductionDailySheetVO { /** * 数据 */ - private List> data; + private List> data; } diff --git a/lzbi-module/src/main/java/com/lzbi/draft/mapper/DcBusiTargetDraftDaynewMapper.java b/lzbi-module/src/main/java/com/lzbi/draft/mapper/DcBusiTargetDraftDaynewMapper.java index 913b69f..c2b8b20 100644 --- a/lzbi-module/src/main/java/com/lzbi/draft/mapper/DcBusiTargetDraftDaynewMapper.java +++ b/lzbi-module/src/main/java/com/lzbi/draft/mapper/DcBusiTargetDraftDaynewMapper.java @@ -2,7 +2,10 @@ package com.lzbi.draft.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.lzbi.bill.domain.DcBusiTargetInputMaster; import com.lzbi.draft.domain.DcBusiTargetDraftDaynew; +import com.lzbi.wechat.domain.dto.TargetModelValueDTO; +import com.lzbi.wechat.domain.vo.TargetResultVO; import org.apache.ibatis.annotations.Param; /** @@ -22,6 +25,10 @@ public interface DcBusiTargetDraftDaynewMapper extends BaseMapper selectDcBusiTargetDraftDaynewByTargetInput(DcBusiTargetInputMaster dcBusiTargetInputMaster); + + int selectDcBusiTargetDraftDaynewCountByTargetInput(DcBusiTargetInputMaster dcBusiTargetInputMaster); + /** * 查询指标数据底稿日-新结构列表 * @@ -30,6 +37,20 @@ public interface DcBusiTargetDraftDaynewMapper extends BaseMapper selectDcBusiTargetDraftDaynewList(DcBusiTargetDraftDaynew dcBusiTargetDraftDaynew); + /** + * 查询日指标数据 + * @param targetModelValueDTO + * @return + */ + List selectDayTargetModelValue(TargetModelValueDTO targetModelValueDTO); + + /** + * 查询累计指标数据 + * @param targetModelValueDTO + * @return + */ + List selectTotalTargetModelValue(TargetModelValueDTO targetModelValueDTO); + /** * 新增指标数据底稿日-新结构 * @@ -62,5 +83,5 @@ public interface DcBusiTargetDraftDaynewMapper extends BaseMapper selectDcBusiTargetDraftMonthList(DcBusiTargetDraftMonth dcBusiTargetDraftMonth); + /** + * 查询月指标总计划值 + * @param targetModelValueDTO + * @return + */ + List selectTotalTargetModelPlanValue(TargetModelValueDTO targetModelValueDTO); + /** * 新增指标数据底稿(日) * @@ -39,6 +48,13 @@ public interface DcBusiTargetDraftMonthMapper extends BaseMapper dcBusiTargetDraftMonths); + /** * 修改指标数据底稿(日) * diff --git a/lzbi-module/src/main/java/com/lzbi/draft/service/DcBusiTargetDraftDaynewService.java b/lzbi-module/src/main/java/com/lzbi/draft/service/DcBusiTargetDraftDaynewService.java index 663471c..bdcd2ca 100644 --- a/lzbi-module/src/main/java/com/lzbi/draft/service/DcBusiTargetDraftDaynewService.java +++ b/lzbi-module/src/main/java/com/lzbi/draft/service/DcBusiTargetDraftDaynewService.java @@ -72,7 +72,7 @@ public class DcBusiTargetDraftDaynewService extends ServiceImpl List selectDcBaseAssetTargetByTargetCodeList(@Param("targetCodeList") List targetCodeList); + List selectDcBaseAssetTargetByTargetModelCodeListAndAsset(@Param("targetModelCodeList") List targetModelCodeList, @Param("dcBaseAssetInfo") DcBaseAssetInfo dcBaseAssetInfo); /** * 新增资产指标配置 diff --git a/lzbi-module/src/main/java/com/lzbi/wechat/controller/BizController.java b/lzbi-module/src/main/java/com/lzbi/wechat/controller/BizController.java index 1b10b2d..609c3b3 100644 --- a/lzbi-module/src/main/java/com/lzbi/wechat/controller/BizController.java +++ b/lzbi-module/src/main/java/com/lzbi/wechat/controller/BizController.java @@ -30,13 +30,22 @@ public class BizController { return AjaxResult.success(deptService.getSelfDeptList()); } + /** + * 获取下属部门列表 + * @return + */ + @GetMapping("/dept/children") + public AjaxResult getDeptChildren(@RequestParam("deptId") Long deptId) { + return AjaxResult.success(deptService.getDeptChildren(deptId)); + } + /** * 获取供热面积 * @return */ @GetMapping("/heatRadiatingArea") - public AjaxResult getHeatRadiatingArea(@RequestParam("deptId") Long deptId) { - return AjaxResult.success(targetService.getHeatRadiatingArea(deptId)); + public AjaxResult getHeatRadiatingArea(@RequestParam("deptId") Long deptId, @RequestParam("date") String date) { + return AjaxResult.success(targetService.getHeatRadiatingArea(deptId, date)); } /** @@ -44,8 +53,8 @@ public class BizController { * @return */ @GetMapping("/comany/target") - public AjaxResult getComanyTarget(@RequestParam("deptId") Long deptId) { - return AjaxResult.success(targetService.getComanyTarget(deptId)); + public AjaxResult getComanyTarget(@RequestParam("deptId") Long deptId, @RequestParam("date") String date) { + return AjaxResult.success(targetService.getComanyTarget(deptId, date)); } /** @@ -54,8 +63,8 @@ public class BizController { * @return */ @GetMapping("/heatSource/target") - public AjaxResult getHeatSourceTarget(@RequestParam("deptId") Long deptId, @RequestParam("type") String type) { - return AjaxResult.success(targetService.getHeatSourceTarget(deptId, type)); + public AjaxResult getHeatSourceTarget(@RequestParam("deptId") Long deptId, @RequestParam("date") String date, @RequestParam("type") String type) { + return AjaxResult.success(targetService.getHeatSourceTarget(deptId, date, type)); } /** @@ -63,7 +72,7 @@ public class BizController { * @return */ @GetMapping("/heatExchangeStation/params") - public AjaxResult getHeatExchangeStationParams(@RequestParam("deptId") Long deptId) { + public AjaxResult getHeatExchangeStationParams(@RequestParam("deptId") Long deptId, @RequestParam("date") String date) { return AjaxResult.success(targetService.getHeatExchangeStationParams(deptId)); } @@ -81,17 +90,8 @@ public class BizController { * @return */ @GetMapping("/finishingRateLine") - public AjaxResult getFinishingRateLine(@RequestParam("deptId") Long deptId) { + public AjaxResult getFinishingRateLine(@RequestParam("deptId") Long deptId, @RequestParam("date") String date) { return AjaxResult.success(targetService.finishingRateLine(deptId)); } - /** - * 获取下属部门列表 - * @return - */ - @GetMapping("/dept/children") - public AjaxResult getDeptChildren(@RequestParam("deptId") Long deptId) { - return AjaxResult.success(deptService.getDeptChildren(deptId)); - } - } diff --git a/lzbi-module/src/main/java/com/lzbi/wechat/controller/LoginController.java b/lzbi-module/src/main/java/com/lzbi/wechat/controller/LoginController.java index 1bd8e35..2656aed 100644 --- a/lzbi-module/src/main/java/com/lzbi/wechat/controller/LoginController.java +++ b/lzbi-module/src/main/java/com/lzbi/wechat/controller/LoginController.java @@ -3,7 +3,7 @@ package com.lzbi.wechat.controller; import com.lzbi.common.constant.Constants; import com.lzbi.common.core.domain.AjaxResult; import com.lzbi.common.core.domain.model.LoginBody; -import com.lzbi.framework.web.service.SysLoginService; +import com.lzbi.wechat.service.LoginService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RestController; public class LoginController { @Autowired - private SysLoginService loginService; + private LoginService loginService; /** * 登录方法 @@ -26,11 +26,8 @@ public class LoginController { @PostMapping("/username") public AjaxResult login(@RequestBody LoginBody loginBody) { - AjaxResult ajax = AjaxResult.success(); // 生成令牌 - String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), + return loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), loginBody.getUuid()); - ajax.put(Constants.TOKEN, token); - return ajax; } } diff --git a/lzbi-module/src/main/java/com/lzbi/wechat/domain/dto/ParamsContrastDTO.java b/lzbi-module/src/main/java/com/lzbi/wechat/domain/dto/ParamsContrastDTO.java new file mode 100644 index 0000000..ed9fa21 --- /dev/null +++ b/lzbi-module/src/main/java/com/lzbi/wechat/domain/dto/ParamsContrastDTO.java @@ -0,0 +1,31 @@ +package com.lzbi.wechat.domain.dto; + +import com.lzbi.wechat.domain.vo.TargetVO; +import lombok.Data; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Data +public class ParamsContrastDTO { + + /** + * 内部参数模板编码 + */ + private String paramsModelCode; + /** + * 外部参数编码 + */ + private String paramsCode; + /** + * 值 + */ + private Double value; + + public static Map listTransitionMap(List list) { + Map map = new HashMap<>(); + list.forEach(obj -> map.put(obj.getParamsModelCode(), obj)); + return map; + } +} diff --git a/lzbi-module/src/main/java/com/lzbi/wechat/domain/dto/TargetModelValueDTO.java b/lzbi-module/src/main/java/com/lzbi/wechat/domain/dto/TargetModelValueDTO.java new file mode 100644 index 0000000..23c2f55 --- /dev/null +++ b/lzbi-module/src/main/java/com/lzbi/wechat/domain/dto/TargetModelValueDTO.java @@ -0,0 +1,37 @@ +package com.lzbi.wechat.domain.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 查询指标值 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class TargetModelValueDTO { + + /** + * 指标模板编码列表 + */ + private List targetModelCodeList; + /** + * 部门id + */ + private Long deptId; + /** + * 年 + */ + private String year; + /** + * 月 + */ + private String month; + /** + * 日 + */ + private String day; +} diff --git a/lzbi-module/src/main/java/com/lzbi/wechat/domain/rep/WechatAccessTokenRep.java b/lzbi-module/src/main/java/com/lzbi/wechat/domain/resp/WechatAccessTokenResp.java similarity index 57% rename from lzbi-module/src/main/java/com/lzbi/wechat/domain/rep/WechatAccessTokenRep.java rename to lzbi-module/src/main/java/com/lzbi/wechat/domain/resp/WechatAccessTokenResp.java index 1c8c204..4339f82 100644 --- a/lzbi-module/src/main/java/com/lzbi/wechat/domain/rep/WechatAccessTokenRep.java +++ b/lzbi-module/src/main/java/com/lzbi/wechat/domain/resp/WechatAccessTokenResp.java @@ -1,4 +1,4 @@ -package com.lzbi.wechat.domain.rep; +package com.lzbi.wechat.domain.resp; import lombok.Data; @@ -6,7 +6,7 @@ import lombok.Data; * 获取接口调用凭据 */ @Data -public class WechatAccessTokenRep extends WechatBaseRep{ +public class WechatAccessTokenResp extends WechatBaseResp { private String access_token; diff --git a/lzbi-module/src/main/java/com/lzbi/wechat/domain/rep/WechatBaseRep.java b/lzbi-module/src/main/java/com/lzbi/wechat/domain/resp/WechatBaseResp.java similarity index 73% rename from lzbi-module/src/main/java/com/lzbi/wechat/domain/rep/WechatBaseRep.java rename to lzbi-module/src/main/java/com/lzbi/wechat/domain/resp/WechatBaseResp.java index b5d57f5..ce6b1c6 100644 --- a/lzbi-module/src/main/java/com/lzbi/wechat/domain/rep/WechatBaseRep.java +++ b/lzbi-module/src/main/java/com/lzbi/wechat/domain/resp/WechatBaseResp.java @@ -1,4 +1,4 @@ -package com.lzbi.wechat.domain.rep; +package com.lzbi.wechat.domain.resp; import lombok.Data; @@ -6,7 +6,7 @@ import lombok.Data; * 微信接口返回值 */ @Data -public class WechatBaseRep { +public class WechatBaseResp { /** * 错误码 diff --git a/lzbi-module/src/main/java/com/lzbi/wechat/domain/rep/WechatCodeLoginRep.java b/lzbi-module/src/main/java/com/lzbi/wechat/domain/resp/WechatCodeLoginResp.java similarity index 79% rename from lzbi-module/src/main/java/com/lzbi/wechat/domain/rep/WechatCodeLoginRep.java rename to lzbi-module/src/main/java/com/lzbi/wechat/domain/resp/WechatCodeLoginResp.java index d716557..6fb92cc 100644 --- a/lzbi-module/src/main/java/com/lzbi/wechat/domain/rep/WechatCodeLoginRep.java +++ b/lzbi-module/src/main/java/com/lzbi/wechat/domain/resp/WechatCodeLoginResp.java @@ -1,4 +1,4 @@ -package com.lzbi.wechat.domain.rep; +package com.lzbi.wechat.domain.resp; import lombok.Data; @@ -6,7 +6,7 @@ import lombok.Data; * 微信登录凭证登录返回值 */ @Data -public class WechatCodeLoginRep extends WechatBaseRep { +public class WechatCodeLoginResp extends WechatBaseResp { /** * 会话密钥 diff --git a/lzbi-module/src/main/java/com/lzbi/wechat/domain/rep/WechatPhoneNumberRep.java b/lzbi-module/src/main/java/com/lzbi/wechat/domain/resp/WechatPhoneNumberResp.java similarity index 78% rename from lzbi-module/src/main/java/com/lzbi/wechat/domain/rep/WechatPhoneNumberRep.java rename to lzbi-module/src/main/java/com/lzbi/wechat/domain/resp/WechatPhoneNumberResp.java index 03988a5..01520a3 100644 --- a/lzbi-module/src/main/java/com/lzbi/wechat/domain/rep/WechatPhoneNumberRep.java +++ b/lzbi-module/src/main/java/com/lzbi/wechat/domain/resp/WechatPhoneNumberResp.java @@ -1,4 +1,4 @@ -package com.lzbi.wechat.domain.rep; +package com.lzbi.wechat.domain.resp; import lombok.Data; @@ -6,7 +6,7 @@ import lombok.Data; * 获取手机号返回值 */ @Data -public class WechatPhoneNumberRep extends WechatBaseRep { +public class WechatPhoneNumberResp extends WechatBaseResp { /** * 手机号信息 diff --git a/lzbi-module/src/main/java/com/lzbi/wechat/domain/vo/TargetPlanVO.java b/lzbi-module/src/main/java/com/lzbi/wechat/domain/vo/TargetPlanVO.java new file mode 100644 index 0000000..56b2327 --- /dev/null +++ b/lzbi-module/src/main/java/com/lzbi/wechat/domain/vo/TargetPlanVO.java @@ -0,0 +1,25 @@ +package com.lzbi.wechat.domain.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 指标返回值 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@NoArgsConstructor +@AllArgsConstructor +public class TargetPlanVO extends TargetVO { + + /** + * 指标模板编码 + */ + private String targetCode; + /** + * 值 + */ + Double value; +} diff --git a/lzbi-module/src/main/java/com/lzbi/wechat/domain/vo/TargetResultVO.java b/lzbi-module/src/main/java/com/lzbi/wechat/domain/vo/TargetResultVO.java new file mode 100644 index 0000000..0553ec0 --- /dev/null +++ b/lzbi-module/src/main/java/com/lzbi/wechat/domain/vo/TargetResultVO.java @@ -0,0 +1,36 @@ +package com.lzbi.wechat.domain.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 指标返回值 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@NoArgsConstructor +@AllArgsConstructor +public class TargetResultVO extends TargetVO { + + /** + * 指标名称 + */ + private String targetName; + /** + * 指标单位 + */ + private String targetUnit; + /** + * 值 + */ + private Double value; + + public TargetResultVO (String targetCode, String targetName, String targetUnit, Double value) { + super(targetCode); + this.targetName = targetName; + this.targetUnit = targetUnit; + this.value = value; + } +} diff --git a/lzbi-module/src/main/java/com/lzbi/wechat/domain/vo/TargetVO.java b/lzbi-module/src/main/java/com/lzbi/wechat/domain/vo/TargetVO.java index 6a0067f..7ef4515 100644 --- a/lzbi-module/src/main/java/com/lzbi/wechat/domain/vo/TargetVO.java +++ b/lzbi-module/src/main/java/com/lzbi/wechat/domain/vo/TargetVO.java @@ -4,28 +4,13 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -/** - * 指标返回值 - */ @Data @NoArgsConstructor @AllArgsConstructor public class TargetVO { /** - * 指标编码 + * 指标模板编码 */ private String targetCode; - /** - * 指标名称 - */ - private String targetName; - /** - * 指标单位 - */ - private String targetUnit; - /** - * 值 - */ - private Double value; } diff --git a/lzbi-module/src/main/java/com/lzbi/wechat/service/DeptService.java b/lzbi-module/src/main/java/com/lzbi/wechat/service/DeptService.java index 3c54ec2..30fb058 100644 --- a/lzbi-module/src/main/java/com/lzbi/wechat/service/DeptService.java +++ b/lzbi-module/src/main/java/com/lzbi/wechat/service/DeptService.java @@ -1,5 +1,11 @@ package com.lzbi.wechat.service; +import com.lzbi.asset.domain.DcBaseAssetInfo; +import com.lzbi.asset.domain.DcBusiWorkReadConfig; +import com.lzbi.asset.mapper.DcBaseAssetInfoMapper; +import com.lzbi.asset.mapper.DcBusiWorkReadConfigMapper; +import com.lzbi.common.config.GoalServerApiConfig; +import com.lzbi.common.config.GoalServerConfig; import com.lzbi.common.constant.BizConstants; import com.lzbi.common.core.domain.entity.SysDept; import com.lzbi.common.core.domain.entity.SysRole; @@ -7,22 +13,43 @@ import com.lzbi.common.core.domain.entity.SysUser; import com.lzbi.common.core.domain.model.LoginUser; import com.lzbi.common.utils.SecurityUtils; import com.lzbi.system.service.ISysDeptService; +import com.lzbi.targetFolder.domain.DcBaseAssetTarget; +import com.lzbi.targetFolder.mapper.DcBaseAssetTargetMapper; +import com.lzbi.wechat.domain.dto.ParamsContrastDTO; import com.lzbi.wechat.domain.vo.ChildDeptVO; import com.lzbi.wechat.domain.vo.DeptVO; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import org.springframework.web.client.RestTemplate; +import javax.annotation.Resource; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; +@Slf4j @Service("wechatDeptService") public class DeptService { @Autowired private ISysDeptService sysDeptService; + @Resource + private DcBaseAssetInfoMapper dcBaseAssetInfoMapper; + + @Resource + private DcBusiWorkReadConfigMapper dcBusiWorkReadConfigMapper; + + @Autowired + private RestTemplate restTemplate; + + @Autowired + private GoalServerApiConfig goalServerApiConfig; + public List getSelfDeptList() { List list = new ArrayList<>(); LoginUser loginUser = SecurityUtils.getLoginUser(); @@ -52,41 +79,65 @@ public class DeptService { SysDept selfDept = sysDeptService.selectDeptById(deptId); String orgType = selfDept.getOrgType(); if (BizConstants.DcDeptAttr.COMANY.equals(orgType)) { -// SysDept query = new SysDept(); -// query.setParentId(deptId); -// query.setOrgType(BizConstants.DcDeptAttr.HEAT_SOURCE); -// List sysDeptList = sysDeptService.selectDeptList(query); -// if (!CollectionUtils.isEmpty(sysDeptList)) { -// list = sysDeptList.stream().map(item -> { -// ChildDeptVO childDeptVO = new ChildDeptVO(); -// childDeptVO.setDeptId(item.getDeptId()); -// childDeptVO.setDeptName(item.getDeptName()); -// childDeptVO.setTemperatureSupply(80D); -// childDeptVO.setTemperatureComeBack(53D); -// return childDeptVO; -// }).collect(Collectors.toList()); -// } - list.add(new ChildDeptVO(103L, "1#热源", 80D, 53D)); - list.add(new ChildDeptVO(104L, "2#热源", 76D, 42D)); + SysDept params = new SysDept(); + params.setParentId(deptId); + params.setOrgType(BizConstants.DcDeptAttr.HEAT_SOURCE); + List sysDeptList = sysDeptService.selectDeptList(params); + if (!CollectionUtils.isEmpty(sysDeptList)) { + list = sysDeptList.stream().map(item -> { + ChildDeptVO childDeptVO = new ChildDeptVO(); + childDeptVO.setDeptId(item.getDeptId()); + childDeptVO.setDeptName(item.getDeptName()); + childDeptVO.setTemperatureSupply(80D); + childDeptVO.setTemperatureComeBack(53D); + return childDeptVO; + }).collect(Collectors.toList()); + } + getHeatSourceParamsValue(deptId); } else { -// QueryWrapper queryWrapper = new QueryWrapper<>(); -// queryWrapper.eq("orgCode", deptId); -// queryWrapper.eq("assetType", BizConstants.DcAssetAttr.HEAT_EXCHANGE_STATION); -// List assetInfoList = dcBaseAssetInfoService.list(queryWrapper); -// if (!CollectionUtils.isEmpty(assetInfoList)) { -// list = assetInfoList.stream().map(item -> { -// ChildDeptVO childDeptVO = new ChildDeptVO(); -// childDeptVO.setDeptId(item.getAssetCode()); -// childDeptVO.setDeptName(item.getAssetName()); -// childDeptVO.setTemperatureSupply(80D); -// childDeptVO.setTemperatureComeBack(53D); -// return childDeptVO; -// }).collect(Collectors.toList()); -// } - list.add(new ChildDeptVO(1L, "大唐管井", 90D, 105D)); - list.add(new ChildDeptVO(2L, "汪家分局", 80D, 105D)); - list.add(new ChildDeptVO(3L, "万盈大厦", 90D, 89D)); + DcBaseAssetInfo params = new DcBaseAssetInfo(); + params.setOrgId(deptId); + params.setAssetLevel(BizConstants.DcAssetLevel.HEAT_EXCHANGE_STATION); + List assetInfoList = dcBaseAssetInfoMapper.selectDcBaseAssetInfoList(params); + if (!CollectionUtils.isEmpty(assetInfoList)) { + list = assetInfoList.stream().map(item -> { + ChildDeptVO childDeptVO = new ChildDeptVO(); + childDeptVO.setDeptId(item.getAssetCode()); + childDeptVO.setDeptName(item.getAssetName()); + childDeptVO.setTemperatureSupply(80D); + childDeptVO.setTemperatureComeBack(53D); + return childDeptVO; + }).collect(Collectors.toList()); + } } return list; } + + /** + * 查询热源参数值 + * @param deptId + * @return + */ + public Map> getHeatSourceParamsValue (Long deptId) { + Long userId = SecurityUtils.getUserId(); + List targetModelCodeList = new ArrayList<>(); + targetModelCodeList.add("101"); + targetModelCodeList.add("102"); + DcBaseAssetInfo assetParams = new DcBaseAssetInfo(); + assetParams.setOrgId(deptId); + assetParams.setAssetLevel(BizConstants.DcAssetLevel.HEAT_EXCHANGE_STATION); + assetParams.setAssetType(BizConstants.DcAssetType.REPORT); + List paramsContrastDTOList = dcBusiWorkReadConfigMapper.selectDcBusiWorkReadConfigByAssetTarget(targetModelCodeList, assetParams); + if (!CollectionUtils.isEmpty(paramsContrastDTOList)) { + List paramsCodeList = paramsContrastDTOList.stream().map(ParamsContrastDTO::getParamsCode).collect(Collectors.toList()); + Map>> req = new HashMap<>(); + Map> deptMap = new HashMap<>(); + deptMap.put(deptId, paramsCodeList); + req.put(userId, deptMap); + String resp = restTemplate.postForObject(goalServerApiConfig.getGetParamsValue(), req, String.class); + log.info("参数值:{}", resp); + } + + return null; + } } diff --git a/lzbi-module/src/main/java/com/lzbi/wechat/service/LoginService.java b/lzbi-module/src/main/java/com/lzbi/wechat/service/LoginService.java new file mode 100644 index 0000000..2bdb217 --- /dev/null +++ b/lzbi-module/src/main/java/com/lzbi/wechat/service/LoginService.java @@ -0,0 +1,181 @@ +package com.lzbi.wechat.service; + +import com.lzbi.common.constant.CacheConstants; +import com.lzbi.common.constant.Constants; +import com.lzbi.common.constant.UserConstants; +import com.lzbi.common.core.domain.AjaxResult; +import com.lzbi.common.core.domain.entity.SysUser; +import com.lzbi.common.core.domain.model.LoginUser; +import com.lzbi.common.core.redis.RedisCache; +import com.lzbi.common.exception.ServiceException; +import com.lzbi.common.exception.user.*; +import com.lzbi.common.utils.DateUtils; +import com.lzbi.common.utils.MessageUtils; +import com.lzbi.common.utils.StringUtils; +import com.lzbi.common.utils.ip.IpUtils; +import com.lzbi.framework.manager.AsyncManager; +import com.lzbi.framework.manager.factory.AsyncFactory; +import com.lzbi.framework.security.context.AuthenticationContextHolder; +import com.lzbi.framework.web.service.TokenService; +import com.lzbi.system.service.ISysConfigService; +import com.lzbi.system.service.ISysUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.BadCredentialsException; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class LoginService { + + @Autowired + private TokenService tokenService; + + @Resource + private AuthenticationManager authenticationManager; + + @Autowired + private RedisCache redisCache; + + @Autowired + private ISysUserService userService; + + @Autowired + private ISysConfigService configService; + + /** + * 登录验证 + * + * @param username 用户名 + * @param password 密码 + * @param code 验证码 + * @param uuid 唯一标识 + * @return 结果 + */ + public AjaxResult login(String username, String password, String code, String uuid) + { + AjaxResult ajax = AjaxResult.success(); + // 验证码校验 + validateCaptcha(username, code, uuid); + // 登录前置校验 + loginPreCheck(username, password); + // 用户验证 + Authentication authentication = null; + try + { + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password); + AuthenticationContextHolder.setContext(authenticationToken); + // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername + authentication = authenticationManager.authenticate(authenticationToken); + } + catch (Exception e) + { + if (e instanceof BadCredentialsException) + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); + throw new UserPasswordNotMatchException(); + } + else + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage())); + throw new ServiceException(e.getMessage()); + } + } + finally + { + AuthenticationContextHolder.clearContext(); + } + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); + LoginUser loginUser = (LoginUser) authentication.getPrincipal(); + SysUser user = loginUser.getUser(); + recordLoginInfo(loginUser.getUserId()); + // 生成token + String token = tokenService.createToken(loginUser); + ajax.put(Constants.TOKEN, token); + ajax.put("nickName", user.getNickName()); + ajax.put("phone", user.getPhonenumber()); + return ajax; + } + + /** + * 校验验证码 + * + * @param username 用户名 + * @param code 验证码 + * @param uuid 唯一标识 + * @return 结果 + */ + public void validateCaptcha(String username, String code, String uuid) + { + boolean captchaEnabled = configService.selectCaptchaEnabled(); + if (captchaEnabled) + { + String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, ""); + String captcha = redisCache.getCacheObject(verifyKey); + redisCache.deleteObject(verifyKey); + if (captcha == null) + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"))); + throw new CaptchaExpireException(); + } + if (!code.equalsIgnoreCase(captcha)) + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error"))); + throw new CaptchaException(); + } + } + } + + /** + * 登录前置校验 + * @param username 用户名 + * @param password 用户密码 + */ + public void loginPreCheck(String username, String password) + { + // 用户名或密码为空 错误 + if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("not.null"))); + throw new UserNotExistsException(); + } + // 密码如果不在指定范围内 错误 + if (password.length() < UserConstants.PASSWORD_MIN_LENGTH + || password.length() > UserConstants.PASSWORD_MAX_LENGTH) + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); + throw new UserPasswordNotMatchException(); + } + // 用户名不在指定范围内 错误 + if (username.length() < UserConstants.USERNAME_MIN_LENGTH + || username.length() > UserConstants.USERNAME_MAX_LENGTH) + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); + throw new UserPasswordNotMatchException(); + } + // IP黑名单校验 + String blackStr = configService.selectConfigByKey("sys.login.blackIPList"); + if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("login.blocked"))); + throw new BlackListException(); + } + } + + /** + * 记录登录信息 + * + * @param userId 用户ID + */ + public void recordLoginInfo(Long userId) + { + SysUser sysUser = new SysUser(); + sysUser.setUserId(userId); + sysUser.setLoginIp(IpUtils.getIpAddr()); + sysUser.setLoginDate(DateUtils.getNowDate()); + userService.updateUserProfile(sysUser); + } +} diff --git a/lzbi-module/src/main/java/com/lzbi/wechat/service/TargetService.java b/lzbi-module/src/main/java/com/lzbi/wechat/service/TargetService.java index 3f905fe..c73e003 100644 --- a/lzbi-module/src/main/java/com/lzbi/wechat/service/TargetService.java +++ b/lzbi-module/src/main/java/com/lzbi/wechat/service/TargetService.java @@ -1,13 +1,25 @@ package com.lzbi.wechat.service; +import com.lzbi.asset.mapper.DcBaseAssetInfoMapper; import com.lzbi.common.constant.BizConstants; -import com.lzbi.common.core.domain.entity.SysDept; +import com.lzbi.common.constant.TargetModelCodeConstants; +import com.lzbi.draft.mapper.DcBusiTargetDraftDaynewMapper; +import com.lzbi.draft.mapper.DcBusiTargetDraftMonthMapper; import com.lzbi.system.service.ISysDeptService; +import com.lzbi.targetFolder.mapper.DcBaseAssetTargetMapper; +import com.lzbi.wechat.domain.dto.TargetModelValueDTO; +import com.lzbi.wechat.domain.vo.TargetPlanVO; +import com.lzbi.wechat.domain.vo.TargetResultVO; import com.lzbi.wechat.domain.vo.TargetVO; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import javax.annotation.Resource; +import java.text.DecimalFormat; import java.util.*; +import java.util.stream.Collectors; @Service public class TargetService { @@ -15,126 +27,196 @@ public class TargetService { @Autowired private ISysDeptService sysDeptService; - public Double getHeatRadiatingArea(Long deptId) { - Double result = 314251101D; + @Resource + private DcBaseAssetInfoMapper dcBaseAssetInfoMapper; + + @Resource + private DcBaseAssetTargetMapper dcBaseAssetTargetMapper; + + @Resource + private DcBusiTargetDraftDaynewMapper dcBusiTargetDraftDaynewMapper; + + @Resource + private DcBusiTargetDraftMonthMapper dcBusiTargetDraftMonthMapper; + + private TargetModelValueDTO buildeTargetModelValueDTO(List targetModelCodeList, Long deptId, String date) { + String year = null; + String month = null; + String day = null; + if (StringUtils.isNotBlank(date)) { + String[] arr = date.split("-"); + if (arr.length == 3) { + year = arr[0]; + month = arr[1]; + day = arr[2]; + } else { + throw new RuntimeException("日期格式不正确"); + } + } + return new TargetModelValueDTO(targetModelCodeList, deptId, year, month, day); + } + + public Double getHeatRadiatingArea(Long deptId, String date) { + List targetModelCodeList = new ArrayList<>(); + targetModelCodeList.add(TargetModelCodeConstants.总开栓面积); + TargetModelValueDTO targetModelValueDTO = buildeTargetModelValueDTO(targetModelCodeList, deptId, date); + List targetResultVOList = dcBusiTargetDraftDaynewMapper.selectDayTargetModelValue(targetModelValueDTO); + Double result = null; + if (!CollectionUtils.isEmpty(targetResultVOList)) { + result = targetResultVOList.get(0).getValue(); + } return result; } - public Map getComanyTarget(Long deptId) { - Map map = new HashMap<>(); - SysDept selfDept = sysDeptService.selectDeptById(deptId); - map.put("00023210", new TargetVO("00023210", "总产热量", "GJ", 14123123D)); - map.put("00023211", new TargetVO("00023211", "水总耗", "GJ", 2697D)); - map.put("00023212", new TargetVO("00023212", "电总耗", "GJ", 16791D)); - map.put("00023213", new TargetVO("00023213", "煤总耗", "GJ", 11679D)); - map.put("00023214", new TargetVO("00023214", "平均单耗", "GJ", 8971D)); + public Map getComanyTarget(Long deptId, String date) { + List targetModelCodeList = new ArrayList<>(); + targetModelCodeList.add(TargetModelCodeConstants.总产热量); + targetModelCodeList.add(TargetModelCodeConstants.一次网补水量); + targetModelCodeList.add(TargetModelCodeConstants.从大唐补一次网水量); + targetModelCodeList.add(TargetModelCodeConstants.总厂用电量); + targetModelCodeList.add(TargetModelCodeConstants.生产用标煤总量); + targetModelCodeList.add(TargetModelCodeConstants.热耗率); + TargetModelValueDTO targetModelValueDTO = buildeTargetModelValueDTO(targetModelCodeList, deptId, date); + List targetResultVOList = dcBusiTargetDraftDaynewMapper.selectDayTargetModelValue(targetModelValueDTO); + Map map = listTransitionMap(targetResultVOList); + TargetResultVO onceWater = map.get(TargetModelCodeConstants.一次网补水量); + TargetResultVO onceWater2 = map.get(TargetModelCodeConstants.从大唐补一次网水量); + if (null != onceWater.getValue() && null != onceWater2.getValue()) { + onceWater.setValue(onceWater.getValue() + onceWater2.getValue()); + } + map.remove(TargetModelCodeConstants.从大唐补一次网水量); + map.put(TargetModelCodeConstants.一次网补水量, onceWater); return map; } - public Map getHeatSourceTarget(Long deptId, String type) { - Map map = new HashMap<>(); - SysDept selfDept = sysDeptService.selectDeptById(deptId); + public Map getHeatSourceTarget(Long deptId, String date, String type) { + List targetModelCodeList = new ArrayList<>(); + targetModelCodeList.add(TargetModelCodeConstants.一次网补水量); // 一次网水耗 + targetModelCodeList.add(TargetModelCodeConstants.从大唐补一次网水量); // 一次网水耗 + targetModelCodeList.add(TargetModelCodeConstants.总厂用电量); // 一次网电耗 + targetModelCodeList.add(TargetModelCodeConstants.生产用标煤总量); // 一次网煤耗 + targetModelCodeList.add(TargetModelCodeConstants.总产热量); // 总产热量 + targetModelCodeList.add(TargetModelCodeConstants.汽炉产汽量); // 总产气量 + targetModelCodeList.add(TargetModelCodeConstants.发电量); // 总发电量 + targetModelCodeList.add(TargetModelCodeConstants.二次网耗水量); // 二次网总水耗 + targetModelCodeList.add(TargetModelCodeConstants.二次网耗电量); // 二次网总电耗 + targetModelCodeList.add(TargetModelCodeConstants.一次网供水温度); // 一次网供温 + targetModelCodeList.add(TargetModelCodeConstants.一次网回水温度); // 一次网回温 + targetModelCodeList.add(TargetModelCodeConstants.一次网耗水率); // 一次网水单耗 + targetModelCodeList.add(TargetModelCodeConstants.热源厂电耗率); // 一次网电单耗 + targetModelCodeList.add(TargetModelCodeConstants.单位面积耗标煤); // 一次网煤单耗 + targetModelCodeList.add(TargetModelCodeConstants.二次网耗水率); // 二次网水单耗 + targetModelCodeList.add(TargetModelCodeConstants.二次网耗电率); // 二次网电单耗 + TargetModelValueDTO targetModelValueDTO = buildeTargetModelValueDTO(targetModelCodeList, deptId, date); + Map map; if (BizConstants.TargetType.DAY.equals(type)) { - map.put("ycwsh", new TargetVO("ycwsh", "一次网水耗", "GJ", 14123123D)); - map.put("ycwdh", new TargetVO("ycwdh", "一次网电耗", "GJ", 2697D)); - map.put("ycwmh", new TargetVO("ycwmh", "一次网煤耗", "GJ", 16791D)); - map.put("zcrl", new TargetVO("zcrl", "总产热量", "GJ", 11679D)); - map.put("zcql", new TargetVO("zcql", "总产汽量", "GJ", 8971D)); - map.put("zfdl", new TargetVO("zfdl", "总发电量", "GJ", 14123123D)); - map.put("ecwsh", new TargetVO("ecwsh", "二次网水耗", "GJ", 2697D)); - map.put("ecwdh", new TargetVO("ecwdh", "二次网电耗", "GJ", 16791D)); - map.put("xhll", new TargetVO("xhll", "循环流量", "GJ", 11679D)); - map.put("ycwgw", new TargetVO("ycwgw", "一次网供温", "GJ", 8971D)); - map.put("ycwhw", new TargetVO("ycwhw", "一次网回温", "GJ", 8971D)); - map.put("ycwsdh", new TargetVO("ycwsdh", "一次网水单耗", "GJ", 14123123D)); - map.put("ycwddh", new TargetVO("ycwddh", "一次网电单耗", "GJ", 2697D)); - map.put("ycwmdh", new TargetVO("ycwmdh", "一次网煤单耗", "GJ", 16791D)); - map.put("dcrl", new TargetVO("dcrl", "单产热量", "GJ", 11679D)); - map.put("dcql", new TargetVO("dcql", "单产汽量", "GJ", 8971D)); - map.put("dfdl", new TargetVO("dfdl", "单发电量", "GJ", 14123123D)); - map.put("ecwsdh", new TargetVO("ecwsdh", "二次网水单耗", "GJ", 2697D)); - map.put("ecwddh", new TargetVO("ecwddh", "二次网电单耗", "GJ", 16791D)); + List targetResultVOList = dcBusiTargetDraftDaynewMapper.selectDayTargetModelValue(targetModelValueDTO); + map = listTransitionMap(targetResultVOList); } else { - map.put("ycwshlj", new TargetVO("ycwshlj", "一次网水耗", "GJ", 14123123D)); - map.put("ycwdhlj", new TargetVO("ycwdhlj", "一次网电耗", "GJ", 2697D)); - map.put("ycwmhlj", new TargetVO("ycwmhlj", "一次网煤耗", "GJ", 16791D)); - map.put("zcrllj", new TargetVO("zcrllj", "总产热量", "GJ", 11679D)); - map.put("zcqllj", new TargetVO("zcqllj", "总产汽量", "GJ", 8971D)); - map.put("zfdllj", new TargetVO("zfdllj", "总发电量", "GJ", 14123123D)); - map.put("ecwshlj", new TargetVO("ecwshlj", "二次网水耗", "GJ", 2697D)); - map.put("ecwdhlj", new TargetVO("ecwdhlj", "二次网电耗", "GJ", 16791D)); - map.put("xhlllj", new TargetVO("xhllj", "循环流量", "GJ", 11679D)); - map.put("ycwgwlj", new TargetVO("ycwgwlj", "一次网供温", "GJ", 8971D)); - map.put("ycwhwlj", new TargetVO("ycwhwlj", "一次网回温", "GJ", 8971D)); - map.put("ycwsdhlj", new TargetVO("ycwsdhlj", "一次网水单耗", "GJ", 14123123D)); - map.put("ycwddhlj", new TargetVO("ycwddhlj", "一次网电单耗", "GJ", 2697D)); - map.put("ycwmdhlj", new TargetVO("ycwmdhlj", "一次网煤单耗", "GJ", 16791D)); - map.put("dcrllj", new TargetVO("dcrllj", "单产热量", "GJ", 11679D)); - map.put("dcqllj", new TargetVO("dcqllj", "单产汽量", "GJ", 8971D)); - map.put("dfdllj", new TargetVO("dfdllj", "单发电量", "GJ", 14123123D)); - map.put("ecwsdhlj", new TargetVO("ecwsdhlj", "二次网水单耗", "GJ", 2697D)); - map.put("ecwddhlj", new TargetVO("ecwddhlj", "二次网电单耗", "GJ", 16791D)); + List targetResultVOList = dcBusiTargetDraftDaynewMapper.selectTotalTargetModelValue(targetModelValueDTO); + map = listTransitionMap(targetResultVOList); } + TargetResultVO targetResultVO1 = map.get(TargetModelCodeConstants.一次网补水量); + TargetResultVO targetResultVO2 = map.get(TargetModelCodeConstants.从大唐补一次网水量); + if (null != targetResultVO1.getValue() && null != targetResultVO2.getValue()) { + targetResultVO1.setValue(targetResultVO1.getValue() + targetResultVO2.getValue()); + } else if (null == targetResultVO1.getValue() && null != targetResultVO2.getValue()) { + targetResultVO1.setValue(targetResultVO2.getValue()); + } + map.remove(TargetModelCodeConstants.从大唐补一次网水量); return map; } - public Map getHeatExchangeStationParams(Long deptId) { - Map map = new HashMap<>(); - map.put("014", new TargetVO("014", "一次网回压", "Mpa", 14123123D)); - map.put("013", new TargetVO("013", "一次网供压", "Mpa", 2697D)); - map.put("011", new TargetVO("011", "一次网供温", "°C", 16791D)); - map.put("012", new TargetVO("012", "一次网回温", "°C", 11679D)); - map.put("007", new TargetVO("007", "瞬时流量", "m³/h", 8971D)); - map.put("008", new TargetVO("008", "瞬时热量", "kcal", 14123123D)); - map.put("009", new TargetVO("009", "累计热量", "kcal", 2697D)); - map.put("047", new TargetVO("047", "二次网供水压力", "Mpa", 16791D)); - map.put("048", new TargetVO("048", "二次网回水压力", "Mpa", 11679D)); - map.put("045", new TargetVO("045", "二次网供水温", "°C", 8971D)); - map.put("046", new TargetVO("046", "二次网回水温", "°C", 8971D)); - map.put("001", new TargetVO("001", "电调阀开度给定", "%", 14123123D)); - map.put("002", new TargetVO("002", "电调阀开度反馈", "%", 2697D)); - map.put("015", new TargetVO("015", "水箱水位计", "GJ", 16791D)); - map.put("004", new TargetVO("004", "电调阀控制模式选择", "GJ", 11679D)); - map.put("003", new TargetVO("003", "电调阀远控/就地", "°C", 8971D)); - map.put("044", new TargetVO("044", "二次网压差设定", "%", 14123123D)); - map.put("019", new TargetVO("019", "一次网管道泵上电", "", 2697D)); - map.put("020", new TargetVO("020", "一次网管道泵下电", "", 16791D)); - map.put("005", new TargetVO("005", "二次网供温设定", "", 16791D)); - map.put("018", new TargetVO("018", "一次网管道泵远控/就地", "", 16791D)); - map.put("021", new TargetVO("021", "一次网管道泵启动", "", 16791D)); - map.put("010", new TargetVO("010", "热量累计清零", "kwh", 16791D)); - map.put("017", new TargetVO("017", "总电表", "°C", 16791D)); - map.put("006", new TargetVO("006", "二次网供回水平均温设定", "m³", 16791D)); - map.put("031", new TargetVO("031", "水表(累计补水量)", "%", 16791D)); - map.put("023", new TargetVO("023", "一次网管道泵频率给定", "%", 16791D)); - map.put("028", new TargetVO("028", "一次网混水电调阀开度给定", "%", 16791D)); - map.put("029", new TargetVO("029", "一次网混水电调阀开度反馈", "", 16791D)); - map.put("035", new TargetVO("035", "补水泵1#故障状态", "m³", 16791D)); - map.put("032", new TargetVO("032", "水表(累计补水量清零)", "", 16791D)); - map.put("036", new TargetVO("036", "补水泵2#故障状态", "", 16791D)); - map.put("037", new TargetVO("037", "循环泵远控/就地选择", "", 16791D)); - map.put("038", new TargetVO("038", "循环泵1#/2#泵选择", "", 16791D)); - map.put("039", new TargetVO("039", "循环泵控制模式选择", "", 16791D)); - map.put("025", new TargetVO("025", "一次网管道泵运行/停止状态", "", 16791D)); - map.put("026", new TargetVO("026", "一次网管道泵故障状态", "", 16791D)); - map.put("027", new TargetVO("027", "一次网混水电调阀远控/就地", "", 16791D)); - map.put("033", new TargetVO("033", "补水泵1#运行/停止状态", "", 16791D)); - map.put("034", new TargetVO("034", "补水泵2#运行/停止状态", "", 16791D)); - map.put("040", new TargetVO("040", "循环泵变频上电", "", 16791D)); - map.put("041", new TargetVO("041", "循环泵变频下电", "", 16791D)); - map.put("042", new TargetVO("042", "循环泵变频启动", "", 16791D)); - map.put("043", new TargetVO("043", "循环泵变频停止", "", 16791D)); - map.put("022", new TargetVO("022", "一次网管道泵停止", "", 16791D)); - map.put("030", new TargetVO("030", "水表(瞬时补水量)", "m³", 16791D)); - map.put("066", new TargetVO("066", "一次网管道泵启/停", "", 16791D)); - map.put("024", new TargetVO("024", "一次网管道泵频率反馈", "", 16791D)); + public Map getHeatExchangeStationParams(Long deptId) { + Map map = new HashMap<>(); + map.put("014", new TargetResultVO("014", "一次网回压", "Mpa", 14123123D)); + map.put("013", new TargetResultVO("013", "一次网供压", "Mpa", 2697D)); + map.put("011", new TargetResultVO("011", "一次网供温", "°C", 16791D)); + map.put("012", new TargetResultVO("012", "一次网回温", "°C", 11679D)); + map.put("007", new TargetResultVO("007", "瞬时流量", "m³/h", 8971D)); + map.put("008", new TargetResultVO("008", "瞬时热量", "kcal", 14123123D)); + map.put("009", new TargetResultVO("009", "累计热量", "kcal", 2697D)); + map.put("047", new TargetResultVO("047", "二次网供水压力", "Mpa", 16791D)); + map.put("048", new TargetResultVO("048", "二次网回水压力", "Mpa", 11679D)); + map.put("045", new TargetResultVO("045", "二次网供水温", "°C", 8971D)); + map.put("046", new TargetResultVO("046", "二次网回水温", "°C", 8971D)); + map.put("001", new TargetResultVO("001", "电调阀开度给定", "%", 14123123D)); + map.put("002", new TargetResultVO("002", "电调阀开度反馈", "%", 2697D)); + map.put("015", new TargetResultVO("015", "水箱水位计", "GJ", 16791D)); + map.put("004", new TargetResultVO("004", "电调阀控制模式选择", "GJ", 11679D)); + map.put("003", new TargetResultVO("003", "电调阀远控/就地", "°C", 8971D)); + map.put("044", new TargetResultVO("044", "二次网压差设定", "%", 14123123D)); + map.put("019", new TargetResultVO("019", "一次网管道泵上电", "", 2697D)); + map.put("020", new TargetResultVO("020", "一次网管道泵下电", "", 16791D)); + map.put("005", new TargetResultVO("005", "二次网供温设定", "", 16791D)); + map.put("018", new TargetResultVO("018", "一次网管道泵远控/就地", "", 16791D)); + map.put("021", new TargetResultVO("021", "一次网管道泵启动", "", 16791D)); + map.put("010", new TargetResultVO("010", "热量累计清零", "kwh", 16791D)); + map.put("017", new TargetResultVO("017", "总电表", "°C", 16791D)); + map.put("006", new TargetResultVO("006", "二次网供回水平均温设定", "m³", 16791D)); + map.put("031", new TargetResultVO("031", "水表(累计补水量)", "%", 16791D)); + map.put("023", new TargetResultVO("023", "一次网管道泵频率给定", "%", 16791D)); + map.put("028", new TargetResultVO("028", "一次网混水电调阀开度给定", "%", 16791D)); + map.put("029", new TargetResultVO("029", "一次网混水电调阀开度反馈", "", 16791D)); + map.put("035", new TargetResultVO("035", "补水泵1#故障状态", "m³", 16791D)); + map.put("032", new TargetResultVO("032", "水表(累计补水量清零)", "", 16791D)); + map.put("036", new TargetResultVO("036", "补水泵2#故障状态", "", 16791D)); + map.put("037", new TargetResultVO("037", "循环泵远控/就地选择", "", 16791D)); + map.put("038", new TargetResultVO("038", "循环泵1#/2#泵选择", "", 16791D)); + map.put("039", new TargetResultVO("039", "循环泵控制模式选择", "", 16791D)); + map.put("025", new TargetResultVO("025", "一次网管道泵运行/停止状态", "", 16791D)); + map.put("026", new TargetResultVO("026", "一次网管道泵故障状态", "", 16791D)); + map.put("027", new TargetResultVO("027", "一次网混水电调阀远控/就地", "", 16791D)); + map.put("033", new TargetResultVO("033", "补水泵1#运行/停止状态", "", 16791D)); + map.put("034", new TargetResultVO("034", "补水泵2#运行/停止状态", "", 16791D)); + map.put("040", new TargetResultVO("040", "循环泵变频上电", "", 16791D)); + map.put("041", new TargetResultVO("041", "循环泵变频下电", "", 16791D)); + map.put("042", new TargetResultVO("042", "循环泵变频启动", "", 16791D)); + map.put("043", new TargetResultVO("043", "循环泵变频停止", "", 16791D)); + map.put("022", new TargetResultVO("022", "一次网管道泵停止", "", 16791D)); + map.put("030", new TargetResultVO("030", "水表(瞬时补水量)", "m³", 16791D)); + map.put("066", new TargetResultVO("066", "一次网管道泵启/停", "", 16791D)); + map.put("024", new TargetResultVO("024", "一次网管道泵频率反馈", "", 16791D)); return map; } public List> getFinishingRate(Long deptId) { List> list = new ArrayList<>(); - List names = Arrays.asList("name", "水耗", "电耗", "煤耗"); - List values = Arrays.asList("总完成率", 90D, 80D, 95D); + List targetModelCodeList = new ArrayList<>(); + targetModelCodeList.add(TargetModelCodeConstants.一次网耗水率); + targetModelCodeList.add(TargetModelCodeConstants.二次网耗水率); + targetModelCodeList.add(TargetModelCodeConstants.热源厂电耗率); + targetModelCodeList.add(TargetModelCodeConstants.二次网耗电率); + targetModelCodeList.add(TargetModelCodeConstants.单位面积耗标煤); + TargetModelValueDTO targetModelValueDTO = buildeTargetModelValueDTO(targetModelCodeList, deptId, null); + List targetResultVOList = dcBusiTargetDraftDaynewMapper.selectTotalTargetModelValue(targetModelValueDTO); + List targetPlanVOList = dcBusiTargetDraftMonthMapper.selectTotalTargetModelPlanValue(targetModelValueDTO); + Map targetValueMap = null; + Map targetPlanValueMap = null; + if (!CollectionUtils.isEmpty(targetResultVOList)) { + targetValueMap = listTransitionMap(targetResultVOList); + } + if (!CollectionUtils.isEmpty(targetPlanVOList)) { + targetPlanValueMap = targetPlanVOList.stream().collect(Collectors.toMap(TargetPlanVO::getTargetCode, TargetPlanVO::getValue)); + } + if (null == targetValueMap || null == targetPlanValueMap) { + throw new RuntimeException("无数据"); + } + List names = new ArrayList<>(); + names.add("name"); + List values = new ArrayList<>(); + values.add("总完成率"); + DecimalFormat decimalFormat = new DecimalFormat("#0.00"); + for (String targetModelCode : targetModelCodeList) { + TargetResultVO targetResultVO = targetValueMap.get(targetModelCode); + Double value = targetResultVO.getValue(); + Double planValue = targetPlanValueMap.get(targetModelCode); + if (null == planValue) { + continue; + } + names.add(targetResultVO.getTargetName()); + values.add(decimalFormat.format((value / planValue) * 100)); + } list.add(names); list.add(values); return list; @@ -154,4 +236,10 @@ public class TargetService { list.add(list5); return list; } + + private Map listTransitionMap(List list) { + Map map = new HashMap<>(); + list.forEach(obj -> map.put(obj.getTargetCode(), obj)); + return map; + } } diff --git a/lzbi-module/src/main/java/com/lzbi/wechat/service/WechatService.java b/lzbi-module/src/main/java/com/lzbi/wechat/service/WechatService.java index 2c294b5..fe0d59d 100644 --- a/lzbi-module/src/main/java/com/lzbi/wechat/service/WechatService.java +++ b/lzbi-module/src/main/java/com/lzbi/wechat/service/WechatService.java @@ -4,16 +4,15 @@ import com.alibaba.fastjson2.JSONObject; import com.lzbi.common.config.WechatConfig; import com.lzbi.common.core.domain.entity.SysUser; import com.lzbi.common.core.domain.model.LoginUser; -import com.lzbi.common.core.redis.RedisCache; import com.lzbi.common.exception.ServiceException; import com.lzbi.framework.web.service.SysLoginService; import com.lzbi.framework.web.service.SysPermissionService; import com.lzbi.framework.web.service.TokenService; import com.lzbi.system.service.ISysUserService; import com.lzbi.wechat.domain.SysWechat; -import com.lzbi.wechat.domain.rep.WechatAccessTokenRep; -import com.lzbi.wechat.domain.rep.WechatCodeLoginRep; -import com.lzbi.wechat.domain.rep.WechatPhoneNumberRep; +import com.lzbi.wechat.domain.resp.WechatAccessTokenResp; +import com.lzbi.wechat.domain.resp.WechatCodeLoginResp; +import com.lzbi.wechat.domain.resp.WechatPhoneNumberResp; import com.lzbi.wechat.domain.req.CodeLoginReq; import com.lzbi.wechat.domain.req.PhoneNumberLoginReq; import com.lzbi.wechat.domain.req.PhoneNumberReq; @@ -21,7 +20,6 @@ import com.lzbi.wechat.domain.vo.CodeLoginVO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; @@ -74,7 +72,7 @@ public class WechatService { params.put("secret", wechatConfig.getAppSecret()); params.put("js_code", codeLoginReq.getCode()); params.put("grant_type", "authorization_code"); - WechatCodeLoginRep resp = restTemplate.getForObject(wechatConfig.getCode2Session(), WechatCodeLoginRep.class, params); + WechatCodeLoginResp resp = restTemplate.getForObject(wechatConfig.getCode2Session(), WechatCodeLoginResp.class, params); if (ObjectUtils.isNotEmpty(resp) && 0L == resp.getErrcode()) { String openid = resp.getOpenid(); codeLoginVO.setOpenId(openid); @@ -121,10 +119,10 @@ public class WechatService { getAccessTokenParams.put("appid", wechatConfig.getAppId()); getAccessTokenParams.put("secret", wechatConfig.getAppSecret()); getAccessTokenParams.put("grant_type", "client_credential"); - WechatAccessTokenRep wechatAccessTokenRep = restTemplate.getForObject(wechatConfig.getAccessToken(), WechatAccessTokenRep.class, getAccessTokenParams); - if (ObjectUtils.isNotEmpty(wechatAccessTokenRep) && null == wechatAccessTokenRep.getErrcode()) { + WechatAccessTokenResp wechatAccessTokenResp = restTemplate.getForObject(wechatConfig.getAccessToken(), WechatAccessTokenResp.class, getAccessTokenParams); + if (ObjectUtils.isNotEmpty(wechatAccessTokenResp) && null == wechatAccessTokenResp.getErrcode()) { // 获取手机号 - String accessToken = wechatAccessTokenRep.getAccess_token(); + String accessToken = wechatAccessTokenResp.getAccess_token(); Map getPhoneNumberParams = new HashMap<>(); getPhoneNumberParams.put("access_token", accessToken); HttpHeaders headers = new HttpHeaders(); @@ -132,7 +130,7 @@ public class WechatService { Map getPhoneNumberBody = new HashMap<>(); getPhoneNumberBody.put("code", phoneNumberReq.getCode()); HttpEntity entity = new HttpEntity<>(JSONObject.toJSONString(getPhoneNumberBody), headers); - WechatPhoneNumberRep resp = restTemplate.postForObject(wechatConfig.getPhoneNumber(), entity, WechatPhoneNumberRep.class, getPhoneNumberParams); + WechatPhoneNumberResp resp = restTemplate.postForObject(wechatConfig.getPhoneNumber(), entity, WechatPhoneNumberResp.class, getPhoneNumberParams); if (ObjectUtils.isNotEmpty(resp) && 0L == resp.getErrcode()) { if (null != resp.getPhone_info()) { return resp.getPhone_info().getPurePhoneNumber(); @@ -142,8 +140,8 @@ public class WechatService { throw new ServiceException(resp.getErrmsg(), resp.getErrcode()); } } else { - log.error("调用微信服务获取access_token接口时失败,{}, {}", wechatAccessTokenRep.getErrcode(), wechatAccessTokenRep.getErrmsg()); - throw new ServiceException(wechatAccessTokenRep.getErrmsg(), wechatAccessTokenRep.getErrcode()); + log.error("调用微信服务获取access_token接口时失败,{}, {}", wechatAccessTokenResp.getErrcode(), wechatAccessTokenResp.getErrmsg()); + throw new ServiceException(wechatAccessTokenResp.getErrmsg(), wechatAccessTokenResp.getErrcode()); } return null; } diff --git a/lzbi-module/src/main/java/com/lzbi/wechat/webSocket/HeatSourceServer.java b/lzbi-module/src/main/java/com/lzbi/wechat/webSocket/HeatSourceServer.java new file mode 100644 index 0000000..15ddf24 --- /dev/null +++ b/lzbi-module/src/main/java/com/lzbi/wechat/webSocket/HeatSourceServer.java @@ -0,0 +1,149 @@ +package com.lzbi.wechat.webSocket; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.websocket.*; +import javax.websocket.server.PathParam; +import javax.websocket.server.ServerEndpoint; +import java.io.IOException; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * @ClassName HeatSourceServer + * @Description 热源列表服务 + * @Author lienbo + * @Date 2024/01/25 16:06 + * @Version V1.0 + */ +@Component +@Slf4j +@ServerEndpoint("/ws/heatSourceList/{userId}/{deptId}") +public class HeatSourceServer { + + /** + * 静态变量,用来记录当前在线连接数,线程安全的类。 + */ + private static AtomicInteger onlineSessionClientCount = new AtomicInteger(0); + + /** + * 存放所有在线的客户端 + */ + private static Map onlineSessionClientMap = new ConcurrentHashMap<>(); + + /** + * 存放所有在线的用户和要查询的组织id + */ + private static Map onlineUserDeptMap = new ConcurrentHashMap<>(); + + /** + * 连接建立成功调用的方法。由前端new WebSocket触发 + * + * @param userId 每次页面建立连接时传入到服务端的id,比如用户id等。可以自定义。 + * @param deptId 公司ID + * @param session 与某个客户端的连接会话,需要通过它来给客户端发送消息 + */ + @OnOpen + public void onOpen(@PathParam("userId") Long userId, @PathParam("deptId") Long deptId, Session session) { + log.info("连接建立中 ==> session_id = {},userId = {},deptId = {}", session.getId(), userId, deptId); + onlineUserDeptMap.put(userId, deptId); + onlineSessionClientMap.put(userId, session); + //在线数加1 + onlineSessionClientCount.incrementAndGet(); + sendToOne(userId, "hello " + userId + " 您已连接成功"); + log.info("连接建立成功,当前在线数为:{} ==> 开始监听新连接:session_id = {}, sid = {},。", onlineSessionClientCount, session.getId(), userId); + } + + /** + * 连接关闭调用的方法。由前端socket.close()触发 + * + * @param userId + * @param session + */ + @OnClose + public void onClose(@PathParam("userId") Long userId, Session session) { + // 从 Map中移除 + onlineSessionClientMap.remove(userId); + //在线数减1 + onlineSessionClientCount.decrementAndGet(); + log.info("连接关闭成功,当前在线数为:{} ==> 关闭该连接信息:session_id = {}, userId = {},。", onlineSessionClientCount, session.getId(), userId); + } + + /** + * 收到客户端消息后调用的方法。由前端socket.send触发 + * * 当服务端执行toSession.getAsyncRemote().sendText(xxx)后,前端的socket.onmessage得到监听。 + * + * @param message + * @param session + */ + @OnMessage + public void onMessage(String message, Session session) throws IOException { + log.info("服务端收到客户端消息 ==>, message = {}", message); + session.getBasicRemote().sendText(message); + } + + /** + * 发生错误调用的方法 + * + * @param session + * @param error + */ + @OnError + public void onError(Session session, Throwable error) { + log.error("WebSocket发生错误,错误信息为:" + error.getMessage()); + error.printStackTrace(); + } + + /** + * 功能描述: 发送移除黑名单消息 + * @param userId + * @Author: lienbo + * @Date: 2023/8/27 23:19 + * @return: void + */ + public void sendRemoveBlackList(Long userId) { + log.info("发送移除黑名单消息 ==>, userId = {}", userId); + this.sendToOne(userId, "remove"); + } + + /** + * 群发消息 + * + * @param message 消息 + */ + private void sendToAll(String message) { + // 遍历在线map集合 + onlineSessionClientMap.forEach((userId, toSession) -> { + log.info("服务端给客户端群发消息 ==> userId = {}, message = {}", userId, message); + toSession.getAsyncRemote().sendText(message); + }); + } + + /** + * 指定发送消息 + * + * @param userId + * @param message + */ + private void sendToOne(Long userId, String message) { + // 通过sid查询map中是否存在 + Session toSession = onlineSessionClientMap.get(userId); + if (toSession == null) { + log.error("服务端给客户端发送消息 ==> userId = {} 不存在, message = {}", userId, message); + return; + } + // 异步发送 + log.info("服务端给客户端发送消息 ==> userId = {}, message = {}", userId, message); + toSession.getAsyncRemote().sendText(message); + /* + // 同步发送 + try { + toSession.getBasicRemote().sendText(message); + } catch (IOException e) { + log.error("发送消息失败,WebSocket IO异常"); + e.printStackTrace(); + }*/ + } +} diff --git a/lzbi-module/src/main/resources/mapper/asset/DcBaseAssetInfoMapper.xml b/lzbi-module/src/main/resources/mapper/asset/DcBaseAssetInfoMapper.xml index f6a6688..dcb655e 100644 --- a/lzbi-module/src/main/resources/mapper/asset/DcBaseAssetInfoMapper.xml +++ b/lzbi-module/src/main/resources/mapper/asset/DcBaseAssetInfoMapper.xml @@ -22,33 +22,15 @@ + + - select TENANT_ID, - REVISION, - CREATED_BY, - CREATED_TIME, - UPDATED_BY, - UPDATED_TIME, - DELETE_BY, - DELETE_TIME, - id, - asset_name, - asset_name_alias, - asset_code, - asset_class, - flag_validate_dept, - flag_validate_role, - flag_validate_user, - status_asset, - comany_id, - org_id, - dept_id - from dc_base_asset_info + select tenant_id, revision, created_by, created_time, updated_by, updated_time, delete_by, delete_time, id, asset_name, asset_code, asset_name_alias, asset_class, flag_validate_dept, flag_validate_role, flag_validate_user, status_asset, asset_level, asset_type, comany_id, org_id, dept_id, user_id from dc_base_asset_info + insert into dc_base_asset_info - TENANT_ID, - REVISION, - CREATED_BY, - CREATED_TIME, - UPDATED_BY, - UPDATED_TIME, - DELETE_BY, - DELETE_TIME, + tenant_id, + revision, + created_by, + created_time, + updated_by, + updated_time, + delete_by, + delete_time, asset_name, asset_code, + asset_name_alias, asset_class, flag_validate_dept, flag_validate_role, flag_validate_user, status_asset, + asset_level, + asset_type, comany_id, + org_id, dept_id, + user_id, #{tenantId}, @@ -135,36 +125,46 @@ #{deleteTime}, #{assetName}, #{assetCode}, + #{assetNameAlias}, #{assetClass}, #{flagValidateDept}, #{flagValidateRole}, #{flagValidateUser}, #{statusAsset}, + #{assetLevel}, + #{assetType}, #{comanyId}, + #{orgId}, #{deptId}, + #{userId}, update dc_base_asset_info - TENANT_ID = #{tenantId}, - REVISION = #{revision}, - CREATED_BY = #{createdBy}, - CREATED_TIME = #{createdTime}, - UPDATED_BY = #{updatedBy}, - UPDATED_TIME = #{updatedTime}, - DELETE_BY = #{deleteBy}, - DELETE_TIME = #{deleteTime}, + tenant_id = #{tenantId}, + revision = #{revision}, + created_by = #{createdBy}, + created_time = #{createdTime}, + updated_by = #{updatedBy}, + updated_time = #{updatedTime}, + delete_by = #{deleteBy}, + delete_time = #{deleteTime}, asset_name = #{assetName}, asset_code = #{assetCode}, + asset_name_alias = #{assetNameAlias}, asset_class = #{assetClass}, flag_validate_dept = #{flagValidateDept}, flag_validate_role = #{flagValidateRole}, flag_validate_user = #{flagValidateUser}, status_asset = #{statusAsset}, + asset_level = #{assetLevel}, + asset_type = #{assetType}, comany_id = #{comanyId}, + org_id = #{orgId}, dept_id = #{deptId}, + user_id = #{userId}, where id = #{id} diff --git a/lzbi-module/src/main/resources/mapper/asset/DcBusiTargetDraftDaynewMapper.xml b/lzbi-module/src/main/resources/mapper/asset/DcBusiTargetDraftDaynewMapper.xml index 90bcd24..315e500 100644 --- a/lzbi-module/src/main/resources/mapper/asset/DcBusiTargetDraftDaynewMapper.xml +++ b/lzbi-module/src/main/resources/mapper/asset/DcBusiTargetDraftDaynewMapper.xml @@ -20,6 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -68,6 +69,90 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} + + + + + + + + insert into dc_busi_target_draft_daynew @@ -181,10 +266,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" delete from dc_busi_target_draft_daynew where id = #{id} - + delete from dc_busi_target_draft_daynew where id in #{id} + + \ No newline at end of file diff --git a/lzbi-module/src/main/resources/mapper/asset/DcBusiTargetDraftMonthMapper.xml b/lzbi-module/src/main/resources/mapper/asset/DcBusiTargetDraftMonthMapper.xml index 411bb82..4027205 100644 --- a/lzbi-module/src/main/resources/mapper/asset/DcBusiTargetDraftMonthMapper.xml +++ b/lzbi-module/src/main/resources/mapper/asset/DcBusiTargetDraftMonthMapper.xml @@ -62,6 +62,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} + + insert into dc_busi_target_draft_month @@ -124,6 +145,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + insert into dc_busi_target_draft_month + (company_id, company_name, org_id, org_name, asset_code, asset_name, + target_code, taget_name, target_name_alias, target_uint, count_year, + count_month, count_date, val_result, field_code, field_name) + values + + (#{item.companyId}, #{item.companyName}, #{item.orgId}, #{item.orgName}, #{item.assetCode}, #{item.assetName}, + #{item.targetCode}, #{item.tagetName}, #{item.targetNameAlias}, #{iteam.targetUint}, #{item.countYear}, + #{item.countMonth}, #{item.countDate}, #{item.valResult}, #{item.fieldCode}, #{item.fieldName}) + + + update dc_busi_target_draft_month diff --git a/lzbi-module/src/main/resources/mapper/asset/DcBusiWorkReadConfigMapper.xml b/lzbi-module/src/main/resources/mapper/asset/DcBusiWorkReadConfigMapper.xml index 76703fa..00e92e4 100644 --- a/lzbi-module/src/main/resources/mapper/asset/DcBusiWorkReadConfigMapper.xml +++ b/lzbi-module/src/main/resources/mapper/asset/DcBusiWorkReadConfigMapper.xml @@ -66,6 +66,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by company_name,organize_name,asset_field_name,asset_field_name + + + +