| @@ -462,11 +462,25 @@ public class WxEnergyController extends BaseController { | |||
| } | |||
| @ApiOperation("费用区间自动时间") | |||
| @GetMapping("periodAutoTimes") | |||
| @PostMapping("periodAutoTimes") | |||
| public ResultData periodAutoTimes(@ModelAttribute WxEnergyFeesTime record) { | |||
| List<Date> 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", new Date()); | |||
| retMap.put("endTime", new Date()); | |||
| retMap.put("startTime", start); | |||
| retMap.put("endTime", end); | |||
| return new ResultData(retMap); | |||
| } | |||
| @@ -640,6 +654,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 +707,11 @@ public class WxEnergyController extends BaseController { | |||
| @GetMapping("readingCalcuteShopList") | |||
| public ResultData readingCalcuteShopList(@ModelAttribute WxEnergyReadingCalcute record) { | |||
| record.updateTenantInfo(getTenantInfo()); | |||
| return new ResultData(wxEnergyService.getReadingCalcuteShopNumber(record)); | |||
| List<String> slist = wxEnergyService.getReadingCalcuteShopNumber(record); | |||
| if (null == slist) { | |||
| slist = new ArrayList<String>(); | |||
| } | |||
| return new ResultData(slist); | |||
| } | |||
| @ApiOperation("科目抄表计算数据分页列表接口") | |||
| @@ -712,6 +737,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) { | |||
| @@ -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; | |||
| @@ -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; | |||
| @@ -14,5 +14,4 @@ public interface WxEnergyFeesTimeMapper extends CommonMapper<WxEnergyFeesTime, L | |||
| WxEnergyFeesTime selectById(@Param("id")Long id,@Param("tenantId")String tenantId); | |||
| void setIsDel(@Param("id")Long id,@Param("tenantId")String tenantId,@Param("isDel")Integer isDel); | |||
| } | |||
| @@ -4,6 +4,8 @@ import com.iformall.common.CommonMapper; | |||
| import com.iformall.domain.po.WxEnergyFeesTimeShop; | |||
| import org.apache.ibatis.annotations.Param; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| /** | |||
| @@ -21,5 +23,7 @@ public interface WxEnergyFeesTimeShopMapper extends CommonMapper<WxEnergyFeesTim | |||
| List<Long> findShopIdList(WxEnergyFeesTimeShop wxBillRent); | |||
| List<Long> findTimeIdList(WxEnergyFeesTimeShop wxBillRent); | |||
| List<Date> findLastTimeEndGroup(WxEnergyFeesTimeShop wxBillRent); | |||
| } | |||
| @@ -19,5 +19,7 @@ public interface WxEnergyMeterReadingMapper extends CommonMapper<WxEnergyMeterRe | |||
| void setIsDel(@Param("id")Long id,@Param("tenantId")String tenantId,@Param("isDel")Integer isDel); | |||
| void setConfirm(WxEnergyMeterReading wxBillRent); | |||
| BigDecimal findNumberSum(WxEnergyMeterReading wxBillRent); | |||
| } | |||
| @@ -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<Long,WxEnergyFeesTime> getTimeMap(WxEnergyFeesTime record); | |||
| void timeDel(WxEnergyFeesTime record); | |||
| List<String> getTimeShopNumber(WxEnergyFeesTime record); | |||
| List<Date> findLastTimeEndGroup(WxEnergyFeesTime record); | |||
| //费用科目 | |||
| PageInfo<WxEnergyFees> 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<String> getReadingCalcuteShopNumber(WxEnergyReadingCalcute record); | |||
| void deleteReadingCalcuteResult(Long id,TenantEntity tenantEntity); | |||
| } | |||
| @@ -305,6 +305,7 @@ public class WxEnergyServiceImpl implements WxEnergyService { | |||
| //查询是不是已经有了 | |||
| WxEnergyFeesTimeShop tsq = new WxEnergyFeesTimeShop(); | |||
| tsq.updateTenantInfo(record); | |||
| tsq.setPeriod(record.getPeriod()); | |||
| tsq.setShopIds(record.getShopIds()); | |||
| tsq.setType(record.getType()); | |||
| @@ -312,7 +313,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<Date> 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 +335,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 +346,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 +391,16 @@ public class WxEnergyServiceImpl implements WxEnergyService { | |||
| return wxShopService.getShopNumberList(sq); | |||
| } | |||
| @Override | |||
| public List<Date> findLastTimeEndGroup(WxEnergyFeesTime record) { | |||
| WxEnergyFeesTimeShop tsq = new WxEnergyFeesTimeShop(); | |||
| tsq.updateTenantInfo(record); | |||
| tsq.setShopIds(record.getShopIds()); | |||
| tsq.setType(record.getType()); | |||
| List<Date> list = wxEnergyFeesTimeShopMapper.findLastTimeEndGroup(tsq); | |||
| return list; | |||
| } | |||
| @Override | |||
| public PageInfo<WxEnergyFees> feesListAsPage(WxEnergyFees record, Integer pageIndex, Integer pageSize,boolean isSetOff) { | |||
| @@ -874,6 +892,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<Map<String,Object>> execlList = new ArrayList<Map<String,Object>>(); | |||
| @@ -1062,13 +1085,25 @@ public class WxEnergyServiceImpl implements WxEnergyService { | |||
| for (int i = 0 ; i < shopIds.size(); i ++) { | |||
| Long shopId= shopIds.get(i); | |||
| WxShop shop = shopMap.get(shopId); | |||
| //如果店铺已经存在了计算,则不允许重复 | |||
| WxEnergyReadingCalcuteResult crq = new WxEnergyReadingCalcuteResult(); | |||
| crq.updateTenantInfo(record); | |||
| crq.setShopId(shopId); | |||
| crq.setPeriod(record.getPeriod()); | |||
| crq.setFeesId(record.getFeesId()); | |||
| List<WxEnergyReadingCalcuteResult> 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<Long> 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,7 +1112,7 @@ public class WxEnergyServiceImpl implements WxEnergyService { | |||
| tq.setPeriod(record.getPeriod()); | |||
| List<WxEnergyFeesTime> 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); | |||
| @@ -1087,7 +1122,7 @@ public class WxEnergyServiceImpl implements WxEnergyService { | |||
| csq.setShopId(shopId); | |||
| List<WxEnergyFeesShop> shopFeesList = wxEnergyFeesShopMapper.findList(csq); | |||
| if (null == shopFeesList || shopFeesList.size() <= 0 ) { | |||
| return; | |||
| throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"店铺"+shop.getShopNumber()+"未设置费用标准"); | |||
| } | |||
| //循环店铺科目, | |||
| @@ -1115,9 +1150,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<Long> shopIds = wxShopService.getShopIds(sq); | |||
| if (null == shopIds || shopIds.size() <= 0 ) { | |||
| record.setId(-1L); | |||
| }else { | |||
| record.setShopIds(shopIds); | |||
| } | |||
| } | |||
| } | |||
| @Override | |||
| public PageInfo<WxEnergyReadingCalcuteResult> readingCalcuteResultListAsPage(WxEnergyReadingCalcuteResult record, Integer pageIndex, | |||
| Integer pageSize) { | |||
| initReadingCalcuteResultQueryParam(record); | |||
| PageInfo<WxEnergyReadingCalcuteResult> page = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxEnergyReadingCalcuteResultMapper.findList(record)); | |||
| if (null != page && null != page.getList()) { | |||
| WxEnergyFees fq = new WxEnergyFees(); | |||
| @@ -1166,7 +1216,11 @@ public class WxEnergyServiceImpl implements WxEnergyService { | |||
| @Override | |||
| public void exportReadingCalcuteResult(WxEnergyReadingCalcuteResult record, HttpServletRequest request, HttpServletResponse response) { | |||
| PageInfo<WxEnergyReadingCalcuteResult> page = readingCalcuteResultListAsPage(record, 1, 10000); | |||
| excelService.exportExcel(page.getList(), null, "能源计算结果", WxEnergyReadingCalcuteResult.class, "能源计算结果.xlsx", response, false); | |||
| List<WxEnergyReadingCalcuteResult> list = new ArrayList<WxEnergyReadingCalcuteResult>(); | |||
| 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) { | |||
| @@ -1343,4 +1397,9 @@ public class WxEnergyServiceImpl implements WxEnergyService { | |||
| return null; | |||
| } | |||
| @Override | |||
| public void deleteReadingCalcuteResult(Long id, TenantEntity tenantEntity) { | |||
| wxEnergyReadingCalcuteResultMapper.deleteById(id); | |||
| } | |||
| } | |||
| @@ -56,6 +56,6 @@ | |||
| <update id = "setIsDel" parameterType="HashMap"> | |||
| update wx_energy_fees_time set is_del = #{isDel} where id = #{id} and `tenant_id` = #{tenantId} | |||
| </update> | |||
| </mapper> | |||
| @@ -9,12 +9,14 @@ | |||
| <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/> | |||
| <result column="period" jdbcType="VARCHAR" property="period"/> | |||
| <result column="time_id" jdbcType="BIGINT" property="timeId"/> | |||
| <result column="start_time" jdbcType="TIMESTAMP" property="startTime"/> | |||
| <result column="end_time" jdbcType="TIMESTAMP" property="endTime"/> | |||
| <result column="shop_id" jdbcType="BIGINT" property="shopId"/> | |||
| <result column="type" jdbcType="INTEGER" property="type"/> | |||
| </resultMap> | |||
| <sql id="allColumns"> | |||
| `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` | |||
| </sql> | |||
| <sql id="dynamicWhereConditions"> | |||
| @@ -82,5 +84,13 @@ | |||
| <include refid="dynamicWhereConditions"/> | |||
| </select> | |||
| <select id="findLastTimeEndGroup" parameterType="com.iformall.domain.po.WxEnergyFeesTimeShop" resultType="Date"> | |||
| SELECT end_time FROM ( | |||
| SELECT shop_id,MAX(end_time) AS end_time FROM wx_energy_fees_time_shop | |||
| <include refid="dynamicWhereConditions"/> | |||
| GROUP BY shop_id | |||
| ) AS temp GROUP BY temp.end_time | |||
| </select> | |||
| </mapper> | |||
| @@ -24,6 +24,7 @@ | |||
| <result column="meter_rate" jdbcType="VARCHAR" property="meterRate"/> | |||
| <result column="meter_name" jdbcType="VARCHAR" property="meterName"/> | |||
| <result column="is_del" jdbcType="INTEGER" property="isDel"/> | |||
| <result column="is_confirm" jdbcType="INTEGER" property="isConfirm"/> | |||
| <result column="building_name" jdbcType="VARCHAR" property="buildingName"/> | |||
| <result column="floor_name" jdbcType="VARCHAR" property="floorName"/> | |||
| <result column="shop_name" jdbcType="VARCHAR" property="shopName"/> | |||
| @@ -31,7 +32,7 @@ | |||
| <sql id="allColumns"> | |||
| `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` | |||
| </sql> | |||
| <sql id="dynamicWhereConditions"> | |||
| @@ -48,6 +49,7 @@ | |||
| <if test=" null != meterType ">and `meter_type` = #{meterType}</if> | |||
| <if test=" null != meterName and '' != meterName ">and meter_name like concat('%', #{meterName},'%')</if> | |||
| <if test=" null != isDel ">and `is_del` = #{isDel}</if> | |||
| <if test=" null != isConfirm ">and `is_confirm` = #{isConfirm}</if> | |||
| <if test=" null != createByName and '' != createByName ">and create_by_name like concat('%', #{createByName},'%')</if> | |||
| <if test=" null != meterIds "> | |||
| and meter_id in | |||
| @@ -92,6 +94,14 @@ | |||
| from wx_energy_meter_reading | |||
| <include refid="dynamicWhereConditions"/> | |||
| </select> | |||
| <update id = "setConfirm" parameterType="HashMap"> | |||
| update wx_energy_meter_reading set is_confirm = 1 | |||
| where id in | |||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||
| #{idItem} | |||
| </foreach> | |||
| </update> | |||
| </mapper> | |||
| @@ -37,6 +37,12 @@ | |||
| <if test=" null != shopId ">and `shop_id` = #{shopId}</if> | |||
| <if test=" null != feesId ">and `fees_id` = #{feesId}</if> | |||
| <if test=" null != feesShopId ">and `fees_shop_id` = #{feesShopId}</if> | |||
| <if test=" null != shopIds "> | |||
| and shop_id in | |||
| <foreach collection="shopIds" index="index" item="sidItem" open="(" separator="," close=")"> | |||
| #{sidItem} | |||
| </foreach> | |||
| </if> | |||
| <if test=" null != feesIds "> | |||
| and fees_id in | |||
| <foreach collection="feesIds" index="index" item="feidItem" open="(" separator="," close=")"> | |||