java110 лет назад: 3
Родитель
Сommit
a90acbec2c

+ 3 - 0
java110-bean/src/main/java/com/java110/dto/data/DatabusDataDto.java

@@ -20,6 +20,9 @@ public class DatabusDataDto extends PageDto implements Serializable {
 
 
     public static final String BUSINESS_TYPE_SAVE_PARKING_COUPON_CAR_ORDER = "saveParkingCouponCarOrder";
     public static final String BUSINESS_TYPE_SAVE_PARKING_COUPON_CAR_ORDER = "saveParkingCouponCarOrder";
 
 
+    // 欠费催缴
+    public static final String BUSINESS_TYPE_OWE_FEE_CALLABLE = "oweFeeCallable";
+
 
 
     private String businessTypeCd;
     private String businessTypeCd;
 
 

+ 107 - 46
java110-bean/src/main/java/com/java110/dto/oweFeeCallable/OweFeeCallableDto.java

@@ -1,6 +1,7 @@
 package com.java110.dto.oweFeeCallable;
 package com.java110.dto.oweFeeCallable;
 
 
 import com.java110.dto.PageDto;
 import com.java110.dto.PageDto;
+
 import java.io.Serializable;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.Date;
 
 
@@ -14,123 +15,167 @@ import java.util.Date;
  **/
  **/
 public class OweFeeCallableDto extends PageDto implements Serializable {
 public class OweFeeCallableDto extends PageDto implements Serializable {
 
 
+    public static final String STATE_WAIT = "W";//状态 W 带催缴 C 催缴完成 F催缴失败 D 催缴中
+    public static final String STATE_COMPLETE = "C";//状态 W 带催缴 C 催缴完成 F催缴失败 D 催缴中
+    public static final String STATE_FAIL = "F";//状态 W 带催缴 C 催缴完成 F催缴失败 D 催缴中
+    public static final String STATE_DOING = "D";//状态 W 带催缴 C 催缴完成 F催缴失败 D 催缴中
+
+    public static final String CALLABLE_WAY_WECHAT = "WECHAT";//状态 W 带催缴 C 催缴完成 F催缴失败 D 催缴中
+    public static final String CALLABLE_WAY_SMS = "SMS";//催缴方式: WECHAT 微信 SMS 短信 PRINT 上门催缴
+    public static final String CALLABLE_WAY_PRINT = "PRINT";//催缴方式: WECHAT 微信 SMS 短信 PRINT 上门催缴
+
+
     private String remark;
     private String remark;
-private String ofcId;
-private String ownerId;
-private String callableWay;
-private String feeId;
-private String payerObjName;
-private String ownerName;
-private String configId;
-private String feeName;
-private String staffName;
-private String amountdOwed;
-private String state;
-private String communityId;
-private String payerObjType;
-private String staffId;
-private String payerObjId;
+    private String ofcId;
+    private String ownerId;
+    private String callableWay;
+    private String feeId;
+    private String payerObjName;
+    private String ownerName;
+    private String configId;
+    private String feeName;
+    private String staffName;
+    private String amountdOwed;
+    private String state;
+    private String communityId;
+    private String payerObjType;
+    private String staffId;
+    private String payerObjId;
 
 
 
 
     private Date createTime;
     private Date createTime;
 
 
     private String statusCd = "0";
     private String statusCd = "0";
 
 
+    private String startTime;
+    private String endTime;
+
 
 
     public String getRemark() {
     public String getRemark() {
         return remark;
         return remark;
     }
     }
-public void setRemark(String remark) {
+
+    public void setRemark(String remark) {
         this.remark = remark;
         this.remark = remark;
     }
     }
-public String getOfcId() {
+
+    public String getOfcId() {
         return ofcId;
         return ofcId;
     }
     }
-public void setOfcId(String ofcId) {
+
+    public void setOfcId(String ofcId) {
         this.ofcId = ofcId;
         this.ofcId = ofcId;
     }
     }
-public String getOwnerId() {
+
+    public String getOwnerId() {
         return ownerId;
         return ownerId;
     }
     }
-public void setOwnerId(String ownerId) {
+
+    public void setOwnerId(String ownerId) {
         this.ownerId = ownerId;
         this.ownerId = ownerId;
     }
     }
-public String getCallableWay() {
+
+    public String getCallableWay() {
         return callableWay;
         return callableWay;
     }
     }
-public void setCallableWay(String callableWay) {
+
+    public void setCallableWay(String callableWay) {
         this.callableWay = callableWay;
         this.callableWay = callableWay;
     }
     }
-public String getFeeId() {
+
+    public String getFeeId() {
         return feeId;
         return feeId;
     }
     }
-public void setFeeId(String feeId) {
+
+    public void setFeeId(String feeId) {
         this.feeId = feeId;
         this.feeId = feeId;
     }
     }
-public String getPayerObjName() {
+
+    public String getPayerObjName() {
         return payerObjName;
         return payerObjName;
     }
     }
-public void setPayerObjName(String payerObjName) {
+
+    public void setPayerObjName(String payerObjName) {
         this.payerObjName = payerObjName;
         this.payerObjName = payerObjName;
     }
     }
-public String getOwnerName() {
+
+    public String getOwnerName() {
         return ownerName;
         return ownerName;
     }
     }
-public void setOwnerName(String ownerName) {
+
+    public void setOwnerName(String ownerName) {
         this.ownerName = ownerName;
         this.ownerName = ownerName;
     }
     }
-public String getConfigId() {
+
+    public String getConfigId() {
         return configId;
         return configId;
     }
     }
-public void setConfigId(String configId) {
+
+    public void setConfigId(String configId) {
         this.configId = configId;
         this.configId = configId;
     }
     }
-public String getFeeName() {
+
+    public String getFeeName() {
         return feeName;
         return feeName;
     }
     }
-public void setFeeName(String feeName) {
+
+    public void setFeeName(String feeName) {
         this.feeName = feeName;
         this.feeName = feeName;
     }
     }
-public String getStaffName() {
+
+    public String getStaffName() {
         return staffName;
         return staffName;
     }
     }
-public void setStaffName(String staffName) {
+
+    public void setStaffName(String staffName) {
         this.staffName = staffName;
         this.staffName = staffName;
     }
     }
-public String getAmountdOwed() {
+
+    public String getAmountdOwed() {
         return amountdOwed;
         return amountdOwed;
     }
     }
-public void setAmountdOwed(String amountdOwed) {
+
+    public void setAmountdOwed(String amountdOwed) {
         this.amountdOwed = amountdOwed;
         this.amountdOwed = amountdOwed;
     }
     }
-public String getState() {
+
+    public String getState() {
         return state;
         return state;
     }
     }
-public void setState(String state) {
+
+    public void setState(String state) {
         this.state = state;
         this.state = state;
     }
     }
-public String getCommunityId() {
+
+    public String getCommunityId() {
         return communityId;
         return communityId;
     }
     }
-public void setCommunityId(String communityId) {
+
+    public void setCommunityId(String communityId) {
         this.communityId = communityId;
         this.communityId = communityId;
     }
     }
-public String getPayerObjType() {
+
+    public String getPayerObjType() {
         return payerObjType;
         return payerObjType;
     }
     }
-public void setPayerObjType(String payerObjType) {
+
+    public void setPayerObjType(String payerObjType) {
         this.payerObjType = payerObjType;
         this.payerObjType = payerObjType;
     }
     }
-public String getStaffId() {
+
+    public String getStaffId() {
         return staffId;
         return staffId;
     }
     }
-public void setStaffId(String staffId) {
+
+    public void setStaffId(String staffId) {
         this.staffId = staffId;
         this.staffId = staffId;
     }
     }
-public String getPayerObjId() {
+
+    public String getPayerObjId() {
         return payerObjId;
         return payerObjId;
     }
     }
-public void setPayerObjId(String payerObjId) {
+
+    public void setPayerObjId(String payerObjId) {
         this.payerObjId = payerObjId;
         this.payerObjId = payerObjId;
     }
     }
 
 
@@ -150,4 +195,20 @@ public void setPayerObjId(String payerObjId) {
     public void setStatusCd(String statusCd) {
     public void setStatusCd(String statusCd) {
         this.statusCd = statusCd;
         this.statusCd = statusCd;
     }
     }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
 }
 }

+ 20 - 0
java110-bean/src/main/java/com/java110/po/oweFeeCallable/OweFeeCallablePo.java

@@ -47,6 +47,10 @@ public class OweFeeCallablePo implements Serializable {
 
 
     private String statusCd = "0";
     private String statusCd = "0";
 
 
+    private String startTime;
+    private String endTime;
+
+
     public String getRemark() {
     public String getRemark() {
         return remark;
         return remark;
     }
     }
@@ -182,4 +186,20 @@ public class OweFeeCallablePo implements Serializable {
     public void setStatusCd(String statusCd) {
     public void setStatusCd(String statusCd) {
         this.statusCd = statusCd;
         this.statusCd = statusCd;
     }
     }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
 }
 }

+ 19 - 3
java110-db/src/main/resources/mapper/fee/OweFeeCallableV1ServiceDaoImplMapper.xml

@@ -8,12 +8,28 @@
     <!-- 保存催缴记录信息 add by wuxw 2018-07-03 -->
     <!-- 保存催缴记录信息 add by wuxw 2018-07-03 -->
     <insert id="saveOweFeeCallableInfo" parameterType="Map">
     <insert id="saveOweFeeCallableInfo" parameterType="Map">
         insert into owe_fee_callable(
         insert into owe_fee_callable(
-        remark,ofc_id,owner_id,callable_way,fee_id,payer_obj_name,owner_name,config_id,fee_name,staff_name,amountd_owed,state,community_id,payer_obj_type,staff_id,payer_obj_id
+        remark,ofc_id,owner_id,callable_way,fee_id,payer_obj_name,owner_name,config_id,fee_name,staff_name,
+        amountd_owed,state,community_id,payer_obj_type,staff_id,payer_obj_id,start_time,end_time
         ) values (
         ) values (
-        #{remark},#{ofcId},#{ownerId},#{callableWay},#{feeId},#{payerObjName},#{ownerName},#{configId},#{feeName},#{staffName},#{amountdOwed},#{state},#{communityId},#{payerObjType},#{staffId},#{payerObjId}
+        #{remark},#{ofcId},#{ownerId},#{callableWay},#{feeId},#{payerObjName},#{ownerName},#{configId},#{feeName},#{staffName},
+        #{amountdOwed},#{state},#{communityId},#{payerObjType},#{staffId},#{payerObjId},#{startTime},#{endTime}
         )
         )
     </insert>
     </insert>
 
 
+    <insert id="saveOweFeeCallables" parameterType="Map">
+        insert into owe_fee_callable(
+        remark,ofc_id,owner_id,callable_way,fee_id,payer_obj_name,owner_name,config_id,fee_name,staff_name,
+        amountd_owed,state,community_id,payer_obj_type,staff_id,payer_obj_id,start_time,end_time
+        ) values
+        <foreach collection="oweFeeCallablePos" item="item" open="(" close=")" separator=",">
+            #{item.remark},#{item.ofcId},#{item.ownerId},#{item.callableWay},#{item.feeId},#{item.payerObjName},#{item.ownerName},#{item.configId},#{item.feeName},
+            #{item.staffName},#{item.amountdOwed},#{item.state},#{item.communityId},#{item.payerObjType},#{item.staffId},#{item.payerObjId},#{item.startTime},#{item.endTime}
+        </foreach>
+
+    </insert>
+
+
+
 
 
     <!-- 查询催缴记录信息 add by wuxw 2018-07-03 -->
     <!-- 查询催缴记录信息 add by wuxw 2018-07-03 -->
     <select id="getOweFeeCallableInfo" parameterType="Map" resultType="Map">
     <select id="getOweFeeCallableInfo" parameterType="Map" resultType="Map">
@@ -22,7 +38,7 @@
         ownerName,t.config_id,t.config_id configId,t.fee_name,t.fee_name feeName,t.staff_name,t.staff_name
         ownerName,t.config_id,t.config_id configId,t.fee_name,t.fee_name feeName,t.staff_name,t.staff_name
         staffName,t.amountd_owed,t.amountd_owed amountdOwed,t.state,t.community_id,t.community_id
         staffName,t.amountd_owed,t.amountd_owed amountdOwed,t.state,t.community_id,t.community_id
         communityId,t.payer_obj_type,t.payer_obj_type payerObjType,t.staff_id,t.staff_id
         communityId,t.payer_obj_type,t.payer_obj_type payerObjType,t.staff_id,t.staff_id
-        staffId,t.payer_obj_id,t.payer_obj_id payerObjId
+        staffId,t.payer_obj_id,t.payer_obj_id payerObjId,t.start_time startTime,t.end_time endTime
         from owe_fee_callable t
         from owe_fee_callable t
         where 1 =1
         where 1 =1
         and t.status_cd = '0'
         and t.status_cd = '0'

+ 5 - 0
java110-interface/src/main/java/com/java110/intf/fee/IOweFeeCallableV1InnerServiceSMO.java

@@ -41,6 +41,10 @@ public interface IOweFeeCallableV1InnerServiceSMO {
     @RequestMapping(value = "/saveOweFeeCallable", method = RequestMethod.POST)
     @RequestMapping(value = "/saveOweFeeCallable", method = RequestMethod.POST)
     public int saveOweFeeCallable(@RequestBody  OweFeeCallablePo oweFeeCallablePo);
     public int saveOweFeeCallable(@RequestBody  OweFeeCallablePo oweFeeCallablePo);
 
 
+
+    @RequestMapping(value = "/saveOweFeeCallables", method = RequestMethod.POST)
+    int saveOweFeeCallables(@RequestBody List<OweFeeCallablePo> oweFeeCallablePos);
+
     @RequestMapping(value = "/updateOweFeeCallable", method = RequestMethod.POST)
     @RequestMapping(value = "/updateOweFeeCallable", method = RequestMethod.POST)
     public int updateOweFeeCallable(@RequestBody  OweFeeCallablePo oweFeeCallablePo);
     public int updateOweFeeCallable(@RequestBody  OweFeeCallablePo oweFeeCallablePo);
 
 
@@ -65,4 +69,5 @@ public interface IOweFeeCallableV1InnerServiceSMO {
      */
      */
     @RequestMapping(value = "/queryOweFeeCallablesCount", method = RequestMethod.POST)
     @RequestMapping(value = "/queryOweFeeCallablesCount", method = RequestMethod.POST)
     int queryOweFeeCallablesCount(@RequestBody OweFeeCallableDto oweFeeCallableDto);
     int queryOweFeeCallablesCount(@RequestBody OweFeeCallableDto oweFeeCallableDto);
+
 }
 }

+ 17 - 20
service-fee/src/main/java/com/java110/fee/cmd/oweFeeCallable/SaveOweFeeCallableCmd.java

@@ -22,7 +22,9 @@ import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
 import com.java110.core.event.cmd.CmdEvent;
 import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.data.DatabusDataDto;
 import com.java110.intf.fee.IOweFeeCallableV1InnerServiceSMO;
 import com.java110.intf.fee.IOweFeeCallableV1InnerServiceSMO;
+import com.java110.intf.job.IDataBusInnerServiceSMO;
 import com.java110.po.oweFeeCallable.OweFeeCallablePo;
 import com.java110.po.oweFeeCallable.OweFeeCallablePo;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.Assert;
@@ -49,26 +51,15 @@ public class SaveOweFeeCallableCmd extends Cmd {
 
 
     public static final String CODE_PREFIX_ID = "10";
     public static final String CODE_PREFIX_ID = "10";
 
 
+
+
     @Autowired
     @Autowired
-    private IOweFeeCallableV1InnerServiceSMO oweFeeCallableV1InnerServiceSMOImpl;
+    private IDataBusInnerServiceSMO dataBusInnerServiceSMOImpl;
 
 
     @Override
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
         Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含communityId");
         Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含communityId");
-        Assert.hasKeyAndValue(reqJson, "ownerName", "请求报文中未包含ownerName");
-        Assert.hasKeyAndValue(reqJson, "ownerId", "请求报文中未包含ownerId");
-        Assert.hasKeyAndValue(reqJson, "payerObjType", "请求报文中未包含payerObjType");
-        Assert.hasKeyAndValue(reqJson, "payerObjId", "请求报文中未包含payerObjId");
-        Assert.hasKeyAndValue(reqJson, "payerObjName", "请求报文中未包含payerObjName");
-        Assert.hasKeyAndValue(reqJson, "configId", "请求报文中未包含configId");
-        Assert.hasKeyAndValue(reqJson, "feeId", "请求报文中未包含feeId");
-        Assert.hasKeyAndValue(reqJson, "feeName", "请求报文中未包含feeName");
-        Assert.hasKeyAndValue(reqJson, "amountdOwed", "请求报文中未包含amountdOwed");
         Assert.hasKeyAndValue(reqJson, "callableWay", "请求报文中未包含callableWay");
         Assert.hasKeyAndValue(reqJson, "callableWay", "请求报文中未包含callableWay");
-        Assert.hasKeyAndValue(reqJson, "staffId", "请求报文中未包含staffId");
-        Assert.hasKeyAndValue(reqJson, "staffName", "请求报文中未包含staffName");
-        Assert.hasKeyAndValue(reqJson, "state", "请求报文中未包含state");
-        Assert.hasKeyAndValue(reqJson, "remark", "请求报文中未包含remark");
 
 
     }
     }
 
 
@@ -76,13 +67,19 @@ public class SaveOweFeeCallableCmd extends Cmd {
     @Java110Transactional
     @Java110Transactional
     public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
     public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
 
 
-        OweFeeCallablePo oweFeeCallablePo = BeanConvertUtil.covertBean(reqJson, OweFeeCallablePo.class);
-        oweFeeCallablePo.setOfcId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
-        int flag = oweFeeCallableV1InnerServiceSMOImpl.saveOweFeeCallable(oweFeeCallablePo);
 
 
-        if (flag < 1) {
-            throw new CmdException("保存数据失败");
-        }
+        String userId = cmdDataFlowContext.getReqHeaders().get("user-id");
+
+        reqJson.put("staffId",userId);
+        dataBusInnerServiceSMOImpl.databusData(new DatabusDataDto(DatabusDataDto.BUSINESS_TYPE_OWE_FEE_CALLABLE,reqJson));
+
+//        OweFeeCallablePo oweFeeCallablePo = BeanConvertUtil.covertBean(reqJson, OweFeeCallablePo.class);
+//        oweFeeCallablePo.setOfcId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
+//        int flag = oweFeeCallableV1InnerServiceSMOImpl.saveOweFeeCallable(oweFeeCallablePo);
+//
+//        if (flag < 1) {
+//            throw new CmdException("保存数据失败");
+//        }
 
 
         cmdDataFlowContext.setResponseEntity(ResultVo.success());
         cmdDataFlowContext.setResponseEntity(ResultVo.success());
     }
     }

+ 1 - 0
service-fee/src/main/java/com/java110/fee/dao/IOweFeeCallableV1ServiceDao.java

@@ -70,4 +70,5 @@ public interface IOweFeeCallableV1ServiceDao {
      */
      */
     int queryOweFeeCallablesCount(Map info);
     int queryOweFeeCallablesCount(Map info);
 
 
+    int saveOweFeeCallables(Map info);
 }
 }

+ 11 - 0
service-fee/src/main/java/com/java110/fee/dao/impl/OweFeeCallableV1ServiceDaoImpl.java

@@ -61,6 +61,16 @@ public class OweFeeCallableV1ServiceDaoImpl extends BaseServiceDao implements IO
     }
     }
 
 
 
 
+    @Override
+    public int saveOweFeeCallables(Map info) {
+        logger.debug("保存 saveOweFeeCallables 入参 info : {}",info);
+
+        int saveFlag = sqlSessionTemplate.insert("oweFeeCallableV1ServiceDaoImpl.saveOweFeeCallables",info);
+
+        return saveFlag;
+    }
+
+
     /**
     /**
      * 查询催缴记录信息(instance)
      * 查询催缴记录信息(instance)
      * @param info bId 信息
      * @param info bId 信息
@@ -109,4 +119,5 @@ public class OweFeeCallableV1ServiceDaoImpl extends BaseServiceDao implements IO
     }
     }
 
 
 
 
+
 }
 }

+ 11 - 1
service-fee/src/main/java/com/java110/fee/smo/impl/OweFeeCallableV1InnerServiceSMOImpl.java

@@ -29,7 +29,9 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * 类表述: 服务之前调用的接口实现类,不对外提供接口能力 只用于接口建调用
  * 类表述: 服务之前调用的接口实现类,不对外提供接口能力 只用于接口建调用
@@ -52,7 +54,15 @@ public class OweFeeCallableV1InnerServiceSMOImpl extends BaseServiceSMO implemen
         return saveFlag;
         return saveFlag;
     }
     }
 
 
-     @Override
+    @Override
+    public int saveOweFeeCallables(@RequestBody List<OweFeeCallablePo> oweFeeCallablePos) {
+        Map info = new HashMap();
+        info.put("oweFeeCallablePos",oweFeeCallablePos);
+        int saveFlag = oweFeeCallableV1ServiceDaoImpl.saveOweFeeCallables(info);
+        return saveFlag;
+    }
+
+    @Override
     public int updateOweFeeCallable(@RequestBody  OweFeeCallablePo oweFeeCallablePo) {
     public int updateOweFeeCallable(@RequestBody  OweFeeCallablePo oweFeeCallablePo) {
         int saveFlag = oweFeeCallableV1ServiceDaoImpl.updateOweFeeCallableInfo(BeanConvertUtil.beanCovertMap(oweFeeCallablePo));
         int saveFlag = oweFeeCallableV1ServiceDaoImpl.updateOweFeeCallableInfo(BeanConvertUtil.beanCovertMap(oweFeeCallablePo));
         return saveFlag;
         return saveFlag;

+ 236 - 0
service-job/src/main/java/com/java110/job/adapt/fee/OweFeeCallableAdapt.java

@@ -0,0 +1,236 @@
+package com.java110.job.adapt.fee;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.fee.FeeDto;
+import com.java110.dto.oweFeeCallable.OweFeeCallableDto;
+import com.java110.dto.owner.OwnerAppUserDto;
+import com.java110.dto.owner.OwnerDto;
+import com.java110.dto.owner.OwnerRoomRelDto;
+import com.java110.dto.reportFee.ReportOweFeeDto;
+import com.java110.dto.room.RoomDto;
+import com.java110.dto.system.Business;
+import com.java110.dto.user.UserDto;
+import com.java110.intf.community.IRoomV1InnerServiceSMO;
+import com.java110.intf.fee.IOweFeeCallableV1InnerServiceSMO;
+import com.java110.intf.report.IReportOweFeeInnerServiceSMO;
+import com.java110.intf.user.IOwnerAppUserInnerServiceSMO;
+import com.java110.intf.user.IOwnerRoomRelV1InnerServiceSMO;
+import com.java110.intf.user.IOwnerV1InnerServiceSMO;
+import com.java110.intf.user.IUserV1InnerServiceSMO;
+import com.java110.job.adapt.DatabusAdaptImpl;
+import com.java110.job.msgNotify.MsgNotifyFactory;
+import com.java110.po.oweFeeCallable.OweFeeCallablePo;
+import com.java110.utils.cache.MappingCache;
+import com.java110.utils.cache.UrlCache;
+import com.java110.utils.constant.WechatConstant;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.StringUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 欠费催缴databus
+ */
+@Component(value = "oweFeeCallableAdapt")
+public class OweFeeCallableAdapt extends DatabusAdaptImpl {
+
+    @Autowired
+    private IRoomV1InnerServiceSMO roomV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerRoomRelV1InnerServiceSMO ownerRoomRelV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerV1InnerServiceSMO ownerV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IOweFeeCallableV1InnerServiceSMO oweFeeCallableV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IReportOweFeeInnerServiceSMO reportOweFeeInnerServiceSMOImpl;
+
+    @Autowired
+    private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerAppUserInnerServiceSMO ownerAppUserInnerServiceSMOImpl;
+
+    @Override
+    public void execute(Business business, List<Business> businesses) throws ParseException {
+        JSONObject data = business.getData();
+
+
+        JSONArray roomIds = data.getJSONArray("roomIds");
+        List<OweFeeCallablePo> oweFeeCallablePos = new ArrayList<>();
+        for (int roomIndex = 0; roomIndex < roomIds.size(); roomIndex++) {
+            try {
+                doDealRoomId(data, roomIds.getString(roomIndex), oweFeeCallablePos);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
+        if (oweFeeCallablePos.size() < 1) {
+            return;
+        }
+
+        int flag = oweFeeCallableV1InnerServiceSMOImpl.saveOweFeeCallables(oweFeeCallablePos);
+        if (flag < 1) {
+            throw new IllegalArgumentException("保存催缴记录失败");
+        }
+        JSONObject content = null;
+        String oweRoomUrl = UrlCache.getOwnerUrl() + MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.OWE_FEE_PAGE);
+        String oweCarUrl = UrlCache.getOwnerUrl() + MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.OWE_CAR_FEE_PAGE);
+        String oweUrl = "";
+        OweFeeCallablePo updateOweFeeCallablePo = null;
+        OwnerAppUserDto ownerAppUserDto = null;
+        for (OweFeeCallablePo oweFeeCallablePo : oweFeeCallablePos) {
+
+            if (StringUtil.isEmpty(oweFeeCallablePo.getOwnerId()) || oweFeeCallablePo.getOwnerId().startsWith("-")) {
+                updateOweFeeCallablePo = new OweFeeCallablePo();
+                updateOweFeeCallablePo.setOfcId(oweFeeCallablePo.getOfcId());
+                updateOweFeeCallablePo.setCommunityId(oweFeeCallablePo.getCommunityId());
+                updateOweFeeCallablePo.setState(OweFeeCallableDto.STATE_FAIL);
+                updateOweFeeCallablePo.setRemark(oweFeeCallablePo.getRemark() + "-业主不存在");
+                oweFeeCallableV1InnerServiceSMOImpl.updateOweFeeCallable(updateOweFeeCallablePo);
+                continue;
+            }
+            ownerAppUserDto = new OwnerAppUserDto();
+            ownerAppUserDto.setMemberId(oweFeeCallablePo.getOwnerId());
+            ownerAppUserDto.setCommunityId(oweFeeCallablePo.getCommunityId());
+            ownerAppUserDto.setAppType(OwnerAppUserDto.APP_TYPE_WECHAT);
+            List<OwnerAppUserDto> ownerAppUserDtos = ownerAppUserInnerServiceSMOImpl.queryOwnerAppUsers(ownerAppUserDto);
+            if (ownerAppUserDtos == null || ownerAppUserDtos.size() < 1) {
+                updateOweFeeCallablePo = new OweFeeCallablePo();
+                updateOweFeeCallablePo.setOfcId(oweFeeCallablePo.getOfcId());
+                updateOweFeeCallablePo.setCommunityId(oweFeeCallablePo.getCommunityId());
+                updateOweFeeCallablePo.setState(OweFeeCallableDto.STATE_FAIL);
+                updateOweFeeCallablePo.setRemark(oweFeeCallablePo.getRemark() + "-业主未绑定");
+                oweFeeCallableV1InnerServiceSMOImpl.updateOweFeeCallable(updateOweFeeCallablePo);
+                continue;
+            }
+
+            oweUrl = FeeDto.PAYER_OBJ_TYPE_ROOM.equals(oweFeeCallablePo.getPayerObjType()) ? oweRoomUrl : oweCarUrl;
+            content = new JSONObject();
+            content.put("feeTypeName", oweFeeCallablePo.getFeeName());
+            content.put("payerObjName", oweFeeCallablePo.getPayerObjName());
+            content.put("billAmountOwed", oweFeeCallablePo.getAmountdOwed());
+            content.put("date", DateUtil.dateTimeToDate(oweFeeCallablePo.getStartTime()) + "~" + DateUtil.dateTimeToDate(oweFeeCallablePo.getEndTime()));
+            content.put("url", oweUrl);
+            ResultVo resultVo = MsgNotifyFactory.sendOweFeeMsg(data.getString("communityId"), ownerAppUserDtos.get(0).getUserId(), content);
+            updateOweFeeCallablePo = new OweFeeCallablePo();
+            updateOweFeeCallablePo.setOfcId(oweFeeCallablePo.getOfcId());
+            updateOweFeeCallablePo.setCommunityId(oweFeeCallablePo.getCommunityId());
+            if (resultVo.getCode() != ResultVo.CODE_OK) {
+                updateOweFeeCallablePo.setState(OweFeeCallableDto.STATE_FAIL);
+                updateOweFeeCallablePo.setRemark(oweFeeCallablePo.getRemark() + "-" + resultVo.getMsg());
+            } else {
+                updateOweFeeCallablePo.setState(OweFeeCallableDto.STATE_COMPLETE);
+            }
+            oweFeeCallableV1InnerServiceSMOImpl.updateOweFeeCallable(updateOweFeeCallablePo);
+        }
+    }
+
+    /**
+     * 单个房屋处理
+     *
+     * @param data
+     * @param roomId
+     */
+    private void doDealRoomId(JSONObject data, String roomId, List<OweFeeCallablePo> oweFeeCallablePos) {
+
+        String communityId = data.getString("communityId");
+
+        String staffId = data.getString("staffId");
+
+        //todo 3.0 查询费用信息
+        List<ReportOweFeeDto> feeDtos = getRoomFees(data, roomId);
+
+        if (feeDtos == null || feeDtos.size() < 1) {
+            return;
+        }
+
+        //todo 4.0 查询人员信息
+        UserDto userDto = getStaffInfo(staffId);
+        OweFeeCallablePo oweFeeCallablePo = null;
+
+        for (ReportOweFeeDto reportOweFeeDto : feeDtos) {
+            oweFeeCallablePo = new OweFeeCallablePo();
+
+            oweFeeCallablePo.setAmountdOwed(reportOweFeeDto.getAmountOwed());
+            oweFeeCallablePo.setCallableWay(data.getString("callableWay"));
+            oweFeeCallablePo.setOfcId(GenerateCodeFactory.getGeneratorId("11"));
+            oweFeeCallablePo.setFeeId(reportOweFeeDto.getFeeId());
+            oweFeeCallablePo.setFeeName(reportOweFeeDto.getFeeName());
+            oweFeeCallablePo.setCommunityId(communityId);
+            oweFeeCallablePo.setConfigId(reportOweFeeDto.getConfigId());
+            oweFeeCallablePo.setOwnerId(reportOweFeeDto.getOwnerId());
+            oweFeeCallablePo.setOwnerName(reportOweFeeDto.getOwnerName());
+            oweFeeCallablePo.setPayerObjId(roomId);
+            oweFeeCallablePo.setPayerObjName(reportOweFeeDto.getPayerObjName());
+            oweFeeCallablePo.setPayerObjType(reportOweFeeDto.getPayerObjType());
+            oweFeeCallablePo.setRemark(data.getString("remark"));
+            oweFeeCallablePo.setStaffId(userDto.getUserId());
+            oweFeeCallablePo.setStaffName(userDto.getName());
+            oweFeeCallablePo.setState(OweFeeCallableDto.STATE_WAIT);
+            oweFeeCallablePo.setStartTime(reportOweFeeDto.getEndTime());
+            oweFeeCallablePo.setEndTime(reportOweFeeDto.getDeadlineTime());
+            oweFeeCallablePos.add(oweFeeCallablePo);
+        }
+
+
+    }
+
+    private UserDto getStaffInfo(String staffId) {
+
+        UserDto userDto = new UserDto();
+        userDto.setUserId(staffId);
+        List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
+        if (userDtos == null || userDtos.size() < 1) {
+            userDto.setUserId("-1");
+            userDto.setName("系统");
+            return userDto;
+        }
+
+        return userDtos.get(0);
+    }
+
+    /**
+     * 查询房屋费用
+     *
+     * @return
+     */
+    private List<ReportOweFeeDto> getRoomFees(JSONObject data, String roomId) {
+
+        ReportOweFeeDto reportOweFeeDto = new ReportOweFeeDto();
+        reportOweFeeDto.setPayerObjId(roomId);
+        reportOweFeeDto.setHasOweFee("Y");
+        if (data.containsKey("feeId")) {
+            reportOweFeeDto.setFeeId(data.getString("feeId"));
+        }
+        List<String> configIdss = new ArrayList<>();
+        if (data.containsKey("configIds")) {
+            JSONArray configIds = data.getJSONArray("configIds");
+            for (int configIndex = 0; configIndex < configIds.size(); configIndex++) {
+                configIdss.add(configIds.getString(configIndex));
+            }
+            if (configIdss.size() > 0) {
+                reportOweFeeDto.setConfigIds(configIdss.toArray(new String[configIdss.size()]));
+            }
+        }
+        List<ReportOweFeeDto> reportOweFeeDtos = reportOweFeeInnerServiceSMOImpl.queryReportAllOweFees(reportOweFeeDto);
+
+        return reportOweFeeDtos;
+
+    }
+
+
+}

+ 1 - 0
service-job/src/main/java/com/java110/job/msgNotify/MsgNotifyFactory.java

@@ -302,6 +302,7 @@ public class MsgNotifyFactory {
         return getMsgNotify(null);
         return getMsgNotify(null);
     }
     }
 
 
+
     /**
     /**
      * 获取通知适配器
      * 获取通知适配器
      *
      *

+ 103 - 61
service-job/src/main/java/com/java110/job/task/wechat/PublicWeChatPushMessageTemplate.java

@@ -1,13 +1,17 @@
 package com.java110.job.task.wechat;
 package com.java110.job.task.wechat;
 
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
+import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.core.factory.WechatFactory;
 import com.java110.core.factory.WechatFactory;
 import com.java110.core.log.LoggerFactory;
 import com.java110.core.log.LoggerFactory;
 import com.java110.dto.community.CommunityDto;
 import com.java110.dto.community.CommunityDto;
 import com.java110.dto.fee.BillOweFeeDto;
 import com.java110.dto.fee.BillOweFeeDto;
 import com.java110.dto.fee.FeeDto;
 import com.java110.dto.fee.FeeDto;
+import com.java110.dto.oweFeeCallable.OweFeeCallableDto;
 import com.java110.dto.owner.OwnerAppUserDto;
 import com.java110.dto.owner.OwnerAppUserDto;
+import com.java110.dto.reportFee.ReportOweFeeDto;
 import com.java110.dto.wechat.SmallWeChatDto;
 import com.java110.dto.wechat.SmallWeChatDto;
 import com.java110.dto.wechat.SmallWechatAttrDto;
 import com.java110.dto.wechat.SmallWechatAttrDto;
 import com.java110.dto.task.TaskDto;
 import com.java110.dto.task.TaskDto;
@@ -16,16 +20,21 @@ import com.java110.dto.wechat.Data;
 import com.java110.dto.wechat.Miniprogram;
 import com.java110.dto.wechat.Miniprogram;
 import com.java110.dto.wechat.PropertyFeeTemplateMessage;
 import com.java110.dto.wechat.PropertyFeeTemplateMessage;
 import com.java110.intf.fee.IFeeInnerServiceSMO;
 import com.java110.intf.fee.IFeeInnerServiceSMO;
+import com.java110.intf.fee.IOweFeeCallableV1InnerServiceSMO;
+import com.java110.intf.report.IReportOweFeeInnerServiceSMO;
 import com.java110.intf.store.ISmallWeChatInnerServiceSMO;
 import com.java110.intf.store.ISmallWeChatInnerServiceSMO;
 import com.java110.intf.store.ISmallWechatAttrInnerServiceSMO;
 import com.java110.intf.store.ISmallWechatAttrInnerServiceSMO;
 import com.java110.intf.user.IOwnerAppUserInnerServiceSMO;
 import com.java110.intf.user.IOwnerAppUserInnerServiceSMO;
 import com.java110.job.msgNotify.MsgNotifyFactory;
 import com.java110.job.msgNotify.MsgNotifyFactory;
 import com.java110.job.quartz.TaskSystemQuartz;
 import com.java110.job.quartz.TaskSystemQuartz;
+import com.java110.po.oweFeeCallable.OweFeeCallablePo;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.cache.UrlCache;
 import com.java110.utils.cache.UrlCache;
+import com.java110.utils.constant.MappingConstant;
 import com.java110.utils.constant.WechatConstant;
 import com.java110.utils.constant.WechatConstant;
 import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.StringUtil;
 import com.java110.utils.util.StringUtil;
+import com.java110.vo.ResultVo;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.http.ResponseEntity;
@@ -61,9 +70,15 @@ public class PublicWeChatPushMessageTemplate extends TaskSystemQuartz {
     @Autowired
     @Autowired
     private IOwnerAppUserInnerServiceSMO ownerAppUserInnerServiceSMOImpl;
     private IOwnerAppUserInnerServiceSMO ownerAppUserInnerServiceSMOImpl;
 
 
+    @Autowired
+    private IReportOweFeeInnerServiceSMO reportOweFeeInnerServiceSMOImpl;
+
     @Autowired
     @Autowired
     private RestTemplate outRestTemplate;
     private RestTemplate outRestTemplate;
 
 
+    @Autowired
+    private IOweFeeCallableV1InnerServiceSMO oweFeeCallableV1InnerServiceSMOImpl;
+
     //模板信息推送地址
     //模板信息推送地址
     private static String sendMsgUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";
     private static String sendMsgUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";
 
 
@@ -89,81 +104,108 @@ public class PublicWeChatPushMessageTemplate extends TaskSystemQuartz {
 
 
     private void publishMsg(TaskDto taskDto, CommunityDto communityDto) throws Exception {
     private void publishMsg(TaskDto taskDto, CommunityDto communityDto) throws Exception {
 
 
+        ReportOweFeeDto reportOweFeeDto = new ReportOweFeeDto();
+        reportOweFeeDto.setCommunityId(communityDto.getCommunityId());
+        reportOweFeeDto.setHasOweFee("Y");
 
 
-        //根据小区id查询业主与公众号绑定信息
-        OwnerAppUserDto ownerAppUserDto = new OwnerAppUserDto();
-        ownerAppUserDto.setCommunityId(communityDto.getCommunityId());
-        ownerAppUserDto.setAppType(OwnerAppUserDto.APP_TYPE_WECHAT);
-        List<OwnerAppUserDto> ownerAppUserDtos = ownerAppUserInnerServiceSMOImpl.queryOwnerAppUsers(ownerAppUserDto);
+        List<ReportOweFeeDto> reportOweFeeDtos = reportOweFeeInnerServiceSMOImpl.queryReportAllOweFees(reportOweFeeDto);
 
 
-        if (ownerAppUserDtos.size() <= 0 || ownerAppUserDtos == null) {
-            logger.error("未查询到业主与微信公众号绑定关系");
+        if (reportOweFeeDtos == null || reportOweFeeDtos.size() < 1) {
             return;
             return;
         }
         }
 
 
-        List<String> memberIdList = new ArrayList<>(ownerAppUserDtos.size());
-        for (OwnerAppUserDto appUserDto : ownerAppUserDtos) {
-            if (StringUtil.isEmpty(appUserDto.getMemberId()) || "-1".equals(appUserDto.getMemberId())) {
-                continue;
-            }
-            memberIdList.add(appUserDto.getMemberId());
+        OweFeeCallablePo oweFeeCallablePo = null;
+        List<OweFeeCallablePo> oweFeeCallablePos = new ArrayList<>();
+        String notifyWay = MappingCache.getValue(MappingConstant.ENV_DOMAIN, "DEFAULT_MSG_NOTIFY_WAY");
+        if (StringUtil.isEmpty(notifyWay) || MsgNotifyFactory.NOTIFY_WAY_WECHAT.equals(notifyWay)) {
+            notifyWay = OweFeeCallableDto.CALLABLE_WAY_WECHAT;
+        } else {
+            notifyWay = OweFeeCallableDto.CALLABLE_WAY_SMS;
         }
         }
 
 
-        String[] memberIds = memberIdList.toArray(new String[memberIdList.size()]);
-        //查询欠费信息
-        BillOweFeeDto billOweFeeDto = new BillOweFeeDto();
-        billOweFeeDto.setCommunityId(communityDto.getCommunityId());
-        billOweFeeDto.setOwnerIds(memberIds);
-        billOweFeeDto.setState("1000");
-        billOweFeeDto.setCurBill("T");
-        List<BillOweFeeDto> billOweFeeDtos = feeInnerServiceSMOImpl.queryBillOweFees(billOweFeeDto);
-
-        String sendTemplate = MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.SEND_TEMPLATE_URL);
-        if (StringUtil.isEmpty(sendTemplate)) {
-            sendTemplate = sendMsgUrl;
+        for (ReportOweFeeDto fee : reportOweFeeDtos) {
+            oweFeeCallablePo = new OweFeeCallablePo();
+
+            oweFeeCallablePo.setAmountdOwed(reportOweFeeDto.getAmountOwed());
+            oweFeeCallablePo.setCallableWay(notifyWay);
+            oweFeeCallablePo.setOfcId(GenerateCodeFactory.getGeneratorId("11"));
+            oweFeeCallablePo.setFeeId(reportOweFeeDto.getFeeId());
+            oweFeeCallablePo.setFeeName(reportOweFeeDto.getFeeName());
+            oweFeeCallablePo.setCommunityId(communityDto.getCommunityId());
+            oweFeeCallablePo.setConfigId(reportOweFeeDto.getConfigId());
+            oweFeeCallablePo.setOwnerId(reportOweFeeDto.getOwnerId());
+            oweFeeCallablePo.setOwnerName(reportOweFeeDto.getOwnerName());
+            oweFeeCallablePo.setPayerObjId(fee.getPayerObjId());
+            oweFeeCallablePo.setPayerObjName(reportOweFeeDto.getPayerObjName());
+            oweFeeCallablePo.setPayerObjType(reportOweFeeDto.getPayerObjType());
+            oweFeeCallablePo.setRemark("系统自动催缴");
+            oweFeeCallablePo.setStaffId("-1");
+            oweFeeCallablePo.setStaffName("系统自动催缴");
+            oweFeeCallablePo.setState(OweFeeCallableDto.STATE_WAIT);
+            oweFeeCallablePo.setStartTime(reportOweFeeDto.getEndTime());
+            oweFeeCallablePo.setEndTime(reportOweFeeDto.getDeadlineTime());
+            oweFeeCallablePos.add(oweFeeCallablePo);
+
         }
         }
 
 
-        String oweRoomUrl = UrlCache.getOwnerUrl() + MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.OWE_FEE_PAGE);
-        String oweCarUrl = UrlCache.getOwnerUrl() + MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.OWE_CAR_FEE_PAGE);
-//        Miniprogram miniprogram = null;
-//        if (oweRoomUrl.contains("@@")) {
-//            miniprogram = new Miniprogram();
-//            miniprogram.setAppid(oweRoomUrl.split("@@")[0]);
-//        }
-//        //车辆费用
-//        if (oweCarUrl.contains("@@")) {
-//            miniprogram = new Miniprogram();
-//            miniprogram.setAppid(oweCarUrl.split("@@")[0]);
-//        }
+        if (oweFeeCallablePos.size() < 1) {
+            return;
+        }
 
 
+        int flag = oweFeeCallableV1InnerServiceSMOImpl.saveOweFeeCallables(oweFeeCallablePos);
+        if (flag < 1) {
+            throw new IllegalArgumentException("保存催缴记录失败");
+        }
         String oweUrl = "";
         String oweUrl = "";
         JSONObject content = null;
         JSONObject content = null;
-        for (BillOweFeeDto fee : billOweFeeDtos) {
-            oweUrl = FeeDto.PAYER_OBJ_TYPE_ROOM.equals(fee.getPayerObjType()) ? oweRoomUrl : oweCarUrl;
-            for (OwnerAppUserDto appUserDto : ownerAppUserDtos) {
-                try {
-                    if (!fee.getOwnerId().equals(appUserDto.getMemberId())) {
-                        continue;
-                    }
-                    content = new JSONObject();
-                    content.put("feeTypeName", fee.getFeeTypeName());
-                    content.put("payerObjName", fee.getPayerObjName());
-                    content.put("billAmountOwed", fee.getBillAmountOwed());
-                    content.put("date", DateUtil.dateTimeToDate(fee.getFeeEndTime()) + "~" + DateUtil.dateTimeToDate(fee.getDeadlineTime()));
-                    content.put("url",oweUrl);
-                    MsgNotifyFactory.sendOweFeeMsg(communityDto.getCommunityId(), appUserDto.getUserId(), content);
-                } catch (Exception e) {
-                    logger.error("推送账单异常", e);
-                }
-            }
+        String oweRoomUrl = UrlCache.getOwnerUrl() + MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.OWE_FEE_PAGE);
+        String oweCarUrl = UrlCache.getOwnerUrl() + MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.OWE_CAR_FEE_PAGE);
 
 
-            BillOweFeeDto tmpBillOweFeeDto = new BillOweFeeDto();
-            tmpBillOweFeeDto.setFeeId(fee.getFeeId());
-            tmpBillOweFeeDto.setCommunityId(fee.getCommunityId());
-            tmpBillOweFeeDto.setBillId(fee.getBillId());
-            tmpBillOweFeeDto.setState(BillOweFeeDto.STATE_SEND_OWNER);
-            feeInnerServiceSMOImpl.updateBillOweFees(tmpBillOweFeeDto);
+        OweFeeCallablePo updateOweFeeCallablePo = null;
+        OwnerAppUserDto ownerAppUserDto = null;
+        for (OweFeeCallablePo tmpOweFeeCallablePo : oweFeeCallablePos) {
+            if (StringUtil.isEmpty(tmpOweFeeCallablePo.getOwnerId()) || tmpOweFeeCallablePo.getOwnerId().startsWith("-")) {
+                updateOweFeeCallablePo = new OweFeeCallablePo();
+                updateOweFeeCallablePo.setOfcId(tmpOweFeeCallablePo.getOfcId());
+                updateOweFeeCallablePo.setCommunityId(tmpOweFeeCallablePo.getCommunityId());
+                updateOweFeeCallablePo.setState(OweFeeCallableDto.STATE_FAIL);
+                updateOweFeeCallablePo.setRemark(tmpOweFeeCallablePo.getRemark() + "-业主不存在");
+                oweFeeCallableV1InnerServiceSMOImpl.updateOweFeeCallable(updateOweFeeCallablePo);
+                continue;
+            }
+            ownerAppUserDto = new OwnerAppUserDto();
+            ownerAppUserDto.setMemberId(tmpOweFeeCallablePo.getOwnerId());
+            ownerAppUserDto.setCommunityId(tmpOweFeeCallablePo.getCommunityId());
+            ownerAppUserDto.setAppType(OwnerAppUserDto.APP_TYPE_WECHAT);
+            List<OwnerAppUserDto> ownerAppUserDtos = ownerAppUserInnerServiceSMOImpl.queryOwnerAppUsers(ownerAppUserDto);
+            if(ownerAppUserDtos == null || ownerAppUserDtos.size() < 1){
+                updateOweFeeCallablePo = new OweFeeCallablePo();
+                updateOweFeeCallablePo.setOfcId(tmpOweFeeCallablePo.getOfcId());
+                updateOweFeeCallablePo.setCommunityId(tmpOweFeeCallablePo.getCommunityId());
+                updateOweFeeCallablePo.setState(OweFeeCallableDto.STATE_FAIL);
+                updateOweFeeCallablePo.setRemark(tmpOweFeeCallablePo.getRemark() + "-业主未绑定");
+                oweFeeCallableV1InnerServiceSMOImpl.updateOweFeeCallable(updateOweFeeCallablePo);
+                continue;
+            }
 
 
+            oweUrl = FeeDto.PAYER_OBJ_TYPE_ROOM.equals(tmpOweFeeCallablePo.getPayerObjType()) ? oweRoomUrl : oweCarUrl;
+            content = new JSONObject();
+            content.put("feeTypeName", tmpOweFeeCallablePo.getFeeName());
+            content.put("payerObjName", tmpOweFeeCallablePo.getPayerObjName());
+            content.put("billAmountOwed", tmpOweFeeCallablePo.getAmountdOwed());
+            content.put("date", DateUtil.dateTimeToDate(tmpOweFeeCallablePo.getStartTime()) + "~" + DateUtil.dateTimeToDate(tmpOweFeeCallablePo.getEndTime()));
+            content.put("url", oweUrl);
+            ResultVo resultVo = MsgNotifyFactory.sendOweFeeMsg(communityDto.getCommunityId(), ownerAppUserDtos.get(0).getUserId(), content);
+            updateOweFeeCallablePo = new OweFeeCallablePo();
+            updateOweFeeCallablePo.setOfcId(tmpOweFeeCallablePo.getOfcId());
+            updateOweFeeCallablePo.setCommunityId(tmpOweFeeCallablePo.getCommunityId());
+            if (resultVo.getCode() != ResultVo.CODE_OK) {
+                updateOweFeeCallablePo.setState(OweFeeCallableDto.STATE_FAIL);
+                updateOweFeeCallablePo.setRemark(tmpOweFeeCallablePo.getRemark() + "-" + resultVo.getMsg());
+            } else {
+                updateOweFeeCallablePo.setState(OweFeeCallableDto.STATE_COMPLETE);
+            }
+            oweFeeCallableV1InnerServiceSMOImpl.updateOweFeeCallable(updateOweFeeCallablePo);
         }
         }
     }
     }
 }
 }