winter 1 год назад
Родитель
Сommit
2431689be8
10 измененных файлов: 354 добавлений и 84 удалений
  1. +75
    -25
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxEnergyController.java
  2. +7
    -1
      mallinkAdmin/src/main/resources/db/migration/V202407018.sql
  3. +3
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFees.java
  4. +20
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeter.java
  5. +12
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeterReading.java
  6. +7
    -2
      mallinkService/src/main/java/com/iformall/service/WxEnergyService.java
  7. +208
    -53
      mallinkService/src/main/java/com/iformall/service/impl/WxEnergyServiceImpl.java
  8. +3
    -1
      mallinkService/src/main/resources/mapper/WxEnergyFeesMapper.xml
  9. +16
    -1
      mallinkService/src/main/resources/mapper/WxEnergyMeterMapper.xml
  10. +3
    -1
      mallinkService/src/main/resources/mapper/WxEnergyMeterReadingMapper.xml

+ 75
- 25
mallinkAdmin/src/main/java/com/iformall/controller/market/WxEnergyController.java Просмотреть файл

@@ -1,30 +1,22 @@
package com.iformall.controller.market;

import com.github.pagehelper.PageInfo;
import com.iformall.annotation.SystemControllerLog;
import com.iformall.annotation.TenantIgnore;
import com.iformall.common.ErrorCode;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
import com.iformall.controller.base.BaseController;
import com.iformall.domain.dto.WxBillPayDTO;
import com.iformall.domain.po.AliBusinessCircleOrder;
import com.iformall.domain.po.MallUserInfo;
import com.iformall.domain.po.WxCUserBasicInfo;
import com.iformall.domain.po.WxEnergyFees;
import com.iformall.domain.po.WxEnergyFeesTime;
import com.iformall.domain.po.WxEnergyMeter;
import com.iformall.domain.po.WxEnergyMeterReading;
import com.iformall.domain.po.WxEnergyReadingCalcute;
import com.iformall.domain.po.WxUserDataRule;
import com.iformall.domain.po.base.BaseEntity;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.AlipayOrWxStatistics;
import com.iformall.enums.EnumBillAllType;
import com.iformall.enums.EnumEnergyMeterType;
import com.iformall.enums.EnumEnergyPublicCalcuteRule;
import com.iformall.enums.EnumYesOrNo;
import com.iformall.exception.MallinkException;
import com.iformall.service.AliBusinessCircleOrderService;
import com.iformall.service.WxEnergyService;
import com.iformall.utils.Constant;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -41,19 +33,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

@RestController
@RequestMapping("energy")
@@ -67,7 +52,7 @@ public class WxEnergyController extends BaseController {
@ApiOperation("表类型")
@GetMapping("meterTypeList")
public ResultData meterTypeList() {
Map retMap = new HashMap();
Map<Integer,String> retMap = new HashMap<Integer,String>();
for (EnumEnergyMeterType mem : EnumEnergyMeterType.values()) {
retMap.put(mem.getCode(), mem.getMessage());
}
@@ -77,14 +62,81 @@ public class WxEnergyController extends BaseController {
@ApiOperation("公摊计费规则")
@GetMapping("publicCalcuteRules")
public ResultData publicCalcuteRules() {
Map retMap = new HashMap();
Map<Integer,String> retMap = new HashMap<Integer,String>();
for (EnumEnergyPublicCalcuteRule mem : EnumEnergyPublicCalcuteRule.values()) {
retMap.put(mem.getCode(), mem.getMessage());
}
return new ResultData(retMap);
}
@ApiOperation("能源表列表")
@GetMapping("meterList")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true),
})
public ResultData meterList(@ModelAttribute WxEnergyMeter record, Integer pageNum, Integer pageSize) {
WxUserDataRule dataRule = this.getCurrentDataFloors();
if (null != dataRule) {
record.setFloorForRule(dataRule.getFloorIds());
record.setBusinessForRule(dataRule.getBussinessIds());
}
record.updateTenantInfo(getTenantInfo());
record.setSortColumns(BaseEntity.SortField.CreateTime_DESC);
PageInfo<WxEnergyMeter> page = wxEnergyService.meterListAsPage(record, pageNum, pageSize);
return new ResultData(page);
}
@ApiOperation("能源表新增修改")
@PostMapping("saveMeter")
public ResultData saveMeter(@RequestBody WxEnergyMeter record) {
record.updateTenantInfo(getTenantInfo());
wxEnergyService.saveOrUpdateMeter(record);
return new ResultData();
}
@PostMapping("meterUpdateIsDel")
public ResultData meterUpdateIsDel(@RequestBody WxEnergyMeter record) {
record.updateTenantInfo(getTenantInfo());
wxEnergyService.updateMeterIsDel(record);
return new ResultData();
}
@ApiOperation("能源表关联店铺")
@PostMapping("setMeterShop")
public ResultData setMeterShop(@RequestBody WxEnergyMeter record) {
record.updateTenantInfo(getTenantInfo());
if (null == record.getId() || null == record.getShopId()) {
return new ResultData(Result.ERROR,"参数错误");
}
WxEnergyMeter meter = wxEnergyService.getMeterById(record, record.getId());
if (null == meter) {
return new ResultData(Result.ERROR,"能源表未查询到");
}
if (meter.getIsPublic().intValue() == EnumYesOrNo.YES.getCode().intValue()) {
return new ResultData(Result.ERROR,"总表不能关联店铺");
}
wxEnergyService.setMeterShop(record);
return new ResultData();
}
@ApiOperation("能源表关联楼层")
@PostMapping("setMeterFloor")
public ResultData setMeterFloor(@RequestBody WxEnergyMeter record) {
record.updateTenantInfo(getTenantInfo());
if (null == record.getId() || null == record.getFloorId()) {
return new ResultData(Result.ERROR,"参数错误");
}
WxEnergyMeter meter = wxEnergyService.getMeterById(record, record.getId());
if (null == meter) {
return new ResultData(Result.ERROR,"能源表未查询到");
}
if (meter.getIsPublic().intValue() == EnumYesOrNo.NO.getCode().intValue()) {
return new ResultData(Result.ERROR,"用户表不能关联楼层");
}
wxEnergyService.setMeterFloor(record);
return new ResultData();
}
@ApiOperation("费用区间列表")
@GetMapping("timeList")
@@ -170,7 +222,7 @@ public class WxEnergyController extends BaseController {
@PostMapping("saveReading")
public ResultData saveReading(@RequestBody WxEnergyMeterReading record) {
record.updateTenantInfo(getTenantInfo());
wxEnergyService.saveOrUpdateReading(record,this.getUser());
wxEnergyService.updateReading(record,this.getUser());
return new ResultData();
}
@@ -227,10 +279,8 @@ public class WxEnergyController extends BaseController {
if (null == wrc) {
return new ResultData(Result.ERROR,"id错误");
}
return new ResultData();
Integer number = wxEnergyService.calcuteReading(wrc, getUser());
return new ResultData(number);
}

}

+ 7
- 1
mallinkAdmin/src/main/resources/db/migration/V202407018.sql Просмотреть файл

@@ -8,7 +8,10 @@ CREATE TABLE `wx_energy_meter` (
`name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '表名称',
`type` int(3) NOT NULL COMMENT '表类型',
`rate` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '倍率',
`is_public` int(1) NOT NULL DEFAULT '0' COMMENT '用户表 0 , 总表1',
`is_public` int(1) NOT NULL DEFAULT '0' COMMENT '用户表0 , 总表1',
`building_id` bigint(20) DEFAULT NULL,
`floor_id` bigint(20) DEFAULT NULL,
`shop_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='能耗表';
@@ -54,6 +57,8 @@ CREATE TABLE `wx_energy_meter_reading` (
`price` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '单价',
`meter_type` int(3) NOT NULL COMMENT '表类型',
`meter_rate` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '表倍率',
`pre_by` bigint(20) DEFAULT NULL COMMENT '上次抄表人',
`pre_by_name` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '上次抄表人',
PRIMARY KEY (`id`),
UNIQUE KEY `id_UNIQUE` (`id`),
KEY `T_T_F` (`tenant_id`,`time_id`,`meter_id`)
@@ -85,6 +90,7 @@ CREATE TABLE `wx_energy_fees` (
`name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名称',
`price` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '单价',
`public_calcute` int(1) NOT NULL COMMENT '公摊计费规则',
`type` int(1) NOT NULL COMMENT '表类型',
PRIMARY KEY (`id`),
UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='能耗表';


+ 3
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFees.java Просмотреть файл

@@ -38,4 +38,7 @@ public class WxEnergyFees extends TenantEntity {
@io.swagger.annotations.ApiModelProperty(value = "公摊计算规则EnumEnergyPublicCalcuteRule", name = "publicCalcute")
private Integer publicCalcute;
@io.swagger.annotations.ApiModelProperty(value = "表类型EnumEnergyMeterType", name = "type")
private Integer type;
}

+ 20
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeter.java Просмотреть файл

@@ -1,11 +1,13 @@
package com.iformall.domain.po;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.iformall.domain.po.base.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.util.Date;
import java.util.List;

/**
*/
@@ -41,4 +43,22 @@ public class WxEnergyMeter extends TenantEntity {
@io.swagger.annotations.ApiModelProperty(value = "是否总表", name = "isPublic")
private Integer isPublic;
@io.swagger.annotations.ApiModelProperty(value = "楼栋ID", name = "buildingId")
private Long buildingId;
@TableField(exist = false)
private String buildingName;
@io.swagger.annotations.ApiModelProperty(value = "楼层ID", name = "floorId")
private Long floorId;
@TableField(exist = false)
private String floorName;
@io.swagger.annotations.ApiModelProperty(value = "店铺", name = "shopId")
private Long shopId;
@TableField(exist = false)
private String shopNumber;
@TableField(exist = false)
private List<Long> shopIds;
}

+ 12
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeterReading.java Просмотреть файл

@@ -52,6 +52,12 @@ public class WxEnergyMeterReading extends TenantEntity {
@io.swagger.annotations.ApiModelProperty(value = "上次读数时间", name = "preTime")
private Date preTime;
@io.swagger.annotations.ApiModelProperty(value="createBy",name="createBy")
private Long preBy;
@io.swagger.annotations.ApiModelProperty(value="createByName",name="createByName")
private String preByName;
@io.swagger.annotations.ApiModelProperty(value = "所属周期开始时间", name = "startTime")
private Date startTime;
@@ -76,6 +82,8 @@ public class WxEnergyMeterReading extends TenantEntity {
@io.swagger.annotations.ApiModelProperty(value="区间ID",name="timeId")
private Long timeId;
@TableField(exist = false)
private String timeName;
@io.swagger.annotations.ApiModelProperty(value="表ID",name="meterId")
private Long meterId;
@@ -100,9 +108,13 @@ public class WxEnergyMeterReading extends TenantEntity {
@io.swagger.annotations.ApiModelProperty(value="楼座ID",name="buildingId")
private Long buildingId;
@TableField(exist = false)
private String buildingName;
@io.swagger.annotations.ApiModelProperty(value="楼层ID",name="floorId")
private Long floorId;
@TableField(exist = false)
private String floorName;
@io.swagger.annotations.ApiModelProperty(value="单价",name="price")
private String price;


+ 7
- 2
mallinkService/src/main/java/com/iformall/service/WxEnergyService.java Просмотреть файл

@@ -27,11 +27,14 @@ public interface WxEnergyService {
void saveOrUpdateMeter(WxEnergyMeter record);
void updateMeterIsDel(WxEnergyMeter record);
Map<Long,WxEnergyMeter> getMeterMap(WxEnergyMeter record);
void setMeterShop(WxEnergyMeter record);
void setMeterFloor(WxEnergyMeter record);
//费用区间
PageInfo<WxEnergyFeesTime> timeListAsPage(WxEnergyFeesTime record, Integer pageIndex, Integer pageSize);
void saveOrUpdateTime(WxEnergyFeesTime record);
WxEnergyFeesTime getFeesTimeById(WxEnergyFeesTime record);
Map<Long,WxEnergyFeesTime> getTimeMap(WxEnergyFeesTime record);
void setTimeIsDel(WxEnergyFeesTime record);
//费用科目
@@ -43,8 +46,10 @@ public interface WxEnergyService {
//抄表数据
PageInfo<WxEnergyMeterReading> readingListAsPage(WxEnergyMeterReading record, Integer pageIndex, Integer pageSize);
void saveOrUpdateReading(WxEnergyMeterReading record,MallUserInfo userInfo);
void createReading(WxEnergyMeterReading record,MallUserInfo userInfo);
void updateReading(WxEnergyMeterReading record,MallUserInfo userInfo);
void commitReading(WxEnergyMeterReading record,MallUserInfo userInfo);
WxEnergyMeterReading getReadingById(WxEnergyMeterReading record);
//抄表科目计算数据
PageInfo<WxEnergyReadingCalcute> readingCalcuteListAsPage(WxEnergyReadingCalcute record, Integer pageIndex, Integer pageSize);
@@ -52,7 +57,7 @@ public interface WxEnergyService {
WxEnergyReadingCalcute getReadingCalcuteById(WxEnergyReadingCalcute record);
void exportReadingCalcute(WxEnergyReadingCalcute record,HttpServletRequest request, HttpServletResponse response);
void importReadingCalcute(MultipartFile mFile, MallUserInfo user, HttpServletRequest request, HttpServletResponse response);
void calcuteReading(WxEnergyReadingCalcute record, MallUserInfo user);
Integer calcuteReading(WxEnergyReadingCalcute record, MallUserInfo user);


}

+ 208
- 53
mallinkService/src/main/java/com/iformall/service/impl/WxEnergyServiceImpl.java Просмотреть файл

@@ -1,6 +1,7 @@
package com.iformall.service.impl;

import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.common.ErrorCode;
@@ -87,7 +88,44 @@ public class WxEnergyServiceImpl implements WxEnergyService {
@Override
public PageInfo<WxEnergyMeter> meterListAsPage(WxEnergyMeter record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxEnergyMeterMapper.findList(record));
String shopNumber = StringUtils.trimToNull(record.getShopNumber());
if (StringUtils.isNotBlank(shopNumber)) {
WxShop sq = new WxShop();
sq.updateTenantInfo(record);
sq.setShopNumber(shopNumber);
List<Long> shopIds = wxShopService.getShopIds(sq);
if (null == shopIds || shopIds.size() <= 0) {
record.setId(-1L);
}else {
record.setShopIds(shopIds);
}
}
PageInfo<WxEnergyMeter> page = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxEnergyMeterMapper.findList(record));
if (null != page && null != page.getList()) {
WxShop sq = new WxShop();
sq.updateTenantInfo(record);
Map<Long, WxShop> shopMap = wxShopService.findShopMap(sq);
Map<Long, String> buildingMap = wxMallBuildingService.getBuildingMap(record);
Map<Long, String> floorMap = wxMallFloorService.getFloorMap(record);
for (int i = 0 ; i < page.getList().size(); i++) {
WxEnergyMeter m = page.getList().get(i);
if (null != shopMap && null != m.getShopId()) {
WxShop shop = shopMap.get(m.getShopId());
if (null != shop) {
m.setShopNumber(shop.getShopNumber());
}
}
if (null != buildingMap && null != m.getBuildingId()) {
String buildingName = buildingMap.get(m.getBuildingId());
m.setBuildingName(buildingName);
}
if (null != floorMap && null != m.getFloorId()) {
String floorName = floorMap.get(m.getFloorId());
m.setFloorName(floorName);
}
}
}
return page;
}
@Override
@@ -133,6 +171,33 @@ public class WxEnergyServiceImpl implements WxEnergyService {
}
return null;
}

@Override
public void setMeterShop(WxEnergyMeter record) {
WxShop shop = wxShopService.getById(record.getShopId());
record.setShopId(shop.getId());
record.setBuildingId(shop.getBuilding());
record.setFloorId(shop.getFloor());
record.setUpdateTime(new Date());
wxEnergyMeterMapper.updateById(record);
}
@Override
public void setMeterFloor(WxEnergyMeter record) {
WxMallFloor floor = wxMallFloorService.getById(record.getFloorId());
// record.setBuildingId(floor.getBuildingId());
// record.setFloorId(floor.getId());
// record.setUpdateTime(new Date());
// record.setShopId(null);
// wxEnergyMeterMapper.updateById(record);
//属性为空如何处理
wxEnergyMeterMapper.update(record, new UpdateWrapper<WxEnergyMeter>().lambda().eq(WxEnergyMeter::getId, record.getId())
.set(WxEnergyMeter::getShopId, null)
.set(WxEnergyMeter::getBuildingId, floor.getBuildingId())
.set(WxEnergyMeter::getFloorId, floor.getId())
.set(WxEnergyMeter::getUpdateTime, new Date()));
}
@Override
@@ -164,6 +229,21 @@ public class WxEnergyServiceImpl implements WxEnergyService {
public WxEnergyFeesTime getFeesTimeById(WxEnergyFeesTime record) {
return wxEnergyFeesTimeMapper.selectById(record.getId(), record.getTenantId());
}

@Override
public Map<Long, WxEnergyFeesTime> getTimeMap(WxEnergyFeesTime record) {
List<WxEnergyFeesTime> list = wxEnergyFeesTimeMapper.findList(record);
if (null != list && list.size() > 0 ) {
Map<Long,WxEnergyFeesTime> retMap = new HashMap<Long,WxEnergyFeesTime>();
for (int i = 0 ; i<list.size() ; i ++) {
WxEnergyFeesTime m = list.get(i);
retMap.put(m.getId(), m);
}
return retMap;
}
return null;
}

@Override
@@ -225,35 +305,92 @@ public class WxEnergyServiceImpl implements WxEnergyService {
@Override
public PageInfo<WxEnergyMeterReading> readingListAsPage(WxEnergyMeterReading record, Integer pageIndex,
Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxEnergyMeterReadingMapper.findList(record));
PageInfo<WxEnergyMeterReading> page = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxEnergyMeterReadingMapper.findList(record));
if (null != page && null != page.getList()) {
WxEnergyFeesTime tq = new WxEnergyFeesTime();
tq.updateTenantInfo(record);
Map<Long, WxEnergyFeesTime> timeMap = this.getTimeMap(tq);
Map<Long, String> buildingMap = wxMallBuildingService.getBuildingMap(record);
Map<Long, String> floorMap = wxMallFloorService.getFloorMap(record);
for (int i = 0 ; i < page.getList().size() ; i ++) {
WxEnergyMeterReading m = page.getList().get(i);
if (null != timeMap) {
WxEnergyFeesTime time = timeMap.get(m.getTimeId());
if (null != time) {
m.setTimeName(time.getName());
}
}
if (null != buildingMap && null != m.getBuildingId()) {
String buildingName = buildingMap.get(m.getBuildingId());
m.setBuildingName(buildingName);
}
if (null != floorMap && null != m.getFloorId()) {
String floorName = floorMap.get(m.getFloorId());
m.setFloorName(floorName);
}
}
}
return page;
}

@Override
public void saveOrUpdateReading(WxEnergyMeterReading record,MallUserInfo userInfo) {
public void createReading(WxEnergyMeterReading record,MallUserInfo userInfo) {
Date date = new Date();
if (record.getId() == null) {
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
record.setCreateTime(date);
record.setCreateBy(userInfo.getId());
record.setCreateByName(userInfo.getName());
record.setUpdateTime(date);
record.setUpdateBy(userInfo.getId());
record.setUpdateByName(userInfo.getName());
try {
wxEnergyMeterReadingMapper.insert(record);
} catch (Exception e) {
logger.error("保存租赁账单失败,e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
} else {
record.setUpdateTime(date);
record.setUpdateBy(userInfo.getId());
record.setUpdateByName(userInfo.getName());
wxEnergyMeterReadingMapper.updateById(record);
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
record.setCreateTime(date);
record.setCreateBy(userInfo.getId());
record.setCreateByName(userInfo.getName());
record.setUpdateTime(date);
record.setUpdateBy(userInfo.getId());
record.setUpdateByName(userInfo.getName());
try {
wxEnergyMeterReadingMapper.insert(record);
} catch (Exception e) {
logger.error("保存租赁账单失败,e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
}
@Override
public void updateReading(WxEnergyMeterReading record, MallUserInfo userInfo) {
WxEnergyFeesTime tq= new WxEnergyFeesTime();
tq.updateTenantInfo(record);
tq.setId(record.getTimeId());
WxEnergyFeesTime time = this.getFeesTimeById(tq);
// record.setStartTime(time.getStartTime());
// record.setEndTime(time.getEndTime());
WxEnergyMeter meter = this.getMeterById(record, record.getMeterId());
// record.setMeterType(meter.getType());
// record.setMeterName(meter.getName());
// record.setMeterRate(meter.getRate());
// record.setIsPublic(meter.getIsPublic());
// record.setShopId(meter.getShopId());
// record.setBuildingId(meter.getBuildingId());
// record.setFloorId(meter.getFloorId());
//可以保存null值
wxEnergyMeterReadingMapper.update(record, new UpdateWrapper<WxEnergyMeterReading>().lambda()
.eq(WxEnergyMeterReading::getId, record.getId())
.eq(WxEnergyMeterReading::getTenantId, record.getTenantId())
.set(WxEnergyMeterReading::getCurNumber, record.getCurNumber())
.set(WxEnergyMeterReading::getTimeId, record.getTimeId())
.set(WxEnergyMeterReading::getMeterId, record.getMeterId())
.set(WxEnergyMeterReading::getStartTime, time.getStartTime())
.set(WxEnergyMeterReading::getEndTime, time.getEndTime())
.set(WxEnergyMeterReading::getMeterType, meter.getType())
.set(WxEnergyMeterReading::getMeterName, meter.getName())
.set(WxEnergyMeterReading::getMeterRate, meter.getRate())
.set(WxEnergyMeterReading::getIsPublic, meter.getIsPublic())
.set(WxEnergyMeterReading::getShopId, meter.getShopId())
.set(WxEnergyMeterReading::getBuildingId, meter.getBuildingId())
.set(WxEnergyMeterReading::getFloorId, meter.getFloorId())
.set(WxEnergyMeterReading::getUpdateTime, new Date())
.set(WxEnergyMeterReading::getUpdateBy, userInfo.getId())
.set(WxEnergyMeterReading::getUpdateByName, userInfo.getName())
.set(WxEnergyMeterReading::getRemark, record.getRemark()));
}
private WxEnergyMeterReading findPre(WxEnergyMeterReading record) {
//查询上次抄表的数据
record.setSortColumns("end_time desc");
@@ -267,6 +404,9 @@ public class WxEnergyServiceImpl implements WxEnergyService {
@Override
public void commitReading(WxEnergyMeterReading record, MallUserInfo userInfo) {
if (null == record.getMeterReadingList()) {
WxShop sq = new WxShop();
sq.updateTenantInfo(record);
Map<Long, WxShop> shopMap = wxShopService.findShopMap(sq);
List<WxEnergyMeterReading> recordList = new ArrayList<WxEnergyMeterReading>();
for (int i = 0 ; i < record.getMeterReadingList().size(); i++) {
WxEnergyMeterReading _mr = record.getMeterReadingList().get(i);
@@ -274,10 +414,6 @@ public class WxEnergyServiceImpl implements WxEnergyService {
r.updateTenantInfo(record);
r.setCurNumber(_mr.getCurNumber());
r.setTimeId(record.getTimeId());
r.setShopId(record.getShopId());
r.setShopNumber(record.getShopNumber());
r.setBuildingId(record.getBuildingId());
r.setFloorId(record.getFloorId());
r.setMeterId(_mr.getMeterId());
recordList.add(r);
}
@@ -290,6 +426,10 @@ public class WxEnergyServiceImpl implements WxEnergyService {
if (null != pre) {
r.setPreNumber(pre.getCurNumber());
r.setPreTime(pre.getCreateTime());
r.setPreBy(pre.getCreateBy());
r.setPreByName(pre.getCreateByName());
}else {
r.setPreNumber("0");
}
//根据时间id获取时间周期
WxEnergyFeesTime time = wxEnergyFeesTimeMapper.selectById(r.getTimeId(), record.getTenantId());
@@ -301,12 +441,22 @@ public class WxEnergyServiceImpl implements WxEnergyService {
r.setIsPublic(meter.getIsPublic());
r.setMeterType(meter.getType());
r.setMeterRate(meter.getRate());
saveOrUpdateReading(r, userInfo);
r.setBuildingId(meter.getBuildingId());
r.setFloorId(meter.getFloorId());
r.setShopId(meter.getShopId());
WxShop shop = shopMap.get(meter.getShopId());
r.setShopNumber(shop.getShopNumber());
createReading(r, userInfo);
}
}
}
}
@Override
public WxEnergyMeterReading getReadingById(WxEnergyMeterReading record) {
return wxEnergyMeterReadingMapper.selectById(record.getId(), record.getTenantId());
}
@Override
public PageInfo<WxEnergyReadingCalcute> readingCalcuteListAsPage(WxEnergyReadingCalcute record, Integer pageIndex,
Integer pageSize) {
@@ -526,12 +676,36 @@ public class WxEnergyServiceImpl implements WxEnergyService {

@Override
public void calcuteReading(WxEnergyReadingCalcute record, MallUserInfo user) {
//根据科目计算生成账单。
public Integer calcuteReading(WxEnergyReadingCalcute record, MallUserInfo user) {
//根据科目,区间,计算生成账单。
WxEnergyMeterReading reading = new WxEnergyMeterReading();
reading.updateTenantInfo(record);
reading.setTimeId(record.getTimeId());
reading.setIsPublic(EnumYesOrNo.NO.getCode());
WxEnergyFees fq = new WxEnergyFees();
fq.updateTenantInfo(record);
fq.setIsDel(EnumYesOrNo.NO.getCode());
fq.setId(record.getFeesId());
WxEnergyFees fees = this.getFeesById(fq);
if (null == fees) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"科目未查询到。");
}
WxEnergyFeesTime tq = new WxEnergyFeesTime();
tq.updateTenantInfo(record);
tq.setId(record.getTimeId());
WxEnergyFeesTime time = this.getFeesTimeById(tq);
if (null == time) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"区间未查询到。");
}
if (fees.getType().intValue() != time.getType().intValue()) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"科目和区间的表类型不匹配。");
}
reading.setMeterType(time.getType());
//用户表列表
List<WxEnergyMeterReading> readingList = wxEnergyMeterReadingMapper.findList(reading);
if (null != readingList && readingList.size() > 0 ) {
@@ -549,14 +723,6 @@ public class WxEnergyServiceImpl implements WxEnergyService {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"能源表未查询到。");
}
WxEnergyFees fq = new WxEnergyFees();
fq.updateTenantInfo(record);
fq.setIsDel(EnumYesOrNo.NO.getCode());
fq.setId(record.getFeesId());
WxEnergyFees fees = this.getFeesById(fq);
if (null == fees) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"科目未查询到。");
}
String publicTotalArea = "0";
String publicTotalMoney = "0";
Map<Long,String> buildingFloorMoney = null;
@@ -667,6 +833,7 @@ public class WxEnergyServiceImpl implements WxEnergyService {
}catch(Exception e) {
logger.error("insert bills error.",e);
allSuccess = false;
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"生成账单失败,请重试。");
}
WxEnergyReadingCalcute c = new WxEnergyReadingCalcute();
c.updateTenantInfo(record);
@@ -675,30 +842,18 @@ public class WxEnergyServiceImpl implements WxEnergyService {
c.setUpdateTime(new Date());
c.setUpdateBy(user.getId());
c.setUpdateByName(user.getName());
c.setRemark(record.getRemark());
if (allSuccess) {
c.setCalcuteSuccess(EnumYesOrNo.YES.getCode());
}else {
c.setCalcuteSuccess(EnumYesOrNo.NO.getCode());
}
wxEnergyReadingCalcuteMapper.updateById(c);
return billList.size();
}
}

return 0;
}











}

+ 3
- 1
mallinkService/src/main/resources/mapper/WxEnergyFeesMapper.xml Просмотреть файл

@@ -11,10 +11,11 @@
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="price" jdbcType="VARCHAR" property="price"/>
<result column="public_calcute" jdbcType="INTEGER" property="publicCalcute"/>
<result column="type" jdbcType="INTEGER" property="type"/>
</resultMap>

<sql id="allColumns">
`id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`is_del`,`name`,`price`,`public_calcute`
`id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`is_del`,`name`,`price`,`public_calcute`,`type`
</sql>

<sql id="dynamicWhereConditions">
@@ -28,6 +29,7 @@
</if>
<if test=" null != isDel ">and `is_del` = #{isDel}</if>
<if test=" null != publicCalcute ">and `public_calcute` = #{publicCalcute}</if>
<if test=" null != type ">and `type` = #{type}</if>
<if test=" null != name and '' != name ">and name like concat('%', #{name},'%')</if>
<if test=" null != ids ">
and id in


+ 16
- 1
mallinkService/src/main/resources/mapper/WxEnergyMeterMapper.xml Просмотреть файл

@@ -12,10 +12,13 @@
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="rate" jdbcType="VARCHAR" property="rate"/>
<result column="is_public" jdbcType="INTEGER" property="isPublic"/>
<result column="building_id" jdbcType="BIGINT" property="buildingId"/>
<result column="floor_id" jdbcType="BIGINT" property="floorId"/>
<result column="shop_id" jdbcType="BIGINT" property="shopId"/>
</resultMap>

<sql id="allColumns">
`id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`is_del`,`name`,`type`,`rate`,`is_public`
`id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`is_del`,`name`,`type`,`rate`,`is_public`,`building_id`,`floor_id`,`shop_id`
</sql>

<sql id="dynamicWhereConditions">
@@ -30,7 +33,19 @@
<if test=" null != isDel ">and `is_del` = #{isDel}</if>
<if test=" null != type ">and `type` = #{type}</if>
<if test=" null != isPublic ">and `is_public` = #{isPublic}</if>
<if test=" null != buildingId ">and `building_id` = #{buildingId}</if>
<if test=" null != floorId ">and `floor_id` = #{floorId}</if>
<if test=" null != shopId ">and `shop_id` = #{shopId}</if>
<if test=" null != name and '' != name ">and name like concat('%', #{name},'%')</if>
<if test=" null != floorForRule and '' != floorForRule ">
and `floor_id` in (${floorForRule})
</if>
<if test=" null != shopIds ">
and shop_id in
<foreach collection="shopIds" index="index" item="sidItem" open="(" separator="," close=")">
#{sidItem}
</foreach>
</if>
<if test=" null != ids ">
and id in
<foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">


+ 3
- 1
mallinkService/src/main/resources/mapper/WxEnergyMeterReadingMapper.xml Просмотреть файл

@@ -10,6 +10,8 @@
<result column="cur_number" jdbcType="VARCHAR" property="curNumber"/>
<result column="pre_number" jdbcType="VARCHAR" property="preNumber"/>
<result column="pre_time" jdbcType="TIMESTAMP" property="preTime"/>
<result column="pre_by" jdbcType="BIGINT" property="preBy"/>
<result column="pre_by_name" jdbcType="VARCHAR" property="preByName"/>
<result column="start_time" jdbcType="TIMESTAMP" property="startTime"/>
<result column="end_time" jdbcType="TIMESTAMP" property="endTime"/>
<result column="create_by" jdbcType="BIGINT" property="createBy"/>
@@ -31,7 +33,7 @@
</resultMap>

<sql id="allColumns">
`id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`cur_number`,`pre_number`,`pre_time`,`start_time`,`end_time`,`create_by`,`create_by_name`,
`id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`cur_number`,`pre_number`,`pre_time`,`pre_by`,`pre_by_name`,`start_time`,`end_time`,`create_by`,`create_by_name`,
`update_by`,`update_by_name`,`remark`,`time_id`,`meter_id`,`meter_type`,`meter_rate`,`is_public`,`meter_name`,`shop_id`,`shop_number`,`building_id`,`floor_id`,`price`
</sql>



Загрузка…
Отмена
Сохранить