diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxEnergyController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxEnergyController.java index df911fd8c..ce2fe6793 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxEnergyController.java +++ b/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 retMap = new HashMap(); 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 retMap = new HashMap(); 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 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); } - - } diff --git a/mallinkAdmin/src/main/resources/db/migration/V202407018.sql b/mallinkAdmin/src/main/resources/db/migration/V202407018.sql index d6e12d576..f3d044198 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202407018.sql +++ b/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='能耗表'; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFees.java b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFees.java index 4b740800f..b957ff6fb 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFees.java +++ b/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; + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeter.java b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeter.java index 06cc871b7..5d02f5a2e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeter.java +++ b/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 shopIds; + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeterReading.java b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeterReading.java index 7eb4d94a6..a48754efe 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeterReading.java +++ b/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; diff --git a/mallinkService/src/main/java/com/iformall/service/WxEnergyService.java b/mallinkService/src/main/java/com/iformall/service/WxEnergyService.java index 89d02fc49..e78ee5dc4 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxEnergyService.java +++ b/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 getMeterMap(WxEnergyMeter record); + void setMeterShop(WxEnergyMeter record); + void setMeterFloor(WxEnergyMeter record); //费用区间 PageInfo timeListAsPage(WxEnergyFeesTime record, Integer pageIndex, Integer pageSize); void saveOrUpdateTime(WxEnergyFeesTime record); WxEnergyFeesTime getFeesTimeById(WxEnergyFeesTime record); + Map getTimeMap(WxEnergyFeesTime record); void setTimeIsDel(WxEnergyFeesTime record); //费用科目 @@ -43,8 +46,10 @@ public interface WxEnergyService { //抄表数据 PageInfo 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 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); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxEnergyServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxEnergyServiceImpl.java index 80a784911..24a5a8488 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxEnergyServiceImpl.java +++ b/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 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 shopIds = wxShopService.getShopIds(sq); + if (null == shopIds || shopIds.size() <= 0) { + record.setId(-1L); + }else { + record.setShopIds(shopIds); + } + } + PageInfo page = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxEnergyMeterMapper.findList(record)); + if (null != page && null != page.getList()) { + WxShop sq = new WxShop(); + sq.updateTenantInfo(record); + Map shopMap = wxShopService.findShopMap(sq); + Map buildingMap = wxMallBuildingService.getBuildingMap(record); + Map 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().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 getTimeMap(WxEnergyFeesTime record) { + List list = wxEnergyFeesTimeMapper.findList(record); + if (null != list && list.size() > 0 ) { + Map retMap = new HashMap(); + for (int i = 0 ; i readingListAsPage(WxEnergyMeterReading record, Integer pageIndex, Integer pageSize) { - return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxEnergyMeterReadingMapper.findList(record)); + PageInfo page = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxEnergyMeterReadingMapper.findList(record)); + if (null != page && null != page.getList()) { + WxEnergyFeesTime tq = new WxEnergyFeesTime(); + tq.updateTenantInfo(record); + Map timeMap = this.getTimeMap(tq); + Map buildingMap = wxMallBuildingService.getBuildingMap(record); + Map 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().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 shopMap = wxShopService.findShopMap(sq); List recordList = new ArrayList(); 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 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 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 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; } - - - - - - - - - - - } diff --git a/mallinkService/src/main/resources/mapper/WxEnergyFeesMapper.xml b/mallinkService/src/main/resources/mapper/WxEnergyFeesMapper.xml index b9d6c0ed4..af147c697 100644 --- a/mallinkService/src/main/resources/mapper/WxEnergyFeesMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxEnergyFeesMapper.xml @@ -11,10 +11,11 @@ + - `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` @@ -28,6 +29,7 @@ and `is_del` = #{isDel} and `public_calcute` = #{publicCalcute} + and `type` = #{type} and name like concat('%', #{name},'%') and id in diff --git a/mallinkService/src/main/resources/mapper/WxEnergyMeterMapper.xml b/mallinkService/src/main/resources/mapper/WxEnergyMeterMapper.xml index 94f00e878..2dbf460d4 100644 --- a/mallinkService/src/main/resources/mapper/WxEnergyMeterMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxEnergyMeterMapper.xml @@ -12,10 +12,13 @@ + + + - `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` @@ -30,7 +33,19 @@ and `is_del` = #{isDel} and `type` = #{type} and `is_public` = #{isPublic} + and `building_id` = #{buildingId} + and `floor_id` = #{floorId} + and `shop_id` = #{shopId} and name like concat('%', #{name},'%') + + and `floor_id` in (${floorForRule}) + + + and shop_id in + + #{sidItem} + + and id in diff --git a/mallinkService/src/main/resources/mapper/WxEnergyMeterReadingMapper.xml b/mallinkService/src/main/resources/mapper/WxEnergyMeterReadingMapper.xml index a26ace3b8..6fa25e2f9 100644 --- a/mallinkService/src/main/resources/mapper/WxEnergyMeterReadingMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxEnergyMeterReadingMapper.xml @@ -10,6 +10,8 @@ + + @@ -31,7 +33,7 @@ - `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`