From 3876e00fcd368cc95127627b14880b6c4fec22d7 Mon Sep 17 00:00:00 2001 From: luozukai Date: Mon, 19 Aug 2019 15:24:01 +0800 Subject: [PATCH 1/3] =?UTF-8?q?[=E5=90=88=E5=90=8C][=E4=BF=AE=E6=94=B9][?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E8=81=94=E8=90=A5=E8=B7=B3=E7=82=B9=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../migration/V201908191508__L_ADD_MENU.sql | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V201908191508__L_ADD_MENU.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V201908191508__L_ADD_MENU.sql b/mallinkAdmin/src/main/resources/db/migration/V201908191508__L_ADD_MENU.sql new file mode 100644 index 000000000..68a87e357 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V201908191508__L_ADD_MENU.sql @@ -0,0 +1,31 @@ +update mall_permission set name = '账单催缴' where name = '商户账单'; + +INSERT INTO `mall_permission` + (`id`,`name`, `parent_id`,`available`,`permission`,`resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`,`sort`) +VALUES + (414, '商户账单', 4, 'Y', null, 1, null, null, 'merchantBillList', null, 0, 414); + +DROP TABLE IF EXISTS `mall_sale_type` ; +CREATE TABLE `mall_sale_type` ( + `id` bigint(64) NOT NULL, + `name` varchar(32) DEFAULT NULL COMMENT '销售类型', + `type` tinyint(2) DEFAULT NULL COMMENT '资源类型1:尊享全能版 2:尊享营销版 3.速享版', + `period` tinyint(2) DEFAULT NULL COMMENT '有效期(单位月)', + `menus` json DEFAULT NULL COMMENT '菜单列表', + PRIMARY KEY (`id`), + UNIQUE `id_UNIQUE` USING BTREE (`id`) comment '' +) ENGINE=`InnoDB` ROW_FORMAT=DYNAMIC COMMENT='系统销售表' CHECKSUM=0 DELAY_KEY_WRITE=0; + +INSERT INTO `mall_sale_type` + (`id`,`name`, `type`, `period`, `menus`) +VALUES + (1, '尊享全能版', 1, 12, + '[1,2,3,4,5,6,7,8,9,10,50,101,102,103,104,105,106,107,108,201,202,203,204,205,206,211,212,221,222,251,301,302,303,304,305,306,401,402,403,404,405,406,407,408,409,410,411,412,413,414,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932,951,952,961,962,965,966,967]' + ), + (2, '尊享营销版', 2, 12, + '[1,2,4,5,6,7,8,9,10,50,101,102,103,104,105,106,107,201,202,203,204,205,211,212,221,222,251,409,410,411,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932,951,961]' + ), + (3, '速享版', 3, 1, + '[2,4,5,6,7,10,50,201,202,205,211,212,221,222,251,409,410,411,501,502,503,504,505,506,507,508,511,512,513,521,522,523,531,532,533,591,592,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932]' + ) + ; From a05d0d11cde8b2699d9920c22cb6e15538f7cd57 Mon Sep 17 00:00:00 2001 From: luozukai Date: Mon, 19 Aug 2019 15:33:13 +0800 Subject: [PATCH 2/3] =?UTF-8?q?[=E5=90=88=E5=90=8C][=E4=BF=AE=E6=94=B9][?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E8=81=94=E8=90=A5=E8=B7=B3=E7=82=B9=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/db/migration/V201908191508__L_ADD_MENU.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkAdmin/src/main/resources/db/migration/V201908191508__L_ADD_MENU.sql b/mallinkAdmin/src/main/resources/db/migration/V201908191508__L_ADD_MENU.sql index 68a87e357..87460782d 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V201908191508__L_ADD_MENU.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V201908191508__L_ADD_MENU.sql @@ -3,7 +3,7 @@ update mall_permission set name = '账单催缴' where name = '商户账单'; INSERT INTO `mall_permission` (`id`,`name`, `parent_id`,`available`,`permission`,`resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`,`sort`) VALUES - (414, '商户账单', 4, 'Y', null, 1, null, null, 'merchantBillList', null, 0, 414); + (414, '商户账单', 4, 'Y', null, 1, null, null, 'merchantBillList', 'icon-icon-test2', 0, 402); DROP TABLE IF EXISTS `mall_sale_type` ; CREATE TABLE `mall_sale_type` ( From e2d91dcb8456ce11f2faaac2708bbab050aeee97 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Mon, 19 Aug 2019 16:23:32 +0800 Subject: [PATCH 3/3] =?UTF-8?q?[=E7=94=B5=E8=A1=A8=E7=AE=A1=E7=90=86][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schedule/PowerBillAutoBuildSchedule.java | 71 +++++++++++++++---- 1 file changed, 58 insertions(+), 13 deletions(-) diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/PowerBillAutoBuildSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/PowerBillAutoBuildSchedule.java index 178e9753c..5bdcbd429 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/PowerBillAutoBuildSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/PowerBillAutoBuildSchedule.java @@ -1,15 +1,16 @@ package com.iformall.schedule; import com.alibaba.fastjson.JSONObject; +import com.iformall.domain.dto.KwMeterDataDto; import com.iformall.domain.po.*; -import com.iformall.enums.EnumBillDailyType; -import com.iformall.enums.EnumBillPayWay; -import com.iformall.enums.EnumDelStatus; -import com.iformall.enums.EnumPowerBillBuildWay; +import com.iformall.domain.vo.KwMeterDataVo; +import com.iformall.enums.*; +import com.iformall.mapper.KwMerchantMeterMapper; import com.iformall.mapper.WxMerchantPowerBillConfigMapper; import com.iformall.mapper.WxMerchantShopMapper; import com.iformall.mapper.WxPowerBillAutoConfigMapper; import com.iformall.service.WxBillDailyService; +import com.iformall.service.kw.KwMeterDataService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -47,6 +48,12 @@ public class PowerBillAutoBuildSchedule { @Autowired private WxMerchantShopMapper wxMerchantShopMapper; + @Autowired + KwMeterDataService kwMeterDataService; + + @Autowired + KwMerchantMeterMapper kwMerchantMeterMapper; + /** * 每天5点执行 */ @@ -75,25 +82,37 @@ public class PowerBillAutoBuildSchedule { private void buildPowerBill(WxMerchantPowerBillConfig wxMerchantPowerBillConfig, WxPowerBillAutoConfig wxPowerBillAutoConfig) { - String unitPrice = wxPowerBillAutoConfig.getUnitPrice(); - Date startdate = getLastMonthDate().get("startdate"); - Date enddate = getLastMonthDate().get("enddate"); + Map monthDate = getLastMonthDate(); + Date startdate = monthDate.get("startdate"); + Date enddate = monthDate.get("enddate"); + Date lastdate = monthDate.get("lastdate"); MallUserInfo mallUserInfo = getMallUserInfo(); WxBillDaily wxBillDaily = getBillDaily(wxMerchantPowerBillConfig); JSONObject priceDetal = new JSONObject(); Date receiveDate = getReceiveDate(Integer.parseInt(wxPowerBillAutoConfig.getReceiveDay())); + long receivePay = 0L; + Long merchantId = wxMerchantPowerBillConfig.getMerchantId(); if (wxMerchantPowerBillConfig.getBuildWay().equals(EnumPowerBillBuildWay.METER.getCode())) { //根据日期拉取电量 单价 * 电量 = 电费 - + int usedPower = getUsedPower(startdate, lastdate, merchantId); + if (usedPower == 0) { + logger.info("没有电量使用,不生成账单>>>>商户ID:" + merchantId); + return; + } + String price = wxMerchantPowerBillConfig.getPrice(); + priceDetal.put("unitPrice", price); + priceDetal.put("power", usedPower); + receivePay = new BigDecimal(price).multiply(new BigDecimal(100)) + .multiply(new BigDecimal(usedPower)).longValue(); } else { + String unitPrice = wxPowerBillAutoConfig.getUnitPrice(); String price = wxMerchantPowerBillConfig.getPrice(); priceDetal.put("unitPrice", unitPrice); priceDetal.put("power", 0); - long receivePay = new BigDecimal(price).multiply(new BigDecimal(100)).longValue(); - wxBillDaily.setReceivePay(receivePay); - wxBillDaily.setNeedPay(receivePay); + receivePay = new BigDecimal(price).multiply(new BigDecimal(100)).longValue(); } - + wxBillDaily.setReceivePay(receivePay); + wxBillDaily.setNeedPay(receivePay); wxBillDaily.setReceiveDate(receiveDate); wxBillDaily.setStarttime(startdate); wxBillDaily.setEndtime(enddate); @@ -102,6 +121,28 @@ public class PowerBillAutoBuildSchedule { } + private int getUsedPower(Date startdate, Date lastdate, Long merchantId) { + KwMerchantMeter kwMerchantMeter = new KwMerchantMeter(); + kwMerchantMeter.setMerchantId(merchantId); + kwMerchantMeter.setStatus(EnumMerchantMeterStatus.VALID.getCode()); + List merchantMeterList = kwMerchantMeterMapper.select(kwMerchantMeter); + int usedPower = 0; + if (!merchantMeterList.isEmpty()) { + int size = merchantMeterList.size(); + for (int i = 0; i < size; i++) { + KwMerchantMeter merchantMeter = merchantMeterList.get(i); + KwMeterDataDto kwMeterDataDto = new KwMeterDataDto(); + kwMeterDataDto.setTenantId(merchantMeter.getTenantId()); + kwMeterDataDto.setMeterId(merchantMeter.getMeterId()); + kwMeterDataDto.setStartTime(startdate); + kwMeterDataDto.setEndTime(lastdate); + KwMeterDataVo power = kwMeterDataService.getPower(kwMeterDataDto); + usedPower += power.getUsedPower(); + } + } + return usedPower; + } + private WxBillDaily getBillDaily(WxMerchantPowerBillConfig wxMerchantPowerBillConfig) { WxBillDaily wxBillDaily = new WxBillDaily(); Long merchantId = wxMerchantPowerBillConfig.getMerchantId(); @@ -125,13 +166,17 @@ public class PowerBillAutoBuildSchedule { now = now.with(TemporalAdjusters.lastDayOfMonth()); Instant end = now.atStartOfDay().atZone(zoneId).toInstant(); Date last = Date.from(end); + now = now.with(TemporalAdjusters.firstDayOfNextMonth()); + Instant lastday = now.atStartOfDay().atZone(zoneId).toInstant(); + Date next = Date.from(lastday); Map dateMap = new HashMap<>(2); dateMap.put("startdate", first); dateMap.put("enddate", last); + dateMap.put("lastdate", next); return dateMap; } - private Date getReceiveDate(Integer day) { + private Date getReceiveDate(int day) { ZoneId zoneId = ZoneOffset.systemDefault(); LocalDate of = LocalDate.of(LocalDate.now().getYear(), LocalDate.now().getMonth(), day); Instant instant = of.atStartOfDay().atZone(zoneId).toInstant();