diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java index 38021b1ea..8d48c22c0 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java @@ -923,10 +923,12 @@ public class WxRentContractController extends WxContractBaseController { } //查询合同年限已输入销售额情况 - @GetMapping("getContractYearsSales") - public ResultData getContractYearsSales(@ModelAttribute WxRentContract wxRentContract) { + @PostMapping("getContractYearsSales") + public ResultData getContractYearsSales(@RequestBody WxRentContract wxRentContract) { if (null == wxRentContract) wxRentContract = new WxRentContract(); WxRentContract rentContract = wxRentContractMapper.selectById(wxRentContract.getId()); + rentContract.setYearsBegin(wxRentContract.getYearsBegin()); + rentContract.setYearsEnd(wxRentContract.getYearsEnd()); return new ResultData(wxRentContractService.getContractSales(rentContract)); } @@ -936,6 +938,8 @@ public class WxRentContractController extends WxContractBaseController { if (null == rentContract) { return new ResultData(Result.ERROR, "编号["+wxRentContract.getId()+"]未找到租金合同"); } + rentContract.setYearsBegin(wxRentContract.getYearsBegin()); + rentContract.setYearsEnd(wxRentContract.getYearsEnd()); wxRentContractService.setContractSalesConfirm(rentContract); return new ResultData(); } 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 91f4ec848..d95690078 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxEnergyController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxEnergyController.java @@ -462,11 +462,31 @@ public class WxEnergyController extends BaseController { } @ApiOperation("费用区间自动时间") - @GetMapping("periodAutoTimes") - public ResultData periodAutoTimes(@ModelAttribute WxEnergyFeesTime record) { + @PostMapping("periodAutoTimes") + public ResultData periodAutoTimes(@RequestBody WxEnergyFeesTime record) { + List dateList = wxEnergyService.findLastTimeEndGroup(record); + if (null != dateList && dateList.size() > 1 ) { + return new ResultData(Result.ERROR,"所选店铺表类型最近一次结束时间不相同,不能一起增加"); + } + Date start = null; + if (null == dateList || dateList.size() <= 0 ) { + //之前没有的话,就从年月第一天开始 + start = DateUtils.stringToDate(record.getPeriod()+"01", DateUtils.DATE_PATTERN_NOSPACE); + }else { + Date _d = dateList.get(0); + if (null != _d) { + //开始时间取接受时间后的一天 + start = DateUtils.getTimeAfterDays(1, _d); + start = DateUtils.getDayBegin(start); + }else { + start = DateUtils.stringToDate(record.getPeriod()+"01", DateUtils.DATE_PATTERN_NOSPACE); + } + } + Date end = DateUtils.getTimeAfterMonths(1, start); + end = DateUtils.getSecondsTimeAfter(-1, end); Map retMap = new HashMap(); - retMap.put("startTime", new Date()); - retMap.put("endTime", new Date()); + retMap.put("startTime", start); + retMap.put("endTime", end); return new ResultData(retMap); } @@ -640,6 +660,13 @@ public class WxEnergyController extends BaseController { return new ResultData(); } + @PostMapping("readingConfirm") + public ResultData readingConfirm(@RequestBody WxEnergyMeterReading record) { + record.updateTenantInfo(getTenantInfo()); + wxEnergyService.setReadingConfirm(record); + return new ResultData(); + } + @ApiOperation("新建科目抄表计算数据") @PostMapping("createReadingCalcute") public ResultData createReadingCalcute(@RequestBody WxEnergyReadingCalcute record) { @@ -686,7 +713,11 @@ public class WxEnergyController extends BaseController { @GetMapping("readingCalcuteShopList") public ResultData readingCalcuteShopList(@ModelAttribute WxEnergyReadingCalcute record) { record.updateTenantInfo(getTenantInfo()); - return new ResultData(wxEnergyService.getReadingCalcuteShopNumber(record)); + List slist = wxEnergyService.getReadingCalcuteShopNumber(record); + if (null == slist) { + slist = new ArrayList(); + } + return new ResultData(slist); } @ApiOperation("科目抄表计算数据分页列表接口") @@ -712,6 +743,13 @@ public class WxEnergyController extends BaseController { return new ResultData(page); } + @PostMapping("readingCalcuteResultDel") + public ResultData readingCalcuteResultDel(@RequestBody WxEnergyReadingCalcuteResult record) { + record.updateTenantInfo(getTenantInfo()); + wxEnergyService.deleteReadingCalcuteResult(record.getId(),record); + return new ResultData(); + } + @ApiOperation("科目抄表计算记录导出") @GetMapping("readingCalcuteResultExport") public void readingCalcuteResultExport(@ModelAttribute WxEnergyReadingCalcuteResult record, HttpServletRequest request, HttpServletResponse response) { diff --git a/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java b/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java index 34f3d73ac..f64ade6c7 100644 --- a/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java +++ b/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java @@ -193,6 +193,8 @@ public class TenantInfoImpl implements TenantInfo { return true; if ("com.iformall.mapper.WxRentContractFreePeriodMapper.inertPeriods".equals(ms.getId())) return true; + if ("com.iformall.mapper.WxEnergyReadingCalcuteResultMapper.insertResults".equals(ms.getId())) + return true; if ("com.iformall.mapper.WxRentContractRevenueJumpMapper.inertJumps".equals(ms.getId())) return true; if ("com.iformall.mapper.WxActivityJoinMapper.updateSendMsg".equals(ms.getId())) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMallAdminController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMallAdminController.java index 838c4a14e..a9f0fe97f 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMallAdminController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMallAdminController.java @@ -62,6 +62,7 @@ import com.iformall.service.WxShopService; import com.iformall.service.WxUserDataRuleService; import com.iformall.service.helper.WxBillAllHelper; import com.iformall.utils.Constant; +import com.iformall.utils.DateUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -75,6 +76,7 @@ import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -384,33 +386,75 @@ public class WxMallAdminController extends BaseController { @ApiOperation("抄表数据分页列表接口") @GetMapping("shopMeterList") public ResultData shopMeterList(@ModelAttribute WxEnergyMeter record) { + if (StringUtils.isBlank(record.getSearchKey())) { + return new ResultData(); + } record.setIsDel(EnumYesOrNo.NO.getCode()); setQueryDataRule(record); - - WxEnergyMeterShopFloor sfq = new WxEnergyMeterShopFloor(); - sfq.updateTenantInfo(record); - sfq.setType(EnumEnergyMeterShopFloorType.SHOP.getCode()); - if (StringUtils.isNotBlank(record.getShopNumber())) { + if (StringUtils.isNotBlank(record.getSearchKey())) { + WxEnergyMeterShopFloor sfq = new WxEnergyMeterShopFloor(); + sfq.updateTenantInfo(record); + sfq.setType(EnumEnergyMeterShopFloorType.SHOP.getCode()); WxShop sq = new WxShop(); sq.updateTenantInfo(record); - sq.setShopNumber(record.getShopNumber()); + sq.setShopNumber(record.getSearchKey()); List sids = wxShopService.getShopIds(sq); - if (null == sids || sids.size() <= 0 ) { - return new ResultData(); - } - sfq.setAliseIdList(sids); - } - sfq.setAliseId(record.getShopId()); - List mids = wxEnergyService.getMeterIdList(sfq); - if (null == mids || mids.size() <= 0 ) { - return new ResultData(); + if (null != sids && sids.size() > 0 ) { + sfq.setAliseIdList(sids); + List mids = wxEnergyService.getMeterIdList(sfq); + if (null != mids && mids.size() > 0 ) { + record.setIds(mids); + } + } + record.setOrName(record.getSearchKey()); } - record.setIds(mids); record.setSortColumns(BaseEntity.SortField.CreateTime_DESC); PageInfo page = wxEnergyService.meterListAsPage(record, 1, 1000); return new ResultData(page); } + @ApiOperation("费用区间所属年月") + @GetMapping("periodList") + public ResultData periodList() { + String[] peroids = new String[3]; + String date_pattern_month = "yyyyMM"; + Date start1 = DateUtils.getTimeAfterMonths(-2, new Date()); + start1 = DateUtils.getFirstDayForCurrMonth(start1); + peroids[0] = DateUtils.date2String(start1,date_pattern_month); + + Date start2 = DateUtils.getTimeAfterMonths(1, start1); + peroids[1] = DateUtils.date2String(start2,date_pattern_month); + + Date start3 = DateUtils.getTimeAfterMonths(1, start2); + peroids[2] = DateUtils.date2String(start3,date_pattern_month); + + return new ResultData(peroids); + } + + @ApiOperation("费用区间自动时间") + @PostMapping("periodAutoTimes") + public ResultData periodAutoTimes(@RequestBody WxEnergyFeesTime record) { + // + List dateList = wxEnergyService.findLastTimeEndGroup(record); + if (null != dateList && dateList.size() > 1 ) { + return new ResultData(Result.ERROR,"所选店铺表类型最近一次结束时间不相同,不能一起增加"); + } + Date start = null; + if (null == dateList || dateList.size() <= 0 ) { + //之前没有的话,就从年月第一天开始 + start = DateUtils.stringToDate(record.getPeriod()+"01", DateUtils.DATE_PATTERN_NOSPACE); + }else { + //开始时间取接受时间后的一天 + start = DateUtils.getTimeAfterDays(1, dateList.get(0)); + start = DateUtils.getDayBegin(start); + } + Date end = DateUtils.getTimeAfterMonths(1, start); + Map retMap = new HashMap(); + retMap.put("startTime", start); + retMap.put("endTime", end); + return new ResultData(retMap); + } + @ApiOperation("抄表数据分页列表接口") @GetMapping("preShopReadingList") public ResultData readingList(@ModelAttribute WxEnergyMeterReading record) { 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 6674ae1ce..4b7e10341 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxAllBill.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxAllBill.java @@ -53,7 +53,7 @@ public class WxAllBill extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="创建用户编码",name="createBy") public Long createBy; - @Excel(name = "制单用户", format = "yyyy-MM-dd HH:mm:ss", width = 20, orderNum = "14") + @Excel(name = "制单用户", width = 20, orderNum = "14") @io.swagger.annotations.ApiModelProperty(value="创建用户名称",name="createBy") public String createByName; @@ -64,7 +64,7 @@ public class WxAllBill extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="创建用户编码",name="createBy") public Long updateBy; - @Excel(name = "最后修改用户", format = "yyyy-MM-dd HH:mm:ss", width = 20, orderNum = "16") + @Excel(name = "最后修改用户", width = 20, orderNum = "16") @io.swagger.annotations.ApiModelProperty(value="创建用户名称",name="createBy") public String updateByName; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFeesTime.java b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFeesTime.java index 31b2b8c9c..5e7c36d39 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFeesTime.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFeesTime.java @@ -24,6 +24,9 @@ public class WxEnergyFeesTime extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="id",name="id") private Long id; + @io.swagger.annotations.ApiModelProperty(value = "名称", name = "name") + private String name; + @io.swagger.annotations.ApiModelProperty(value="createTime",name="createTime") private Date createTime; @@ -54,6 +57,10 @@ public class WxEnergyFeesTime extends TenantEntity { private Date endTime; @TableField(exist = false) - List shopIds; + private List shopIds; + @TableField(exist = false) + private String shopName; + @TableField(exist = false) + private List meterIds; } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFeesTimeShop.java b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFeesTimeShop.java index 88720e35d..01450fe97 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFeesTimeShop.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFeesTimeShop.java @@ -47,6 +47,12 @@ public class WxEnergyFeesTimeShop extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "时间区间编号", name = "timeId") private Long timeId; + @io.swagger.annotations.ApiModelProperty(value="startTime",name="startTime") + private Date startTime; + + @io.swagger.annotations.ApiModelProperty(value="endTime",name="endTime") + private Date endTime; + @io.swagger.annotations.ApiModelProperty(value="店铺编号",name="shopId") private Long shopId; 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 6625ff9d7..ce9098d1b 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeter.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeter.java @@ -106,5 +106,9 @@ public class WxEnergyMeter extends TenantEntity { private Integer isValid; @TableField(exist = false) private Integer hasShop; + @TableField(exist = false) + private String searchKey; + @TableField(exist = false) + private String orName; } 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 5df6c1982..9f8d701bb 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeterReading.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyMeterReading.java @@ -100,6 +100,9 @@ public class WxEnergyMeterReading extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="表名",name="meterName") private String meterName; + @io.swagger.annotations.ApiModelProperty(value="是否确认",name="isConfirm") + private Integer isConfirm; + @io.swagger.annotations.ApiModelProperty(value="是否删除",name="isDel") private Integer isDel; @@ -136,6 +139,7 @@ public class WxEnergyMeterReading extends TenantEntity { excelTitle.put("meterType", "表类型"); excelTitle.put("preNumber", "上次抄表数"); excelTitle.put("preTime", "上次抄表时间"); + excelTitle.put("preByName", "上次抄表人"); excelTitle.put("curNumber", "本次抄表数"); return excelTitle; } @@ -152,6 +156,7 @@ public class WxEnergyMeterReading extends TenantEntity { excelObject.put("meterType", this.getMeterTypeName()); excelObject.put("preNumber", this.getPreNumber()); excelObject.put("preTime", DateUtils.formatDateTime(this.getPreTime())); + excelObject.put("preTime", this.getPreByName()); excelObject.put("curNumber", this.getCurNumber()); return excelObject; } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxEnergyFeesTimeMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxEnergyFeesTimeMapper.java index df82c877e..6d42e6e98 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxEnergyFeesTimeMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxEnergyFeesTimeMapper.java @@ -14,5 +14,4 @@ public interface WxEnergyFeesTimeMapper extends CommonMapper findShopIdList(WxEnergyFeesTimeShop wxBillRent); List findTimeIdList(WxEnergyFeesTimeShop wxBillRent); + + List findLastTimeEndGroup(WxEnergyFeesTimeShop wxBillRent); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxEnergyMeterReadingMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxEnergyMeterReadingMapper.java index d6bbfbefc..f27038b79 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxEnergyMeterReadingMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxEnergyMeterReadingMapper.java @@ -19,5 +19,7 @@ public interface WxEnergyMeterReadingMapper extends CommonMapper findList(WxEnergyReadingCalcuteResult wxBillRent); List findShopIdList(WxEnergyReadingCalcuteResult wxBillRent); + + List findCalcuteIdList(WxEnergyReadingCalcuteResult wxBillRent); WxEnergyReadingCalcuteResult selectById(@Param("id")Long id,@Param("tenantId")String tenantId); void insertResults(@Param("tenantId")String tenantId, @Param("list")List resultList); + void deleteByCondition(WxEnergyReadingCalcuteResult wxBillRent); + } diff --git a/mallinkService/src/main/java/com/iformall/service/ExcelService.java b/mallinkService/src/main/java/com/iformall/service/ExcelService.java index 12e0370a3..c32c6f1b8 100644 --- a/mallinkService/src/main/java/com/iformall/service/ExcelService.java +++ b/mallinkService/src/main/java/com/iformall/service/ExcelService.java @@ -34,6 +34,10 @@ public class ExcelService { private final Logger logger = LoggerFactory.getLogger(this.getClass()); public void exportExcel(Map titleMap,List> list, String fileName,String sheetName, HttpServletResponse response) { + exportExcel(titleMap,list,fileName,sheetName,20,10,response); + } + + public void exportExcel(Map titleMap,List> list, String fileName,String sheetName, int width, int height,HttpServletResponse response) { //defaultExport(list, fileName, response); List modelList = new ArrayList(); ExcelExportEntity excelentity = null; @@ -41,8 +45,8 @@ public class ExcelService { String titleKey = it.next(); String title = titleMap.get(titleKey); excelentity = new ExcelExportEntity(title, titleKey); - excelentity.setWidth(20); - excelentity.setHeight(10); + excelentity.setWidth(width); + excelentity.setHeight(height); modelList.add(excelentity); } exportExcel(modelList,list,null,sheetName,fileName,true,response); diff --git a/mallinkService/src/main/java/com/iformall/service/WxEnergyService.java b/mallinkService/src/main/java/com/iformall/service/WxEnergyService.java index 96a75562d..ed8e2c264 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxEnergyService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxEnergyService.java @@ -1,6 +1,7 @@ package com.iformall.service; import java.io.File; +import java.util.Date; import java.util.List; import java.util.Map; @@ -46,6 +47,7 @@ public interface WxEnergyService { Map getTimeMap(WxEnergyFeesTime record); void timeDel(WxEnergyFeesTime record); List getTimeShopNumber(WxEnergyFeesTime record); + List findLastTimeEndGroup(WxEnergyFeesTime record); //费用科目 PageInfo feesListAsPage(WxEnergyFees record, Integer pageIndex, Integer pageSize,boolean isSetOff); @@ -74,6 +76,7 @@ public interface WxEnergyService { void commitReading(WxEnergyMeterReading record,MallUserInfo userInfo); WxEnergyMeterReading getReadingById(WxEnergyMeterReading record); void setReadingIsDel(WxEnergyMeterReading record); + void setReadingConfirm(WxEnergyMeterReading record); void exportReading(WxEnergyMeterReading record,HttpServletRequest request, HttpServletResponse response); void importReading(MultipartFile mFile, MallUserInfo user, HttpServletRequest request, HttpServletResponse response); @@ -86,6 +89,7 @@ public interface WxEnergyService { void createBill(WxEnergyReadingCalcute record, MallUserInfo user); void setReadingCalcuteIsDel(WxEnergyReadingCalcute record); List getReadingCalcuteShopNumber(WxEnergyReadingCalcute record); + void deleteReadingCalcuteResult(Long id,TenantEntity tenantEntity); } 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 aa1b7bec7..eea847367 100644 --- a/mallinkService/src/main/java/com/iformall/service/helper/WxEnergyHelper.java +++ b/mallinkService/src/main/java/com/iformall/service/helper/WxEnergyHelper.java @@ -91,15 +91,18 @@ public class WxEnergyHelper { List floorAreaList = PlaceholderExtractorWithPrefixAndSuffix.extractPlaceholders(formula, "#floorArea_", "#"); List meterList = PlaceholderExtractorWithPrefixAndSuffix.extractPlaceholders(formula, "#meter_", "#"); - formula = formula.replaceAll("\\{.*?\\}", ""); + formula = formula.replaceAll("\\{", "").replaceAll("\\}", ""); 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])); + String b1 = bs[1].replace("#}", ""); + BigDecimal buildingArea = buildingAreaMap.get(Long.parseLong(b1)); if (null != buildingArea) { - formula = formula.replaceAll("#buildingArea_"+Long.parseLong(bs[1])+"#", buildingArea.toPlainString()); + formula = formula.replaceAll("#buildingArea_"+Long.parseLong(b1)+"#", buildingArea.toPlainString()); + }else { + formula = formula.replaceAll("#buildingArea_"+Long.parseLong(b1)+"#", "0"); } } } @@ -110,9 +113,12 @@ public class WxEnergyHelper { String floorArea = floorAreaList.get(i); String[] bs = floorArea.split("_"); if (null != bs && bs.length > 1) { - BigDecimal floorarea = floorAreaMap.get(Long.parseLong(bs[1])); + String b1 = bs[1].replace("#}", ""); + BigDecimal floorarea = floorAreaMap.get(Long.parseLong(b1)); if (null != floorarea) { - formula = formula.replaceAll("#floorArea_"+Long.parseLong(bs[1])+"#", floorarea.toPlainString()); + formula = formula.replaceAll("#floorArea_"+Long.parseLong(b1)+"#", floorarea.toPlainString()); + }else { + formula = formula.replaceAll("#floorArea_"+Long.parseLong(b1)+"#", "0"); } } @@ -124,9 +130,12 @@ public class WxEnergyHelper { String meter = meterList.get(i); String[] bs = meter.split("_"); if (null != bs && bs.length > 1) { - BigDecimal mu = meterNumberMap.get(Long.parseLong(bs[1])); + String b1 = bs[1].replace("#}", ""); + BigDecimal mu = meterNumberMap.get(Long.parseLong(b1)); if (null != mu ) { - formula = formula.replaceAll("#meter_"+Long.parseLong(bs[1])+"#", mu.toPlainString()); + formula = formula.replaceAll("#meter_"+Long.parseLong(b1)+"#", mu.toPlainString()); + }else { + formula = formula.replaceAll("#meter_"+Long.parseLong(b1)+"#", "0"); } } } @@ -145,11 +154,11 @@ public class WxEnergyHelper { return ; } List buildingAreaList = PlaceholderExtractorWithPrefixAndSuffix.extractPlaceholders(formula, "#", "#"); - formula = formula.replaceAll("\\{.*?\\}", ""); + formula = formula.replaceAll("\\{", "").replaceAll("\\}", ""); if (null != buildingAreaList && buildingAreaList.size() > 0 ) { for (int i = 0 ; i < buildingAreaList.size(); i ++) { String floorArea = buildingAreaList.get(i); - String relpaceFloorArea = floorArea.replaceAll("\\{.*?\\}", ""); + String relpaceFloorArea = floorArea.replaceAll("\\{", "").replaceAll("\\}", ""); formula = formula.replaceAll(relpaceFloorArea, "1"); } } 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 9f80185a4..08145097e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxEnergyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxEnergyServiceImpl.java @@ -291,6 +291,26 @@ public class WxEnergyServiceImpl implements WxEnergyService { @Override public PageInfo timeListAsPage(WxEnergyFeesTime record, Integer pageIndex, Integer pageSize) { + if (StringUtils.isNotBlank(record.getShopName())) { + WxShop sq = new WxShop(); + sq.updateTenantInfo(record); + sq.setShopNumber(record.getShopName()); + List shopIds = wxShopService.getShopIds(sq); + if (null == shopIds || shopIds.size() <= 0 ) { + record.setId(-1L); + }else { + WxEnergyFeesTimeShop tsq = new WxEnergyFeesTimeShop(); + tsq.updateTenantInfo(record); + tsq.setShopIds(shopIds); + List tids = wxEnergyFeesTimeShopMapper.findTimeIdList(tsq); + if (null == tids || tids.size() <= 0 ) { + record.setId(-1L); + }else { + record.setIds(tids); + } + } + } + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxEnergyFeesTimeMapper.findList(record)); } @@ -302,9 +322,9 @@ public class WxEnergyServiceImpl implements WxEnergyService { } Date date = new Date(); if (record.getId() == null) { - //查询是不是已经有了 WxEnergyFeesTimeShop tsq = new WxEnergyFeesTimeShop(); + tsq.updateTenantInfo(record); tsq.setPeriod(record.getPeriod()); tsq.setShopIds(record.getShopIds()); tsq.setType(record.getType()); @@ -312,7 +332,13 @@ public class WxEnergyServiceImpl implements WxEnergyService { if (null != scount && scount > 0 ) { throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"所选店铺已存在该年月的"+record.getTypeName()+"区间"); } - + //检查最近一次的是不是属于同一周期 + tsq.setPeriod(null); + List list = wxEnergyFeesTimeShopMapper.findLastTimeEndGroup(tsq); + if (null != list && list.size() > 1) { + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"所选店铺最近一次的"+record.getTypeName()+"区间截止时间不一致"); + } + final IdWorker idWorker = IdWorker.get(); record.setId(idWorker.nextId()); record.setCreateTime(date); @@ -328,6 +354,10 @@ public class WxEnergyServiceImpl implements WxEnergyService { ts.setShopId(shopId); ts.setPeriod(record.getPeriod()); ts.setType(record.getType()); + ts.setCreateTime(new Date()); + ts.setUpdateTime(new Date()); + ts.setStartTime(record.getStartTime()); + ts.setEndTime(record.getEndTime()); wxEnergyFeesTimeShopMapper.insert(ts); } @@ -335,10 +365,7 @@ public class WxEnergyServiceImpl implements WxEnergyService { logger.error("保存租赁账单失败,e:" + e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); } - } else { - record.setUpdateTime(date); - wxEnergyFeesTimeMapper.updateById(record); - } + } } @Override @@ -383,6 +410,16 @@ public class WxEnergyServiceImpl implements WxEnergyService { return wxShopService.getShopNumberList(sq); } + @Override + public List findLastTimeEndGroup(WxEnergyFeesTime record) { + WxEnergyFeesTimeShop tsq = new WxEnergyFeesTimeShop(); + tsq.updateTenantInfo(record); + tsq.setShopIds(record.getShopIds()); + tsq.setType(record.getType()); + List list = wxEnergyFeesTimeShopMapper.findLastTimeEndGroup(tsq); + return list; + } + @Override public PageInfo feesListAsPage(WxEnergyFees record, Integer pageIndex, Integer pageSize,boolean isSetOff) { @@ -807,10 +844,19 @@ public class WxEnergyServiceImpl implements WxEnergyService { r.setPreTime(pre.getCreateTime()); r.setPreBy(pre.getCreateBy()); r.setPreByName(pre.getCreateByName()); + if (null != pre.getEndTime()) { + //有可能撤铺的时候中间抄了一次,这一次抄表又是统一时间抄表,所以比较结束时间 + if (pre.getEndTime().after(record.getEndTime())) { + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"当前时间小于最近一次抄表周期时间,请重新选择时间"); + } + r.setStartTime(DateUtils.getDayBegin(DateUtils.getTimeAfterDays(1, pre.getEndTime()))); + } }else { r.setPreNumber("0"); } - r.setStartTime(record.getStartTime()); + if (null == r.getStartTime()) { + r.setStartTime(record.getStartTime()); + } r.setEndTime(record.getEndTime()); //根据表id获取表名 WxEnergyMeter meter = wxEnergyMeterMapper.selectById(r.getMeterId(), record.getTenantId()); @@ -874,6 +920,11 @@ public class WxEnergyServiceImpl implements WxEnergyService { wxEnergyMeterReadingMapper.setIsDel(record.getId(), record.getTenantId(), record.getIsDel()); } + @Override + public void setReadingConfirm(WxEnergyMeterReading record) { + wxEnergyMeterReadingMapper.setConfirm(record); + } + @Override public void exportReading(WxEnergyMeterReading record, HttpServletRequest request, HttpServletResponse response) { List> execlList = new ArrayList>(); @@ -887,7 +938,7 @@ public class WxEnergyServiceImpl implements WxEnergyService { execlList.add(r.generateExcelData()); } } - excelService.exportExcel(WxEnergyMeterReading.generateExcelTitle(),execlList, "抄表数据.xlsx","sheet1", response); + excelService.exportExcel(WxEnergyMeterReading.generateExcelTitle(),execlList, "抄表数据.xlsx","sheet1",10,5, response); } @Override @@ -958,6 +1009,17 @@ public class WxEnergyServiceImpl implements WxEnergyService { @Override public List findCalcuteList(WxEnergyReadingCalcute record) { + if (null != record.getShopIds() && record.getShopIds().size() > 0 ) { + WxEnergyReadingCalcuteResult crq = new WxEnergyReadingCalcuteResult(); + crq.updateTenantInfo(record); + crq.setShopIds(record.getShopIds()); + List calIds = wxEnergyReadingCalcuteResultMapper.findCalcuteIdList(crq); + if (null == calIds || calIds.size() <= 0 ) { + record.setId(-1L); + }else { + record.setIds(calIds); + } + } return wxEnergyReadingCalcuteMapper.findList(record); } @@ -1027,13 +1089,6 @@ public class WxEnergyServiceImpl implements WxEnergyService { } } } - //用户表 - WxEnergyMeter mq = new WxEnergyMeter(); - mq.updateTenantInfo(record); - mq.setType(fees.getType()); - mq.setPhysicsType(EnumEnergyMeterPhysicsType.USER.getCode()); - mq.setHasFee(EnumYesOrNo.YES.getCode()); - List meterList = wxEnergyMeterMapper.findIdList(mq); //查询公摊表 Map> summaryMeterMap = null; if (fees.getIsPublic() == EnumYesOrNo.YES.getCode()) { @@ -1041,10 +1096,10 @@ public class WxEnergyServiceImpl implements WxEnergyService { sumq.updateTenantInfo(record); sumq.setType(fees.getType()); sumq.setPhysicsType(EnumEnergyMeterPhysicsType.SUMMARY.getCode()); - List sumeterList = wxEnergyMeterMapper.findList(mq); + List sumeterList = wxEnergyMeterMapper.findList(sumq); if (null != sumeterList && sumeterList.size() > 0 ) { summaryMeterMap = new HashMap>(); - for (int i = 0 ; i < meterList.size(); i ++) { + for (int i = 0 ; i < sumeterList.size(); i ++) { WxEnergyMeter summaryMeter = sumeterList.get(i); //查询总表下的子表 WxEnergyMeterChild mcq = new WxEnergyMeterChild(); @@ -1062,13 +1117,32 @@ public class WxEnergyServiceImpl implements WxEnergyService { for (int i = 0 ; i < shopIds.size(); i ++) { Long shopId= shopIds.get(i); WxShop shop = shopMap.get(shopId); + + //查询用户表 + WxEnergyMeterShopFloor sfq = new WxEnergyMeterShopFloor(); + sfq.updateTenantInfo(record); + sfq.setType(EnumEnergyMeterShopFloorType.SHOP.getCode()); + sfq.setAliseId(shopId); + List meterList = wxEnergyMeterShopFloorMapper.findMeterIdList(sfq); + + //如果店铺已经存在了计算,则不允许重复 + WxEnergyReadingCalcuteResult crq = new WxEnergyReadingCalcuteResult(); + crq.updateTenantInfo(record); + crq.setShopId(shopId); + crq.setPeriod(record.getPeriod()); + crq.setFeesId(record.getFeesId()); + List list = wxEnergyReadingCalcuteResultMapper.findList(crq); + if (null != list && list.size() > 0 ) { + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"店铺"+shop.getShopNumber()+"科目["+fees.getName()+"]该年月已存在计算记录,不能重复计算"); + } + //根据店铺,所属年月去查询时间区间.根据店铺,时间区间去查对应的抄表数据,根据表来计算总和 WxEnergyFeesTimeShop sq = new WxEnergyFeesTimeShop(); sq.updateTenantInfo(record); sq.setShopId(shopId); List timeIds = wxEnergyFeesTimeShopMapper.findTimeIdList(sq); if (null == timeIds || timeIds.size() <= 0 ) { - return; + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"店铺"+shop.getShopNumber()+"未设置抄表区间"); } //一个年月,一个店铺应该只有一个周期 WxEnergyFeesTime tq = new WxEnergyFeesTime(); @@ -1077,17 +1151,18 @@ public class WxEnergyServiceImpl implements WxEnergyService { tq.setPeriod(record.getPeriod()); List timelist = wxEnergyFeesTimeMapper.findList(tq); if (null == timelist || timelist.size() <= 0 ) { - return; + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"店铺"+shop.getShopNumber()+"未设置抄表区间"); } WxEnergyFeesTime time = timelist.get(0); //根据店铺查询绑定的科目 WxEnergyFeesShop csq = new WxEnergyFeesShop(); csq.updateTenantInfo(record); + csq.setFeesId(fees.getId()); csq.setShopId(shopId); List shopFeesList = wxEnergyFeesShopMapper.findList(csq); if (null == shopFeesList || shopFeesList.size() <= 0 ) { - return; + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"店铺"+shop.getShopNumber()+"未设置该科目费用标准"); } //循环店铺科目, @@ -1106,7 +1181,7 @@ public class WxEnergyServiceImpl implements WxEnergyService { StringBuffer sb = new StringBuffer(); cs.setMoney(wxEnergyHelper.calcuteMoney(sb,totalArea,shop,time, fees, shopfee,meterList,summaryMeterMap,buildingAreaMap,floorAreaMap)); cs.setPeriod(record.getPeriod()); - cs.setMoney(sb.toString()); + cs.setMoneyDeail(sb.toString()); resultList.add(cs); } } @@ -1115,9 +1190,24 @@ public class WxEnergyServiceImpl implements WxEnergyService { } } + private void initReadingCalcuteResultQueryParam(WxEnergyReadingCalcuteResult record) { + if (StringUtils.isNotBlank(record.getShopName())) { + WxShop sq = new WxShop(); + sq.updateTenantInfo(record); + sq.setShopNumber(record.getShopName()); + List shopIds = wxShopService.getShopIds(sq); + if (null == shopIds || shopIds.size() <= 0 ) { + record.setId(-1L); + }else { + record.setShopIds(shopIds); + } + } + } + @Override public PageInfo readingCalcuteResultListAsPage(WxEnergyReadingCalcuteResult record, Integer pageIndex, Integer pageSize) { + initReadingCalcuteResultQueryParam(record); PageInfo page = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxEnergyReadingCalcuteResultMapper.findList(record)); if (null != page && null != page.getList()) { WxEnergyFees fq = new WxEnergyFees(); @@ -1166,7 +1256,11 @@ public class WxEnergyServiceImpl implements WxEnergyService { @Override 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); + List list = new ArrayList(); + if (null != page && null != page.getList() && page.getList().size() > 0 ) { + list = page.getList(); + } + excelService.exportExcel(list, null, "能源计算结果", WxEnergyReadingCalcuteResult.class, "能源计算结果.xlsx", response, false); } private File handlerImportFile(MultipartFile mFile,String fileNamePre) { @@ -1262,7 +1356,6 @@ public class WxEnergyServiceImpl implements WxEnergyService { 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()); @@ -1318,11 +1411,18 @@ public class WxEnergyServiceImpl implements WxEnergyService { @Override public void setReadingCalcuteIsDel(WxEnergyReadingCalcute record) { -// WxEnergyReadingCalcute calcute = this.getReadingCalcuteById(record); -// if (null == calcute) { -// throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "记录未查询到"); -// } -// wxEnergyReadingCalcuteMapper.setIsDel(record.getId(), record.getTenantId(), record.getIsDel()); + WxEnergyReadingCalcute calcute = wxEnergyReadingCalcuteMapper.selectById(record.getId(), record.getTenantId()); + if (null == calcute) { + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "记录未查询到"); + } + if (calcute.getIsCalcuted() == EnumYesOrNo.YES.getCode()) { + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "已生成账单,不允许删除"); + } + WxEnergyReadingCalcuteResult crq = new WxEnergyReadingCalcuteResult(); + crq.updateTenantInfo(crq); + crq.setCalcuteId(record.getId()); + wxEnergyReadingCalcuteResultMapper.deleteByCondition(crq); + wxEnergyReadingCalcuteMapper.deleteById(record.getId()); } @Override @@ -1343,4 +1443,9 @@ public class WxEnergyServiceImpl implements WxEnergyService { return null; } + @Override + public void deleteReadingCalcuteResult(Long id, TenantEntity tenantEntity) { + wxEnergyReadingCalcuteResultMapper.deleteById(id); + } + } diff --git a/mallinkService/src/main/resources/mapper/WxEnergyFeesTimeMapper.xml b/mallinkService/src/main/resources/mapper/WxEnergyFeesTimeMapper.xml index 646248a6e..f49a99094 100644 --- a/mallinkService/src/main/resources/mapper/WxEnergyFeesTimeMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxEnergyFeesTimeMapper.xml @@ -7,6 +7,7 @@ + @@ -15,7 +16,7 @@ - `id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`type`,`start_time`,`end_time`,`period`,`shop_size` + `id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`name`,`type`,`start_time`,`end_time`,`period`,`shop_size` @@ -30,6 +31,9 @@ and `period` = #{period} + + and `name` like concat('%', #{name},'%') + and `type` = #{type} and id in @@ -56,6 +60,6 @@ update wx_energy_fees_time set is_del = #{isDel} where id = #{id} and `tenant_id` = #{tenantId} - + diff --git a/mallinkService/src/main/resources/mapper/WxEnergyFeesTimeShopMapper.xml b/mallinkService/src/main/resources/mapper/WxEnergyFeesTimeShopMapper.xml index 1cb362428..a49fad1c6 100644 --- a/mallinkService/src/main/resources/mapper/WxEnergyFeesTimeShopMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxEnergyFeesTimeShopMapper.xml @@ -9,12 +9,14 @@ + + - `id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`period`,`time_id`,`shop_id`,`type` + `id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`period`,`time_id`,`start_time`,`end_time`,`shop_id`,`type` @@ -82,5 +84,13 @@ + + diff --git a/mallinkService/src/main/resources/mapper/WxEnergyMeterMapper.xml b/mallinkService/src/main/resources/mapper/WxEnergyMeterMapper.xml index a5d543622..07717b313 100644 --- a/mallinkService/src/main/resources/mapper/WxEnergyMeterMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxEnergyMeterMapper.xml @@ -34,6 +34,7 @@ and `physics_type` = #{physicsType} and `shop_type` = #{shopType} and name like concat('%', #{name},'%') + or name like concat('%', #{orName},'%') and `physics_type` in (1,2) and `has_fee` = #{hasFee} diff --git a/mallinkService/src/main/resources/mapper/WxEnergyMeterReadingMapper.xml b/mallinkService/src/main/resources/mapper/WxEnergyMeterReadingMapper.xml index ce98be8f2..c15f754b9 100644 --- a/mallinkService/src/main/resources/mapper/WxEnergyMeterReadingMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxEnergyMeterReadingMapper.xml @@ -24,6 +24,7 @@ + @@ -31,7 +32,7 @@ `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`,`meter_id`,`meter_type`,`meter_rate`,`meter_name`,`is_del`,`building_name`,`floor_name`,`shop_name` + `update_by`,`update_by_name`,`remark`,`meter_id`,`meter_type`,`meter_rate`,`meter_name`,`is_del`,`is_confirm`,`building_name`,`floor_name`,`shop_name` @@ -48,6 +49,7 @@ and `meter_type` = #{meterType} and meter_name like concat('%', #{meterName},'%') and `is_del` = #{isDel} + and `is_confirm` = #{isConfirm} and create_by_name like concat('%', #{createByName},'%') and meter_id in @@ -88,10 +90,18 @@ + + + update wx_energy_meter_reading set is_confirm = 1 + where id in + + #{idItem} + + diff --git a/mallinkService/src/main/resources/mapper/WxEnergyReadingCalcuteResultMapper.xml b/mallinkService/src/main/resources/mapper/WxEnergyReadingCalcuteResultMapper.xml index 1e69670a2..177560886 100644 --- a/mallinkService/src/main/resources/mapper/WxEnergyReadingCalcuteResultMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxEnergyReadingCalcuteResultMapper.xml @@ -37,6 +37,12 @@ and `shop_id` = #{shopId} and `fees_id` = #{feesId} and `fees_shop_id` = #{feesShopId} + + and shop_id in + + #{sidItem} + + and fees_id in @@ -71,6 +77,12 @@ + + INSERT INTO wx_energy_reading_calcute_result ( @@ -84,5 +96,9 @@ + + delete from wx_energy_reading_calcute_result where `calcute_id` = #{calcuteId} + +