소스 검색

Merge remote-tracking branch 'origin/master' into xinghong-dev

xiaogang 5 년 전
부모
커밋
1bfe876ad0

+ 18 - 0
java110-bean/src/main/java/com/java110/dto/fee/FeeDetailDto.java

@@ -36,6 +36,8 @@ public class FeeDetailDto extends PageDto implements Serializable {
     private String stateName;
     private String stateName;
     private String curYear;
     private String curYear;
     private String configId;
     private String configId;
+    private String feeName;
+    private String importFeeName;
 
 
 
 
     public String getPrimeRate() {
     public String getPrimeRate() {
@@ -190,4 +192,20 @@ public class FeeDetailDto extends PageDto implements Serializable {
     public void setConfigId(String configId) {
     public void setConfigId(String configId) {
         this.configId = configId;
         this.configId = configId;
     }
     }
+
+    public String getFeeName() {
+        return feeName;
+    }
+
+    public void setFeeName(String feeName) {
+        this.feeName = feeName;
+    }
+
+    public String getImportFeeName() {
+        return importFeeName;
+    }
+
+    public void setImportFeeName(String importFeeName) {
+        this.importFeeName = importFeeName;
+    }
 }
 }

+ 9 - 0
java110-bean/src/main/java/com/java110/vo/api/ApiFeeDetailDataVo.java

@@ -30,6 +30,7 @@ public class ApiFeeDetailDataVo extends Vo {
     private String stateName;
     private String stateName;
     private String startTime;
     private String startTime;
     private String endTime;
     private String endTime;
+    private String feeName;
 
 
 
 
     public String getPrimeRate() {
     public String getPrimeRate() {
@@ -136,4 +137,12 @@ public class ApiFeeDetailDataVo extends Vo {
     public void setEndTime(String endTime) {
     public void setEndTime(String endTime) {
         this.endTime = endTime;
         this.endTime = endTime;
     }
     }
+
+    public String getFeeName() {
+        return feeName;
+    }
+
+    public void setFeeName(String feeName) {
+        this.feeName = feeName;
+    }
 }
 }

+ 15 - 3
java110-db/src/main/resources/mapper/fee/FeeDetailServiceDaoImplMapper.xml

@@ -109,10 +109,13 @@
         t.receivable_amount,t.receivable_amount receivableAmount,
         t.receivable_amount,t.receivable_amount receivableAmount,
         t.cycles,t.remark,t.status_cd,t.status_cd statusCd,t.received_amount,t.received_amount receivedAmount,
         t.cycles,t.remark,t.status_cd,t.status_cd statusCd,t.received_amount,t.received_amount receivedAmount,
         t.community_id,t.community_id communityId,t.b_id,t.b_id bId,t.fee_id,t.fee_id feeId ,t.create_time createTime,
         t.community_id,t.community_id communityId,t.b_id,t.b_id bId,t.fee_id,t.fee_id feeId ,t.create_time createTime,
-        t.state,d.name stateName,t.start_time,t.end_time,t.start_time startTime,t.end_time endTime
+        t.state,d.name stateName,t.start_time,t.end_time,t.start_time startTime,t.end_time endTime,pfa.`value` importFeeName,pfc.fee_name feeName
         from pay_fee_detail t
         from pay_fee_detail t
-        <if test="configId != null and configId != ''">
-            inner join pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
+        left join pay_fee_attrs pfa on t.fee_id = pfa.fee_id and pfa.spec_cd = '390002'
+        left join pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
+        left join pay_fee_config pfc on pf.config_id = pfc.config_id and pfc.status_cd = '0'
+        <if test="ownerId != null and ownerId != ''">
+            left join pay_fee_attrs pfa on pfa.fee_id = t.fee_id and pfa.spec_cd = '390007' and pfa.status_cd = '0'
         </if>
         </if>
         left join t_dict d on t.state = d.status_cd and d.table_name = 'pay_fee_detail' and d.table_columns = 'state'
         left join t_dict d on t.state = d.status_cd and d.table_name = 'pay_fee_detail' and d.table_columns = 'state'
         where 1 =1
         where 1 =1
@@ -120,6 +123,9 @@
             and pf.config_id = #{configId}
             and pf.config_id = #{configId}
             and pf.payer_obj_id = #{payerObjId}
             and pf.payer_obj_id = #{payerObjId}
         </if>
         </if>
+        <if test="ownerId != null and ownerId != ''">
+            pfa.value = #{ownerId}
+        </if>
         <if test="primeRate !=null and primeRate != ''">
         <if test="primeRate !=null and primeRate != ''">
             and t.prime_rate= #{primeRate}
             and t.prime_rate= #{primeRate}
         </if>
         </if>
@@ -215,11 +221,17 @@
         <if test="configId != null and configId != ''">
         <if test="configId != null and configId != ''">
             inner join pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
             inner join pay_fee pf on t.fee_id = pf.fee_id and pf.status_cd = '0'
         </if>
         </if>
+        <if test="ownerId != null and ownerId != ''">
+            left join pay_fee_attrs pfa on pfa.fee_id = t.fee_id and pfa.spec_cd = '390007' and pfa.status_cd = '0'
+        </if>
         where 1 =1
         where 1 =1
         <if test="configId != null and configId != ''">
         <if test="configId != null and configId != ''">
             and pf.config_id = #{configId}
             and pf.config_id = #{configId}
             and pf.payer_obj_id = #{payerObjId}
             and pf.payer_obj_id = #{payerObjId}
         </if>
         </if>
+        <if test="ownerId != null and ownerId != ''">
+            pfa.value = #{ownerId}
+        </if>
         <if test="primeRate !=null and primeRate != ''">
         <if test="primeRate !=null and primeRate != ''">
             and t.prime_rate= #{primeRate}
             and t.prime_rate= #{primeRate}
         </if>
         </if>

+ 0 - 13
service-api/src/main/java/com/java110/api/listener/fee/QueryFeeDetailListener.java

@@ -61,19 +61,6 @@ public class QueryFeeDetailListener extends AbstractServiceApiDataFlowListener {
         ApiFeeDetailVo apiFeeDetailVo = new ApiFeeDetailVo();
         ApiFeeDetailVo apiFeeDetailVo = new ApiFeeDetailVo();
         FeeDetailDto feeDetailDto = BeanConvertUtil.covertBean(reqJson, FeeDetailDto.class);
         FeeDetailDto feeDetailDto = BeanConvertUtil.covertBean(reqJson, FeeDetailDto.class);
 
 
-//        try {
-//            if (reqJson.containsKey("startTime")) {
-//                feeDetailDto.setStartTime(DateUtil.getDateFromString(reqJson.getString("startTime"), DateUtil.DATE_FORMATE_STRING_B));
-//            }
-//
-//            if (reqJson.containsKey("endTime")) {
-//                feeDetailDto.setStartTime(DateUtil.getDateFromString(reqJson.getString("endTime"), DateUtil.DATE_FORMATE_STRING_B));
-//            }
-//        } catch (Exception e) {
-//            throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, e.getMessage() + "传入开始时间或结束时间格式错误 c");
-//        }
-
-
         int total = feeDetailInnerServiceSMOImpl.queryFeeDetailsCount(feeDetailDto);
         int total = feeDetailInnerServiceSMOImpl.queryFeeDetailsCount(feeDetailDto);
         apiFeeDetailVo.setTotal(total);
         apiFeeDetailVo.setTotal(total);
         if (total > 0) {
         if (total > 0) {

+ 4 - 1
service-api/src/main/java/com/java110/api/listener/notice/SaveNoticeListener.java

@@ -62,7 +62,7 @@ public class SaveNoticeListener extends AbstractServiceApiPlusListener {
     @Override
     @Override
     protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
     protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
 
 
-        if (!reqJson.containsKey("isAll") || StringUtil.isEmpty(reqJson.getString("isAll"))) {
+        if (!reqJson.containsKey("isAll") || StringUtil.isEmpty(reqJson.getString("isAll")) || "N".equals(reqJson.getString("isAll"))) {
             noticeBMOImpl.addNotice(reqJson, context);
             noticeBMOImpl.addNotice(reqJson, context);
             return;
             return;
         }
         }
@@ -107,6 +107,9 @@ public class SaveNoticeListener extends AbstractServiceApiPlusListener {
 
 
         for (ApiCommunityDataVo apiCommunityDataVo : communitys) {
         for (ApiCommunityDataVo apiCommunityDataVo : communitys) {
             reqJson.put("communityId", apiCommunityDataVo.getCommunityId());
             reqJson.put("communityId", apiCommunityDataVo.getCommunityId());
+            if (reqJson.containsKey("objType") && "001".equals(reqJson.getString("objType"))) {
+                reqJson.put("objId", apiCommunityDataVo.getCommunityId());
+            }
             noticeBMOImpl.addNotice(reqJson, context);
             noticeBMOImpl.addNotice(reqJson, context);
         }
         }
 
 

+ 61 - 34
service-community/src/main/java/com/java110/community/listener/notice/SaveNoticeInfoListener.java

@@ -2,20 +2,21 @@ package com.java110.community.listener.notice;
 
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
-import com.java110.po.notice.NoticePo;
-import com.java110.utils.constant.BusinessTypeConstant;
-import com.java110.utils.constant.StatusConstant;
-import com.java110.utils.util.Assert;
 import com.java110.community.dao.INoticeServiceDao;
 import com.java110.community.dao.INoticeServiceDao;
 import com.java110.core.annotation.Java110Listener;
 import com.java110.core.annotation.Java110Listener;
 import com.java110.core.context.DataFlowContext;
 import com.java110.core.context.DataFlowContext;
 import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.entity.center.Business;
 import com.java110.entity.center.Business;
+import com.java110.po.notice.NoticePo;
+import com.java110.utils.constant.BusinessTypeConstant;
+import com.java110.utils.constant.StatusConstant;
+import com.java110.utils.util.Assert;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
@@ -26,7 +27,7 @@ import java.util.Map;
  */
  */
 @Java110Listener("saveNoticeInfoListener")
 @Java110Listener("saveNoticeInfoListener")
 @Transactional
 @Transactional
-public class SaveNoticeInfoListener extends AbstractNoticeBusinessServiceDataFlowListener{
+public class SaveNoticeInfoListener extends AbstractNoticeBusinessServiceDataFlowListener {
 
 
     private static Logger logger = LoggerFactory.getLogger(SaveNoticeInfoListener.class);
     private static Logger logger = LoggerFactory.getLogger(SaveNoticeInfoListener.class);
 
 
@@ -45,29 +46,30 @@ public class SaveNoticeInfoListener extends AbstractNoticeBusinessServiceDataFlo
 
 
     /**
     /**
      * 保存通知信息 business 表中
      * 保存通知信息 business 表中
+     *
      * @param dataFlowContext 数据对象
      * @param dataFlowContext 数据对象
-     * @param business 当前业务对象
+     * @param business        当前业务对象
      */
      */
     @Override
     @Override
     protected void doSaveBusiness(DataFlowContext dataFlowContext, Business business) {
     protected void doSaveBusiness(DataFlowContext dataFlowContext, Business business) {
         JSONObject data = business.getDatas();
         JSONObject data = business.getDatas();
-        Assert.notEmpty(data,"没有datas 节点,或没有子节点需要处理");
+        Assert.notEmpty(data, "没有datas 节点,或没有子节点需要处理");
 
 
         //处理 businessNotice 节点
         //处理 businessNotice 节点
-        if(data.containsKey(NoticePo.class.getSimpleName())){
+        if (data.containsKey(NoticePo.class.getSimpleName())) {
             Object bObj = data.get(NoticePo.class.getSimpleName());
             Object bObj = data.get(NoticePo.class.getSimpleName());
             JSONArray businessNotices = null;
             JSONArray businessNotices = null;
-            if(bObj instanceof JSONObject){
+            if (bObj instanceof JSONObject) {
                 businessNotices = new JSONArray();
                 businessNotices = new JSONArray();
                 businessNotices.add(bObj);
                 businessNotices.add(bObj);
-            }else {
-                businessNotices = (JSONArray)bObj;
+            } else {
+                businessNotices = (JSONArray) bObj;
             }
             }
             //JSONObject businessNotice = data.getJSONObject("businessNotice");
             //JSONObject businessNotice = data.getJSONObject("businessNotice");
-            for (int bNoticeIndex = 0; bNoticeIndex < businessNotices.size();bNoticeIndex++) {
+            for (int bNoticeIndex = 0; bNoticeIndex < businessNotices.size(); bNoticeIndex++) {
                 JSONObject businessNotice = businessNotices.getJSONObject(bNoticeIndex);
                 JSONObject businessNotice = businessNotices.getJSONObject(bNoticeIndex);
                 doBusinessNotice(business, businessNotice);
                 doBusinessNotice(business, businessNotice);
-                if(bObj instanceof JSONObject) {
+                if (bObj instanceof JSONObject) {
                     dataFlowContext.addParamOut("noticeId", businessNotice.getString("noticeId"));
                     dataFlowContext.addParamOut("noticeId", businessNotice.getString("noticeId"));
                 }
                 }
             }
             }
@@ -76,23 +78,46 @@ public class SaveNoticeInfoListener extends AbstractNoticeBusinessServiceDataFlo
 
 
     /**
     /**
      * business 数据转移到 instance
      * business 数据转移到 instance
+     *
      * @param dataFlowContext 数据对象
      * @param dataFlowContext 数据对象
-     * @param business 当前业务对象
+     * @param business        当前业务对象
      */
      */
     @Override
     @Override
     protected void doBusinessToInstance(DataFlowContext dataFlowContext, Business business) {
     protected void doBusinessToInstance(DataFlowContext dataFlowContext, Business business) {
         JSONObject data = business.getDatas();
         JSONObject data = business.getDatas();
 
 
         Map info = new HashMap();
         Map info = new HashMap();
-        info.put("bId",business.getbId());
-        info.put("operate",StatusConstant.OPERATE_ADD);
+        info.put("bId", business.getbId());
+        info.put("operate", StatusConstant.OPERATE_ADD);
 
 
         //通知信息
         //通知信息
         List<Map> businessNoticeInfo = noticeServiceDaoImpl.getBusinessNoticeInfo(info);
         List<Map> businessNoticeInfo = noticeServiceDaoImpl.getBusinessNoticeInfo(info);
-        if( businessNoticeInfo != null && businessNoticeInfo.size() >0) {
+
+        //判断是否夸分片处理数据
+        if (businessNoticeInfo != null && businessNoticeInfo.size() > 1) {
+            Map<String, List<Map>> maps = new HashMap<>();
+            for (Map businessNotice : businessNoticeInfo) {
+                if (maps.containsKey(businessNotice.get("community_id"))) {
+                    List<Map> businessNoticeInfos = maps.get(businessNotice.get("community_id"));
+                    businessNoticeInfos.add(businessNotice);
+                    maps.put(businessNotice.get("community_id").toString(), businessNoticeInfos);
+                } else {
+                    List<Map> businessNoticeInfos = new ArrayList<>();
+                    businessNoticeInfos.add(businessNotice);
+                    maps.put(businessNotice.get("community_id").toString(), businessNoticeInfos);
+                }
+            }
+
+            for (String key : maps.keySet()) {
+                reFreshShareColumn(info, maps.get(key).get(0));
+                noticeServiceDaoImpl.saveNoticeInfoInstance(info);
+            }
+            return;
+        }
+        if (businessNoticeInfo != null && businessNoticeInfo.size() > 0) {
             reFreshShareColumn(info, businessNoticeInfo.get(0));
             reFreshShareColumn(info, businessNoticeInfo.get(0));
             noticeServiceDaoImpl.saveNoticeInfoInstance(info);
             noticeServiceDaoImpl.saveNoticeInfoInstance(info);
-            if(businessNoticeInfo.size() == 1) {
+            if (businessNoticeInfo.size() == 1) {
                 dataFlowContext.addParamOut("noticeId", businessNoticeInfo.get(0).get("notice_id"));
                 dataFlowContext.addParamOut("noticeId", businessNoticeInfo.get(0).get("notice_id"));
             }
             }
         }
         }
@@ -107,9 +132,9 @@ public class SaveNoticeInfoListener extends AbstractNoticeBusinessServiceDataFlo
      */
      */
     private void reFreshShareColumn(Map info, Map businessInfo) {
     private void reFreshShareColumn(Map info, Map businessInfo) {
 
 
-        if (info.containsKey("communityId")) {
-            return;
-        }
+//        if (info.containsKey("communityId")) {
+//            return;
+//        }
 
 
         if (!businessInfo.containsKey("community_id")) {
         if (!businessInfo.containsKey("community_id")) {
             return;
             return;
@@ -117,49 +142,51 @@ public class SaveNoticeInfoListener extends AbstractNoticeBusinessServiceDataFlo
 
 
         info.put("communityId", businessInfo.get("community_id"));
         info.put("communityId", businessInfo.get("community_id"));
     }
     }
+
     /**
     /**
      * 撤单
      * 撤单
+     *
      * @param dataFlowContext 数据对象
      * @param dataFlowContext 数据对象
-     * @param business 当前业务对象
+     * @param business        当前业务对象
      */
      */
     @Override
     @Override
     protected void doRecover(DataFlowContext dataFlowContext, Business business) {
     protected void doRecover(DataFlowContext dataFlowContext, Business business) {
         String bId = business.getbId();
         String bId = business.getbId();
         //Assert.hasLength(bId,"请求报文中没有包含 bId");
         //Assert.hasLength(bId,"请求报文中没有包含 bId");
         Map info = new HashMap();
         Map info = new HashMap();
-        info.put("bId",bId);
-        info.put("statusCd",StatusConstant.STATUS_CD_VALID);
+        info.put("bId", bId);
+        info.put("statusCd", StatusConstant.STATUS_CD_VALID);
         Map paramIn = new HashMap();
         Map paramIn = new HashMap();
-        paramIn.put("bId",bId);
-        paramIn.put("statusCd",StatusConstant.STATUS_CD_INVALID);
+        paramIn.put("bId", bId);
+        paramIn.put("statusCd", StatusConstant.STATUS_CD_INVALID);
         //通知信息
         //通知信息
         List<Map> noticeInfo = noticeServiceDaoImpl.getNoticeInfo(info);
         List<Map> noticeInfo = noticeServiceDaoImpl.getNoticeInfo(info);
-        if(noticeInfo != null && noticeInfo.size() > 0){
+        if (noticeInfo != null && noticeInfo.size() > 0) {
             reFreshShareColumn(paramIn, noticeInfo.get(0));
             reFreshShareColumn(paramIn, noticeInfo.get(0));
             noticeServiceDaoImpl.updateNoticeInfoInstance(paramIn);
             noticeServiceDaoImpl.updateNoticeInfoInstance(paramIn);
         }
         }
     }
     }
 
 
 
 
-
     /**
     /**
      * 处理 businessNotice 节点
      * 处理 businessNotice 节点
-     * @param business 总的数据节点
+     *
+     * @param business       总的数据节点
      * @param businessNotice 通知节点
      * @param businessNotice 通知节点
      */
      */
-    private void doBusinessNotice(Business business,JSONObject businessNotice){
+    private void doBusinessNotice(Business business, JSONObject businessNotice) {
 
 
-        Assert.jsonObjectHaveKey(businessNotice,"noticeId","businessNotice 节点下没有包含 noticeId 节点");
+        Assert.jsonObjectHaveKey(businessNotice, "noticeId", "businessNotice 节点下没有包含 noticeId 节点");
 
 
-        if(businessNotice.getString("noticeId").startsWith("-")){
+        if (businessNotice.getString("noticeId").startsWith("-")) {
             //刷新缓存
             //刷新缓存
             //flushNoticeId(business.getDatas());
             //flushNoticeId(business.getDatas());
 
 
-            businessNotice.put("noticeId",GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_noticeId));
+            businessNotice.put("noticeId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_noticeId));
 
 
         }
         }
 
 
-        businessNotice.put("bId",business.getbId());
+        businessNotice.put("bId", business.getbId());
         businessNotice.put("operate", StatusConstant.OPERATE_ADD);
         businessNotice.put("operate", StatusConstant.OPERATE_ADD);
         //保存通知信息
         //保存通知信息
         noticeServiceDaoImpl.saveBusinessNoticeInfo(businessNotice);
         noticeServiceDaoImpl.saveBusinessNoticeInfo(businessNotice);

+ 2 - 0
service-fee/src/main/java/com/java110/fee/api/PayFeeDetailApi.java

@@ -31,6 +31,8 @@ public class PayFeeDetailApi {
     public ResponseEntity<String> saveImportFeeDetail(@RequestBody String reqJsonStr) {
     public ResponseEntity<String> saveImportFeeDetail(@RequestBody String reqJsonStr) {
         JSONObject reqJson = JSONObject.parseObject(reqJsonStr);
         JSONObject reqJson = JSONObject.parseObject(reqJsonStr);
         Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含小区信息");
         Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含小区信息");
+        Assert.hasKeyAndValue(reqJson, "objType", "请求报文中未包含费用对象");
+
 
 
 
 
 
 

+ 106 - 26
service-fee/src/main/java/com/java110/fee/bmo/payFeeDetail/impl/ImportPayFeeDetailBMOImpl.java

@@ -8,13 +8,15 @@ import com.java110.dto.fee.FeeDetailDto;
 import com.java110.dto.fee.FeeDto;
 import com.java110.dto.fee.FeeDto;
 import com.java110.entity.assetImport.ImportRoomFee;
 import com.java110.entity.assetImport.ImportRoomFee;
 import com.java110.fee.bmo.payFeeDetail.IImportPayFeeBMODetail;
 import com.java110.fee.bmo.payFeeDetail.IImportPayFeeBMODetail;
-import com.java110.intf.fee.IImportFeeDetailInnerServiceSMO;
 import com.java110.intf.community.IRoomInnerServiceSMO;
 import com.java110.intf.community.IRoomInnerServiceSMO;
 import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
 import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
 import com.java110.intf.fee.IFeeDetailInnerServiceSMO;
 import com.java110.intf.fee.IFeeDetailInnerServiceSMO;
 import com.java110.intf.fee.IFeeInnerServiceSMO;
 import com.java110.intf.fee.IFeeInnerServiceSMO;
+import com.java110.intf.fee.IImportFeeDetailInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarInnerServiceSMO;
 import com.java110.po.fee.PayFeeDetailPo;
 import com.java110.po.fee.PayFeeDetailPo;
 import com.java110.po.fee.PayFeePo;
 import com.java110.po.fee.PayFeePo;
+import com.java110.utils.constant.StatusConstant;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.DateUtil;
@@ -45,6 +47,9 @@ public class ImportPayFeeDetailBMOImpl implements IImportPayFeeBMODetail {
     @Autowired
     @Autowired
     private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl;
     private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl;
 
 
+    @Autowired
+    private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
+
     /**
     /**
      * @param reqJson
      * @param reqJson
      * @return 订单服务能够接受的报文
      * @return 订单服务能够接受的报文
@@ -56,6 +61,7 @@ public class ImportPayFeeDetailBMOImpl implements IImportPayFeeBMODetail {
         String communityId = reqJson.getString("communityId");
         String communityId = reqJson.getString("communityId");
         String storeId = reqJson.getString("storeId");
         String storeId = reqJson.getString("storeId");
         String userId = reqJson.getString("userId");
         String userId = reqJson.getString("userId");
+        String objType = reqJson.getString("objType");
 
 
         JSONArray datas = reqJson.getJSONArray("importRoomFees");
         JSONArray datas = reqJson.getJSONArray("importRoomFees");
 
 
@@ -70,8 +76,11 @@ public class ImportPayFeeDetailBMOImpl implements IImportPayFeeBMODetail {
         if (importRoomFees.size() < 1) {
         if (importRoomFees.size() < 1) {
             return ResultVo.success();
             return ResultVo.success();
         }
         }
-
-        importFeeDetails(storeId, userId, importRoomFees);
+        if (FeeDto.PAYER_OBJ_TYPE_ROOM.equals(objType)) {
+            importFeeDetails(storeId, userId, importRoomFees);
+        } else {
+            importCarFeeDetails(storeId, userId, importRoomFees);
+        }
 
 
         return ResultVo.success();
         return ResultVo.success();
     }
     }
@@ -79,12 +88,80 @@ public class ImportPayFeeDetailBMOImpl implements IImportPayFeeBMODetail {
     private void importFeeDetails(String storeId, String userId, List<ImportRoomFee> importRoomFees) {
     private void importFeeDetails(String storeId, String userId, List<ImportRoomFee> importRoomFees) {
 
 
         importRoomFees = roomInnerServiceSMOImpl.freshRoomIds(importRoomFees);
         importRoomFees = roomInnerServiceSMOImpl.freshRoomIds(importRoomFees);
-
         for (ImportRoomFee importRoomFee : importRoomFees) {
         for (ImportRoomFee importRoomFee : importRoomFees) {
             importFeeDetail(importRoomFee, storeId, userId);
             importFeeDetail(importRoomFee, storeId, userId);
         }
         }
     }
     }
 
 
+
+    private void importCarFeeDetails(String storeId, String userId, List<ImportRoomFee> importCarFees) {
+
+        importCarFees = ownerCarInnerServiceSMOImpl.freshCarIds(importCarFees);
+        for (ImportRoomFee importCarFee : importCarFees) {
+            importCarFeeDetail(importCarFee, storeId, userId);
+        }
+    }
+
+    /**
+     * 导入 费用历史
+     *
+     * @param importRoomFee
+     */
+    private void importCarFeeDetail(ImportRoomFee importRoomFee, String storeId, String userId) {
+
+        FeeConfigDto feeConfigDto = new FeeConfigDto();
+        feeConfigDto.setFeeName(importRoomFee.getFeeName());
+        feeConfigDto.setCommunityId(importRoomFee.getCommunityId());
+        List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
+
+        Assert.listOnlyOne(feeConfigDtos, "费用项不存在或存在多条");
+
+        FeeConfigDto tmpFeeConfigDto = feeConfigDtos.get(0);
+
+        FeeDto feeDto = new FeeDto();
+        feeDto.setConfigId(tmpFeeConfigDto.getConfigId());
+        feeDto.setCommunityId(importRoomFee.getCommunityId());
+        feeDto.setPayerObjId(importRoomFee.getCarId());
+        feeDto.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CAR);
+        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
+
+        List<PayFeePo> payFeePos = null;
+        if (feeDtos == null || feeDtos.size() < 1) {
+            try {
+                PayFeePo payFeePo = new PayFeePo();
+                payFeePo.setCommunityId(importRoomFee.getCommunityId());
+                payFeePo.setConfigId(feeDto.getConfigId());
+                payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CAR);
+                payFeePo.setStartTime(importRoomFee.getStartTime());
+                payFeePo.setEndTime(importRoomFee.getEndTime());
+                payFeePo.setAmount(importRoomFee.getAmount());
+                payFeePo.setFeeFlag(tmpFeeConfigDto.getFeeFlag());
+                payFeePo.setFeeTypeCd(tmpFeeConfigDto.getFeeTypeCd());
+                payFeePo.setIncomeObjId(storeId);
+                payFeePo.setState(FeeDto.STATE_DOING);
+                payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId));
+                payFeePo.setPayerObjId(importRoomFee.getCarId());
+                payFeePo.setUserId(userId);
+                payFeePo.setCreateTime(importRoomFee.getCreateTime());
+                payFeePos = new ArrayList<>();
+                payFeePos.add(payFeePo);
+                feeInnerServiceSMOImpl.saveFee(payFeePos);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
+        }
+
+        for (FeeDto tmpFeeDto : feeDtos) {
+            try {
+                doImportFeeDetail(tmpFeeDto, importRoomFee);
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+        }
+
+    }
+
     /**
     /**
      * 导入 费用历史
      * 导入 费用历史
      *
      *
@@ -97,7 +174,7 @@ public class ImportPayFeeDetailBMOImpl implements IImportPayFeeBMODetail {
         feeConfigDto.setCommunityId(importRoomFee.getCommunityId());
         feeConfigDto.setCommunityId(importRoomFee.getCommunityId());
         List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
         List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
 
 
-        Assert.listOnlyOne(feeConfigDtos, "费用不存在或存在多条");
+        Assert.listOnlyOne(feeConfigDtos, "费用不存在或存在多条");
 
 
         FeeConfigDto tmpFeeConfigDto = feeConfigDtos.get(0);
         FeeConfigDto tmpFeeConfigDto = feeConfigDtos.get(0);
 
 
@@ -110,24 +187,28 @@ public class ImportPayFeeDetailBMOImpl implements IImportPayFeeBMODetail {
 
 
         List<PayFeePo> payFeePos = null;
         List<PayFeePo> payFeePos = null;
         if (feeDtos == null || feeDtos.size() < 1) {
         if (feeDtos == null || feeDtos.size() < 1) {
-            PayFeePo payFeePo = new PayFeePo();
-            payFeePo.setCommunityId(importRoomFee.getCommunityId());
-            payFeePo.setConfigId(feeDto.getConfigId());
-            payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
-            payFeePo.setStartTime(importRoomFee.getStartTime());
-            payFeePo.setEndTime(importRoomFee.getEndTime());
-            payFeePo.setAmount(importRoomFee.getAmount());
-            payFeePo.setFeeFlag(tmpFeeConfigDto.getFeeFlag());
-            payFeePo.setFeeTypeCd(tmpFeeConfigDto.getFeeTypeCd());
-            payFeePo.setIncomeObjId(storeId);
-            payFeePo.setState(FeeDto.STATE_DOING);
-            payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId));
-            payFeePo.setPayerObjId(importRoomFee.getRoomId());
-            payFeePo.setUserId(userId);
-            payFeePo.setCreateTime(importRoomFee.getCreateTime());
-            payFeePos = new ArrayList<>();
-            payFeePos.add(payFeePo);
-            feeInnerServiceSMOImpl.saveFee(payFeePos);
+            try {
+                PayFeePo payFeePo = new PayFeePo();
+                payFeePo.setCommunityId(importRoomFee.getCommunityId());
+                payFeePo.setConfigId(feeDto.getConfigId());
+                payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
+                payFeePo.setStartTime(importRoomFee.getStartTime());
+                payFeePo.setEndTime(importRoomFee.getEndTime());
+                payFeePo.setAmount(importRoomFee.getAmount());
+                payFeePo.setFeeFlag(tmpFeeConfigDto.getFeeFlag());
+                payFeePo.setFeeTypeCd(tmpFeeConfigDto.getFeeTypeCd());
+                payFeePo.setIncomeObjId(storeId);
+                payFeePo.setState(FeeDto.STATE_DOING);
+                payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId));
+                payFeePo.setPayerObjId(importRoomFee.getRoomId());
+                payFeePo.setUserId(userId);
+                payFeePo.setCreateTime(importRoomFee.getCreateTime());
+                payFeePos = new ArrayList<>();
+                payFeePos.add(payFeePo);
+                feeInnerServiceSMOImpl.saveFee(payFeePos);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
             feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
             feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
         }
         }
 
 
@@ -182,9 +263,8 @@ public class ImportPayFeeDetailBMOImpl implements IImportPayFeeBMODetail {
         //如果结束时间小于 缴费结束时间则延期
         //如果结束时间小于 缴费结束时间则延期
         PayFeePo payFeePo = new PayFeePo();
         PayFeePo payFeePo = new PayFeePo();
         payFeePo.setCommunityId(importRoomFee.getCommunityId());
         payFeePo.setCommunityId(importRoomFee.getCommunityId());
-
-        payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId));
-        payFeePo.setPayerObjId(tmpFeeDto.getFeeId());
+        payFeePo.setStatusCd(StatusConstant.STATUS_CD_VALID);
+        payFeePo.setFeeId(tmpFeeDto.getFeeId());
         payFeePo.setEndTime(importRoomFee.getEndTime());
         payFeePo.setEndTime(importRoomFee.getEndTime());
         feeInnerServiceSMOImpl.updateFee(payFeePo);
         feeInnerServiceSMOImpl.updateFee(payFeePo);
     }
     }

+ 14 - 0
service-fee/src/main/java/com/java110/fee/smo/impl/FeeDetailInnerServiceSMOImpl.java

@@ -9,6 +9,7 @@ import com.java110.intf.fee.IFeeDetailInnerServiceSMO;
 import com.java110.intf.user.IUserInnerServiceSMO;
 import com.java110.intf.user.IUserInnerServiceSMO;
 import com.java110.po.fee.PayFeeDetailPo;
 import com.java110.po.fee.PayFeeDetailPo;
 import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
@@ -45,9 +46,22 @@ public class FeeDetailInnerServiceSMOImpl extends BaseServiceSMO implements IFee
 
 
         List<FeeDetailDto> feeDetails = BeanConvertUtil.covertBeanList(feeDetailServiceDaoImpl.getFeeDetailInfo(BeanConvertUtil.beanCovertMap(feeDetailDto)), FeeDetailDto.class);
         List<FeeDetailDto> feeDetails = BeanConvertUtil.covertBeanList(feeDetailServiceDaoImpl.getFeeDetailInfo(BeanConvertUtil.beanCovertMap(feeDetailDto)), FeeDetailDto.class);
 
 
+        refreshFeeDetail(feeDetails);
         return feeDetails;
         return feeDetails;
     }
     }
 
 
+    private void refreshFeeDetail(List<FeeDetailDto> feeDetails) {
+        if(feeDetails == null || feeDetails.size() < 1){
+            return ;
+        }
+
+        for(FeeDetailDto feeDetailDto : feeDetails){
+            if(!StringUtil.isEmpty(feeDetailDto.getImportFeeName())){
+                feeDetailDto.setFeeName(feeDetailDto.getImportFeeName());
+            }
+        }
+    }
+
 
 
     @Override
     @Override
     public int queryFeeDetailsCount(@RequestBody FeeDetailDto feeDetailDto) {
     public int queryFeeDetailsCount(@RequestBody FeeDetailDto feeDetailDto) {

+ 60 - 3
service-front/src/main/java/com/java110/front/smo/assetImport/impl/ImportFeeDetailSMOImpl.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.java110.core.component.BaseComponentSMO;
 import com.java110.core.component.BaseComponentSMO;
 import com.java110.core.context.IPageData;
 import com.java110.core.context.IPageData;
 import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.fee.FeeDto;
 import com.java110.entity.assetImport.ImportRoomFee;
 import com.java110.entity.assetImport.ImportRoomFee;
 import com.java110.entity.component.ComponentValidateResult;
 import com.java110.entity.component.ComponentValidateResult;
 import com.java110.front.smo.assetImport.IImportFeeDetailSMO;
 import com.java110.front.smo.assetImport.IImportFeeDetailSMO;
@@ -54,14 +55,21 @@ public class ImportFeeDetailSMOImpl extends BaseComponentSMO implements IImportF
         try {
         try {
             ComponentValidateResult result = this.validateStoreStaffCommunityRelationship(pd, restTemplate);
             ComponentValidateResult result = this.validateStoreStaffCommunityRelationship(pd, restTemplate);
 
 
+            JSONObject paramIn = JSONObject.parseObject(pd.getReqData());
+            Assert.hasKeyAndValue(paramIn, "communityId", "请求中未包含小区");
+            Assert.hasKeyAndValue(paramIn, "objType", "请求中未包含费用对象");
             //InputStream is = uploadFile.getInputStream();
             //InputStream is = uploadFile.getInputStream();
 
 
             Workbook workbook = ImportExcelUtils.createWorkbook(uploadFile);  //工作簿
             Workbook workbook = ImportExcelUtils.createWorkbook(uploadFile);  //工作簿
 
 
             List<ImportRoomFee> rooms = new ArrayList<ImportRoomFee>();
             List<ImportRoomFee> rooms = new ArrayList<ImportRoomFee>();
-
-            //获取楼信息
-            getRooms(workbook, rooms);
+            if (FeeDto.PAYER_OBJ_TYPE_ROOM.equals(paramIn.getString("objType"))) {
+                //获取楼信息
+                getRooms(workbook, rooms);
+            }else {
+                //获取楼信息
+                getCars(workbook, rooms);
+            }
             // 保存数据
             // 保存数据
             return dealExcelData(pd, rooms, result);
             return dealExcelData(pd, rooms, result);
         } catch (Exception e) {
         } catch (Exception e) {
@@ -70,6 +78,55 @@ public class ImportFeeDetailSMOImpl extends BaseComponentSMO implements IImportF
         }
         }
     }
     }
 
 
+    private void getCars(Workbook workbook, List<ImportRoomFee> rooms) {
+        Sheet sheet = null;
+        sheet = ImportExcelUtils.getSheet(workbook, "车辆缴费历史");
+        List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
+        ImportRoomFee importRoomFee = null;
+        for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
+            Object[] os = oList.get(osIndex);
+            if (osIndex == 0) { // 第一行是 头部信息 直接跳过
+                continue;
+            }
+            if (StringUtil.isNullOrNone(os[0])) {
+                continue;
+            }
+
+            //费用名称没有填写,默认跳过
+            if (StringUtil.isNullOrNone(os[4])) {
+                continue;
+            }
+            Assert.hasValue(os[0], (osIndex + 1) + "行车牌号不能为空");
+            Assert.hasValue(os[1], (osIndex + 1) + "行收费项目不能为空");
+            Assert.hasValue(os[2], (osIndex + 1) + "行缴费周期不能为空");
+            Assert.hasValue(os[3], (osIndex + 1) + "行开始时间不能为空");
+            Assert.hasValue(os[4], (osIndex + 1) + "行结束时间不能为空");
+            Assert.hasValue(os[5], (osIndex + 1) + "行缴费时间不能为空");
+            Assert.hasValue(os[6], (osIndex + 1) + "行缴费金额不能为空");
+
+//
+
+            String startTime = excelDoubleToDate(os[3].toString());
+            String endTime = excelDoubleToDate(os[4].toString());
+            String createTime = excelDoubleToDate(os[5].toString());
+            Assert.isDate(startTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行开始时间格式错误 请填写YYYY-MM-DD 文本格式");
+            Assert.isDate(endTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行结束时间格式错误 请填写YYYY-MM-DD 文本格式");
+            Assert.isDate(createTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行结束时间格式错误 请填写YYYY-MM-DD 文本格式");
+
+
+            importRoomFee = new ImportRoomFee();
+            importRoomFee.setCarNum(os[0].toString());
+            importRoomFee.setFeeName(os[1].toString());
+            importRoomFee.setCycle(os[2].toString());
+            importRoomFee.setStartTime(startTime);
+            importRoomFee.setEndTime(endTime);
+            importRoomFee.setCreateTime(createTime);
+            importRoomFee.setAmount(os[6].toString());
+            importRoomFee.setRemark(!StringUtil.isNullOrNone(os[7]) ? os[7].toString() : "");
+            rooms.add(importRoomFee);
+        }
+    }
+
     /**
     /**
      * 处理ExcelData数据
      * 处理ExcelData数据
      *
      *

+ 4 - 0
service-front/src/main/java/com/java110/front/smo/impl/NavServiceSMOImpl.java

@@ -2,6 +2,7 @@ package com.java110.front.smo.impl;
 
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
+import com.java110.utils.cache.MappingCache;
 import com.java110.utils.constant.ServiceConstant;
 import com.java110.utils.constant.ServiceConstant;
 import com.java110.utils.constant.StateConstant;
 import com.java110.utils.constant.StateConstant;
 import com.java110.utils.util.CommonUtil;
 import com.java110.utils.util.CommonUtil;
@@ -81,6 +82,9 @@ public class NavServiceSMOImpl extends BaseComponentSMO implements INavServiceSM
         resultUserInfo.put("tel", CommonUtil.mobileEncrypt(tmpUserInfo.getString("tel")));
         resultUserInfo.put("tel", CommonUtil.mobileEncrypt(tmpUserInfo.getString("tel")));
         resultUserInfo.put("email", tmpUserInfo.getString("email"));
         resultUserInfo.put("email", tmpUserInfo.getString("email"));
         resultUserInfo.put("userId",tmpUserInfo.getString("userId"));
         resultUserInfo.put("userId",tmpUserInfo.getString("userId"));
+        String watermark = MappingCache.getValue("watermark");
+        resultUserInfo.put("watermark",watermark);
+
         responseEntity = new ResponseEntity<String>(resultUserInfo.toJSONString(), HttpStatus.OK);
         responseEntity = new ResponseEntity<String>(resultUserInfo.toJSONString(), HttpStatus.OK);
 
 
         return responseEntity;
         return responseEntity;

+ 104 - 0
service-job/src/main/java/com/java110/job/adapt/statistics/CheckStatisticsInfoAdapt.java

@@ -0,0 +1,104 @@
+package com.java110.job.adapt.statistics;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.aliyuncs.CommonRequest;
+import com.aliyuncs.CommonResponse;
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.exceptions.ClientException;
+import com.aliyuncs.exceptions.ServerException;
+import com.aliyuncs.http.MethodType;
+import com.aliyuncs.profile.DefaultProfile;
+import com.java110.core.factory.WechatFactory;
+import com.java110.core.smo.IComputeFeeSMO;
+import com.java110.dto.basePrivilege.BasePrivilegeDto;
+import com.java110.dto.community.CommunityDto;
+import com.java110.dto.fee.FeeDetailDto;
+import com.java110.dto.fee.FeeDto;
+import com.java110.dto.owner.OwnerAppUserDto;
+import com.java110.dto.owner.OwnerCarDto;
+import com.java110.dto.owner.OwnerDto;
+import com.java110.dto.owner.OwnerRoomRelDto;
+import com.java110.dto.smallWeChat.SmallWeChatDto;
+import com.java110.dto.smallWechatAttr.SmallWechatAttrDto;
+import com.java110.dto.staffAppAuth.StaffAppAuthDto;
+import com.java110.dto.user.UserDto;
+import com.java110.entity.order.Business;
+import com.java110.entity.wechat.Content;
+import com.java110.entity.wechat.Data;
+import com.java110.entity.wechat.PropertyFeeTemplateMessage;
+import com.java110.intf.community.ICommunityInnerServiceSMO;
+import com.java110.intf.fee.IFeeDetailInnerServiceSMO;
+import com.java110.intf.fee.IFeeInnerServiceSMO;
+import com.java110.intf.order.IPrivilegeInnerServiceSMO;
+import com.java110.intf.store.ISmallWeChatInnerServiceSMO;
+import com.java110.intf.store.ISmallWechatAttrInnerServiceSMO;
+import com.java110.intf.user.IOwnerAppUserInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarInnerServiceSMO;
+import com.java110.intf.user.IOwnerInnerServiceSMO;
+import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
+import com.java110.intf.user.IStaffAppAuthInnerServiceSMO;
+import com.java110.job.adapt.DatabusAdaptImpl;
+import com.java110.po.fee.PayFeeDetailPo;
+import com.java110.utils.cache.MappingCache;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.StringUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 数据统计适配器
+ *
+ * @author fqz
+ * @date 2020-12-11  18:54
+ */
+@Component(value = "checkStatisticsInfoAdapt")
+public class CheckStatisticsInfoAdapt extends DatabusAdaptImpl {
+
+    private static Logger logger = LoggerFactory.getLogger(CheckStatisticsInfoAdapt.class);
+
+    @Autowired
+    private ICommunityInnerServiceSMO communityInnerServiceSMO;
+
+    @Autowired
+    private ISmallWeChatInnerServiceSMO smallWeChatInnerServiceSMOImpl;
+
+    @Autowired
+    private ISmallWechatAttrInnerServiceSMO smallWechatAttrInnerServiceSMOImpl;
+
+    @Autowired
+    private RestTemplate outRestTemplate;
+
+
+    @Autowired
+    private IOwnerInnerServiceSMO ownerInnerServiceSMO;
+
+    @Autowired
+    private IOwnerAppUserInnerServiceSMO ownerAppUserInnerServiceSMO;
+
+    //模板信息推送地址
+    private static String sendMsgUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";
+
+    public final static String ALI_SMS_DOMAIN = "ALI_SMS";
+
+    @Override
+    public void execute(Business business, List<Business> businesses) {
+        
+    }
+
+    private void doSendPayFeeDetail(Business business, JSONObject businessPayFeeDetail) {
+
+    }
+}