From 37b845902816856f542786239d661dd5ee6a0f4c Mon Sep 17 00:00:00 2001 From: winter Date: Mon, 26 Aug 2024 20:48:05 +0800 Subject: [PATCH 01/17] fix --- .../controller/market/WxEnergyController.java | 20 +++--- .../com/iformall/service/WxEnergyService.java | 4 +- .../service/impl/WxEnergyServiceImpl.java | 62 +++++++++---------- 3 files changed, 38 insertions(+), 48 deletions(-) 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 cea22d93c..5eda265a4 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxEnergyController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxEnergyController.java @@ -324,7 +324,7 @@ public class WxEnergyController extends BaseController { @ApiOperation("用户能源表新增修改") @PostMapping("deleteChildMeter") - public ResultData deleteChildMeter(@RequestBody WxEnergyMeterChild record) { + public ResultData deleteChildMeter(@RequestBody WxEnergyMeter record) { record.updateTenantInfo(getTenantInfo()); if (null == record.getId()) { return new ResultData(Result.ERROR,"请选择一个关联"); @@ -654,19 +654,15 @@ public class WxEnergyController extends BaseController { } @ApiOperation("科目抄表计算记录导出") - @GetMapping("readingCalcuteExport") - public void readingCalcuteExport(@ModelAttribute WxEnergyReadingCalcute record, HttpServletRequest request, HttpServletResponse response) { -// record.updateTenantInfo(getTenantInfo()); -// WxEnergyReadingCalcute wrc = wxEnergyService.getReadingCalcuteById(record); -// if (null == wrc) { -// return; -// } -// wxEnergyService.exportReadingCalcute(wrc, request, response); + @GetMapping("readingCalcuteResultExport") + public void readingCalcuteResultExport(@ModelAttribute WxEnergyReadingCalcuteResult record, HttpServletRequest request, HttpServletResponse response) { + record.updateTenantInfo(getTenantInfo()); + wxEnergyService.exportReadingCalcuteResult(record, request, response); } - @ApiOperation("计算") - @PostMapping("calcute") - public ResultData calcute(@RequestBody WxEnergyReadingCalcute record) { + @ApiOperation("生成账单") + @PostMapping("createBill") + public ResultData createBill(@RequestBody WxEnergyReadingCalcute record) { // record.updateTenantInfo(getTenantInfo()); // WxEnergyReadingCalcute wrc = wxEnergyService.getReadingCalcuteById(record); // if (null == wrc) { diff --git a/mallinkService/src/main/java/com/iformall/service/WxEnergyService.java b/mallinkService/src/main/java/com/iformall/service/WxEnergyService.java index ff3479575..5b713441f 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxEnergyService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxEnergyService.java @@ -33,7 +33,7 @@ public interface WxEnergyService { void createMeterAlias(WxEnergyMeterShopFloor record); void createChildMeterAlias(WxEnergyMeterChild record); void deleteMeterAlias(WxEnergyMeterShopFloor record); - void deleteChildMeterAlias(WxEnergyMeterChild record); + void deleteChildMeterAlias(WxEnergyMeter record); void updateMeterIsDel(WxEnergyMeter record); Map getMeterMap(WxEnergyMeter record); List getMeterIdList(WxEnergyMeterShopFloor record); @@ -79,7 +79,7 @@ public interface WxEnergyService { PageInfo readingCalcuteListAsPage(WxEnergyReadingCalcute record, Integer pageIndex, Integer pageSize); void saveOrUpdateReadingCalcute(WxEnergyReadingCalcute record,MallUserInfo userInfo); PageInfo readingCalcuteResultListAsPage(WxEnergyReadingCalcuteResult record, Integer pageIndex, Integer pageSize); - void exportReadingCalcute(WxEnergyReadingCalcute record,HttpServletRequest request, HttpServletResponse response); + void exportReadingCalcuteResult(WxEnergyReadingCalcuteResult record,HttpServletRequest request, HttpServletResponse response); Integer calcuteReading(WxEnergyReadingCalcute record, MallUserInfo user); void setReadingCalcuteIsDel(WxEnergyReadingCalcute record); List getReadingCalcuteShopNumber(WxEnergyReadingCalcute record); 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 aaacadd3a..a51320239 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxEnergyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxEnergyServiceImpl.java @@ -13,6 +13,7 @@ import com.iformall.common.ResultData; import com.iformall.domain.dto.FloorBuildingIdDTO; import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.WxMerchantBillVo; import com.iformall.enums.EnumBillAllType; import com.iformall.enums.EnumEnergyMeterPhysicsType; import com.iformall.enums.EnumEnergyMeterShopFloorType; @@ -231,8 +232,30 @@ public class WxEnergyServiceImpl implements WxEnergyService { } @Override - public void deleteChildMeterAlias(WxEnergyMeterChild record) { - wxEnergyMeterChildMapper.deleteByCondition(record); + public void deleteChildMeterAlias(WxEnergyMeter record) { + if (record.getTreeParentType().equals("building")) { + WxEnergyMeterShopFloor sf = new WxEnergyMeterShopFloor(); + sf.updateTenantInfo(record); + sf.setType(EnumEnergyMeterShopFloorType.BUILDING.getCode()); + sf.setAliseId(record.getTreeParentId()); + sf.setMeterId(record.getId()); + wxEnergyMeterShopFloorMapper.deleteByConditon(sf); + }if (record.getTreeParentType().equals("floor")) { + WxEnergyMeterShopFloor sf = new WxEnergyMeterShopFloor(); + sf.updateTenantInfo(record); + sf.setType(EnumEnergyMeterShopFloorType.FLOOR.getCode()); + sf.setAliseId(record.getTreeParentId()); + sf.setMeterId(record.getId()); + wxEnergyMeterShopFloorMapper.deleteByConditon(sf); + }if (record.getTreeParentType().equals("meter")) { + WxEnergyMeterChild sf = new WxEnergyMeterChild(); + sf.updateTenantInfo(record); + sf.setParentMeterId(record.getTreeParentId()); + sf.setChildMeterId(record.getId()); + wxEnergyMeterChildMapper.deleteByCondition(sf); + } + + } @Override @@ -1011,38 +1034,9 @@ public class WxEnergyServiceImpl implements WxEnergyService { @Override - public void exportReadingCalcute(WxEnergyReadingCalcute record, HttpServletRequest request, HttpServletResponse response) { -// WxEnergyFeesTime tq = new WxEnergyFeesTime(); -// tq.updateTenantInfo(record); -// tq.setId(record.getTimeId()); -// WxEnergyFeesTime time = this.getFeesTimeById(tq); -// if (null == time) { -// return; -// } -// -// WxEnergyFees fq = new WxEnergyFees(); -// fq.updateTenantInfo(record); -// fq.setId(record.getFeesId()); -// WxEnergyFees fees = this.getFeesById(fq); -// if (null == fees) { -// return; -// } -// -// Map buildingMap = wxMallBuildingService.getBuildingMap(record); -// Map floorMap = wxMallFloorService.getFloorMap(record); -// -// List> execlList = new ArrayList>(); -// WxEnergyMeterReading rq = new WxEnergyMeterReading(); -// rq.updateTenantInfo(record); -// //rq.setTimeId(tq.getId()); -// PageInfo page = this.readingListAsPage(rq, 1, 10000); -// if (null != page && null != page.getList()) { -// for (int i = 0 ; i < page.getList().size(); i++) { -// WxEnergyMeterReading r = page.getList().get(i); -// execlList.add(r.generateExcelData(buildingMap, floorMap, time, fees, record)); -// } -// } -// excelService.exportExcel(WxEnergyMeterReading.generateExcelTitle(),execlList, "科目抄表_"+time.getName()+"_"+fees.getName()+".xlsx","sheet1", response); + public void exportReadingCalcuteResult(WxEnergyReadingCalcuteResult record, HttpServletRequest request, HttpServletResponse response) { + PageInfo page = readingCalcuteResultListAsPage(record, 1, 10000); + excelService.exportExcel(page.getList(), null, "能源计算结果", WxEnergyReadingCalcuteResult.class, "能源计算结果.xlsx", response, false); } private File handlerImportFile(MultipartFile mFile,String fileNamePre) { From 41d6f8b18a27207361c66a81a58bd1a44d1888a8 Mon Sep 17 00:00:00 2001 From: winter Date: Mon, 26 Aug 2024 21:05:15 +0800 Subject: [PATCH 02/17] fix --- .../controller/market/WxEnergyController.java | 4 - .../com/iformall/domain/po/WxEnergyMeter.java | 2 +- .../domain/po/WxEnergyMeterReading.java | 52 ----- .../service/impl/WxEnergyServiceImpl.java | 187 +----------------- .../resources/mapper/WxEnergyMeterMapper.xml | 1 + 5 files changed, 4 insertions(+), 242 deletions(-) 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 5eda265a4..893bb3aa8 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxEnergyController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxEnergyController.java @@ -664,10 +664,6 @@ public class WxEnergyController extends BaseController { @PostMapping("createBill") public ResultData createBill(@RequestBody WxEnergyReadingCalcute record) { // record.updateTenantInfo(getTenantInfo()); -// WxEnergyReadingCalcute wrc = wxEnergyService.getReadingCalcuteById(record); -// if (null == wrc) { -// return new ResultData(Result.ERROR,"id错误"); -// } // Integer number = wxEnergyService.calcuteReading(wrc, getUser()); // return new ResultData(number); return null; 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 eea712fb5..4563c10d4 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeter.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeter.java @@ -83,7 +83,6 @@ public class WxEnergyMeter extends TenantEntity { private Long treeParentId; @TableField(exist = false) private String treeParentType; - @TableField(exist = false) private Long aliasId; @TableField(exist = false) @@ -102,4 +101,5 @@ public class WxEnergyMeter extends TenantEntity { private Integer isValid; @TableField(exist = false) private Integer hasShop; + } 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 3456bf632..84f3085f5 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeterReading.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeterReading.java @@ -154,56 +154,4 @@ public class WxEnergyMeterReading extends TenantEntity { return excelObject; } - private WxAllBill generateBill(WxEnergyReadingCalcute calcute,WxMerchant merchant,MallUserInfo user,String needPay,String detail,String remark) { - WxAllBill daily = new WxAllBill(); -// final IdWorker idWorker = IdWorker.get(); -// daily.setId(idWorker.nextId()); -// daily.updateTenantInfo(this); -// daily.setMerchantId(merchant.getId()); -// daily.setRentShopType(merchant.getType()); -// daily.setCreatetime(new Date()); -// daily.setCreateBy(user.getId()); -// daily.setCreateByName(user.getName()); -// daily.setUpdateBy(user.getId()); -// daily.setUpdateByName(user.getName()); -// daily.setUpdatetime(new Date()); -// daily.setReceivePay(needPay); -// daily.setNeedPay(needPay); -// daily.setPay("0"); -// daily.setStarttime(this.startTime); -// daily.setEndtime(this.endTime); -// daily.setOwe(needPay); -// daily.setShopId(this.shopId); -// daily.setShopNumber(this.shopNumber); -// daily.setBillType(EnumBillAllType.DAILY.getCode()); -// daily.setEnergyFeesId(calcute.getFeesId()); -// daily.setPriceDetail(detail); -// daily.setServiceChargePay("0"); -// daily.setBillRemark(remark); -// daily.setIsPreview(EnumYesOrNo.NO.getCode()); -// daily.setEnergyReadingCalcuteId(calcute.getId()); -// daily.setEnergyReadingId(id); - return daily; - } - - public WxAllBill generateUserBill(WxEnergyReadingCalcute calcute,WxMerchant merchant,MallUserInfo user,WxEnergyMeter meter) { -// BigDecimal dx = new BigDecimal(this.curNumber).subtract(new BigDecimal(this.preNumber)); -// BigDecimal needPay = new BigDecimal(this.price).multiply(dx).divide(new BigDecimal(meter.getRate())).setScale(2,RoundingMode.HALF_UP); -// if (needPay.compareTo(new BigDecimal(0)) <= 0 ) { -// return null; -// } -// String detail = "单价:"+this.price+",上次读数:"+this.preNumber+",本次读数:"+this.curNumber+",读数差:"+dx.toPlainString()+",表倍率:"+meter.getRate()+",费用:"+needPay.toPlainString(); -// return generateBill(calcute,merchant, user, needPay.toPlainString(), detail, "抄表计算自动生成"); - return null; - } - - public WxAllBill generatePublicBill(WxEnergyReadingCalcute calcute,WxMerchant merchant,MallUserInfo user,String needPay) { -// if (new BigDecimal(needPay).compareTo(new BigDecimal(0)) <= 0 ) { -// return null; -// } -// String detail = "单价:"+this.price+",费用:"+needPay; -// return generateBill(calcute,merchant, user, needPay, detail, "抄表计算自动生成公摊"); - return null; - } - } 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 a51320239..b9de82944 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxEnergyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxEnergyServiceImpl.java @@ -1128,198 +1128,15 @@ public class WxEnergyServiceImpl implements WxEnergyService { } - private Map getFloorBuildingMoney(WxEnergyMeterReading reading,boolean isFloor) { -// List list = null; -// if (isFloor) { -// list = wxEnergyMeterReadingMapper.findFloorSumMoney(reading); -// }else { -// wxEnergyMeterReadingMapper.findBuildingSumMoney(reading); -// } -// -// if (null != list && list.size() > 0 ) { -// Map buildinMap = new HashMap(); -// for (int i = 0 ; i < list.size() ; i++) { -// Map bup = list.get(i); -// BigDecimal are = (BigDecimal)bup.get("money"); -// if (null != are) { -// buildinMap.put((Long)bup.get("building_id"), are.toPlainString()); -// }else { -// buildinMap.put((Long)bup.get("building_id"), "0"); -// } -// -// } -// return buildinMap; -// } - return null; - } - @Override public Integer calcuteReading(WxEnergyReadingCalcute record, MallUserInfo user) { -// //根据科目,区间,计算生成账单。 -// WxEnergyMeterReading reading = new WxEnergyMeterReading(); -// reading.updateTenantInfo(record); -// reading.setTimeId(record.getTimeId()); -// reading.setIsDel(EnumYesOrNo.NO.getCode()); -// 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 ) { // -// WxShop sq = new WxShop(); -// sq.updateTenantInfo(record); -// Map shopMerchantMap = wxMerchantService.getShopMerchantMap(sq); -// Map shopMap = wxShopService.findShopMap(sq); // -// WxEnergyMeter mq = new WxEnergyMeter(); -// mq.updateTenantInfo(record); -// mq.setIsDel(EnumYesOrNo.NO.getCode()); -// Map meterMap = this.getMeterMap(mq); -// if (null == meterMap) { -// throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"能源表未查询到。"); -// } -// -// String publicTotalArea = "0"; -// BigDecimal publicTotalMoney = new BigDecimal(0); -// BigDecimal b0 = new BigDecimal(0); -// Map buildingFloorMoney = null; -// Map buildingFloorArea = null; -// if (fees.getPublicCalcute().intValue() == EnumEnergyPublicCalcuteRule.ALL.getCode().intValue()) { -// //全部就查询所有公共表的费用 -// reading.setIsPublic(EnumYesOrNo.YES.getCode()); -// String publicMoney = wxEnergyMeterReadingMapper.findAllSumMoney(reading); -// if (StringUtils.isNotBlank(publicMoney)) { -// publicTotalMoney = new BigDecimal(publicMoney); -// } -// //公摊总面积 -// WxMallFloor mf = new WxMallFloor(); -// mf.updateTenantInfo(record); -// publicTotalArea = wxMallFloorService.getAllPublicAreaSum(mf); -// if (StringUtils.isBlank(publicTotalArea)) { -// throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"楼层可用面积未配置。"); -// } -// BigDecimal areaDecimal = new BigDecimal(publicTotalArea); -// if (areaDecimal.compareTo(new BigDecimal(0)) <= 0 ) { -// throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"楼层可用面积未配置。"); -// } -// }else if (fees.getPublicCalcute().intValue() == EnumEnergyPublicCalcuteRule.BUILDING.getCode().intValue()) { -// //如果是按楼栋计算,则要把每个楼栋的金额都要算出来 -// reading.setIsPublic(EnumYesOrNo.YES.getCode()); -// buildingFloorMoney = getFloorBuildingMoney(reading,false); -// //各楼座总面积 -// WxMallFloor mf = new WxMallFloor(); -// mf.updateTenantInfo(record); -// buildingFloorArea = wxMallFloorService.getBuildingPublicAreaSum(mf); -// if (null == buildingFloorArea) { -// throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"楼层可用面积未配置。"); -// } -// }else if (fees.getPublicCalcute().intValue() == EnumEnergyPublicCalcuteRule.FLOOR.getCode().intValue()) { -// //查询各楼层的费用 -// reading.setIsPublic(EnumYesOrNo.YES.getCode()); -// buildingFloorMoney = getFloorBuildingMoney(reading,true); -// //各楼层面积 -// //各楼座总面积 -// WxMallFloor mf = new WxMallFloor(); -// mf.updateTenantInfo(record); -// buildingFloorArea = wxMallFloorService.getFloorPublicAreaSum(mf); -// if (null == buildingFloorArea) { -// throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"楼层可用面积未配置。"); -// } -// } -// -// List billList = new ArrayList(); -// for (int i = 0 ; i< readingList.size() ; i ++) { -// WxEnergyMeterReading mr = readingList.get(i); -// //用户表账单 -// WxMerchant merchant = shopMerchantMap.get(mr.getShopId()); -// if (null == merchant) { -// throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"铺位["+mr.getShopNumber()+"]未找到出租商户"); -// } -// WxEnergyMeter meter = meterMap.get(mr.getMeterId()); -// if (null == meter) { -// throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"表["+mr.getMeterName()+"]不存在"); -// } -// WxShop shop = shopMap.get(mr.getShopId()); -// WxAllBill userBill = mr.generateUserBill(record, merchant, user, meter); -// userBill.setEnergyFeesId(fees.getId()); -// if (null != userBill) { -// billList.add(userBill); -// } -// /* -// * 总表(分摊账单) -// * 如果科目是根据总面积公摊,则根据总面积计算 -// * 如果科目是根据楼栋公摊,则根据当前记录的楼栋面积计算 -// * 如果科目是根据楼层公摊,则根据当前记录的楼层面积计算 -// */ -// WxAllBill publicBill = null; -// if (fees.getPublicCalcute().intValue() == EnumEnergyPublicCalcuteRule.ALL.getCode().intValue()) { -// if (publicTotalMoney.compareTo(b0) > 0 ) { -// String needPay = publicTotalMoney.multiply(new BigDecimal(shop.getRentArea())).divide(new BigDecimal(publicTotalArea)).setScale(2,RoundingMode.HALF_UP).toPlainString(); -// publicBill = mr.generatePublicBill(record, merchant, user, needPay); -// } -// }else if (fees.getPublicCalcute().intValue() == EnumEnergyPublicCalcuteRule.BUILDING.getCode().intValue()) { -// String buildingArea = buildingFloorArea.get(mr.getBuildingId()); -// if (StringUtils.isBlank(buildingArea) || new BigDecimal(buildingArea).compareTo(new BigDecimal(0)) <= 0 ) { -// throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"楼层可用面积未配置完全。"); -// } -// BigDecimal buildingMoney = new BigDecimal(0); -// if (null != buildingFloorMoney ) { -// String bMoney = buildingFloorMoney.get(mr.getBuildingId()); -// if (StringUtils.isNotBlank(bMoney)) { -// buildingMoney = new BigDecimal(bMoney); -// } -// } -// if (buildingMoney.compareTo(b0) > 0 ) { -// String needPay = buildingMoney.multiply(new BigDecimal(shop.getRentArea())).divide(new BigDecimal(buildingArea)).setScale(2,RoundingMode.HALF_UP).toPlainString(); -// publicBill = mr.generatePublicBill(record, merchant, user, needPay); -// } -// }else if (fees.getPublicCalcute().intValue() == EnumEnergyPublicCalcuteRule.FLOOR.getCode().intValue()) { -// String floorArea = buildingFloorArea.get(mr.getFloorId()); -// if (StringUtils.isBlank(floorArea) || new BigDecimal(floorArea).compareTo(new BigDecimal(0)) <= 0 ) { -// throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"楼层可用面积未配置完全。"); -// } -// -// BigDecimal floorMoney = new BigDecimal(0); -// if (null != buildingFloorMoney ) { -// String fMoney = buildingFloorMoney.get(mr.getFloorId()); -// if (StringUtils.isNotBlank(fMoney)) { -// floorMoney = new BigDecimal(fMoney); -// } -// } -// if (floorMoney.compareTo(b0) > 0 ) { -// String needPay = floorMoney.multiply(new BigDecimal(shop.getRentArea())).divide(new BigDecimal(floorArea)).setScale(2,RoundingMode.HALF_UP).toPlainString(); -// publicBill = mr.generatePublicBill(record, merchant, user, needPay); -// } -// } -// -// if (null != publicBill) { -// publicBill.setEnergyFeesId(fees.getId()); -// billList.add(publicBill); -// } -// } // boolean allSuccess = true; // if (billList.size() > 0 ) { // try { diff --git a/mallinkService/src/main/resources/mapper/WxEnergyMeterMapper.xml b/mallinkService/src/main/resources/mapper/WxEnergyMeterMapper.xml index 525f1ef8a..99520a0fd 100644 --- a/mallinkService/src/main/resources/mapper/WxEnergyMeterMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxEnergyMeterMapper.xml @@ -33,6 +33,7 @@ and `physics_type` = #{physicsType} and `shop_type` = #{shopType} and name like concat('%', #{name},'%') + and `physics_type` in (1,2) and physics_type in From abd89d38091007eacf47d1418a83fe9366caa61b Mon Sep 17 00:00:00 2001 From: winter Date: Mon, 26 Aug 2024 21:50:04 +0800 Subject: [PATCH 03/17] fix --- .../controller/market/WxEnergyController.java | 10 +- .../db/migration/V202408000000005.sql | 61 +++----- .../com/iformall/domain/po/WxAllBill.java | 2 +- .../domain/po/WxEnergyReadingCalcute.java | 14 +- .../po/WxEnergyReadingCalcuteResult.java | 44 +++++- .../java/com/iformall/domain/po/WxShop.java | 2 +- .../com/iformall/service/WxEnergyService.java | 2 +- .../service/helper/WxEnergyHelper.java | 2 +- .../service/impl/WxEnergyServiceImpl.java | 137 +++++++++--------- .../mapper/WxEnergyReadingCalcuteMapper.xml | 4 +- .../WxEnergyReadingCalcuteResultMapper.xml | 7 +- 11 files changed, 144 insertions(+), 141 deletions(-) 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 893bb3aa8..e15e65ffe 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxEnergyController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxEnergyController.java @@ -206,6 +206,7 @@ public class WxEnergyController extends BaseController { WxEnergyMeter meter = list.get(i); WxShop s = new WxShop(); s.setId(meter.getId()); + s.setTreeType(meter.getTreeType()); s.setShopNumber(meter.getName()); s.setTreeParentId(record.getFloor()); s.setTreeParentType("floor"); @@ -280,7 +281,7 @@ public class WxEnergyController extends BaseController { } return new ResultData(list); } - return new ResultData(); + return new ResultData(new ArrayList()); } @ApiOperation("用户能源表新增修改") @@ -663,10 +664,9 @@ public class WxEnergyController extends BaseController { @ApiOperation("生成账单") @PostMapping("createBill") public ResultData createBill(@RequestBody WxEnergyReadingCalcute record) { -// record.updateTenantInfo(getTenantInfo()); -// Integer number = wxEnergyService.calcuteReading(wrc, getUser()); -// return new ResultData(number); - return null; + record.updateTenantInfo(getTenantInfo()); + wxEnergyService.createBill(record, getUser()); + return new ResultData(); } @PostMapping("calcuteIsDel") diff --git a/mallinkAdmin/src/main/resources/db/migration/V202408000000005.sql b/mallinkAdmin/src/main/resources/db/migration/V202408000000005.sql index ca1257354..66fe4b937 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202408000000005.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202408000000005.sql @@ -675,42 +675,6 @@ CREATE TABLE `wx_energy_fees_time_shop` ( KEY `T_P_S` (`tenant_id`,`shop_id`,`period`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='能耗表'; -CREATE TABLE `wx_energy_reading_calcute_shop` ( - `id` bigint(20) NOT NULL COMMENT '主键ID', - `tenant_id` varchar(5) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', - `parent_tenant_id` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '父租户ID', - `create_time` timestamp NULL DEFAULT NULL, - `update_time` timestamp NULL DEFAULT NULL, - `calcute_id` bigint(20) NOT NULL COMMENT '费用计算ID', - `shop_id` bigint(20) NOT NULL COMMENT '店铺ID', - PRIMARY KEY (`id`), - UNIQUE KEY `id_UNIQUE` (`id`), - UNIQUE KEY `T_T_F` (`tenant_id`,`calcute_id`,`shop_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='能耗表抄表'; - -drop TABLE wx_energy_reading_calcute; -CREATE TABLE `wx_energy_reading_calcute` ( - `id` bigint(20) NOT NULL COMMENT '主键ID', - `tenant_id` varchar(5) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', - `parent_tenant_id` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '父租户ID', - `create_time` timestamp NULL DEFAULT NULL, - `update_time` timestamp NULL DEFAULT NULL, - `create_by` bigint(20) DEFAULT NULL, - `create_by_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - `update_by` bigint(20) DEFAULT NULL, - `update_by_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - `remark` varchar(300) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - `period` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '所属年月', - `fees_id` bigint(20) NOT NULL COMMENT '科目ID', - `is_calcuted` int(1) NOT NULL DEFAULT '0' COMMENT '是否已计算过', - `calcute_success` int(1) DEFAULT '0' COMMENT '计算是否成功', - `is_del` int(1) NOT NULL DEFAULT '0' COMMENT '是否已删除', - `shop_size` int(6) NOT NULL DEFAULT '0' COMMENT '店铺数量', - PRIMARY KEY (`id`), - UNIQUE KEY `id_UNIQUE` (`id`), - UNIQUE KEY `T_P_F` (`tenant_id`,`period`,`fees_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='能耗表抄表'; - alter table wx_energy_meter_reading_0 add column building_name varchar(100) comment '所属楼栋,有可能会是多个'; alter table wx_energy_meter_reading_1 add column building_name varchar(100) comment '所属楼栋,有可能会是多个'; @@ -1320,6 +1284,29 @@ alter table wx_energy_fees_97 add column is_public int(1) not null default alter table wx_energy_fees_98 add column is_public int(1) not null default 0 comment '是否公摊'; alter table wx_energy_fees_99 add column is_public int(1) not null default 0 comment '是否公摊'; +drop TABLE wx_energy_reading_calcute; +CREATE TABLE `wx_energy_reading_calcute` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '父租户ID', + `create_time` timestamp NULL DEFAULT NULL, + `update_time` timestamp NULL DEFAULT NULL, + `create_by` bigint(20) DEFAULT NULL, + `create_by_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `update_by` bigint(20) DEFAULT NULL, + `update_by_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `remark` varchar(300) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `period` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '所属年月', + `fees_id` bigint(20) NOT NULL COMMENT '科目ID', + `is_calcuted` int(1) NOT NULL DEFAULT '0' COMMENT '是否已计算过', + `is_del` int(1) NOT NULL DEFAULT '0' COMMENT '是否已删除', + `shop_size` int(6) NOT NULL DEFAULT '0' COMMENT '店铺数量', + `shop` text COLLATE utf8mb4_unicode_ci COMMENT '店铺编号', + PRIMARY KEY (`id`), + UNIQUE KEY `id_UNIQUE` (`id`), + UNIQUE KEY `T_P_F` (`tenant_id`,`period`,`fees_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='能耗表抄表'; + CREATE TABLE `wx_energy_reading_calcute_result` ( `id` bigint(20) NOT NULL COMMENT '主键ID', @@ -1331,9 +1318,9 @@ CREATE TABLE `wx_energy_reading_calcute_result` ( `shop_id` bigint(20) NOT NULL COMMENT '店铺ID', `fees_id` bigint(20) NOT NULL COMMENT '科目编号', `fees_shop_id` bigint(20) NOT NULL COMMENT '店铺科目编号', - `meter_id` bigint(20) DEFAULT NULL COMMENT '表编号', `money` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '金额', `period` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '所属年月', + `money_deail` varchar(300) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '详细说明', PRIMARY KEY (`id`), UNIQUE KEY `id_UNIQUE` (`id`), UNIQUE KEY `T_T_F` (`tenant_id`,`calcute_id`,`shop_id`) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxAllBill.java b/mallinkService/src/main/java/com/iformall/domain/po/WxAllBill.java index 7644c5cd7..147446db9 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxAllBill.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxAllBill.java @@ -260,7 +260,7 @@ public class WxAllBill extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "能源抄表计算ID", name = "energyReadingCalcuteId") private Long energyReadingCalcuteId; - @io.swagger.annotations.ApiModelProperty(value = "能源抄表ID", name = "energyReadingId") + @io.swagger.annotations.ApiModelProperty(value = "WxEnergyReadingCalcuteResult的id", name = "energyReadingId") private Long energyReadingId; @io.swagger.annotations.ApiModelProperty(value = "账单额外生成来源EnumBillExtraCreateFrom", name = "extraCreateFrom") diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyReadingCalcute.java b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyReadingCalcute.java index cd564fb75..8d9b84458 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyReadingCalcute.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyReadingCalcute.java @@ -59,21 +59,9 @@ public class WxEnergyReadingCalcute extends TenantEntity { @TableField(exist = false) private String feesPhysicsTypeName; - @io.swagger.annotations.ApiModelProperty(value = "isCalcuted", name = "isCalcuted") + @io.swagger.annotations.ApiModelProperty(value = "是否已生成账单", name = "isCalcuted") private Integer isCalcuted; - @io.swagger.annotations.ApiModelProperty(value = "importSuccess", name = "importSuccess") - private Integer calcuteSuccess; - @TableField(exist = false) - private String calcuteSuccessName; - private String getCalcuteSuccessName() { - if (null != calcuteSuccess && calcuteSuccess.intValue() == EnumYesOrNo.YES.getCode().intValue()) { - return "成功"; - }else { - return "未完成计算"; - } - } - @io.swagger.annotations.ApiModelProperty(value = "是否删除", name = "isDel") private Integer isDel; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyReadingCalcuteResult.java b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyReadingCalcuteResult.java index 99e7c0eef..1f7929e1e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyReadingCalcuteResult.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyReadingCalcuteResult.java @@ -2,7 +2,9 @@ package com.iformall.domain.po; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.iformall.common.IdWorker; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumBillAllType; import com.iformall.enums.EnumYesOrNo; import com.iformall.utils.DateUtils; @@ -65,17 +67,47 @@ public class WxEnergyReadingCalcuteResult extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="费用标准ID",name="feesCalcuteId") private Long feesShopId; - @io.swagger.annotations.ApiModelProperty(value="表ID",name="meterId") - private Long meterId; - @Excel(name = "表号", width = 20, orderNum = "7") - @TableField(exist = false) - private String meterName; - @Excel(name = "金额", width = 20, orderNum = "8") @io.swagger.annotations.ApiModelProperty(value="金额",name="money") private String money; + @Excel(name = "详细说明", width = 20, orderNum = "8") + @io.swagger.annotations.ApiModelProperty(value="详细说明",name="moneyDeail") + private String moneyDeail; + @TableField(exist = false) private List shopIds; + public WxAllBill generateBill(WxEnergyReadingCalcute calcute,WxMerchant merchant,WxShop shop,MallUserInfo user,String needPay,String detail,String remark) { + WxAllBill daily = new WxAllBill(); + final IdWorker idWorker = IdWorker.get(); + daily.setId(idWorker.nextId()); + daily.updateTenantInfo(this); + daily.setMerchantId(merchant.getId()); + daily.setRentShopType(merchant.getType()); + daily.setCreatetime(new Date()); + daily.setCreateBy(user.getId()); + daily.setCreateByName(user.getName()); + daily.setUpdateBy(user.getId()); + daily.setUpdateByName(user.getName()); + daily.setUpdatetime(new Date()); + daily.setReceivePay(needPay); + daily.setNeedPay(needPay); + daily.setPay("0"); + daily.setStarttime(DateUtils.getDayBegin(new Date())); + daily.setEndtime(DateUtils.getDayEnd(new Date())); + daily.setOwe(needPay); + daily.setShopId(this.shopId); + daily.setShopNumber(shop.getShopNumber()); + daily.setBillType(EnumBillAllType.DAILY.getCode()); + daily.setEnergyFeesId(calcute.getFeesId()); + daily.setPriceDetail(detail); + daily.setServiceChargePay("0"); + daily.setBillRemark(remark); + daily.setIsPreview(EnumYesOrNo.NO.getCode()); + daily.setEnergyReadingCalcuteId(calcute.getId()); + daily.setEnergyReadingId(id); + return daily; + } + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxShop.java b/mallinkService/src/main/java/com/iformall/domain/po/WxShop.java index f7e5d2832..32b4d5149 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxShop.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxShop.java @@ -116,7 +116,7 @@ public class WxShop extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="管理人电话",name="managerPhone") private String managerPhone; - @io.swagger.annotations.ApiModelProperty(value = "类型", name = "type") + @io.swagger.annotations.ApiModelProperty(value = "类型EnumRentShopType", name = "type") private Integer type; diff --git a/mallinkService/src/main/java/com/iformall/service/WxEnergyService.java b/mallinkService/src/main/java/com/iformall/service/WxEnergyService.java index 5b713441f..8e13de70a 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxEnergyService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxEnergyService.java @@ -80,7 +80,7 @@ public interface WxEnergyService { void saveOrUpdateReadingCalcute(WxEnergyReadingCalcute record,MallUserInfo userInfo); PageInfo readingCalcuteResultListAsPage(WxEnergyReadingCalcuteResult record, Integer pageIndex, Integer pageSize); void exportReadingCalcuteResult(WxEnergyReadingCalcuteResult record,HttpServletRequest request, HttpServletResponse response); - Integer calcuteReading(WxEnergyReadingCalcute record, MallUserInfo user); + void createBill(WxEnergyReadingCalcute record, MallUserInfo user); void setReadingCalcuteIsDel(WxEnergyReadingCalcute record); List getReadingCalcuteShopNumber(WxEnergyReadingCalcute record); diff --git a/mallinkService/src/main/java/com/iformall/service/helper/WxEnergyHelper.java b/mallinkService/src/main/java/com/iformall/service/helper/WxEnergyHelper.java index 57cdc2574..5f31fcde4 100644 --- a/mallinkService/src/main/java/com/iformall/service/helper/WxEnergyHelper.java +++ b/mallinkService/src/main/java/com/iformall/service/helper/WxEnergyHelper.java @@ -45,7 +45,7 @@ public class WxEnergyHelper { return m; } - public static String calcuteMoney(WxEnergyFeesTime time,WxEnergyMeter meter,WxEnergyFeesShop shopfee) { + public static String calcuteMoney(StringBuffer sb,WxEnergyFeesTime time,List meterList,WxEnergyFeesShop shopfee) { return "0"; } 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 b9de82944..fe9a7df2a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxEnergyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxEnergyServiceImpl.java @@ -943,22 +943,23 @@ public class WxEnergyServiceImpl implements WxEnergyService { //循环店铺科目, for (int j = 0 ; j < shopFeesList.size() ; j ++) { WxEnergyFeesShop shopfee = shopFeesList.get(j); + WxEnergyReadingCalcuteResult cs = new WxEnergyReadingCalcuteResult(); + cs.updateTenantInfo(record); + cs.setId(idWorker.nextId()); + cs.setCalcuteId(record.getId()); + cs.setShopId(shopId); + cs.setCreateTime(new Date()); + cs.setUpdateTime(new Date()); + cs.setFeesId(shopfee.getFeesId()); + cs.setFeesShopId(shopfee.getId()); + StringBuffer sb = new StringBuffer(); + cs.setMoney(WxEnergyHelper.calcuteMoney(sb,time, meterList, shopfee)); + cs.setPeriod(record.getPeriod()); + cs.setMoney(sb.toString()); + resultList.add(cs); //查询每一个表的抄表数据,求和 for (int k = 0 ; k < meterList.size() ; k++) { - WxEnergyReadingCalcuteResult cs = new WxEnergyReadingCalcuteResult(); - cs.updateTenantInfo(record); - cs.setId(idWorker.nextId()); - cs.setCalcuteId(record.getId()); - cs.setShopId(shopId); - cs.setCreateTime(new Date()); - cs.setUpdateTime(new Date()); - cs.setFeesId(shopfee.getFeesId()); - cs.setFeesShopId(shopfee.getId()); - WxEnergyMeter meter = meterList.get(k); - cs.setMeterId(meter.getId()); - cs.setMoney(WxEnergyHelper.calcuteMoney(time, meter, shopfee)); - cs.setPeriod(record.getPeriod()); - resultList.add(cs); + } } } @@ -977,7 +978,6 @@ public class WxEnergyServiceImpl implements WxEnergyService { Map fessMap = this.getFeesMap(fq); Map floorMap = wxMallFloorService.getFloorMap(record); Map buildingMap = wxMallBuildingService.getBuildingMap(record); - List meterIdList = new ArrayList(); List shopIdList = new ArrayList(); for (int i = 0 ; i < page.getList().size(); i++) { WxEnergyReadingCalcuteResult c = page.getList().get(i); @@ -987,19 +987,8 @@ public class WxEnergyServiceImpl implements WxEnergyService { c.setFeesName(fees.getName()); } } - if (null != c.getMeterId()) { - meterIdList.add(c.getMeterId()); - } shopIdList.add(c.getShopId()); } - Map meterMap = null; - if (meterIdList.size() > 0 ) { - WxEnergyMeter mq = new WxEnergyMeter(); - mq.updateTenantInfo(record); - mq.setIds(meterIdList); - meterMap = this.getMeterMap(mq); - } - Map shopMap = null; if (shopIdList.size() > 0 ) { WxShop sq = new WxShop(); @@ -1009,12 +998,6 @@ public class WxEnergyServiceImpl implements WxEnergyService { } for (int i = 0 ; i < page.getList().size(); i++) { WxEnergyReadingCalcuteResult c = page.getList().get(i); - if (null != meterMap && null != c.getMeterId()) { - WxEnergyMeter m = meterMap.get(c.getMeterId()); - if (null != m) { - c.setMeterName(m.getName()); - } - } if (null != shopMap && null != c.getShopId()) { WxShop s = shopMap.get(c.getShopId()); if (null != s) { @@ -1129,45 +1112,61 @@ public class WxEnergyServiceImpl implements WxEnergyService { @Override - public Integer calcuteReading(WxEnergyReadingCalcute record, MallUserInfo user) { + public void createBill(WxEnergyReadingCalcute record, MallUserInfo user) { + + WxEnergyReadingCalcute calcute = wxEnergyReadingCalcuteMapper.selectById(record.getId(), record.getTenantId()); + + WxEnergyReadingCalcuteResult crq = new WxEnergyReadingCalcuteResult(); + crq.updateTenantInfo(record); + crq.setCalcuteId(calcute.getId()); + List shopIdList = wxEnergyReadingCalcuteResultMapper.findShopIdList(crq); + Map shopMap = null; + Map merchantMap = null; + if (shopIdList.size() > 0 ) { + WxShop sq = new WxShop(); + sq.updateTenantInfo(record); + sq.setIds(shopIdList); + shopMap = wxShopService.findShopMap(sq); + merchantMap = wxMerchantService.getShopMerchantMap(sq); + } -// //用户表列表 -// List readingList = wxEnergyMeterReadingMapper.findList(reading); -// if (null != readingList && readingList.size() > 0 ) { -// -// -// boolean allSuccess = true; -// if (billList.size() > 0 ) { -// try { -// //先把之前的未付的账单全部删除掉,已支付的账单先不处理 -// WxAllBill delDaily = new WxAllBill(); -// delDaily.updateTenantInfo(record); -// delDaily.setEnergyReadingCalcuteId(record.getId()); -// wxAllBillService.deleteEnergyReadingBills(delDaily); -// wxAllBillService.insertBills(record.getTenantId(), billList); -// }catch(Exception e) { -// logger.error("insert bills error.",e); -// allSuccess = false; -// } -// WxEnergyReadingCalcute c = new WxEnergyReadingCalcute(); -// c.updateTenantInfo(record); -// c.setId(record.getId()); -// c.setIsCalcuted(EnumYesOrNo.YES.getCode()); -// 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; + List resultList = wxEnergyReadingCalcuteResultMapper.findList(crq); + if (null != resultList && resultList.size() > 0 ) { + List billList = new ArrayList(); + for (int i = 0 ; i < resultList.size(); i++) { + WxEnergyReadingCalcuteResult result = resultList.get(i); + WxShop shop = null; + if (null != shopMap) { + shop = shopMap.get(result.getShopId()); + } + WxMerchant merchant = null; + if (null != merchantMap) { + merchant = merchantMap.get(result.getShopId()); + } + WxAllBill bill = result.generateBill(calcute, merchant, shop, user, result.getMoney(), result.getMoneyDeail(), "能源计算自动生成"); + billList.add(bill); + } + try { + //先把之前的未付的账单全部删除掉,已支付的账单先不处理 + WxAllBill delDaily = new WxAllBill(); + delDaily.updateTenantInfo(record); + delDaily.setEnergyReadingCalcuteId(record.getId()); + wxAllBillService.deleteEnergyReadingBills(delDaily); + wxAllBillService.insertBills(record.getTenantId(), billList); + }catch(Exception e) { + logger.error("insert bills error.",e); + } + WxEnergyReadingCalcute c = new WxEnergyReadingCalcute(); + c.updateTenantInfo(record); + c.setId(record.getId()); + c.setIsCalcuted(EnumYesOrNo.YES.getCode()); + c.setUpdateTime(new Date()); + c.setUpdateBy(user.getId()); + c.setUpdateByName(user.getName()); + c.setRemark(record.getRemark()); + wxEnergyReadingCalcuteMapper.updateById(c); + } } @Override diff --git a/mallinkService/src/main/resources/mapper/WxEnergyReadingCalcuteMapper.xml b/mallinkService/src/main/resources/mapper/WxEnergyReadingCalcuteMapper.xml index dae00949d..39b3f730c 100644 --- a/mallinkService/src/main/resources/mapper/WxEnergyReadingCalcuteMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxEnergyReadingCalcuteMapper.xml @@ -15,7 +15,6 @@ - @@ -23,7 +22,7 @@ `id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`create_by`,`create_by_name`, - `update_by`,`update_by_name`,`remark`,`period`,`fees_id`,`is_calcuted`,`calcute_success`,`is_del`,`shop_size`,`shop` + `update_by`,`update_by_name`,`remark`,`period`,`fees_id`,`is_calcuted`,`is_del`,`shop_size`,`shop` @@ -41,7 +40,6 @@ and `create_by` = #{createBy} and `fees_id` = #{feesId} and `is_calcuted` = #{isCalcuted} - and `calcute_success` = #{calcuteSuccess} and `is_del` = #{isDel} and fees_id in diff --git a/mallinkService/src/main/resources/mapper/WxEnergyReadingCalcuteResultMapper.xml b/mallinkService/src/main/resources/mapper/WxEnergyReadingCalcuteResultMapper.xml index 105ed0776..5c9bac628 100644 --- a/mallinkService/src/main/resources/mapper/WxEnergyReadingCalcuteResultMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxEnergyReadingCalcuteResultMapper.xml @@ -11,13 +11,13 @@ - + - `id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`calcute_id`,`shop_id`,`fees_id`,`fees_shop_id`,`meter_id`,`money`,`period` + `id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`calcute_id`,`shop_id`,`fees_id`,`fees_shop_id`,`money`,`period`,`money_deail` @@ -36,7 +36,6 @@ and `shop_id` = #{shopId} and `fees_id` = #{feesId} and `fees_shop_id` = #{feesShopId} - and `meter_id` = #{meterId} and id in @@ -73,7 +72,7 @@ ( #{item.id},#{item.tenantId},#{item.parentTenantId},#{item.createTime},#{item.updateTime},#{item.calcuteId}, - #{item.shopId},#{item.feesId},#{item.feesShopId},#{item.meterId},#{item.money},#{item.period} + #{item.shopId},#{item.feesId},#{item.feesShopId},#{item.money},#{item.period},#{item.moneyDeail} ) From afd6dd3d6a4d9af4db4297cfd51997b1adf41354 Mon Sep 17 00:00:00 2001 From: winter Date: Mon, 26 Aug 2024 22:00:14 +0800 Subject: [PATCH 04/17] fix --- .../com/iformall/controller/market/WxEnergyController.java | 6 +++++- .../com/iformall/service/impl/WxAllBillServiceImpl.java | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) 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 e15e65ffe..e72648ec7 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxEnergyController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxEnergyController.java @@ -51,6 +51,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.Calendar; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -430,7 +431,10 @@ public class WxEnergyController extends BaseController { @ApiOperation("费用区间自动时间") @GetMapping("periodAutoTimes") public ResultData periodAutoTimes(@ModelAttribute WxEnergyFeesTime record) { - return new ResultData(); + Map retMap = new HashMap(); + retMap.put("startTime", new Date()); + retMap.put("endTime", new Date()); + return new ResultData(retMap); } @ApiOperation("费用区间列表") diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java index 2e00b1297..20742eccd 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java @@ -802,7 +802,10 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill @Override public void exportBill(HttpServletRequest request, HttpServletResponse response, WxAllBill wxBillRent) { - String billName = wxBillRent.getRentShopType().equals(EnumRentShopType.SHOP.getCode()) ? "商铺租金账单" : "多经点位租金账单"; + String billName = "账单"; + if (null != wxBillRent.getRentShopType()) { + billName = wxBillRent.getRentShopType().equals(EnumRentShopType.SHOP.getCode()) ? "商铺租金账单" : "多经点位租金账单"; + } PageInfo billRentList = listAsPage(wxBillRent,1,10000); List datalist = new ArrayList(); if (null != billRentList && null != billRentList.getList()) { From c081ed340f8a81708374336f8930232cb87981ed Mon Sep 17 00:00:00 2001 From: winter Date: Tue, 27 Aug 2024 14:26:43 +0800 Subject: [PATCH 05/17] fix --- .../iformall/domain/po/WxEnergyFeesShop.java | 2 - .../domain/po/WxEnergyMeterReading.java | 2 + .../mapper/WxEnergyMeterReadingMapper.java | 4 + .../service/WxMallBuildingService.java | 2 + .../iformall/service/WxMallFloorService.java | 2 + .../service/helper/WxEnergyHelper.java | 179 +++++++++++++++--- .../service/impl/WxEnergyServiceImpl.java | 55 +++--- .../impl/WxMallBuildingServiceImpl.java | 7 +- .../service/impl/WxMallFloorServiceImpl.java | 9 + .../com/iformall/utils/FormulaParser.java | 76 ++++++++ ...aceholderExtractorWithPrefixAndSuffix.java | 32 ++++ .../mapper/WxEnergyMeterReadingMapper.xml | 12 ++ 12 files changed, 334 insertions(+), 48 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/utils/FormulaParser.java create mode 100644 mallinkService/src/main/java/com/iformall/utils/PlaceholderExtractorWithPrefixAndSuffix.java diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFeesShop.java b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFeesShop.java index 7d9beb6fd..b396058a1 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFeesShop.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFeesShop.java @@ -64,8 +64,6 @@ public class WxEnergyFeesShop extends TenantEntity { @TableField(exist = false) private List shopIds; @TableField(exist = false) - private List calcuteIds; - @TableField(exist = false) private String feesName; @TableField(exist = false) private String feesIdsStr; 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 84f3085f5..5df6c1982 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeterReading.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeterReading.java @@ -118,6 +118,8 @@ public class WxEnergyMeterReading extends TenantEntity { @TableField(exist = false) private List shopIds; @TableField(exist = false) + private List meterIds; + @TableField(exist = false) private String shopIdsStr; @TableField(exist = false) private Long timeId; diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxEnergyMeterReadingMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxEnergyMeterReadingMapper.java index a17172ad4..d6bbfbefc 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxEnergyMeterReadingMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxEnergyMeterReadingMapper.java @@ -4,6 +4,8 @@ import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxEnergyMeterReading; import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; import java.util.List; import java.util.Map; @@ -16,4 +18,6 @@ public interface WxEnergyMeterReadingMapper extends CommonMapper getBuildingList1(TenantEntity tenantEntity); ResultData getBuildingFloorList(WxMallBuilding wxMallBuilding,MallUserInfo mallUser); diff --git a/mallinkService/src/main/java/com/iformall/service/WxMallFloorService.java b/mallinkService/src/main/java/com/iformall/service/WxMallFloorService.java index 7bb163f6d..35263ac73 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMallFloorService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMallFloorService.java @@ -45,6 +45,8 @@ public interface WxMallFloorService { ResultData getFloorList(TenantEntity tenantEntity, Long buildingId); + List getBudingFloorList(TenantEntity tenantEntity, Long buildingId); + List getFloorIdList(WxMallFloor record); void deleteByBuildingId(Long buildingId); diff --git a/mallinkService/src/main/java/com/iformall/service/helper/WxEnergyHelper.java b/mallinkService/src/main/java/com/iformall/service/helper/WxEnergyHelper.java index 5f31fcde4..fa1413a5d 100644 --- a/mallinkService/src/main/java/com/iformall/service/helper/WxEnergyHelper.java +++ b/mallinkService/src/main/java/com/iformall/service/helper/WxEnergyHelper.java @@ -1,54 +1,187 @@ package com.iformall.service.helper; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.iformall.domain.po.WxEnergyFeesShop; import com.iformall.domain.po.WxEnergyFeesTime; import com.iformall.domain.po.WxEnergyMeter; +import com.iformall.domain.po.WxEnergyMeterReading; +import com.iformall.domain.po.WxMallBuilding; +import com.iformall.domain.po.WxMallFloor; +import com.iformall.domain.po.WxShop; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumYesOrNo; +import com.iformall.mapper.WxEnergyMeterReadingMapper; +import com.iformall.service.WxMallBuildingService; +import com.iformall.service.WxMallFloorService; +import com.iformall.utils.FormulaParser; +import com.iformall.utils.PlaceholderExtractorWithPrefixAndSuffix; +@Service public class WxEnergyHelper { + + @Autowired + WxEnergyMeterReadingMapper wxEnergyMeterReadingMapper; + @Lazy + @Autowired + private WxMallBuildingService wxMallBuildingService; + @Lazy + @Autowired + WxMallFloorService wxMallFloorService; - public static List> generateCalcuteComponent() { + public List> generateCalcuteComponent(TenantEntity tenantEntity) { //公共表,公摊总表,当前楼栋面积,当前楼层面积,总面积,店铺公摊系数 List> retList = new ArrayList>(); - Map currentBuildingArea = new HashMap(); - currentBuildingArea.put("name", "店铺所属楼栋总计租面积"); - currentBuildingArea.put("value", "{#currentBuildingArea#}"); - retList.add(currentBuildingArea); - - Map currentFloorArea = new HashMap(); - currentFloorArea.put("name", "店铺所属楼层总计租面积"); - currentFloorArea.put("value", "{#currentFloorArea#}"); - retList.add(currentFloorArea); - - Map totalArea = new HashMap(); - totalArea.put("name", "商场总计租面积"); - totalArea.put("value", "{#totalArea#}"); - retList.add(totalArea); - + List buildingList = wxMallBuildingService.getBuildingList1(tenantEntity); + if (null != buildingList && buildingList.size() > 0 ) { + for (int i = 0 ; i < buildingList.size(); i++) { + WxMallBuilding mb = buildingList.get(i); + addComponent(retList, "楼栋("+mb.getBuildingName()+")面积", "{#buildingArea_"+mb.getId()+"#}"); + + List floorList = wxMallFloorService.getBudingFloorList(tenantEntity, mb.getId()); + if (null != floorList && floorList.size() > 0 ) { + for (int j = 0 ; j < floorList.size(); j++ ) { + WxMallFloor floor = floorList.get(j); + addComponent(retList, "楼层("+mb.getBuildingName()+floor.getFloorName()+")面积", "{#floorArea_"+floor.getId()+"#}"); + } + } + } + } + addComponent(retList, "商场总计租面积", "{#totalArea#}"); + addComponent(retList, "店铺公摊系数", "{#shopPublicRax#}"); + return retList; + } + + private void addComponent(List> retList, String name, String value) { Map calcuteRax = new HashMap(); - calcuteRax.put("name", "公摊系数"); - calcuteRax.put("value", "{#calcuteRax#}"); + calcuteRax.put("name", name); + calcuteRax.put("value", value); retList.add(calcuteRax); - - return retList; } - public static Map generateMeterComponent(WxEnergyMeter meter) { + public Map generateMeterComponent(WxEnergyMeter meter) { Map m = new HashMap(); m.put("name", meter.getName()); m.put("value", "{#meter_"+meter.getId()+"#}"); return m; } - public static String calcuteMoney(StringBuffer sb,WxEnergyFeesTime time,List meterList,WxEnergyFeesShop shopfee) { - return "0"; + private String replaceFormulaData(String formula,BigDecimal totalArea,WxShop shop,Map buildingAreaMap, + Map floorMap,Map meterNumberMap) { + if (StringUtils.isBlank(formula)) { + return null; + } + List buildingAreaList = PlaceholderExtractorWithPrefixAndSuffix.extractPlaceholders(formula, "#buildingArea_", "#"); + List floorAreaList = PlaceholderExtractorWithPrefixAndSuffix.extractPlaceholders(formula, "#floorArea_", "#"); + List meterList = PlaceholderExtractorWithPrefixAndSuffix.extractPlaceholders(formula, "#meter_", "#"); + if (null != buildingAreaMap && null != buildingAreaList && buildingAreaList.size() > 0 ) { + for (int i = 0 ; i < buildingAreaList.size(); i ++) { + String buildArea = buildingAreaList.get(i); + String[] bs = buildArea.split("_"); + if (null != bs && bs.length > 1) { + BigDecimal buildingArea = buildingAreaMap.get(Long.parseLong(bs[1])); + if (null != buildingArea) { + formula = formula.replaceAll("{#buildingArea_"+Long.parseLong(bs[1])+"#}", buildingArea.toPlainString()); + } + } + } + } + + if (null != floorMap && null != floorAreaList && floorAreaList.size() > 0 ) { + for (int i = 0 ; i < floorAreaList.size(); i ++) { + String floorArea = floorAreaList.get(i); + String[] bs = floorArea.split("_"); + if (null != bs && bs.length > 1) { + WxMallFloor floor = floorMap.get(Long.parseLong(bs[1])); + if (null != floor && null != floor.getOperatingArea()) { + formula = formula.replaceAll("{#floorArea_"+Long.parseLong(bs[1])+"#}", floor.getOperatingArea().toPlainString()); + } + } + + } + } + + if (null != meterNumberMap && null != meterList && meterList.size() > 0 ) { + for (int i = 0 ; i < meterList.size(); i ++) { + String meter = meterList.get(i); + String[] bs = meter.split("_"); + if (null != bs && bs.length > 1) { + BigDecimal mu = meterNumberMap.get(Long.parseLong(bs[1])); + if (null != mu ) { + formula = formula.replaceAll("{#meter_"+Long.parseLong(bs[1])+"#}", mu.toPlainString()); + } + } + } + } + formula = formula.replaceAll("{#totalArea#}", totalArea.toPlainString()); + formula = formula.replaceAll("{#shopPublicRax#}", shop.getBuildArea()); + return formula; + } + + /** + * 计算金额 + * 1. 如果是用户表: + * 根据店铺所有表的总度数 * 科目单价计算费用 + * + * 2. 如果是公摊: + * 根据科目公式进行计算。 + * + * @param sb + * @param time + * @param meterList + * @param shopfee + * @return + */ + public String calcuteMoney(StringBuffer sb,BigDecimal totalArea,WxShop shop,WxEnergyFeesTime time,List meterList,WxEnergyFeesShop shopfee, + Map buildingAreaMap,Map floorMap,Map meterNumberMap) { + if (StringUtils.isBlank(shopfee.getPrice())) { + return "0"; + } + if (shopfee.getIsPublic() == EnumYesOrNo.YES.getCode()) { + //替代占位符为真实数据 + // + String formula = replaceFormulaData(shopfee.getFormula(),totalArea,shop,buildingAreaMap,floorMap,meterNumberMap); + if (null != formula) { + return new BigDecimal(FormulaParser.evaluate(formula)).setScale(2,BigDecimal.ROUND_HALF_UP).toPlainString(); + } + return "0"; + }else { + if (null == meterList || meterList.size() <= 0 ) { + return "0"; + } + List meterIdList = new ArrayList(); + for (int i = 0 ; i < meterList.size(); i++) { + WxEnergyMeter meter = meterList.get(i); + meterIdList.add(meter.getId()); + } + + //根据表,区间的开始日期,结束日期来查询抄表数据。 + WxEnergyMeterReading mrq = new WxEnergyMeterReading(); + mrq.updateTenantInfo(shopfee); + mrq.setMeterIds(meterIdList); + BigDecimal totalNumber = wxEnergyMeterReadingMapper.findNumberSum(mrq); + if (null == totalNumber || totalNumber.compareTo(new BigDecimal(0)) <= 0 ) { + return "0"; + } + sb.append("表总度数"+totalNumber.toPlainString()+",单价:"+shopfee.getPrice()); + return totalNumber.multiply(new BigDecimal(shopfee.getPrice())).setScale(2,BigDecimal.ROUND_HALF_UP).toPlainString(); + + } } + public void testCalcute(String formula) { + + } } 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 fe9a7df2a..b05c58d70 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxEnergyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxEnergyServiceImpl.java @@ -75,6 +75,8 @@ public class WxEnergyServiceImpl implements WxEnergyService { WxEnergyReadingCalcuteMapper wxEnergyReadingCalcuteMapper; @Autowired WxEnergyReadingCalcuteResultMapper wxEnergyReadingCalcuteResultMapper; + @Autowired + WxEnergyHelper wxEnergyHelper; @Lazy @Autowired @@ -531,7 +533,7 @@ public class WxEnergyServiceImpl implements WxEnergyService { @Override public List> getFeesCalcuteComponentList(WxEnergyFeesShop record) { - List> retList = WxEnergyHelper.generateCalcuteComponent(); + List> retList = wxEnergyHelper.generateCalcuteComponent(record); //公共表,公摊总表,当前楼栋面积,当前楼层面积,总面积,店铺公摊系数 WxEnergyMeter mq = new WxEnergyMeter(); mq.updateTenantInfo(record); @@ -543,7 +545,7 @@ public class WxEnergyServiceImpl implements WxEnergyService { if (null != page && null != page.getList() ) { for (int i = 0 ; i < page.getList().size() ; i ++) { WxEnergyMeter meter = page.getList().get(i); - retList.add(WxEnergyHelper.generateMeterComponent(meter)); + retList.add(wxEnergyHelper.generateMeterComponent(meter)); } } return retList; @@ -557,21 +559,19 @@ public class WxEnergyServiceImpl implements WxEnergyService { WxEnergyFees fees = this.getFeesById(record.getFeesId(),record.getTenantId()); for (int i = 0 ; i < record.getShopIds().size(); i ++) { Long shopId = record.getShopIds().get(i); - for (int j = 0 ; j < record.getCalcuteIds().size(); j ++) { - Long calcuteId = record.getCalcuteIds().get(j); - WxEnergyFeesShop msf = new WxEnergyFeesShop(); - msf.updateTenantInfo(record); - msf.setId(idWorker.nextId()); - msf.setCreateTime(date); - msf.setUpdateTime(date); - msf.setShopId(shopId); - msf.setIsPublic(fees.getIsPublic()); - msf.setFeesId(fees.getId()); - msf.setPrice(fees.getPrice()); - msf.setFormula(record.getFormula()); - msf.setFormulaContent(record.getFormulaContent()); - wxEnergyFeesShopMapper.insert(msf); - } + WxEnergyFeesShop msf = new WxEnergyFeesShop(); + msf.updateTenantInfo(record); + msf.setId(idWorker.nextId()); + msf.setCreateTime(date); + msf.setUpdateTime(date); + msf.setShopId(shopId); + msf.setIsPublic(fees.getIsPublic()); + msf.setFeesId(fees.getId()); + msf.setPrice(fees.getPrice()); + msf.setFormulaContent(record.getFormulaContent()); + msf.setFormula(record.getFormula()); + wxEnergyHelper.testCalcute(record.getFormula()); + wxEnergyFeesShopMapper.insert(msf); } } @@ -593,9 +593,11 @@ public class WxEnergyServiceImpl implements WxEnergyService { record.setId(idWorker.nextId()); record.setCreateTime(date); record.setUpdateTime(date); + wxEnergyHelper.testCalcute(record.getFormula()); wxEnergyFeesShopMapper.insert(record); }else { record.setUpdateTime(date); + wxEnergyHelper.testCalcute(record.getFormula()); wxEnergyFeesShopMapper.updateById(record); } } @@ -899,9 +901,22 @@ public class WxEnergyServiceImpl implements WxEnergyService { public void generateCalcuteResult(WxEnergyFees fees,WxEnergyReadingCalcute record,List shopIds,EnumEnergyMeterPhysicsType type) { final IdWorker idWorker = IdWorker.get(); + WxShop shq = new WxShop(); + shq.updateTenantInfo(record); + shq.setIds(shopIds); + Map shopMap = wxShopService.findShopMap(shq); + //TODO 总共面积 + BigDecimal totalArea = null; + //TODO 楼栋的面积 + Map buildingAreaMap = null; + //TODO 楼层 + Map floorMap = null; + //TODO 公摊总表的读数 + Map meterNumberMap = null; List resultList = new ArrayList(); for (int i = 0 ; i < shopIds.size(); i ++) { Long shopId= shopIds.get(i); + WxShop shop = shopMap.get(shopId); //根据店铺,所属年月去查询时间区间.根据店铺,时间区间去查对应的抄表数据,根据表来计算总和 WxEnergyFeesTimeShop sq = new WxEnergyFeesTimeShop(); sq.updateTenantInfo(record); @@ -953,14 +968,10 @@ public class WxEnergyServiceImpl implements WxEnergyService { cs.setFeesId(shopfee.getFeesId()); cs.setFeesShopId(shopfee.getId()); StringBuffer sb = new StringBuffer(); - cs.setMoney(WxEnergyHelper.calcuteMoney(sb,time, meterList, shopfee)); + cs.setMoney(wxEnergyHelper.calcuteMoney(sb,totalArea,shop,time, meterList, shopfee,buildingAreaMap,floorMap,meterNumberMap)); cs.setPeriod(record.getPeriod()); cs.setMoney(sb.toString()); resultList.add(cs); - //查询每一个表的抄表数据,求和 - for (int k = 0 ; k < meterList.size() ; k++) { - - } } } if (resultList.size() > 0 ) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMallBuildingServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMallBuildingServiceImpl.java index cadfe0239..637c1d439 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMallBuildingServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMallBuildingServiceImpl.java @@ -113,10 +113,15 @@ public class WxMallBuildingServiceImpl implements WxMallBuildingService { @Override public ResultData getBuildingList(TenantEntity tenantEntity) { + return new ResultData(getBuildingList1(tenantEntity)); + } + + @Override + public List getBuildingList1(TenantEntity tenantEntity) { WxMallBuilding wxMallBuilding = new WxMallBuilding(); wxMallBuilding.updateTenantInfo(tenantEntity); List list = wxMallBuildingMapper.findList(wxMallBuilding); - return new ResultData(list); + return list; } @Override diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMallFloorServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMallFloorServiceImpl.java index ea351486c..36a7b4838 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMallFloorServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMallFloorServiceImpl.java @@ -70,6 +70,15 @@ public class WxMallFloorServiceImpl implements WxMallFloorService { return new ResultData(list); } + @Override + public List getBudingFloorList(TenantEntity tenantEntity, Long buildingId) { + WxMallFloor wxMallFloor = new WxMallFloor(); + wxMallFloor.updateTenantInfo(tenantEntity); + wxMallFloor.setBuildingId(buildingId); + List list = wxMallFloorMapper.findList(wxMallFloor); + return list; + } + @Override public List getFloorIdList(WxMallFloor record) { return wxMallFloorMapper.getFloorIds(record); diff --git a/mallinkService/src/main/java/com/iformall/utils/FormulaParser.java b/mallinkService/src/main/java/com/iformall/utils/FormulaParser.java new file mode 100644 index 000000000..519603913 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/utils/FormulaParser.java @@ -0,0 +1,76 @@ +package com.iformall.utils; + +import java.util.Stack; + +public class FormulaParser { + + public static double evaluate(String formula) { + Stack values = new Stack<>(); + Stack operators = new Stack<>(); + + for (int i = 0; i < formula.length(); i++) { + char c = formula.charAt(i); + + if (Character.isDigit(c) || c == '.') { + StringBuilder numBuilder = new StringBuilder(); + while (i < formula.length() && (Character.isDigit(formula.charAt(i)) || formula.charAt(i) == '.')) { + numBuilder.append(formula.charAt(i)); + i++; + } + i--; + values.push(Double.parseDouble(numBuilder.toString())); + } else if (c == '(') { + operators.push(c); + } else if (c == ')') { + while (operators.peek()!= '(') { + performOperation(values, operators); + } + operators.pop(); + } else if (c == '+' || c == '-') { + while (!operators.isEmpty() && (operators.peek() == '*' || operators.peek() == '/')) { + performOperation(values, operators); + } + operators.push(c); + } else if (c == '*' || c == '/') { + operators.push(c); + } + } + + while (!operators.isEmpty()) { + performOperation(values, operators); + } + + return values.pop(); + } + + public static void performOperation(Stack values, Stack operators) { + double num2 = values.pop(); + double num1 = values.pop(); + char op = operators.pop(); + + switch (op) { + case '+': + values.push(num1 + num2); + break; + case '-': + values.push(num1 - num2); + break; + case '*': + values.push(num1 * num2); + break; + case '/': + if (num2!= 0) { + values.push(num1 / num2); + } else { + throw new ArithmeticException("除数不能为 0"); + } + break; + } + } + + public static void main(String[] args) { + String formula = "((2 + 3.2) * 4.1 / 3 - 5.6/2) / 2"; + double result = evaluate(formula); + System.out.println("结果: " + result); + } +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/utils/PlaceholderExtractorWithPrefixAndSuffix.java b/mallinkService/src/main/java/com/iformall/utils/PlaceholderExtractorWithPrefixAndSuffix.java new file mode 100644 index 000000000..06c8d01cd --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/utils/PlaceholderExtractorWithPrefixAndSuffix.java @@ -0,0 +1,32 @@ +package com.iformall.utils; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class PlaceholderExtractorWithPrefixAndSuffix { + + public static List extractPlaceholders(String text, String prefix, String suffix) { + List placeholders = new ArrayList<>(); + String pattern = "\\{" + prefix + "[^}]*" + suffix + "\\}"; + Pattern regex = Pattern.compile(pattern); + Matcher matcher = regex.matcher(text); + + while (matcher.find()) { + placeholders.add(matcher.group()); + } + + return placeholders; + } + + public static void main(String[] args) { + String text = "This is a {prefix_value_suffix} and another {prefix_another_suffix}."; + String prefix = "prefix"; + String suffix = "_suffix"; + + List extractedPlaceholders = extractPlaceholders(text, prefix, suffix); + for (String placeholder : extractedPlaceholders) { + System.out.println(placeholder); + } + } +} \ No newline at end of file diff --git a/mallinkService/src/main/resources/mapper/WxEnergyMeterReadingMapper.xml b/mallinkService/src/main/resources/mapper/WxEnergyMeterReadingMapper.xml index 05e78d647..ce98be8f2 100644 --- a/mallinkService/src/main/resources/mapper/WxEnergyMeterReadingMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxEnergyMeterReadingMapper.xml @@ -49,6 +49,12 @@ and meter_name like concat('%', #{meterName},'%') and `is_del` = #{isDel} and create_by_name like concat('%', #{createByName},'%') + + and meter_id in + + #{midItem} + + and shop_id in @@ -80,6 +86,12 @@ update wx_energy_meter_reading set is_del = #{isDel} where id = #{id} and `tenant_id` = #{tenantId} + + From 49f3e0a498e12c88d82ee808fc12177c6b8af626 Mon Sep 17 00:00:00 2001 From: winter Date: Tue, 27 Aug 2024 17:41:57 +0800 Subject: [PATCH 06/17] fix --- .../java/com/iformall/service/helper/WxBillAllHelper.java | 6 +++++- .../com/iformall/service/impl/WxAllBillServiceImpl.java | 6 +++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/helper/WxBillAllHelper.java b/mallinkService/src/main/java/com/iformall/service/helper/WxBillAllHelper.java index 429f17b22..54403b316 100644 --- a/mallinkService/src/main/java/com/iformall/service/helper/WxBillAllHelper.java +++ b/mallinkService/src/main/java/com/iformall/service/helper/WxBillAllHelper.java @@ -360,12 +360,16 @@ public class WxBillAllHelper { * 那是之前的账单,不处理。 * @param merchant */ - public boolean billEndCalcute(Integer decimalSize,Date endTime,WxAllBill bill,WxBillAction action, boolean isAllReturn) { + public boolean billEndCalcute(Integer decimalSize,Date endTime,WxAllBill bill,WxBillAction action) { String endTimeStr = DateUtils.date2String(endTime,DateUtils.DATE_TIME_PATTERN); boolean isUpdate = false; action.setBillId(bill.getId()); action.setBillType(bill.getBillType()); String oldReceivePay = bill.getReceivePay(); + boolean isAllReturn = false; + if (EnumBillAllType.getEnum(bill.getBillType()).isDeposit()) { + isAllReturn = true; + } //如果账单的开始时间在结束时间之后,已经支付了的要退回。 if (!bill.getStarttime().before(endTime)) { bill.setReceivePay("0"); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java index 20742eccd..dad00c91e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java @@ -562,7 +562,7 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill for (int i = 0 ; i < brList.size() ; i ++ ) { WxAllBill brent = brList.get(i); WxBillAction action = new WxBillAction(); - boolean isUpdate = wxBillAllHelper.billEndCalcute(rentContract.getDecimalSize(),rentContract.getEndContractTime(), brent, action, false); + boolean isUpdate = wxBillAllHelper.billEndCalcute(rentContract.getDecimalSize(),rentContract.getEndContractTime(), brent, action); if (isUpdate) { realRentList.add(brent); actionList.add(action); @@ -603,7 +603,7 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill for (int i = 0 ; i < brList.size() ; i ++ ) { WxAllBill brent = brList.get(i); WxBillAction action = new WxBillAction(); - boolean isUpdate = wxBillAllHelper.billEndCalcute(propertyContract.getDecimalSize() ,propertyContract.getEndContractTime(), brent, action, false); + boolean isUpdate = wxBillAllHelper.billEndCalcute(propertyContract.getDecimalSize() ,propertyContract.getEndContractTime(), brent, action); if (isUpdate) { realRentList.add(brent); actionList.add(action); @@ -642,7 +642,7 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill for (int i = 0 ; i < brList.size() ; i ++ ) { WxAllBill brent = brList.get(i); WxBillAction action = new WxBillAction(); - boolean isUpdate = wxBillAllHelper.billEndCalcute(2,current, brent, action, false); + boolean isUpdate = wxBillAllHelper.billEndCalcute(2,current, brent, action); if (isUpdate) { realRentList.add(brent); actionList.add(action); From f722473cec6f913f2b7c036d7dbe3030b198ca38 Mon Sep 17 00:00:00 2001 From: winter Date: Tue, 27 Aug 2024 19:26:33 +0800 Subject: [PATCH 07/17] fix --- .../iformall/mapper/WxEnergyMeterMapper.java | 2 + .../service/helper/WxEnergyHelper.java | 56 ++++++++---- .../service/impl/WxEnergyServiceImpl.java | 85 +++++++++++++------ .../resources/mapper/WxEnergyMeterMapper.xml | 6 ++ 4 files changed, 106 insertions(+), 43 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxEnergyMeterMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxEnergyMeterMapper.java index 9f3d20e84..236f10bfa 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxEnergyMeterMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxEnergyMeterMapper.java @@ -10,6 +10,8 @@ import java.util.List; public interface WxEnergyMeterMapper extends CommonMapper { List findList(WxEnergyMeter wxBillRent); + + List findIdList(WxEnergyMeter wxBillRent); WxEnergyMeter selectById(@Param("id")Long id,@Param("tenantId")String tenantId); diff --git a/mallinkService/src/main/java/com/iformall/service/helper/WxEnergyHelper.java b/mallinkService/src/main/java/com/iformall/service/helper/WxEnergyHelper.java index fa1413a5d..bf8958010 100644 --- a/mallinkService/src/main/java/com/iformall/service/helper/WxEnergyHelper.java +++ b/mallinkService/src/main/java/com/iformall/service/helper/WxEnergyHelper.java @@ -3,6 +3,7 @@ package com.iformall.service.helper; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; @@ -11,6 +12,7 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; +import com.iformall.domain.po.WxEnergyFees; import com.iformall.domain.po.WxEnergyFeesShop; import com.iformall.domain.po.WxEnergyFeesTime; import com.iformall.domain.po.WxEnergyMeter; @@ -19,7 +21,9 @@ import com.iformall.domain.po.WxMallBuilding; import com.iformall.domain.po.WxMallFloor; import com.iformall.domain.po.WxShop; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumEnergyMeterPhysicsType; import com.iformall.enums.EnumYesOrNo; +import com.iformall.mapper.WxEnergyMeterMapper; import com.iformall.mapper.WxEnergyMeterReadingMapper; import com.iformall.service.WxMallBuildingService; import com.iformall.service.WxMallFloorService; @@ -31,6 +35,8 @@ public class WxEnergyHelper { @Autowired WxEnergyMeterReadingMapper wxEnergyMeterReadingMapper; + @Autowired + WxEnergyMeterMapper wxEnergyMeterMapper; @Lazy @Autowired private WxMallBuildingService wxMallBuildingService; @@ -77,7 +83,7 @@ public class WxEnergyHelper { } private String replaceFormulaData(String formula,BigDecimal totalArea,WxShop shop,Map buildingAreaMap, - Map floorMap,Map meterNumberMap) { + Map floorAreaMap,Map meterNumberMap) { if (StringUtils.isBlank(formula)) { return null; } @@ -97,14 +103,14 @@ public class WxEnergyHelper { } } - if (null != floorMap && null != floorAreaList && floorAreaList.size() > 0 ) { + if (null != floorAreaMap && null != floorAreaList && floorAreaList.size() > 0 ) { for (int i = 0 ; i < floorAreaList.size(); i ++) { String floorArea = floorAreaList.get(i); String[] bs = floorArea.split("_"); if (null != bs && bs.length > 1) { - WxMallFloor floor = floorMap.get(Long.parseLong(bs[1])); - if (null != floor && null != floor.getOperatingArea()) { - formula = formula.replaceAll("{#floorArea_"+Long.parseLong(bs[1])+"#}", floor.getOperatingArea().toPlainString()); + BigDecimal floorarea = floorAreaMap.get(Long.parseLong(bs[1])); + if (null != floorarea) { + formula = formula.replaceAll("{#floorArea_"+Long.parseLong(bs[1])+"#}", floorarea.toPlainString()); } } @@ -142,33 +148,49 @@ public class WxEnergyHelper { * @param shopfee * @return */ - public String calcuteMoney(StringBuffer sb,BigDecimal totalArea,WxShop shop,WxEnergyFeesTime time,List meterList,WxEnergyFeesShop shopfee, - Map buildingAreaMap,Map floorMap,Map meterNumberMap) { + public String calcuteMoney(StringBuffer sb,BigDecimal totalArea,WxShop shop,WxEnergyFeesTime time,WxEnergyFees fees, WxEnergyFeesShop shopfee, + List userMeterList,Map> summaryMeterMap,Map buildingAreaMap,Map floorAreaMap) { if (StringUtils.isBlank(shopfee.getPrice())) { return "0"; } if (shopfee.getIsPublic() == EnumYesOrNo.YES.getCode()) { //替代占位符为真实数据 - // - String formula = replaceFormulaData(shopfee.getFormula(),totalArea,shop,buildingAreaMap,floorMap,meterNumberMap); + //公摊总表数据,根据公摊总表下的公共表来查询所有的读数 + Map meterNumberMap = null; + if (null != summaryMeterMap) { + meterNumberMap = new HashMap(); + for (Iterator it = summaryMeterMap.keySet().iterator(); it.hasNext();) { + Long sumaryMeterId = it.next(); + List childmids = summaryMeterMap.get(sumaryMeterId); + //查询子表的总读数 + WxEnergyMeterReading mrq = new WxEnergyMeterReading(); + mrq.updateTenantInfo(shopfee); + mrq.setMeterIds(childmids); + mrq.setStartTime(time.getStartTime()); + mrq.setEndTime(time.getEndTime()); + BigDecimal totalNumber = wxEnergyMeterReadingMapper.findNumberSum(mrq); + if (null == totalNumber || totalNumber.compareTo(new BigDecimal(0)) <= 0 ) { + totalNumber = new BigDecimal(0); + } + meterNumberMap.put(sumaryMeterId, totalNumber); + } + } + String formula = replaceFormulaData(shopfee.getFormula(),totalArea,shop,buildingAreaMap,floorAreaMap,meterNumberMap); if (null != formula) { return new BigDecimal(FormulaParser.evaluate(formula)).setScale(2,BigDecimal.ROUND_HALF_UP).toPlainString(); } return "0"; }else { - if (null == meterList || meterList.size() <= 0 ) { + + if (null == userMeterList || userMeterList.size() <= 0 ) { return "0"; } - List meterIdList = new ArrayList(); - for (int i = 0 ; i < meterList.size(); i++) { - WxEnergyMeter meter = meterList.get(i); - meterIdList.add(meter.getId()); - } - //根据表,区间的开始日期,结束日期来查询抄表数据。 WxEnergyMeterReading mrq = new WxEnergyMeterReading(); mrq.updateTenantInfo(shopfee); - mrq.setMeterIds(meterIdList); + mrq.setMeterIds(userMeterList); + mrq.setStartTime(time.getStartTime()); + mrq.setEndTime(time.getEndTime()); BigDecimal totalNumber = wxEnergyMeterReadingMapper.findNumberSum(mrq); if (null == totalNumber || totalNumber.compareTo(new BigDecimal(0)) <= 0 ) { return "0"; 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 b05c58d70..e1a4e8703 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxEnergyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxEnergyServiceImpl.java @@ -538,7 +538,7 @@ public class WxEnergyServiceImpl implements WxEnergyService { WxEnergyMeter mq = new WxEnergyMeter(); mq.updateTenantInfo(record); List ptylist = new ArrayList(); - ptylist.add(EnumEnergyMeterPhysicsType.PUBLIC.getCode()); + //ptylist.add(EnumEnergyMeterPhysicsType.PUBLIC.getCode()); ptylist.add(EnumEnergyMeterPhysicsType.SUMMARY.getCode()); mq.setPhysicsTypeList(ptylist); PageInfo page = this.meterListAsPage(mq,1,1000); @@ -881,12 +881,7 @@ public class WxEnergyServiceImpl implements WxEnergyService { try { wxEnergyReadingCalcuteMapper.insert(record); WxEnergyFees fees = this.getFeesById(record.getFeesId(),record.getTenantId()); - if (fees.getIsPublic() == EnumYesOrNo.YES.getCode()) { - generateCalcuteResult(fees, record, record.getShopIds(), EnumEnergyMeterPhysicsType.PUBLIC); - }else { - generateCalcuteResult(fees, record, record.getShopIds(), EnumEnergyMeterPhysicsType.USER); - } - + generateCalcuteResult(fees, record, record.getShopIds()); } catch (Exception e) { logger.error("保存租赁账单失败,e:" + e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); @@ -899,20 +894,68 @@ public class WxEnergyServiceImpl implements WxEnergyService { } } - public void generateCalcuteResult(WxEnergyFees fees,WxEnergyReadingCalcute record,List shopIds,EnumEnergyMeterPhysicsType type) { + public void generateCalcuteResult(WxEnergyFees fees,WxEnergyReadingCalcute record,List shopIds) { final IdWorker idWorker = IdWorker.get(); WxShop shq = new WxShop(); shq.updateTenantInfo(record); shq.setIds(shopIds); Map shopMap = wxShopService.findShopMap(shq); - //TODO 总共面积 - BigDecimal totalArea = null; - //TODO 楼栋的面积 + // 总共面积 + BigDecimal totalArea = new BigDecimal(0); + // 楼栋的面积 Map buildingAreaMap = null; - //TODO 楼层 - Map floorMap = null; - //TODO 公摊总表的读数 - Map meterNumberMap = null; + //楼层 + Map floorAreaMap = null; + WxMallFloor fq = new WxMallFloor(); + fq.updateTenantInfo(record); + List floorList = wxMallFloorService.getBudingFloorList(fq, null); + if (null != floorList && floorList.size() > 0 ) { + floorAreaMap = new HashMap(); + buildingAreaMap = new HashMap(); + for (int i = 0 ; i < floorList.size() ; i ++) { + WxMallFloor floor = floorList.get(i); + if (null != floor.getOperatingArea()) { + floorAreaMap.put(floor.getId(), floor.getOperatingArea()); + BigDecimal bud = buildingAreaMap.get(floor.getBuildingId()); + if (null == bud) { + bud = new BigDecimal(0); + } + bud = bud.add(floor.getOperatingArea()); + buildingAreaMap.put(floor.getBuildingId(), bud); + totalArea = totalArea.add(floor.getOperatingArea()); + } + } + } + //用户表 + WxEnergyMeter mq = new WxEnergyMeter(); + mq.updateTenantInfo(record); + mq.setType(fees.getType()); + mq.setPhysicsType(EnumEnergyMeterPhysicsType.USER.getCode()); + List meterList = wxEnergyMeterMapper.findIdList(mq); + //查询公摊表 + Map> summaryMeterMap = null; + if (fees.getIsPublic() == EnumYesOrNo.YES.getCode()) { + WxEnergyMeter sumq = new WxEnergyMeter(); + sumq.updateTenantInfo(record); + sumq.setType(fees.getType()); + sumq.setPhysicsType(EnumEnergyMeterPhysicsType.SUMMARY.getCode()); + List sumeterList = wxEnergyMeterMapper.findList(mq); + if (null != sumeterList && sumeterList.size() > 0 ) { + summaryMeterMap = new HashMap>(); + for (int i = 0 ; i < meterList.size(); i ++) { + WxEnergyMeter summaryMeter = sumeterList.get(i); + //查询总表下的子表 + WxEnergyMeterChild mcq = new WxEnergyMeterChild(); + mcq.updateTenantInfo(record); + mcq.setParentMeterId(summaryMeter.getId()); + List childMeterIds = wxEnergyMeterChildMapper.findChildMeterIdList(mcq); + if (null != childMeterIds && childMeterIds.size() > 0 ) { + summaryMeterMap.put(summaryMeter.getId(), childMeterIds); + } + } + } + } + List resultList = new ArrayList(); for (int i = 0 ; i < shopIds.size(); i ++) { Long shopId= shopIds.get(i); @@ -945,16 +988,6 @@ public class WxEnergyServiceImpl implements WxEnergyService { return; } - //根据店铺去查询表 - WxEnergyMeter mq = new WxEnergyMeter(); - mq.updateTenantInfo(record); - mq.setType(fees.getType()); - mq.setPhysicsType(type.getCode()); - List meterList = wxEnergyMeterMapper.findList(mq); - if (null == meterList || meterList.size() <= 0 ) { - return; - } - //循环店铺科目, for (int j = 0 ; j < shopFeesList.size() ; j ++) { WxEnergyFeesShop shopfee = shopFeesList.get(j); @@ -968,7 +1001,7 @@ public class WxEnergyServiceImpl implements WxEnergyService { cs.setFeesId(shopfee.getFeesId()); cs.setFeesShopId(shopfee.getId()); StringBuffer sb = new StringBuffer(); - cs.setMoney(wxEnergyHelper.calcuteMoney(sb,totalArea,shop,time, meterList, shopfee,buildingAreaMap,floorMap,meterNumberMap)); + cs.setMoney(wxEnergyHelper.calcuteMoney(sb,totalArea,shop,time, fees, shopfee,meterList,summaryMeterMap,buildingAreaMap,floorAreaMap)); cs.setPeriod(record.getPeriod()); cs.setMoney(sb.toString()); resultList.add(cs); diff --git a/mallinkService/src/main/resources/mapper/WxEnergyMeterMapper.xml b/mallinkService/src/main/resources/mapper/WxEnergyMeterMapper.xml index 99520a0fd..d13d1a1c6 100644 --- a/mallinkService/src/main/resources/mapper/WxEnergyMeterMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxEnergyMeterMapper.xml @@ -56,6 +56,12 @@ + +