From 093b73aadb022895a02dbbcd64b87613e19b547b Mon Sep 17 00:00:00 2001
From: 1098226878@qq.com <1098226878@qq.com>
Date: 星期一, 10 一月 2022 18:05:21 +0800
Subject: [PATCH] Merge branch 'master' of http://git.homecommunity.cn/supervip/MicroCommunity

---
 service-api/src/main/java/com/java110/api/bmo/allocationUserStorehouse/impl/AllocationUserStorehouseBMOImpl.java                                 |  408 ++++++---
 service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairStopListener.java                                                           |   97 ++
 service-api/src/main/java/com/java110/api/smo/assetExport/impl/ExportReportFeeSMOImpl.java                                                       |   26 
 java110-db/src/main/resources/mapper/report/ReportFeeMonthStatisticsServiceDaoImplMapper.xml                                                     |    1 
 service-api/src/main/java/com/java110/api/smo/assetExport/impl/ExportOwnerCarSMOImpl.java                                                        |  103 ++
 java110-bean/src/main/java/com/java110/dto/repair/RepairDto.java                                                                                 |   20 
 service-store/src/main/java/com/java110/store/bmo/storeAds/impl/GetStoreAdsBMOImpl.java                                                          |    2 
 java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeRepairDispatchStepConstant.java                                                |    9 
 service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairFinishListener.java                                                         |    1 
 java110-db/src/main/resources/mapper/common/SmsConfigServiceDaoImplMapper.xml                                                                    |  278 +++---
 java110-bean/src/main/java/com/java110/vo/api/complaint/ApiComplaintDataVo.java                                                                  |    2 
 java110-db/src/main/resources/mapper/fee/PayFeeDetailNewV1ServiceDaoImplMapper.xml                                                               |    2 
 java110-db/src/main/resources/mapper/store/ResourceStoreUseRecordServiceDaoImplMapper.xml                                                        |   56 +
 service-common/src/main/java/com/java110/common/smo/impl/FileInnerServiceSMOImpl.java                                                            |   10 
 java110-bean/src/main/java/com/java110/dto/roomRenovation/RoomRenovationDto.java                                                                 |   30 
 .DS_Store                                                                                                                                        |    0 
 service-store/src/main/java/com/java110/store/listener/resourceStoreUseRecord/AbstractResourceStoreUseRecordBusinessServiceDataFlowListener.java |    2 
 java110-db/src/main/resources/mapper/acct/AccountServiceDaoImplMapper.xml                                                                        |   12 
 service-api/src/main/java/com/java110/api/smo/assetImport/impl/ImportOwnerCarSMOImpl.java                                                        |  260 ++++++
 service-api/src/main/java/com/java110/api/listener/complaint/ListComplaintsListener.java                                                         |    3 
 java110-db/src/main/resources/mapper/community/RoomRenovationServiceDaoImplMapper.xml                                                            |   37 
 java110-db/src/main/resources/mapper/community/MappingServiceDaoImplMapper.xml                                                                   |    3 
 service-job/src/main/java/com/java110/job/task/wechat/WeChatPushMessageTemplate.java                                                             |    6 
 java110-db/src/main/resources/mapper/acct/OnlinePayV1ServiceDaoImplMapper.xml                                                                    |    7 
 java110-db/src/main/resources/mapper/store/SmallWeChatServiceDaoImplMapper.xml                                                                   |    3 
 java110-db/src/main/resources/mapper/community/PropertyRightRegistrationV1ServiceDaoImplMapper.xml                                               |   12 
 service-api/src/main/java/com/java110/api/smo/assetExport/IExportOwnerCarSMO.java                                                                |   20 
 java110-bean/src/main/java/com/java110/dto/complaint/ComplaintDto.java                                                                           |   22 
 java110-bean/src/main/java/com/java110/dto/repair/RepairSettingDto.java                                                                          |   18 
 java110-db/src/main/resources/mapper/community/RepairServiceDaoImplMapper.xml                                                                    |   16 
 service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairDispatchListener.java                                                       |   16 
 service-api/src/main/java/com/java110/api/listener/login/UserLoginServiceListener.java                                                           |   15 
 service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeePreCmd.java                                                                              |  127 ++
 service-api/src/main/java/com/java110/api/properties/WechatAuthProperties.java                                                                   |    8 
 java110-bean/src/main/java/com/java110/po/resourceStoreUseRecord/ResourceStoreUseRecordPo.java                                                   |   11 
 java110-db/src/main/resources/mapper/store/ComplaintServiceDaoImplMapper.xml                                                                     |   38 
 service-api/src/main/java/com/java110/api/smo/assetImport/IImportOwnerCarSMO.java                                                                |   22 
 java110-db/src/main/resources/mapper/community/RepairSettingServiceDaoImplMapper.xml                                                             |   39 
 service-api/src/main/java/com/java110/api/listener/ownerRepair/GrabbingRepairListener.java                                                       |    8 
 service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeeConfirmCmd.java                                                                          |  105 ++
 java110-bean/src/main/java/com/java110/dto/repair/RepairUserDto.java                                                                             |    2 
 java110-utils/src/main/java/com/java110/utils/util/BeanConvertUtil.java                                                                          |   25 
 service-user/src/main/java/com/java110/user/dao/impl/OwnerCarV1ServiceDaoImpl.java                                                               |   30 
 service-job/src/main/java/com/java110/job/adapt/fee/ReturnPayFeeMoneyAdapt.java                                                                  |  214 +++++
 java110-db/src/main/resources/mapper/fee/PayFeeDetailDiscountNewV1ServiceDaoImplMapper.xml                                                       |    4 
 service-community/src/main/java/com/java110/community/listener/repair/AbstractRepairSettingBusinessServiceDataFlowListener.java                  |    4 
 service-api/src/main/java/com/java110/api/listener/fee/PayOweFeeListener.java                                                                    |   12 
 service-api/src/main/java/com/java110/api/listener/resourceStore/SaveAllocationUserStorehouseListener.java                                       |    2 
 service-acct/src/main/java/com/java110/acct/dao/impl/AccountServiceDaoImpl.java                                                                  |    2 
 service-api/src/main/java/com/java110/api/components/assetImport/ImportOwnerCarComponent.java                                                    |   54 +
 java110-bean/src/main/java/com/java110/dto/owner/OwnerCarDto.java                                                                                |   20 
 service-api/src/main/java/com/java110/api/smo/payment/impl/ToPaySMOImpl.java                                                                     |    1 
 java110-bean/src/main/java/com/java110/dto/resourceStoreUseRecord/ResourceStoreUseRecordDto.java                                                 |   20 
 java110-bean/src/main/java/com/java110/dto/mapping/MappingDto.java                                                                               |    9 
 java110-bean/src/main/java/com/java110/dto/account/AccountDto.java                                                                               |    9 
 java110-db/src/main/resources/mapper/user/OwnerCarV1ServiceDaoImplMapper.xml                                                                     |    9 
 java110-bean/src/main/java/com/java110/dto/fee/FeeDetailDto.java                                                                                 |    2 
 service-community/src/main/java/com/java110/community/api/RoomRenovationApi.java                                                                 |    6 
 java110-bean/src/main/java/com/java110/po/repair/RepairSettingPo.java                                                                            |    9 
 service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairStartListener.java                                                          |   90 ++
 java110-bean/src/main/java/com/java110/dto/onlinePay/OnlinePayDto.java                                                                           |    9 
 service-api/src/main/java/com/java110/api/listener/ownerRepair/ListOwnerRepairsListener.java                                                     |   25 
 62 files changed, 1,922 insertions(+), 491 deletions(-)

diff --git a/.DS_Store b/.DS_Store
index b0b1da5..14ac85a 100755
--- a/.DS_Store
+++ b/.DS_Store
Binary files differ
diff --git a/java110-bean/src/main/java/com/java110/dto/account/AccountDto.java b/java110-bean/src/main/java/com/java110/dto/account/AccountDto.java
index 12a63a9..0620fd2 100644
--- a/java110-bean/src/main/java/com/java110/dto/account/AccountDto.java
+++ b/java110-bean/src/main/java/com/java110/dto/account/AccountDto.java
@@ -36,6 +36,7 @@
     private String objId;
     private String [] objIds;
     private String acctId;
+    private String [] acctIds;
     private String acctName;
     private String objType;
     private String partId;
@@ -160,4 +161,12 @@
     public void setObjIds(String[] objIds) {
         this.objIds = objIds;
     }
+
+    public String[] getAcctIds() {
+        return acctIds;
+    }
+
+    public void setAcctIds(String[] acctIds) {
+        this.acctIds = acctIds;
+    }
 }
diff --git a/java110-bean/src/main/java/com/java110/dto/complaint/ComplaintDto.java b/java110-bean/src/main/java/com/java110/dto/complaint/ComplaintDto.java
index 3800d0c..ab9305f 100755
--- a/java110-bean/src/main/java/com/java110/dto/complaint/ComplaintDto.java
+++ b/java110-bean/src/main/java/com/java110/dto/complaint/ComplaintDto.java
@@ -41,19 +41,18 @@
     private String currentUserId;
     private String currentUserName;
     private String currentUserTel;
+    private String startTime;
+    private String endTime;
 
     private String startUserId;
 
-    //
     private String auditCode;
 
     private String auditMessage;
 
-
     private Date createTime;
 
     private String statusCd = "0";
-
 
     public String getComplaintId() {
         return complaintId;
@@ -118,7 +117,6 @@
     public void setRoomId(String roomId) {
         this.roomId = roomId;
     }
-
 
     public Date getCreateTime() {
         return createTime;
@@ -263,4 +261,20 @@
     public void setRoomIds(String[] roomIds) {
         this.roomIds = roomIds;
     }
+
+    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;
+    }
 }
diff --git a/java110-bean/src/main/java/com/java110/dto/fee/FeeDetailDto.java b/java110-bean/src/main/java/com/java110/dto/fee/FeeDetailDto.java
index 5bda39e..efb5255 100755
--- a/java110-bean/src/main/java/com/java110/dto/fee/FeeDetailDto.java
+++ b/java110-bean/src/main/java/com/java110/dto/fee/FeeDetailDto.java
@@ -15,6 +15,8 @@
  **/
 public class FeeDetailDto extends PageDto implements Serializable {
 
+    public static final String PRIME_REATE_WECHAT = "5";
+
     private String primeRate;
     private String detailId;
     private String receivableAmount;
diff --git a/java110-bean/src/main/java/com/java110/dto/mapping/MappingDto.java b/java110-bean/src/main/java/com/java110/dto/mapping/MappingDto.java
index dba2ec9..576dc04 100755
--- a/java110-bean/src/main/java/com/java110/dto/mapping/MappingDto.java
+++ b/java110-bean/src/main/java/com/java110/dto/mapping/MappingDto.java
@@ -17,6 +17,7 @@
 
     private String domain;
     private String name;
+    private String nameLike;
     private String remark;
     private String id;
     private String value;
@@ -92,4 +93,12 @@
     public void setStatusCd(String statusCd) {
         this.statusCd = statusCd;
     }
+
+    public String getNameLike() {
+        return nameLike;
+    }
+
+    public void setNameLike(String nameLike) {
+        this.nameLike = nameLike;
+    }
 }
diff --git a/java110-bean/src/main/java/com/java110/dto/onlinePay/OnlinePayDto.java b/java110-bean/src/main/java/com/java110/dto/onlinePay/OnlinePayDto.java
index 093dd33..ec40b69 100644
--- a/java110-bean/src/main/java/com/java110/dto/onlinePay/OnlinePayDto.java
+++ b/java110-bean/src/main/java/com/java110/dto/onlinePay/OnlinePayDto.java
@@ -15,6 +15,15 @@
  **/
 public class OnlinePayDto extends PageDto implements Serializable {
 
+    //鐘舵�� W寰呮敮浠� C 鏀粯瀹屾垚 F 閫氱煡澶辫触 WT 寰呴��璐� CT閫�璐瑰畬鎴�
+    public static final String STATE_WAIT = "W";
+    public static final String STATE_PAY_FAIL = "PF"; // 鏀粯澶辫触
+    public static final String STATE_COMPILE = "C";
+    public static final String STATE_FAIL = "F";
+    public static final String STATE_WT = "WT"; // 寰呴��璐�
+    public static final String STATE_CT = "CT"; // 閫�璐瑰畬鎴�
+    public static final String STATE_FT = "FT"; // 閫�璐瑰け璐�
+
     private String refundFee;
     private String mchId;
     private String orderId;
diff --git a/java110-bean/src/main/java/com/java110/dto/owner/OwnerCarDto.java b/java110-bean/src/main/java/com/java110/dto/owner/OwnerCarDto.java
index aea8370..b0e5498 100755
--- a/java110-bean/src/main/java/com/java110/dto/owner/OwnerCarDto.java
+++ b/java110-bean/src/main/java/com/java110/dto/owner/OwnerCarDto.java
@@ -46,6 +46,9 @@
     private String idCard;
     private String link;
     private String parkingType;
+    //鍋滆溅鍦虹被鍨�
+    private String typeCd;
+    private String spaceSate;
 
     private String roomName;
 
@@ -57,7 +60,6 @@
     private String areaNum;
 
     private String num;
-
 
     private Date createTime;
 
@@ -343,4 +345,20 @@
     public void setCarTypeCds(String[] carTypeCds) {
         this.carTypeCds = carTypeCds;
     }
+
+    public String getTypeCd() {
+        return typeCd;
+    }
+
+    public void setTypeCd(String typeCd) {
+        this.typeCd = typeCd;
+    }
+
+    public String getSpaceSate() {
+        return spaceSate;
+    }
+
+    public void setSpaceSate(String spaceSate) {
+        this.spaceSate = spaceSate;
+    }
 }
diff --git a/java110-bean/src/main/java/com/java110/dto/repair/RepairDto.java b/java110-bean/src/main/java/com/java110/dto/repair/RepairDto.java
index 2aaef51..e79c849 100755
--- a/java110-bean/src/main/java/com/java110/dto/repair/RepairDto.java
+++ b/java110-bean/src/main/java/com/java110/dto/repair/RepairDto.java
@@ -37,6 +37,8 @@
     public static final String STATE_COMPLATE = "1900";
     //鏈鐞嗕富鍔ㄧ粨鍗�
     public static final String STATE_UNPROCESSED = "2000";
+    //鏆傚仠鎶ヤ慨鍗�
+    public static final String STATE_STOP = "2001";
 
     public static final String REPAIR_WAY_GRABBING = "100"; //鎶㈠崟妯″紡
     public static final String REPAIR_WAY_ASSIGN = "200"; //鎸囨淳妯″紡
@@ -118,6 +120,8 @@
     private String repairmanServiceScore;
     //骞冲潎鍒�
     private String average;
+    private String repairSettingType;
+    private String repairSettingTypeName;
 
     public String getRepairName() {
         return repairName;
@@ -519,4 +523,20 @@
     public void setPayType(String payType) {
         this.payType = payType;
     }
+
+    public String getRepairSettingType() {
+        return repairSettingType;
+    }
+
+    public void setRepairSettingType(String repairSettingType) {
+        this.repairSettingType = repairSettingType;
+    }
+
+    public String getRepairSettingTypeName() {
+        return repairSettingTypeName;
+    }
+
+    public void setRepairSettingTypeName(String repairSettingTypeName) {
+        this.repairSettingTypeName = repairSettingTypeName;
+    }
 }
diff --git a/java110-bean/src/main/java/com/java110/dto/repair/RepairSettingDto.java b/java110-bean/src/main/java/com/java110/dto/repair/RepairSettingDto.java
index 5190901..e3d0a76 100755
--- a/java110-bean/src/main/java/com/java110/dto/repair/RepairSettingDto.java
+++ b/java110-bean/src/main/java/com/java110/dto/repair/RepairSettingDto.java
@@ -28,6 +28,8 @@
     private String priceScope;
     private String returnVisitFlag;
     private String returnVisitFlagName;
+    private String repairSettingType;
+    private String repairSettingTypeName;
 
 
     private Date createTime;
@@ -147,4 +149,20 @@
     public void setReturnVisitFlagName(String returnVisitFlagName) {
         this.returnVisitFlagName = returnVisitFlagName;
     }
+
+    public String getRepairSettingType() {
+        return repairSettingType;
+    }
+
+    public void setRepairSettingType(String repairSettingType) {
+        this.repairSettingType = repairSettingType;
+    }
+
+    public String getRepairSettingTypeName() {
+        return repairSettingTypeName;
+    }
+
+    public void setRepairSettingTypeName(String repairSettingTypeName) {
+        this.repairSettingTypeName = repairSettingTypeName;
+    }
 }
diff --git a/java110-bean/src/main/java/com/java110/dto/repair/RepairUserDto.java b/java110-bean/src/main/java/com/java110/dto/repair/RepairUserDto.java
index 8c5a621..e09105c 100755
--- a/java110-bean/src/main/java/com/java110/dto/repair/RepairUserDto.java
+++ b/java110-bean/src/main/java/com/java110/dto/repair/RepairUserDto.java
@@ -35,7 +35,7 @@
     public static final String STATE_PAY_FEE = "10009";//寰呮敮浠�
     public static final String STATE_EVALUATE = "11000";//寰呰瘎浠�
     public static final String STATE_FINISH_PAY_FEE = "12000";//宸叉敮浠�
-
+    public static final String STATE_STOP = "12001";//鏆傚仠
 
     private String context;
     private String repairId;
diff --git a/java110-bean/src/main/java/com/java110/dto/resourceStoreUseRecord/ResourceStoreUseRecordDto.java b/java110-bean/src/main/java/com/java110/dto/resourceStoreUseRecord/ResourceStoreUseRecordDto.java
index 74c64b9..6120cd6 100644
--- a/java110-bean/src/main/java/com/java110/dto/resourceStoreUseRecord/ResourceStoreUseRecordDto.java
+++ b/java110-bean/src/main/java/com/java110/dto/resourceStoreUseRecord/ResourceStoreUseRecordDto.java
@@ -14,7 +14,6 @@
  * add by wuxw 2019/4/24
  **/
 public class ResourceStoreUseRecordDto extends PageDto implements Serializable {
-
     private String repairId;
     private String unitPrice;
     private String createUserId;
@@ -38,6 +37,9 @@
     private String endTime;
     private String unitCodeName;
     private String miniUnitCodeName;
+    //1001 鎶ュ簾鍥炴敹   2002 宸ュ崟鎹熻��   3003 鍏敤鎹熻��
+    private String state;
+    private String stateName;
 
     private String statusCd = "0";
 
@@ -251,4 +253,20 @@
     public void setIsFixedName(String isFixedName) {
         this.isFixedName = isFixedName;
     }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public String getStateName() {
+        return stateName;
+    }
+
+    public void setStateName(String stateName) {
+        this.stateName = stateName;
+    }
 }
diff --git a/java110-bean/src/main/java/com/java110/dto/roomRenovation/RoomRenovationDto.java b/java110-bean/src/main/java/com/java110/dto/roomRenovation/RoomRenovationDto.java
index 938bfa7..f36b27f 100755
--- a/java110-bean/src/main/java/com/java110/dto/roomRenovation/RoomRenovationDto.java
+++ b/java110-bean/src/main/java/com/java110/dto/roomRenovation/RoomRenovationDto.java
@@ -35,12 +35,13 @@
     private String renovationCompany;
     private String personMain;
     private String personMainTel;
-
+    private String renovationTime;
+    private String renovationStartTime;
+    private String renovationEndTime;
 
     private Date createTime;
 
     private String statusCd = "0";
-
 
     public String getRemark() {
         return remark;
@@ -138,7 +139,6 @@
         this.personTel = personTel;
     }
 
-
     public Date getCreateTime() {
         return createTime;
     }
@@ -210,4 +210,28 @@
     public void setPersonMainTel(String personMainTel) {
         this.personMainTel = personMainTel;
     }
+
+    public String getRenovationTime() {
+        return renovationTime;
+    }
+
+    public void setRenovationTime(String renovationTime) {
+        this.renovationTime = renovationTime;
+    }
+
+    public String getRenovationStartTime() {
+        return renovationStartTime;
+    }
+
+    public void setRenovationStartTime(String renovationStartTime) {
+        this.renovationStartTime = renovationStartTime;
+    }
+
+    public String getRenovationEndTime() {
+        return renovationEndTime;
+    }
+
+    public void setRenovationEndTime(String renovationEndTime) {
+        this.renovationEndTime = renovationEndTime;
+    }
 }
diff --git a/java110-bean/src/main/java/com/java110/po/repair/RepairSettingPo.java b/java110-bean/src/main/java/com/java110/po/repair/RepairSettingPo.java
index a0958a9..7e4a488 100755
--- a/java110-bean/src/main/java/com/java110/po/repair/RepairSettingPo.java
+++ b/java110-bean/src/main/java/com/java110/po/repair/RepairSettingPo.java
@@ -15,6 +15,7 @@
     private String payFeeFlag;
     private String priceScope;
     private String returnVisitFlag;
+    private String repairSettingType;
 
 
     public String getRepairTypeName() {
@@ -97,4 +98,12 @@
     public void setReturnVisitFlag(String returnVisitFlag) {
         this.returnVisitFlag = returnVisitFlag;
     }
+
+    public String getRepairSettingType() {
+        return repairSettingType;
+    }
+
+    public void setRepairSettingType(String repairSettingType) {
+        this.repairSettingType = repairSettingType;
+    }
 }
diff --git a/java110-bean/src/main/java/com/java110/po/resourceStoreUseRecord/ResourceStoreUseRecordPo.java b/java110-bean/src/main/java/com/java110/po/resourceStoreUseRecord/ResourceStoreUseRecordPo.java
index 41dfd33..c2f3eef 100644
--- a/java110-bean/src/main/java/com/java110/po/resourceStoreUseRecord/ResourceStoreUseRecordPo.java
+++ b/java110-bean/src/main/java/com/java110/po/resourceStoreUseRecord/ResourceStoreUseRecordPo.java
@@ -1,7 +1,6 @@
 package com.java110.po.resourceStoreUseRecord;
 
 import java.io.Serializable;
-import java.util.Date;
 
 public class ResourceStoreUseRecordPo implements Serializable {
 
@@ -17,6 +16,8 @@
     private String communityId;
     private String resName;
     private String resourceStoreName;
+    //1001 鎶ュ簾鍥炴敹   2002 宸ュ崟鎹熻��   3003 鍏敤鎹熻��
+    private String state;
 
     public String getRepairId() {
         return repairId;
@@ -113,4 +114,12 @@
     public void setResourceStoreName(String resourceStoreName) {
         this.resourceStoreName = resourceStoreName;
     }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
 }
diff --git a/java110-bean/src/main/java/com/java110/vo/api/complaint/ApiComplaintDataVo.java b/java110-bean/src/main/java/com/java110/vo/api/complaint/ApiComplaintDataVo.java
index 771e008..5e38426 100755
--- a/java110-bean/src/main/java/com/java110/vo/api/complaint/ApiComplaintDataVo.java
+++ b/java110-bean/src/main/java/com/java110/vo/api/complaint/ApiComplaintDataVo.java
@@ -25,7 +25,7 @@
     private String unitNum;
     private String floorNum;
     private String communityId;
-    //
+
     private String auditCode;
 
     private List<PhotoVo> photos;
diff --git a/java110-db/src/main/resources/mapper/acct/AccountServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/acct/AccountServiceDaoImplMapper.xml
index dd86bd3..5e692d1 100644
--- a/java110-db/src/main/resources/mapper/acct/AccountServiceDaoImplMapper.xml
+++ b/java110-db/src/main/resources/mapper/acct/AccountServiceDaoImplMapper.xml
@@ -119,6 +119,12 @@
                 #{item}
             </foreach>
         </if>
+        <if test="acctIds !=null ">
+            and t.acct_id in
+            <foreach collection="acctIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
         <if test="acctId !=null and acctId != ''">
             and t.acct_id= #{acctId}
         </if>
@@ -196,6 +202,12 @@
         <if test="objId !=null and objId != ''">
             and t.obj_id= #{objId}
         </if>
+        <if test="acctIds !=null ">
+            and t.acct_id in
+            <foreach collection="acctIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
         <if test="acctId !=null and acctId != ''">
             and t.acct_id= #{acctId}
         </if>
diff --git a/java110-db/src/main/resources/mapper/acct/OnlinePayV1ServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/acct/OnlinePayV1ServiceDaoImplMapper.xml
index eb8e64d..66da8e9 100644
--- a/java110-db/src/main/resources/mapper/acct/OnlinePayV1ServiceDaoImplMapper.xml
+++ b/java110-db/src/main/resources/mapper/acct/OnlinePayV1ServiceDaoImplMapper.xml
@@ -79,9 +79,7 @@
         <if test="mchId !=null and mchId != ''">
             , t.mch_id= #{mchId}
         </if>
-        <if test="orderId !=null and orderId != ''">
-            , t.order_id= #{orderId}
-        </if>
+
         <if test="totalFee !=null and totalFee != ''">
             , t.total_fee= #{totalFee}
         </if>
@@ -107,6 +105,9 @@
         <if test="payId !=null and payId != ''">
             and t.pay_id= #{payId}
         </if>
+        <if test="orderId !=null and orderId != ''">
+            and t.order_id= #{orderId}
+        </if>
 
     </update>
 
diff --git a/java110-db/src/main/resources/mapper/common/SmsConfigServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/common/SmsConfigServiceDaoImplMapper.xml
index 4d86895..a2ab9fe 100644
--- a/java110-db/src/main/resources/mapper/common/SmsConfigServiceDaoImplMapper.xml
+++ b/java110-db/src/main/resources/mapper/common/SmsConfigServiceDaoImplMapper.xml
@@ -5,165 +5,163 @@
 <mapper namespace="smsConfigServiceDaoImpl">
 
 
-
-
-
     <!-- 淇濆瓨鐭俊閰嶇疆淇℃伅 add by wuxw 2018-07-03 -->
     <insert id="saveSmsConfigInfo" parameterType="Map">
         insert into sms_config(
-access_key_id,sms_busi,sign_name,template_code,store_id,access_secret,sms_id,obj_id,sms_type,log_switch,region,remarks
-) values (
-#{accessKeyId},#{smsBusi},#{signName},#{templateCode},#{storeId},#{accessSecret},#{smsId},#{objId},#{smsType},#{logSwitch},#{region},#{remarks}
-)
+        access_key_id,sms_busi,sign_name,template_code,store_id,access_secret,sms_id,obj_id,sms_type,log_switch,region,remarks
+        ) values (
+        #{accessKeyId},#{smsBusi},#{signName},#{templateCode},#{storeId},#{accessSecret},#{smsId},#{objId},#{smsType},#{logSwitch},#{region},#{remarks}
+        )
     </insert>
-
 
 
     <!-- 鏌ヨ鐭俊閰嶇疆淇℃伅 add by wuxw 2018-07-03 -->
     <select id="getSmsConfigInfo" parameterType="Map" resultType="Map">
-        select  t.access_key_id,t.access_key_id accessKeyId,t.sms_busi,t.sms_busi smsBusi,t.sign_name,t.sign_name signName,t.status_cd,t.status_cd statusCd,t.template_code,t.template_code templateCode,t.store_id,t.store_id storeId,t.access_secret,t.access_secret accessSecret,t.sms_id,t.sms_id smsId,t.obj_id,t.obj_id objId,t.sms_type,t.sms_type smsType,t.log_switch,t.log_switch logSwitch,t.region,t.remarks 
-from sms_config t 
-where 1 =1 
-<if test="accessKeyId !=null and accessKeyId != ''">
-   and t.access_key_id= #{accessKeyId}
-</if> 
-<if test="smsBusi !=null and smsBusi != ''">
-   and t.sms_busi= #{smsBusi}
-</if> 
-<if test="signName !=null and signName != ''">
-   and t.sign_name= #{signName}
-</if> 
-<if test="statusCd !=null and statusCd != ''">
-   and t.status_cd= #{statusCd}
-</if> 
-<if test="templateCode !=null and templateCode != ''">
-   and t.template_code= #{templateCode}
-</if> 
-<if test="storeId !=null and storeId != ''">
-   and t.store_id= #{storeId}
-</if> 
-<if test="accessSecret !=null and accessSecret != ''">
-   and t.access_secret= #{accessSecret}
-</if> 
-<if test="smsId !=null and smsId != ''">
-   and t.sms_id= #{smsId}
-</if> 
-<if test="objId !=null and objId != ''">
-   and t.obj_id= #{objId}
-</if> 
-<if test="smsType !=null and smsType != ''">
-   and t.sms_type= #{smsType}
-</if> 
-<if test="logSwitch !=null and logSwitch != ''">
-   and t.log_switch= #{logSwitch}
-</if> 
-<if test="region !=null and region != ''">
-   and t.region= #{region}
-</if> 
-<if test="remarks !=null and remarks != ''">
-   and t.remarks= #{remarks}
-</if> 
-order by t.create_time desc
-<if test="page != -1 and page != null ">
-   limit #{page}, #{row}
-</if> 
+        select t.access_key_id,t.access_key_id accessKeyId,t.sms_busi,t.sms_busi smsBusi,t.sign_name,t.sign_name
+        signName,t.status_cd,t.status_cd statusCd,t.template_code,t.template_code templateCode,t.store_id,t.store_id
+        storeId,t.access_secret,t.access_secret accessSecret,t.sms_id,t.sms_id smsId,t.obj_id,t.obj_id
+        objId,t.sms_type,t.sms_type smsType,t.log_switch,t.log_switch logSwitch,t.region,t.remarks
+        from sms_config t
+        where 1 =1
+        <if test="accessKeyId !=null and accessKeyId != ''">
+            and t.access_key_id= #{accessKeyId}
+        </if>
+        <if test="smsBusi !=null and smsBusi != ''">
+            and t.sms_busi= #{smsBusi}
+        </if>
+        <if test="signName !=null and signName != ''">
+            and t.sign_name= #{signName}
+        </if>
+        <if test="statusCd !=null and statusCd != ''">
+            and t.status_cd= #{statusCd}
+        </if>
+        <if test="templateCode !=null and templateCode != ''">
+            and t.template_code= #{templateCode}
+        </if>
+        <if test="storeId !=null and storeId != ''">
+            and t.store_id= #{storeId}
+        </if>
+        <if test="accessSecret !=null and accessSecret != ''">
+            and t.access_secret= #{accessSecret}
+        </if>
+        <if test="smsId !=null and smsId != ''">
+            and t.sms_id= #{smsId}
+        </if>
+        <if test="objId !=null and objId != ''">
+            and t.obj_id= #{objId}
+        </if>
+        <if test="smsType !=null and smsType != ''">
+            and t.sms_type= #{smsType}
+        </if>
+        <if test="logSwitch !=null and logSwitch != ''">
+            and t.log_switch= #{logSwitch}
+        </if>
+        <if test="region !=null and region != ''">
+            and t.region= #{region}
+        </if>
+        <if test="remarks !=null and remarks != ''">
+            and t.remarks= #{remarks}
+        </if>
+        order by t.create_time desc
+        <if test="page != -1 and page != null ">
+            limit #{page}, #{row}
+        </if>
 
     </select>
 
 
-
-
     <!-- 淇敼鐭俊閰嶇疆淇℃伅 add by wuxw 2018-07-03 -->
     <update id="updateSmsConfigInfo" parameterType="Map">
-        update  sms_config t set t.status_cd = #{statusCd}
-<if test="newBId != null and newBId != ''">
-,t.b_id = #{newBId}
-</if> 
-<if test="accessKeyId !=null and accessKeyId != ''">
-, t.access_key_id= #{accessKeyId}
-</if> 
-<if test="smsBusi !=null and smsBusi != ''">
-, t.sms_busi= #{smsBusi}
-</if> 
-<if test="signName !=null and signName != ''">
-, t.sign_name= #{signName}
-</if> 
-<if test="templateCode !=null and templateCode != ''">
-, t.template_code= #{templateCode}
-</if> 
-<if test="storeId !=null and storeId != ''">
-, t.store_id= #{storeId}
-</if> 
-<if test="accessSecret !=null and accessSecret != ''">
-, t.access_secret= #{accessSecret}
-</if> 
-<if test="objId !=null and objId != ''">
-, t.obj_id= #{objId}
-</if> 
-<if test="smsType !=null and smsType != ''">
-, t.sms_type= #{smsType}
-</if> 
-<if test="logSwitch !=null and logSwitch != ''">
-, t.log_switch= #{logSwitch}
-</if> 
-<if test="region !=null and region != ''">
-, t.region= #{region}
-</if> 
-<if test="remarks !=null and remarks != ''">
-, t.remarks= #{remarks}
-</if> 
- where 1=1 <if test="smsId !=null and smsId != ''">
-and t.sms_id= #{smsId}
-</if> 
+        update sms_config t set t.status_cd = #{statusCd}
+        <if test="newBId != null and newBId != ''">
+            ,t.b_id = #{newBId}
+        </if>
+        <if test="accessKeyId !=null and accessKeyId != ''">
+            , t.access_key_id= #{accessKeyId}
+        </if>
+        <if test="smsBusi !=null and smsBusi != ''">
+            , t.sms_busi= #{smsBusi}
+        </if>
+        <if test="signName !=null and signName != ''">
+            , t.sign_name= #{signName}
+        </if>
+        <if test="templateCode !=null and templateCode != ''">
+            , t.template_code= #{templateCode}
+        </if>
+        <if test="storeId !=null and storeId != ''">
+            , t.store_id= #{storeId}
+        </if>
+        <if test="accessSecret !=null and accessSecret != ''">
+            , t.access_secret= #{accessSecret}
+        </if>
+        <if test="objId !=null and objId != ''">
+            , t.obj_id= #{objId}
+        </if>
+        <if test="smsType !=null and smsType != ''">
+            , t.sms_type= #{smsType}
+        </if>
+        <if test="logSwitch !=null and logSwitch != ''">
+            , t.log_switch= #{logSwitch}
+        </if>
+        <if test="region !=null and region != ''">
+            , t.region= #{region}
+        </if>
+        <if test="remarks !=null and remarks != ''">
+            , t.remarks= #{remarks}
+        </if>
+        where 1=1
+        <if test="smsId !=null and smsId != ''">
+            and t.sms_id= #{smsId}
+        </if>
 
     </update>
 
     <!-- 鏌ヨ鐭俊閰嶇疆鏁伴噺 add by wuxw 2018-07-03 -->
-     <select id="querySmsConfigsCount" parameterType="Map" resultType="Map">
-        select  count(1) count 
-from sms_config t 
-where 1 =1 
-<if test="accessKeyId !=null and accessKeyId != ''">
-   and t.access_key_id= #{accessKeyId}
-</if> 
-<if test="smsBusi !=null and smsBusi != ''">
-   and t.sms_busi= #{smsBusi}
-</if> 
-<if test="signName !=null and signName != ''">
-   and t.sign_name= #{signName}
-</if> 
-<if test="statusCd !=null and statusCd != ''">
-   and t.status_cd= #{statusCd}
-</if> 
-<if test="templateCode !=null and templateCode != ''">
-   and t.template_code= #{templateCode}
-</if> 
-<if test="storeId !=null and storeId != ''">
-   and t.store_id= #{storeId}
-</if> 
-<if test="accessSecret !=null and accessSecret != ''">
-   and t.access_secret= #{accessSecret}
-</if> 
-<if test="smsId !=null and smsId != ''">
-   and t.sms_id= #{smsId}
-</if> 
-<if test="objId !=null and objId != ''">
-   and t.obj_id= #{objId}
-</if> 
-<if test="smsType !=null and smsType != ''">
-   and t.sms_type= #{smsType}
-</if> 
-<if test="logSwitch !=null and logSwitch != ''">
-   and t.log_switch= #{logSwitch}
-</if> 
-<if test="region !=null and region != ''">
-   and t.region= #{region}
-</if> 
-<if test="remarks !=null and remarks != ''">
-   and t.remarks= #{remarks}
-</if> 
+    <select id="querySmsConfigsCount" parameterType="Map" resultType="Map">
+        select count(1) count
+        from sms_config t
+        where 1 =1
+        <if test="accessKeyId !=null and accessKeyId != ''">
+            and t.access_key_id= #{accessKeyId}
+        </if>
+        <if test="smsBusi !=null and smsBusi != ''">
+            and t.sms_busi= #{smsBusi}
+        </if>
+        <if test="signName !=null and signName != ''">
+            and t.sign_name= #{signName}
+        </if>
+        <if test="statusCd !=null and statusCd != ''">
+            and t.status_cd= #{statusCd}
+        </if>
+        <if test="templateCode !=null and templateCode != ''">
+            and t.template_code= #{templateCode}
+        </if>
+        <if test="storeId !=null and storeId != ''">
+            and t.store_id= #{storeId}
+        </if>
+        <if test="accessSecret !=null and accessSecret != ''">
+            and t.access_secret= #{accessSecret}
+        </if>
+        <if test="smsId !=null and smsId != ''">
+            and t.sms_id= #{smsId}
+        </if>
+        <if test="objId !=null and objId != ''">
+            and t.obj_id= #{objId}
+        </if>
+        <if test="smsType !=null and smsType != ''">
+            and t.sms_type= #{smsType}
+        </if>
+        <if test="logSwitch !=null and logSwitch != ''">
+            and t.log_switch= #{logSwitch}
+        </if>
+        <if test="region !=null and region != ''">
+            and t.region= #{region}
+        </if>
+        <if test="remarks !=null and remarks != ''">
+            and t.remarks= #{remarks}
+        </if>
 
 
-     </select>
+    </select>
 
 </mapper>
diff --git a/java110-db/src/main/resources/mapper/community/MappingServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/community/MappingServiceDaoImplMapper.xml
index 7ee61af..fde5c95 100755
--- a/java110-db/src/main/resources/mapper/community/MappingServiceDaoImplMapper.xml
+++ b/java110-db/src/main/resources/mapper/community/MappingServiceDaoImplMapper.xml
@@ -84,6 +84,9 @@
         <if test="name !=null and name != ''">
             and t.name= #{name}
         </if>
+        <if test="nameLike !=null and nameLike != ''">
+            and t.name like concat('%',#{nameLike},'%')
+        </if>
         <if test="remark !=null and remark != ''">
             and t.remark= #{remark}
         </if>
diff --git a/java110-db/src/main/resources/mapper/community/PropertyRightRegistrationV1ServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/community/PropertyRightRegistrationV1ServiceDaoImplMapper.xml
index 193bd69..91bf2a1 100644
--- a/java110-db/src/main/resources/mapper/community/PropertyRightRegistrationV1ServiceDaoImplMapper.xml
+++ b/java110-db/src/main/resources/mapper/community/PropertyRightRegistrationV1ServiceDaoImplMapper.xml
@@ -48,6 +48,12 @@
         <if test="roomId !=null and roomId != ''">
             and t.room_id= #{roomId}
         </if>
+        <if test="floorId !=null and floorId != ''">
+            and fl.floor_id= #{floorId}
+        </if>
+        <if test="unitId !=null and unitId != ''">
+            and bu.unit_id= #{unitId}
+        </if>
         <if test="roomNum !=null and roomNum != ''">
             and br.room_num= #{roomNum}
         </if>
@@ -144,6 +150,12 @@
         <if test="roomId !=null and roomId != ''">
             and t.room_id= #{roomId}
         </if>
+        <if test="floorId !=null and floorId != ''">
+            and fl.floor_id= #{floorId}
+        </if>
+        <if test="unitId !=null and unitId != ''">
+            and bu.unit_id= #{unitId}
+        </if>
         <if test="roomNum !=null and roomNum != ''">
             and br.room_num= #{roomNum}
         </if>
diff --git a/java110-db/src/main/resources/mapper/community/RepairServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/community/RepairServiceDaoImplMapper.xml
index 9a0c1f5..a16f9cf 100755
--- a/java110-db/src/main/resources/mapper/community/RepairServiceDaoImplMapper.xml
+++ b/java110-db/src/main/resources/mapper/community/RepairServiceDaoImplMapper.xml
@@ -139,15 +139,15 @@
         t.repair_obj_type,t.repair_obj_id,t.repair_obj_name,t.repair_obj_type repairObjType,t.repair_obj_id repairObjId,
         t.repair_obj_name repairObjName,rrv.visit_type visitType,rrv.context visitContext,a.appraise_score
         appraiseScore, a.door_speed_score doorSpeedScore,a.repairman_service_score repairmanServiceScore,
-        t.pay_type,t.pay_type payType
+        t.pay_type,t.pay_type payType,rs.repair_setting_type repairSettingType,d1.name repairSettingTypeName
         <if test="staffId != null and staffId != ''">
             ,rru.state repairDispatchState,rru.context repairDispatchContext,td.name repairDispatchStateName
         </if>
         from r_repair_pool t
         left join t_dict d on t.state = d.status_cd and d.table_name = 'r_repair_pool' and d.table_columns = 'state'
         left join r_repair_setting rs on rs.repair_type = t.repair_type and rs.status_cd = '0'
-        left join r_repair_return_visit rrv on t.repair_id = rrv.repair_id and rrv.community_id = t.community_id and
-        rrv.status_cd = '0'
+        left join t_dict d1 on rs.repair_setting_type = d1.status_cd and d1.table_name = 'r_repair_setting' and d1.table_columns = 'repair_setting_type'
+        left join r_repair_return_visit rrv on t.repair_id = rrv.repair_id and rrv.community_id = t.community_id and rrv.status_cd = '0'
         left join appraise a on a.obj_id = t.repair_id and a.status_cd = '0'
         <if test="staffId != null and staffId != ''">
             ,r_repair_user rru
@@ -164,6 +164,9 @@
         </if>
         <if test="repairWay !=null and repairWay != ''">
             and rs.repair_way= #{repairWay}
+        </if>
+        <if test="repairSettingType !=null and repairSettingType != ''">
+            and rs.repair_setting_type= #{repairSettingType}
         </if>
         <if test="returnVisitFlag != null and returnVisitFlag != '' and returnVisitFlag != '003'">
             and rs.return_visit_flag in ('001','002')
@@ -324,6 +327,9 @@
         <if test="repairType !=null and repairType != ''">
             and t.repair_type= #{repairType}
         </if>
+        <if test="repairSettingType !=null and repairSettingType != ''">
+            and rs.repair_setting_type= #{repairSettingType}
+        </if>
         <if test="payType !=null and payType != ''">
             and t.pay_type= #{payType}
         </if>
@@ -395,7 +401,7 @@
         td.table_columns='return_visit_flag'
         where 1 =1
         and ru.state in ('10001','10009','11000')
-        and t.state in('1000','1100','1200','1300','1400','1700','1800')
+        and t.state in('1000','1100','1200','1300','1400','1700','1800','2001')
         <if test="staffId !=null and staffId != ''">
             and ru.staff_id = #{staffId}
         </if>
@@ -462,7 +468,7 @@
         td.table_columns='return_visit_flag'
         where 1 =1
         and ru.state in ('10001','10009','11000')
-        and t.state in('1000','1100','1200','1300','1400','1700','1800')
+        and t.state in('1000','1100','1200','1300','1400','1700','1800','2001')
         <if test="staffId !=null and staffId != ''">
             and ru.staff_id = #{staffId}
         </if>
diff --git a/java110-db/src/main/resources/mapper/community/RepairSettingServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/community/RepairSettingServiceDaoImplMapper.xml
index 1dbdc16..ff41b69 100755
--- a/java110-db/src/main/resources/mapper/community/RepairSettingServiceDaoImplMapper.xml
+++ b/java110-db/src/main/resources/mapper/community/RepairSettingServiceDaoImplMapper.xml
@@ -7,16 +7,16 @@
     <!-- 淇濆瓨鎶ヤ慨璁剧疆淇℃伅 add by wuxw 2018-07-03 -->
     <insert id="saveBusinessRepairSettingInfo" parameterType="Map">
         insert into business_repair_setting(
-        operate,repair_type_name,repair_type,remark,b_id,community_id,repair_way,setting_id,public_area,pay_fee_flag,price_scope,return_visit_flag
+        operate,repair_type_name,repair_type,repair_setting_type,remark,b_id,community_id,repair_way,setting_id,public_area,pay_fee_flag,price_scope,return_visit_flag
         ) values (
-        #{operate},#{repairTypeName},#{repairType},#{remark},#{bId},#{communityId},#{repairWay},#{settingId},#{publicArea},#{payFeeFlag},#{priceScope},#{returnVisitFlag}
+        #{operate},#{repairTypeName},#{repairType},#{repairSettingType},#{remark},#{bId},#{communityId},#{repairWay},#{settingId},#{publicArea},#{payFeeFlag},#{priceScope},#{returnVisitFlag}
         )
     </insert>
 
     <!-- 鏌ヨ鎶ヤ慨璁剧疆淇℃伅锛圔usiness锛� add by wuxw 2018-07-03 -->
     <select id="getBusinessRepairSettingInfo" parameterType="Map" resultType="Map">
         select t.operate,t.repair_type_name,t.repair_type_name repairTypeName,t.repair_type,t.repair_type
-        repairType,t.remark,t.b_id,t.b_id bId,t.community_id,t.community_id communityId,t.repair_way,t.repair_way
+        repairType,t.repair_setting_type,t.repair_setting_type repairSettingType,t.remark,t.b_id,t.b_id bId,t.community_id,t.community_id communityId,t.repair_way,t.repair_way
         repairWay,t.setting_id,t.setting_id settingId,t.public_area,t.public_area
         publicArea,t.pay_fee_flag,t.pay_fee_flag payFeeFlag
         ,t.price_scope,t.price_scope priceScope,t.return_visit_flag,t.return_visit_flag returnVisitFlag
@@ -30,6 +30,9 @@
         </if>
         <if test="repairType !=null and repairType != ''">
             and t.repair_type= #{repairType}
+        </if>
+        <if test="repairSettingType !=null and repairSettingType != ''">
+            and t.repair_setting_type= #{repairSettingType}
         </if>
         <if test="remark !=null and remark != ''">
             and t.remark= #{remark}
@@ -51,8 +54,8 @@
     <!-- 淇濆瓨鎶ヤ慨璁剧疆淇℃伅鑷� instance琛ㄤ腑 add by wuxw 2018-07-03 -->
     <insert id="saveRepairSettingInfoInstance" parameterType="Map">
         insert into r_repair_setting(
-        repair_type_name,repair_type,remark,status_cd,b_id,community_id,repair_way,setting_id,public_area,pay_fee_flag,price_scope,return_visit_flag
-        ) select t.repair_type_name,t.repair_type,t.remark,'0',t.b_id,t.community_id,t.repair_way,t.setting_id
+        repair_type_name,repair_type,repair_setting_type,remark,status_cd,b_id,community_id,repair_way,setting_id,public_area,pay_fee_flag,price_scope,return_visit_flag
+        ) select t.repair_type_name,t.repair_type,t.repair_setting_type,t.remark,'0',t.b_id,t.community_id,t.repair_way,t.setting_id
         ,t.public_area,t.pay_fee_flag,t.price_scope,t.return_visit_flag
         from
         business_repair_setting t where 1=1
@@ -62,6 +65,9 @@
         </if>
         <if test="repairType !=null and repairType != ''">
             and t.repair_type= #{repairType}
+        </if>
+        <if test="repairSettingType and repairSettingType != ''">
+            and t.repair_setting_type= #{repairSettingType}
         </if>
         <if test="remark !=null and remark != ''">
             and t.remark= #{remark}
@@ -83,23 +89,25 @@
     <!-- 鏌ヨ鎶ヤ慨璁剧疆淇℃伅 add by wuxw 2018-07-03 -->
     <select id="getRepairSettingInfo" parameterType="Map" resultType="Map">
         select t.repair_type_name,t.repair_type_name repairTypeName,t.repair_type,t.repair_type
-        repairType,t.remark,t.status_cd,t.status_cd statusCd,t.b_id,t.b_id bId,t.community_id,t.community_id
+        repairType,t.repair_setting_type,t.repair_setting_type repairSettingType,t.remark,t.status_cd,t.status_cd statusCd,t.b_id,t.b_id bId,t.community_id,t.community_id
         communityId,t.repair_way,t.repair_way repairWay,t.setting_id,t.setting_id settingId,t.create_time
-        createTime,d.name repairWayName,
+        createTime,d.name repairWayName,d2.name repairSettingTypeName,
         t.public_area,t.public_area publicArea,t.pay_fee_flag,t.pay_fee_flag payFeeFlag
         ,t.price_scope,t.price_scope priceScope,t.return_visit_flag,t.return_visit_flag returnVisitFlag,d1.name
         returnVisitFlagName
         from r_repair_setting t
-        left join t_dict d on t.repair_way = d.status_cd and d.table_name = 'r_repair_setting' and d.table_columns =
-        'repair_way'
-        left join t_dict d1 on t.return_visit_flag = d1.status_cd and d1.table_name = 'r_repair_setting' and
-        d1.table_columns = 'return_visit_flag'
+        left join t_dict d on t.repair_way = d.status_cd and d.table_name = 'r_repair_setting' and d.table_columns ='repair_way'
+        left join t_dict d1 on t.return_visit_flag = d1.status_cd and d1.table_name = 'r_repair_setting' and d1.table_columns = 'return_visit_flag'
+        left join t_dict d2 on t.repair_setting_type = d2.status_cd and d2.table_name = 'r_repair_setting' and d2.table_columns = 'repair_setting_type'
         where 1 =1
         <if test="repairTypeName !=null and repairTypeName != ''">
             and t.repair_type_name like '%${repairTypeName}%'
         </if>
         <if test="repairType !=null and repairType != ''">
             and t.repair_type= #{repairType}
+        </if>
+        <if test="repairSettingType !=null and repairSettingType != ''">
+            and t.repair_setting_type= #{repairSettingType}
         </if>
         <if test="remark !=null and remark != ''">
             and t.remark= #{remark}
@@ -146,6 +154,9 @@
         <if test="repairType !=null and repairType != ''">
             , t.repair_type= #{repairType}
         </if>
+        <if test="repairSettingType !=null and repairSettingType != ''">
+            , t.repair_setting_type= #{repairSettingType}
+        </if>
         <if test="remark !=null and remark != ''">
             , t.remark= #{remark}
         </if>
@@ -180,8 +191,7 @@
     <select id="queryRepairSettingsCount" parameterType="Map" resultType="Map">
         select count(1) count
         from r_repair_setting t
-        left join t_dict d on t.repair_way = d.status_cd and d.table_name = 'r_repair_setting' and d.table_columns =
-        'repair_way'
+        left join t_dict d on t.repair_way = d.status_cd and d.table_name = 'r_repair_setting' and d.table_columns = 'repair_way'
         where 1 =1
         <if test="repairTypeName !=null and repairTypeName != ''">
             and t.repair_type_name like '%${repairTypeName}%'
@@ -189,6 +199,9 @@
         <if test="repairType !=null and repairType != ''">
             and t.repair_type= #{repairType}
         </if>
+        <if test="repairSettingType !=null and repairSettingType != ''">
+            and t.repair_setting_type= #{repairSettingType}
+        </if>
         <if test="remark !=null and remark != ''">
             and t.remark= #{remark}
         </if>
diff --git a/java110-db/src/main/resources/mapper/community/RoomRenovationServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/community/RoomRenovationServiceDaoImplMapper.xml
index 9afa74c..24d7c28 100755
--- a/java110-db/src/main/resources/mapper/community/RoomRenovationServiceDaoImplMapper.xml
+++ b/java110-db/src/main/resources/mapper/community/RoomRenovationServiceDaoImplMapper.xml
@@ -6,11 +6,12 @@
 
     <!-- 淇濆瓨瑁呬慨鐢宠淇℃伅 add by wuxw 2018-07-03 -->
     <insert id="saveRoomRenovationInfo" parameterType="Map">
-        insert into room_renovation(
-        remark,is_violation,r_id,room_id,room_name,person_name,violation_desc,start_time,end_time,state,community_id,person_tel,is_postpone,postpone_time,renovation_company,person_main,person_main_tel
-        ) values (
-        #{remark},#{isViolation},#{rId},#{roomId},#{roomName},#{personName},#{violationDesc},#{startTime},#{endTime},#{state},#{communityId},#{personTel},#{isPostpone},#{postponeTime},#{renovationCompany},#{personMain},#{personMainTel}
-        )
+        insert into room_renovation(remark, is_violation, r_id, room_id, room_name, person_name, violation_desc,
+                                    start_time, end_time, state, community_id, person_tel, is_postpone, postpone_time,
+                                    renovation_company, person_main, person_main_tel)
+        values (#{remark}, #{isViolation}, #{rId}, #{roomId}, #{roomName}, #{personName}, #{violationDesc},
+                #{startTime}, #{endTime}, #{state}, #{communityId}, #{personTel}, #{isPostpone}, #{postponeTime},
+                #{renovationCompany}, #{personMain}, #{personMainTel})
     </insert>
 
     <!-- 鏌ヨ瑁呬慨鐢宠淇℃伅 add by wuxw 2018-07-03 -->
@@ -19,8 +20,10 @@
         rId,t.room_id,t.room_id roomId,t.room_name,t.room_name roomName,t.person_name,t.person_name
         personName,t.violation_desc,t.violation_desc violationDesc,t.start_time,t.start_time
         startTime,t.end_time,t.end_time endTime,t.state,td.name stateName,t.community_id,t.community_id
-        communityId,t.person_tel,t.person_tel personTel,t.create_time createTime,t.is_postpone,t.is_postpone isPostpone,t.postpone_time,t.postpone_time postponeTime,
-        t.renovation_company,t.renovation_company renovationCompany,t.person_main,t.person_main personMain,t.person_main_tel,t.person_main_tel personMainTel
+        communityId,t.person_tel,t.person_tel personTel,t.create_time createTime,t.is_postpone,t.is_postpone
+        isPostpone,t.postpone_time,t.postpone_time postponeTime,
+        t.renovation_company,t.renovation_company renovationCompany,t.person_main,t.person_main
+        personMain,t.person_main_tel,t.person_main_tel personMainTel
         from room_renovation t
         left join t_dict td on td.table_name='room_renovation' and td.table_columns='state'
         and t.state=td.status_cd
@@ -57,6 +60,16 @@
         </if>
         <if test="endTime !=null and endTime != ''">
             and t.end_time= #{endTime}
+        </if>
+        <if test="renovationTime !=null and renovationTime != ''">
+            and t.start_time &lt;= #{renovationTime}
+            and t.end_time &gt;= #{renovationTime}
+        </if>
+        <if test="renovationStartTime !=null and renovationStartTime != ''">
+            and t.create_time &gt;= #{renovationStartTime}
+        </if>
+        <if test="renovationEndTime !=null and renovationEndTime != ''">
+            and t.create_time &lt;= #{renovationEndTime}
         </if>
         <if test="state !=null and state != ''">
             and t.state= #{state}
@@ -184,6 +197,16 @@
         <if test="endTime !=null and endTime != ''">
             and t.end_time= #{endTime}
         </if>
+        <if test="renovationTime !=null and renovationTime != ''">
+            and t.start_time &lt;= #{renovationTime}
+            and t.end_time &gt;= #{renovationTime}
+        </if>
+        <if test="renovationStartTime !=null and renovationStartTime != ''">
+            and t.create_time &gt;= #{renovationStartTime}
+        </if>
+        <if test="renovationEndTime !=null and renovationEndTime != ''">
+            and t.create_time &lt;= #{renovationEndTime}
+        </if>
         <if test="state !=null and state != ''">
             and t.state= #{state}
         </if>
diff --git a/java110-db/src/main/resources/mapper/fee/PayFeeDetailDiscountNewV1ServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/fee/PayFeeDetailDiscountNewV1ServiceDaoImplMapper.xml
index 87c660e..3b3bcaa 100644
--- a/java110-db/src/main/resources/mapper/fee/PayFeeDetailDiscountNewV1ServiceDaoImplMapper.xml
+++ b/java110-db/src/main/resources/mapper/fee/PayFeeDetailDiscountNewV1ServiceDaoImplMapper.xml
@@ -11,9 +11,9 @@
     <!-- 淇濆瓨璐圭敤鏄庣粏淇℃伅 add by wuxw 2018-07-03 -->
     <insert id="savePayFeeDetailDiscountNewInfo" parameterType="Map">
         insert into pay_fee_detail_discount(
-detail_discount_id,discount_price,detail_id,remark,community_id,discount_id,fee_id
+detail_discount_id,discount_price,detail_id,remark,community_id,discount_id,fee_id,b_id
 ) values (
-#{detailDiscountId},#{discountPrice},#{detailId},#{remark},#{communityId},#{discountId},#{feeId}
+#{detailDiscountId},#{discountPrice},#{detailId},#{remark},#{communityId},#{discountId},#{feeId},#{bId}
 )
     </insert>
 
diff --git a/java110-db/src/main/resources/mapper/fee/PayFeeDetailNewV1ServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/fee/PayFeeDetailNewV1ServiceDaoImplMapper.xml
index 46e17fb..63ef2b7 100644
--- a/java110-db/src/main/resources/mapper/fee/PayFeeDetailNewV1ServiceDaoImplMapper.xml
+++ b/java110-db/src/main/resources/mapper/fee/PayFeeDetailNewV1ServiceDaoImplMapper.xml
@@ -10,7 +10,7 @@
         insert into pay_fee_detail(
         prime_rate,detail_id,receivable_amount,cycles,remark,start_time,received_amount,state,end_time,community_id,fee_id,b_id
         ) values (
-        #{primeRate},#{detailId},#{receivableAmount},#{cycles},#{remark},#{startTime},#{receivedAmount},#{state},#{endTime},#{communityId},#{feeId}#{bId}
+        #{primeRate},#{detailId},#{receivableAmount},#{cycles},#{remark},#{startTime},#{receivedAmount},#{state},#{endTime},#{communityId},#{feeId},#{bId}
         )
     </insert>
 
diff --git a/java110-db/src/main/resources/mapper/report/ReportFeeMonthStatisticsServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/report/ReportFeeMonthStatisticsServiceDaoImplMapper.xml
index 2aa6f6a..439c6fe 100755
--- a/java110-db/src/main/resources/mapper/report/ReportFeeMonthStatisticsServiceDaoImplMapper.xml
+++ b/java110-db/src/main/resources/mapper/report/ReportFeeMonthStatisticsServiceDaoImplMapper.xml
@@ -1856,6 +1856,7 @@
 
     <select id="queryRepairForStaff" parameterType="Map" resultType="Map">
         SELECT r.staff_id staffId,r.staff_name staffName,r.state FROM r_repair_user r
+        inner join u_user u on u.user_id = r.staff_id and u.status_cd = '0'
         WHERE r.state!='10005' AND r.state!='10009' AND r.state!='11000' AND
         r.state!='12000' AND r.state != '10007' AND r.status_cd = '0' AND
         r.repair_event != 'payUser' AND r.repair_event != 'startUser' AND r.staff_id != '-1'
diff --git a/java110-db/src/main/resources/mapper/store/ComplaintServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/store/ComplaintServiceDaoImplMapper.xml
index 01dfe65..d4d059b 100755
--- a/java110-db/src/main/resources/mapper/store/ComplaintServiceDaoImplMapper.xml
+++ b/java110-db/src/main/resources/mapper/store/ComplaintServiceDaoImplMapper.xml
@@ -1,19 +1,16 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper
-        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="complaintServiceDaoImpl">
 
     <!-- 淇濆瓨鎶曡瘔寤鸿淇℃伅 add by wuxw 2018-07-03 -->
     <insert id="saveBusinessComplaintInfo" parameterType="Map">
-        insert into business_complaint(
-        operate,complaint_id,type_cd,context,complaint_name,tel,state,store_id,b_id,room_id,community_id,start_user_id
-        ) values (
-        #{operate},#{complaintId},#{typeCd},#{context},#{complaintName},#{tel},#{state},#{storeId},#{bId},#{roomId},#{communityId},
-        #{startUserId}
-        )
+        insert into business_complaint(operate, complaint_id, type_cd, context, complaint_name, tel, state, store_id,
+                                       b_id, room_id, community_id, start_user_id)
+        values (#{operate}, #{complaintId}, #{typeCd}, #{context}, #{complaintName}, #{tel}, #{state}, #{storeId},
+                #{bId}, #{roomId}, #{communityId},
+                #{startUserId})
     </insert>
-
 
     <!-- 鏌ヨ鎶曡瘔寤鸿淇℃伅锛圔usiness锛� add by wuxw 2018-07-03 -->
     <select id="getBusinessComplaintInfo" parameterType="Map" resultType="Map">
@@ -56,9 +53,7 @@
         <if test="communityId !=null and communityId != ''">
             and t.community_id= #{communityId}
         </if>
-
     </select>
-
 
     <!-- 淇濆瓨鎶曡瘔寤鸿淇℃伅鑷� instance琛ㄤ腑 add by wuxw 2018-07-03 -->
     <insert id="saveComplaintInfoInstance" parameterType="Map">
@@ -97,9 +92,7 @@
         <if test="roomId !=null and roomId != ''">
             and t.room_id= #{roomId}
         </if>
-
     </insert>
-
 
     <!-- 鏌ヨ鎶曡瘔寤鸿淇℃伅 add by wuxw 2018-07-03 -->
     <select id="getComplaintInfo" parameterType="Map" resultType="Map">
@@ -165,14 +158,17 @@
         <if test="startUserId !=null and startUserId != ''">
             and t.start_user_id= #{startUserId}
         </if>
-
+        <if test="startTime !=null and startTime != ''">
+            and t.create_time &gt;= #{startTime}
+        </if>
+        <if test="endTime !=null and endTime != ''">
+            and t.create_time &lt;= #{endTime}
+        </if>
         order by t.create_time desc
         <if test="page != -1 and page != null ">
             limit #{page}, #{row}
         </if>
-
     </select>
-
 
     <!-- 淇敼鎶曡瘔寤鸿淇℃伅 add by wuxw 2018-07-03 -->
     <update id="updateComplaintInfoInstance" parameterType="Map">
@@ -211,7 +207,6 @@
         <if test="bId !=null and bId != ''">
             and t.b_id= #{bId}
         </if>
-
     </update>
 
     <!-- 鏌ヨ鎶曡瘔寤鸿鏁伴噺 add by wuxw 2018-07-03 -->
@@ -273,8 +268,11 @@
         <if test="startUserId !=null and startUserId != ''">
             and t.start_user_id= #{startUserId}
         </if>
-
-
+        <if test="startTime !=null and startTime != ''">
+            and t.create_time &gt;= #{startTime}
+        </if>
+        <if test="endTime !=null and endTime != ''">
+            and t.create_time &lt;= #{endTime}
+        </if>
     </select>
-
 </mapper>
diff --git a/java110-db/src/main/resources/mapper/store/ResourceStoreUseRecordServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/store/ResourceStoreUseRecordServiceDaoImplMapper.xml
index ff3acca..439bbd6 100644
--- a/java110-db/src/main/resources/mapper/store/ResourceStoreUseRecordServiceDaoImplMapper.xml
+++ b/java110-db/src/main/resources/mapper/store/ResourceStoreUseRecordServiceDaoImplMapper.xml
@@ -6,11 +6,11 @@
 
     <!-- 淇濆瓨鐗╁搧浣跨敤璁板綍淇℃伅 add by wuxw 2018-07-03 -->
     <insert id="saveBusinessResourceStoreUseRecordInfo" parameterType="Map">
-           insert into business_resource_store_use_record(
-            unit_price,create_user_id,quantity,rsur_id,repair_id,create_user_name,remark,store_id,res_id,resource_store_name,operate,b_id,community_id
-            ) values (
-            #{unitPrice},#{createUserId},#{quantity},#{rsurId},#{repairId},#{createUserName},#{remark},#{storeId},#{resId},#{resourceStoreName},#{operate},#{bId},#{communityId}
-            )
+        insert into business_resource_store_use_record(unit_price, create_user_id, quantity, rsur_id, repair_id,
+                                                       create_user_name, remark, store_id, res_id, resource_store_name,
+                                                       operate, b_id, community_id, state)
+        values (#{unitPrice}, #{createUserId}, #{quantity}, #{rsurId}, #{repairId}, #{createUserName}, #{remark},
+                #{storeId}, #{resId}, #{resourceStoreName}, #{operate}, #{bId}, #{communityId}, #{state})
     </insert>
 
     <!-- 鏌ヨ鐗╁搧浣跨敤璁板綍淇℃伅锛圔usiness锛� add by wuxw 2018-07-03 -->
@@ -19,7 +19,7 @@
         createUserId,t.quantity,t.rsur_id,t.rsur_id rsurId,t.repair_id,t.repair_id
         repairId,t.create_user_name,t.create_user_name createUserName,t.remark,t.store_id,t.store_id
         storeId,t.res_id,t.res_id resId,t.resource_store_name,t.resource_store_name
-        resourceStoreName,t.operate,t.b_id,t.b_id bId,t.community_id,t.community_id communityId
+        resourceStoreName,t.operate,t.b_id,t.b_id bId,t.community_id,t.community_id communityId,t.state
         from business_resource_store_use_record t
         where 1 =1
         <if test="unitPrice !=null and unitPrice != ''">
@@ -52,6 +52,9 @@
         <if test="resourceStoreName !=null and resourceStoreName != ''">
             and t.resource_store_name= #{resourceStoreName}
         </if>
+        <if test="state !=null and state != ''">
+            and t.state= #{state}
+        </if>
         <if test="operate !=null and operate != ''">
             and t.operate= #{operate}
         </if>
@@ -66,9 +69,9 @@
     <!-- 淇濆瓨鐗╁搧浣跨敤璁板綍淇℃伅鑷� instance琛ㄤ腑 add by wuxw 2018-07-03 -->
     <insert id="saveResourceStoreUseRecordInfoInstance" parameterType="Map">
         insert into resource_store_use_record(
-        unit_price,create_user_id,quantity,rsur_id,repair_id,create_user_name,status_cd,remark,store_id,res_id,resource_store_name,b_id,community_id
+        unit_price,create_user_id,quantity,rsur_id,repair_id,create_user_name,status_cd,remark,store_id,res_id,resource_store_name,b_id,community_id,state
         ) select
-        t.unit_price,t.create_user_id,t.quantity,t.rsur_id,t.repair_id,t.create_user_name,'0',t.remark,t.store_id,t.res_id,t.resource_store_name,t.b_id,t.community_id
+        t.unit_price,t.create_user_id,t.quantity,t.rsur_id,t.repair_id,t.create_user_name,'0',t.remark,t.store_id,t.res_id,t.resource_store_name,t.b_id,t.community_id,t.state
         from business_resource_store_use_record t where 1=1
         <if test="unitPrice !=null and unitPrice != ''">
             and t.unit_price= #{unitPrice}
@@ -97,6 +100,9 @@
         <if test="resId !=null and resId != ''">
             and t.res_id= #{resId}
         </if>
+        <if test="state !=null and state != ''">
+            and t.state= #{state}
+        </if>
         <if test="resourceStoreName !=null and resourceStoreName != ''">
             and t.resource_store_name= #{resourceStoreName}
         </if>
@@ -118,15 +124,20 @@
         resId,t.resource_store_name,t.resource_store_name resourceStoreName,rs.res_name resName,
         t.b_id,t.b_id bId,t.community_id,t.community_id communityId,t.create_time createTime, rst.name
         rstName,rst1.name parentRstName,rss.spec_name specName,td1.name unitCodeName,td2.name miniUnitCodeName,
-        rs.is_fixed isFixed,td3.name isFixedName
+        rs.is_fixed isFixed,td3.name isFixedName,t.state,td4.name stateName
         from resource_store_use_record t
         left join resource_store rs on rs.res_id = t.res_id
         left join resource_store_type rst on rs.rst_id = rst.rst_id
         left join resource_store_type rst1 on rs.parent_rst_id = rst1.rst_id
         left join resource_store_specification rss on rs.rss_id = rss.rss_id
-        left join t_dict td1 on rs.unit_code = td1.status_cd and td1.table_name = 'resource_store' and td1.table_columns = 'unit_code'
-        left join t_dict td2 on rs.mini_unit_code = td2.status_cd and td2.table_name = 'resource_store' and td2.table_columns = 'unit_code'
-        left join t_dict td3 on rs.is_fixed = td3.status_cd and td3.table_name = 'resource_store' and td3.table_columns = 'is_fixed'
+        left join t_dict td1 on rs.unit_code = td1.status_cd and td1.table_name = 'resource_store' and td1.table_columns
+        = 'unit_code'
+        left join t_dict td2 on rs.mini_unit_code = td2.status_cd and td2.table_name = 'resource_store' and
+        td2.table_columns = 'unit_code'
+        left join t_dict td3 on rs.is_fixed = td3.status_cd and td3.table_name = 'resource_store' and td3.table_columns
+        = 'is_fixed'
+        left join t_dict td4 on t.state = td4.status_cd and td4.table_name = 'resource_store_use_record' and
+        td4.table_columns = 'state'
         where 1 = 1
         <if test="unitPrice !=null and unitPrice != ''">
             and t.unit_price= #{unitPrice}
@@ -176,6 +187,9 @@
         <if test="isFixed !=null and isFixed != ''">
             and rs.is_fixed= #{isFixed}
         </if>
+        <if test="state !=null and state != ''">
+            and t.state= #{state}
+        </if>
         <if test="bId !=null and bId != ''">
             and t.b_id= #{bId}
         </if>
@@ -224,6 +238,9 @@
         <if test="resId !=null and resId != ''">
             , t.res_id= #{resId}
         </if>
+        <if test="state !=null and state != ''">
+            , t.state= #{state}
+        </if>
         <if test="resourceStoreName !=null and resourceStoreName != ''">
             , t.resource_store_name= #{resourceStoreName}
         </if>
@@ -246,9 +263,15 @@
         left join resource_store rs on rs.res_id = t.res_id
         left join resource_store_type rst on rs.rst_id = rst.rst_id
         left join resource_store_specification rss on rs.rss_id = rss.rss_id
-        left join t_dict td1 on rs.unit_code = td1.status_cd and td1.table_name = 'resource_store' and td1.table_columns = 'unit_code'
-        left join t_dict td2 on rs.mini_unit_code = td2.status_cd and td2.table_name = 'resource_store' and td2.table_columns = 'unit_code'
-        where 1 =1
+        left join t_dict td1 on rs.unit_code = td1.status_cd and td1.table_name = 'resource_store' and td1.table_columns
+        = 'unit_code'
+        left join t_dict td2 on rs.mini_unit_code = td2.status_cd and td2.table_name = 'resource_store' and
+        td2.table_columns = 'unit_code'
+        left join t_dict td3 on rs.is_fixed = td3.status_cd and td3.table_name = 'resource_store' and td3.table_columns
+        = 'is_fixed'
+        left join t_dict td4 on t.state = td4.status_cd and td4.table_name = 'resource_store_use_record' and
+        td4.table_columns = 'state'
+        where 1 = 1
         <if test="unitPrice !=null and unitPrice != ''">
             and t.unit_price= #{unitPrice}
         </if>
@@ -297,6 +320,9 @@
         <if test="isFixed !=null and isFixed != ''">
             and rs.is_fixed= #{isFixed}
         </if>
+        <if test="state !=null and state != ''">
+            and rs.state= #{state}
+        </if>
         <if test="parentRstId !=null and parentRstId != ''">
             and rs.parent_rst_id= #{parentRstId}
         </if>
diff --git a/java110-db/src/main/resources/mapper/store/SmallWeChatServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/store/SmallWeChatServiceDaoImplMapper.xml
index a93be0f..47d9472 100755
--- a/java110-db/src/main/resources/mapper/store/SmallWeChatServiceDaoImplMapper.xml
+++ b/java110-db/src/main/resources/mapper/store/SmallWeChatServiceDaoImplMapper.xml
@@ -173,6 +173,9 @@
         <if test="objId !=null and objId != ''">
             and t.obj_id= #{objId}
         </if>
+        <if test="mchId !=null and mchId != ''">
+            and t.mch_id= #{mchId}
+        </if>
         order by t.create_time desc
         <if test="page != -1 and page != null ">
             limit #{page}, #{row}
diff --git a/java110-db/src/main/resources/mapper/user/OwnerCarV1ServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/user/OwnerCarV1ServiceDaoImplMapper.xml
index cafa8da..89a1a6e 100644
--- a/java110-db/src/main/resources/mapper/user/OwnerCarV1ServiceDaoImplMapper.xml
+++ b/java110-db/src/main/resources/mapper/user/OwnerCarV1ServiceDaoImplMapper.xml
@@ -7,11 +7,10 @@
 
     <!-- 淇濆瓨杞﹁締淇℃伅 add by wuxw 2018-07-03 -->
     <insert id="saveOwnerCarInfo" parameterType="Map">
-        insert into owner_car(
-        car_brand,car_num,ps_id,remark,owner_id,car_type_cd,user_id,car_id,car_color,car_type,start_time,end_time,state,community_id,member_id,b_id
-        ) values (
-        #{carBrand},#{carNum},#{psId},#{remark},#{ownerId},#{carTypeCd},#{userId},#{carId},#{carColor},#{carType},#{startTime},#{endTime},#{state},#{communityId},#{memberId},'-1'
-        )
+        insert into owner_car(car_brand, car_num, ps_id, remark, owner_id, car_type_cd, user_id, car_id, car_color,
+                              car_type, start_time, end_time, state, community_id, member_id, b_id)
+        values (#{carBrand}, #{carNum}, #{psId}, #{remark}, #{ownerId}, #{carTypeCd}, #{userId}, #{carId}, #{carColor},
+                #{carType}, #{startTime}, #{endTime}, #{state}, #{communityId}, #{memberId}, '-1')
     </insert>
 
 
diff --git a/java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeRepairDispatchStepConstant.java b/java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeRepairDispatchStepConstant.java
index 910d55a..4ee7b5d 100755
--- a/java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeRepairDispatchStepConstant.java
+++ b/java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeRepairDispatchStepConstant.java
@@ -16,6 +16,15 @@
      */
     public static final String BINDING_REPAIR_DISPATCH = "ownerRepair.repairDispatch";
 
+    /**
+     * 鏆傚仠鎶ヤ慨鍗�
+     */
+    public static final String BINDING_REPAIR_STOP = "ownerRepair.repairStop";
+
+    /**
+     * 鍚姩鎶ヤ慨鍗�
+     */
+    public static final String BINDING_REPAIR_START = "ownerRepair.repairStart";
 
     /**
      * 鎶ヤ慨缁撳崟
diff --git a/java110-utils/src/main/java/com/java110/utils/util/BeanConvertUtil.java b/java110-utils/src/main/java/com/java110/utils/util/BeanConvertUtil.java
index 840961f..5be045b 100755
--- a/java110-utils/src/main/java/com/java110/utils/util/BeanConvertUtil.java
+++ b/java110-utils/src/main/java/com/java110/utils/util/BeanConvertUtil.java
@@ -1,11 +1,10 @@
 package com.java110.utils.util;
 
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.beanutils.ConvertUtils;
 import org.apache.commons.beanutils.Converter;
-import org.apache.commons.beanutils.PropertyUtils;
 import org.apache.commons.lang3.reflect.FieldUtils;
 import org.springframework.cglib.beans.BeanCopier;
 import org.springframework.cglib.beans.BeanMap;
@@ -13,12 +12,7 @@
 import java.lang.reflect.Field;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 
 /**
  * @ClassName BeanConvertUtil
@@ -36,7 +30,7 @@
     static {
         ConvertUtils.register(new Converter() { //娉ㄥ唽涓�涓棩鏈熻浆鎹㈠櫒
 
-        	public <T> T convert(Class<T> type, Object value) {
+            public <T> T convert(Class<T> type, Object value) {
                 Date date1 = null;
                 if (value instanceof String && type.getClass().equals(Date.class)) {
                     String date = (String) value;
@@ -92,7 +86,7 @@
         return dstBean;
     }
 
-    private static void objectFieldsPutMap(Object dstBean, BeanMap beanMap, Map<String,Object> orgMap) {
+    private static void objectFieldsPutMap(Object dstBean, BeanMap beanMap, Map<String, Object> orgMap) {
         //Field[] fields = dstBean.getClass().getDeclaredFields();
         Field[] fields = FieldUtils.getAllFields(dstBean.getClass());
         for (Field field : fields) {
@@ -183,6 +177,17 @@
         return JSONObject.parseObject(JSONObject.toJSONString(orgBean));
     }
 
+    /**
+     * bean杞崲涓簃ap瀵硅薄
+     *
+     * @param orgBean 鍘熷bean
+     * @return map瀵硅薄
+     */
+    public static JSONArray beanCovertJSONArray(Object orgBean) {
+
+        return JSONArray.parseArray(JSONArray.toJSONStringWithDateFormat(orgBean, "yyyy-MM-dd HH:mm:ss"));
+    }
+
 
     /**
      * bean闆嗗悎杞崲涓簃ap瀵硅薄闆嗗悎
diff --git a/service-acct/src/main/java/com/java110/acct/dao/impl/AccountServiceDaoImpl.java b/service-acct/src/main/java/com/java110/acct/dao/impl/AccountServiceDaoImpl.java
index 83c62cf..72b0ca9 100644
--- a/service-acct/src/main/java/com/java110/acct/dao/impl/AccountServiceDaoImpl.java
+++ b/service-acct/src/main/java/com/java110/acct/dao/impl/AccountServiceDaoImpl.java
@@ -148,7 +148,7 @@
     public void saveAccount(Map info) {
         logger.debug("鏌ヨ璐︽埛鏁版嵁 鍏ュ弬 info : {}", info);
 
-         sqlSessionTemplate.update("accountServiceDaoImpl.saveAccount", info);
+        sqlSessionTemplate.update("accountServiceDaoImpl.saveAccount", info);
 
     }
 
diff --git a/service-api/src/main/java/com/java110/api/bmo/allocationUserStorehouse/impl/AllocationUserStorehouseBMOImpl.java b/service-api/src/main/java/com/java110/api/bmo/allocationUserStorehouse/impl/AllocationUserStorehouseBMOImpl.java
index ce0b991..f469884 100644
--- a/service-api/src/main/java/com/java110/api/bmo/allocationUserStorehouse/impl/AllocationUserStorehouseBMOImpl.java
+++ b/service-api/src/main/java/com/java110/api/bmo/allocationUserStorehouse/impl/AllocationUserStorehouseBMOImpl.java
@@ -2,29 +2,43 @@
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.java110.api.bmo.ApiBaseBMO;
 import com.java110.api.bmo.allocationUserStorehouse.IAllocationUserStorehouseBMO;
+import com.java110.api.listener.AbstractServiceApiPlusListener;
 import com.java110.core.context.DataFlowContext;
+import com.java110.core.event.service.api.ServiceDataFlowEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.resourceStore.ResourceStoreDto;
 import com.java110.dto.userStorehouse.UserStorehouseDto;
+import com.java110.entity.center.AppService;
+import com.java110.intf.store.IResourceStoreInnerServiceSMO;
 import com.java110.intf.store.IUserStorehouseInnerServiceSMO;
 import com.java110.po.allocationUserStorehouse.AllocationUserStorehousePo;
+import com.java110.po.resourceStoreUseRecord.ResourceStoreUseRecordPo;
 import com.java110.po.userStorehouse.UserStorehousePo;
 import com.java110.utils.constant.BusinessTypeConstant;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.text.ParseException;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 @Service("allocationUserStorehouseBMOImpl")
-public class AllocationUserStorehouseBMOImpl extends ApiBaseBMO implements IAllocationUserStorehouseBMO {
+public class AllocationUserStorehouseBMOImpl extends AbstractServiceApiPlusListener implements IAllocationUserStorehouseBMO {
 
     @Autowired
     private IUserStorehouseInnerServiceSMO userStorehouseInnerServiceSMOImpl;
+
+    @Autowired
+    private IResourceStoreInnerServiceSMO resourceStoreInnerServiceSMOImpl;
 
     /**
      * 娣诲姞灏忓尯淇℃伅
@@ -38,146 +52,223 @@
         JSONArray json = JSONArray.parseArray(resourceStores);
         if (json.size() > 0) {
             Object[] objects = json.toArray();
-            for (int i = 0; i < objects.length; i++) {
-                Object object = objects[i];
-                JSONObject paramIn = JSONObject.parseObject(String.valueOf(object));
-                String stock = paramIn.getString("stock");
-                //鑾峰彇鏈�灏忚閲忔�绘暟
-                String miniStock = paramIn.getString("miniStock");
-                //鑾峰彇鏈�灏忚閲忓崟浣嶆暟閲�
-                String miniUnitStock = paramIn.getString("miniUnitStock");
-                //鑾峰彇杞禒鏁伴噺
-                String giveQuantity = paramIn.getString("giveQuantity");
-                //鑾峰彇鐗╁搧id
-                String resId = paramIn.getString("resId");
-                //鑾峰彇鐗╁搧id
-                String resCode = paramIn.getString("resCode");
-                //鑾峰彇鐗╁搧鍚嶇О
-                String resName = paramIn.getString("resName");
-                //鑾峰彇褰撳墠鐢ㄦ埛id
-                String userId = paramInJson.getString("userId");
-                //鑾峰彇鎺ュ彈杞禒鐢ㄦ埛id
-                String acceptUserId = paramInJson.getString("acceptUserId");
-                //鑾峰彇鎺ュ彈杞禒鐢ㄦ埛鍚嶇О
-                String acceptUserName = paramInJson.getString("acceptUserName");
-                //鑾峰彇鍟嗘埛id
-                String storeId = paramInJson.getString("storeId");
-                JSONObject allocationUserStorehouseJson = new JSONObject();
-                allocationUserStorehouseJson.put("ausId", "-1");
-                allocationUserStorehouseJson.put("resId", resId);
-                allocationUserStorehouseJson.put("resCode", resCode);
-                allocationUserStorehouseJson.put("resName", resName);
-                allocationUserStorehouseJson.put("storeId", storeId);
-                allocationUserStorehouseJson.put("stock", stock);
-                allocationUserStorehouseJson.put("giveQuantity", giveQuantity);
-                allocationUserStorehouseJson.put("startUserId", userId);
-                allocationUserStorehouseJson.put("startUserName", paramInJson.getString("userName"));
-                allocationUserStorehouseJson.put("acceptUserId", acceptUserId);
-                allocationUserStorehouseJson.put("acceptUserName", acceptUserName);
-                allocationUserStorehouseJson.put("createTime", new Date());
-                allocationUserStorehouseJson.put("remark", paramInJson.getString("description"));
-                AllocationUserStorehousePo allocationUserStorehousePo = BeanConvertUtil.covertBean(allocationUserStorehouseJson, AllocationUserStorehousePo.class);
-                super.insert(dataFlowContext, allocationUserStorehousePo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_ALLOCATION_USER_STOREHOUSE);
-                UserStorehouseDto userStorehouseDto = new UserStorehouseDto();
-                userStorehouseDto.setUserId(userId);
-                userStorehouseDto.setResId(resId);
-                List<UserStorehouseDto> userStorehouseDtos = userStorehouseInnerServiceSMOImpl.queryUserStorehouses(userStorehouseDto);
-                Assert.listOnlyOne(userStorehouseDtos, "鏌ヨ涓汉鐗╁搧淇℃伅閿欒锛�");
-                //鑾峰彇涓汉鐗╁搧淇℃伅id
-                String usId = userStorehouseDtos.get(0).getUsId();
-                //鑾峰彇鐗╁搧鍗曚綅
-                if (StringUtil.isEmpty(userStorehouseDtos.get(0).getUnitCode())) {
-                    throw new IllegalArgumentException("鐗╁搧鍗曚綅涓嶈兘涓虹┖");
-                }
-                String unitCode = userStorehouseDtos.get(0).getUnitCode();
-                //鑾峰彇鐗╁搧鏈�灏忚閲忓崟浣�
-                if (StringUtil.isEmpty(userStorehouseDtos.get(0).getMiniUnitCode())) {
-                    throw new IllegalArgumentException("鐗╁搧鏈�灏忚閲忓崟浣嶄笉鑳戒负绌�");
-                }
-                String miniUnitCode = userStorehouseDtos.get(0).getMiniUnitCode();
-                UserStorehousePo userStorehousePo = new UserStorehousePo();
-                userStorehousePo.setUsId(usId);
-                //杞禒鍚庝釜浜虹墿鍝佹渶灏忚閲忔�绘暟
-                BigDecimal num1 = new BigDecimal(miniStock);
-                BigDecimal num2 = new BigDecimal(giveQuantity);
-                BigDecimal quantity = num1.subtract(num2);
-                if (quantity.doubleValue() == 0.0) {
-                    userStorehousePo.setMiniStock("0");
-                    userStorehousePo.setStock("0");
-                } else {
-                    userStorehousePo.setMiniStock(String.valueOf(quantity));
-                    BigDecimal reduceNum = num1.subtract(num2);
-                    if (unitCode.equals(miniUnitCode)) { //濡傛灉鐗╁搧鍗曚綅涓庢渶灏忚閲忓崟浣嶇浉鍚岋紝灏变笉鍚戜笂鍙栨暣
-                        userStorehousePo.setStock(String.valueOf(reduceNum));
-                    } else { //濡傛灉鐗╁搧鏈�灏忚閲忓崟浣嶄笌鐗╁搧鍗曚綅涓嶅悓锛屽氨鍚戜笂鍙栨暣
-                        //鐢ㄨ浆璧犲悗鏈�灏忚閲忔�绘暟闄や互鏈�灏忚閲忓崟浣嶆暟閲忥紝骞跺悜涓婂彇鏁达紝鑾峰彇杞禒鍚庣殑搴撳瓨鏁�
-                        BigDecimal num3 = new BigDecimal(miniUnitStock);
-                        BigDecimal unitStock = reduceNum.divide(num3, 2, BigDecimal.ROUND_HALF_UP);
-                        Integer stockNumber = (int) Math.ceil(unitStock.doubleValue());
-                        userStorehousePo.setStock(String.valueOf(stockNumber));
-                    }
-                }
-                //鏇存柊褰撳墠鐢ㄦ埛搴撳瓨鏁�
-                super.update(dataFlowContext, userStorehousePo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_USER_STOREHOUSE);
-                UserStorehouseDto userStorehouse = new UserStorehouseDto();
-                userStorehouse.setUserId(acceptUserId);
-                userStorehouse.setResCode(resCode);
-                //鏌ヨ鎺ュ彈杞禒浜虹殑涓汉鐗╁搧淇℃伅
-                List<UserStorehouseDto> userStorehouses = userStorehouseInnerServiceSMOImpl.queryUserStorehouses(userStorehouse);
-                if (userStorehouses != null && userStorehouses.size() == 1) {
-                    UserStorehousePo userStorePo = new UserStorehousePo();
-                    //璁$畻鎺ュ彈鐢ㄦ埛鐨勬渶灏忚閲忔�绘暟
-                    BigDecimal num4 = new BigDecimal(userStorehouses.get(0).getMiniStock());
-                    BigDecimal num5 = new BigDecimal(giveQuantity);
-                    BigDecimal addNum = num4.add(num5);
-                    BigDecimal acceptMiniStock = num4.add(num5);
-                    userStorePo.setMiniStock(String.valueOf(acceptMiniStock));
+            String flag = paramInJson.getString("flag");
+            if (!StringUtil.isEmpty(flag) && flag.equals("1")) { //鎹熻��
+                for (int i = 0; i < objects.length; i++) {
+                    Object object = objects[i];
+                    JSONObject paramIn = JSONObject.parseObject(String.valueOf(object));
+                    ResourceStoreUseRecordPo resourceStoreUseRecordPo = new ResourceStoreUseRecordPo();
+                    resourceStoreUseRecordPo.setRsurId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_rsurId));
+                    resourceStoreUseRecordPo.setRepairId("-1"); //鎶ヤ慨璁板綍
+                    resourceStoreUseRecordPo.setResId(paramIn.getString("resId")); //鐗╁搧璧勬簮id
+                    resourceStoreUseRecordPo.setCommunityId(paramInJson.getString("communityId")); //灏忓尯id
+                    resourceStoreUseRecordPo.setStoreId(paramInJson.getString("storeId")); //鍟嗘埛id
+                    resourceStoreUseRecordPo.setQuantity(paramIn.getString("giveQuantity")); //鎹熻�楁暟閲�
+                    //鏍规嵁鐗╁搧璧勬簮id鏌ヨ鐗╁搧璧勬簮淇℃伅
+                    ResourceStoreDto resourceStoreDto = new ResourceStoreDto();
+                    resourceStoreDto.setResId(paramIn.getString("resId"));
+                    List<ResourceStoreDto> resourceStoreDtos = resourceStoreInnerServiceSMOImpl.queryResourceStores(resourceStoreDto);
+                    Assert.listOnlyOne(resourceStoreDtos, "鏌ヨ鎴垮眿淇℃伅閿欒锛�");
+                    resourceStoreUseRecordPo.setUnitPrice(resourceStoreDtos.get(0).getPrice()); //鐗╁搧璧勬簮鍗曚环
+                    resourceStoreUseRecordPo.setCreateUserId(paramInJson.getString("userId")); //鍒涘缓浜篿d
+                    resourceStoreUseRecordPo.setCreateUserName(paramInJson.getString("userName")); //鍒涘缓浜哄悕绉�
+                    resourceStoreUseRecordPo.setRemark(paramIn.getString("purchaseRemark")); //澶囨敞
+                    resourceStoreUseRecordPo.setResourceStoreName(paramIn.getString("resName")); //鐗╁搧鍚嶇О
+                    resourceStoreUseRecordPo.setState(paramIn.getString("state")); //1001 鎶ュ簾鍥炴敹   2002 宸ュ崟鎹熻��   3003 鍏敤鎹熻��
+                    super.insert(dataFlowContext, resourceStoreUseRecordPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_RESOURCE_STORE_USE_RECORD);
+                    //涓汉鐗╁搧澶勭悊
+                    UserStorehouseDto userStorehouseDto = new UserStorehouseDto();
+                    userStorehouseDto.setUserId(paramInJson.getString("userId"));
+                    userStorehouseDto.setResId(paramIn.getString("resId"));
+                    //鏌ヨ涓汉鐗╁搧淇℃伅
+                    List<UserStorehouseDto> userStorehouseDtos = userStorehouseInnerServiceSMOImpl.queryUserStorehouses(userStorehouseDto);
+                    Assert.listOnlyOne(userStorehouseDtos, "鏌ヨ涓汉鐗╁搧淇℃伅閿欒锛�");
+                    //鑾峰彇涓汉鐗╁搧淇℃伅id
+                    String usId = userStorehouseDtos.get(0).getUsId();
                     //鑾峰彇鐗╁搧鍗曚綅
-                    if (StringUtil.isEmpty(userStorehouses.get(0).getUnitCode())) {
+                    if (StringUtil.isEmpty(userStorehouseDtos.get(0).getUnitCode())) {
                         throw new IllegalArgumentException("鐗╁搧鍗曚綅涓嶈兘涓虹┖");
                     }
-                    String unitCode1 = userStorehouses.get(0).getUnitCode();
+                    String unitCode = userStorehouseDtos.get(0).getUnitCode(); //鐗╁搧鍗曚綅
                     //鑾峰彇鐗╁搧鏈�灏忚閲忓崟浣�
-                    if (StringUtil.isEmpty(userStorehouses.get(0).getMiniUnitCode())) {
+                    if (StringUtil.isEmpty(userStorehouseDtos.get(0).getMiniUnitCode())) {
                         throw new IllegalArgumentException("鐗╁搧鏈�灏忚閲忓崟浣嶄笉鑳戒负绌�");
                     }
-                    String miniUnitCode1 = userStorehouses.get(0).getMiniUnitCode();
-                    //璁$畻鎺ュ彈鐢ㄦ埛鐨勫簱瀛樻暟閲�
-                    BigDecimal num6 = new BigDecimal(miniUnitStock);
-                    BigDecimal unitStock = addNum.divide(num6, 2, BigDecimal.ROUND_HALF_UP);
-                    if (unitCode1.equals(miniUnitCode1)) { //濡傛灉鐗╁搧鍗曚綅涓庣墿鍝佹渶灏忚閲忓崟浣嶇浉鍚岋紝灏变笉鍚戜笂鍙栨暣
-                        //濡傛灉鐗╁搧鍗曚綅涓庢渶灏忚閲忓崟浣嶇浉鍚岋紝鐗╁搧搴撳瓨灏辩瓑浜庢渶灏忚閲忔�绘暟
-                        userStorePo.setStock(String.valueOf(acceptMiniStock));
-                    } else { //濡傛灉鐗╁搧鍗曚綅涓庣墿鍝佹渶灏忚閲忓崟浣嶄笉鍚岋紝灏卞悜涓婂彇鏁�
-                        Integer stockNumber = (int) Math.ceil(unitStock.doubleValue());
-                        userStorePo.setStock(String.valueOf(stockNumber));
+                    String miniUnitCode = userStorehouseDtos.get(0).getMiniUnitCode(); //鐗╁搧鏈�灏忚閲忓崟浣�
+                    UserStorehousePo userStorehousePo = new UserStorehousePo();
+                    userStorehousePo.setUsId(usId); //涓汉鐗╁搧id
+                    //鑾峰彇鏈�灏忓崟浣嶈閲忔�绘暟
+                    String miniStock = userStorehouseDtos.get(0).getMiniStock();
+                    //鑾峰彇鏈�灏忚閲忓崟浣嶆暟閲�
+                    String miniUnitStock = paramIn.getString("miniUnitStock");
+                    //鑾峰彇鎶ュ簾鏁伴噺
+                    String giveQuantity = paramIn.getString("giveQuantity");
+                    //闄ゅ幓鎶ュ簾涓汉鐗╁搧鍓╀綑鐨勬渶灏忓崟浣嶈閲忔�绘暟
+                    BigDecimal num1 = new BigDecimal(miniStock);
+                    BigDecimal num2 = new BigDecimal(giveQuantity);
+                    BigDecimal quantity = num1.subtract(num2);
+                    if (quantity.doubleValue() == 0.0) { //濡傛灉鍑忓幓鎶ュ簾鍚庡墿浣�0涓紝閭d箞鏈�灏忚閲忓崟浣嶆�绘暟鍜岀墿鍝佹暟閲忛兘鍙樹负0
+                        userStorehousePo.setMiniStock("0");
+                        userStorehousePo.setStock("0");
+                    } else {
+                        userStorehousePo.setMiniStock(String.valueOf(quantity)); //鍑忓幓鎶ュ簾鍚庡墿浣欑殑鏈�灏忚閲忓崟浣嶆�绘暟
+                        BigDecimal reduceNum = num1.subtract(num2);
+                        if (unitCode.equals(miniUnitCode)) { //濡傛灉鐗╁搧鍗曚綅涓庢渶灏忚閲忓崟浣嶇浉鍚岋紝灏变笉鍚戜笂鍙栨暣
+                            userStorehousePo.setStock(String.valueOf(reduceNum));
+                        } else { //濡傛灉鐗╁搧鏈�灏忚閲忓崟浣嶄笌鐗╁搧鍗曚綅涓嶅悓锛屽氨鍚戜笂鍙栨暣
+                            //鐢ㄨ浆璧犲悗鏈�灏忚閲忔�绘暟闄や互鏈�灏忚閲忓崟浣嶆暟閲忥紝骞跺悜涓婂彇鏁达紝鑾峰彇杞禒鍚庣殑搴撳瓨鏁�
+                            BigDecimal num3 = new BigDecimal(miniUnitStock);
+                            BigDecimal unitStock = reduceNum.divide(num3, 2, BigDecimal.ROUND_HALF_UP);
+                            Integer stockNumber = (int) Math.ceil(unitStock.doubleValue());
+                            userStorehousePo.setStock(String.valueOf(stockNumber)); //鍑忓幓鎶ュ簾鍚庡墿浣欑殑涓汉鐗╁搧鏁伴噺
+                        }
                     }
-                    userStorePo.setUsId(userStorehouses.get(0).getUsId());
-                    //鏇存柊褰撳墠鐢ㄦ埛鐨勫簱瀛樻暟閲�
-                    super.update(dataFlowContext, userStorePo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_USER_STOREHOUSE);
-                } else if (userStorehouses != null && userStorehouses.size() > 1) {
-                    throw new IllegalArgumentException("鏌ヨ涓汉鐗╁搧淇℃伅閿欒锛�");
-                } else {
-                    //璁$畻杞禒鍚庡簱瀛樻暟閲�
-                    BigDecimal num7 = new BigDecimal(giveQuantity);
-                    BigDecimal num8 = new BigDecimal(miniUnitStock);
-                    BigDecimal unitStock = num7.divide(num8, 2, BigDecimal.ROUND_HALF_UP);
-                    UserStorehousePo userStorePo = new UserStorehousePo();
-                    userStorePo.setUsId("-1");
-                    userStorePo.setResId(resId);
-                    userStorePo.setResName(resName);
-                    userStorePo.setStoreId(storeId);
-                    userStorePo.setResCode(resCode);
-                    if (unitCode.equals(miniUnitCode)) { //濡傛灉鐗╁搧鍗曚綅涓庣墿鍝佹渶灏忚閲忓崟浣嶇浉鍚岋紝灏变笉鍚戜笂鍙栨暣
-                        userStorePo.setStock(String.valueOf(num7));
-                    } else { //濡傛灉鐗╁搧鍗曚綅涓庣墿鍝佹渶灏忚閲忓崟浣嶄笉鍚岋紝灏卞悜涓婂彇鏁�
-                        Integer stockNumber = (int) Math.ceil(unitStock.doubleValue());
-                        userStorePo.setStock(String.valueOf(stockNumber));
+                    //鏇存柊褰撳墠鐢ㄦ埛涓汉鐗╁搧搴撳瓨鏁�
+                    super.update(dataFlowContext, userStorehousePo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_USER_STOREHOUSE);
+                    commit(dataFlowContext);
+                }
+            } else { //閫�杩�
+                for (int i = 0; i < objects.length; i++) {
+                    Object object = objects[i];
+                    JSONObject paramIn = JSONObject.parseObject(String.valueOf(object));
+                    String stock = paramIn.getString("stock");
+                    //鑾峰彇鏈�灏忚閲忔�绘暟
+                    String miniStock = paramIn.getString("miniStock");
+                    //鑾峰彇鏈�灏忚閲忓崟浣嶆暟閲�
+                    String miniUnitStock = paramIn.getString("miniUnitStock");
+                    //鑾峰彇杞禒鏁伴噺
+                    String giveQuantity = paramIn.getString("giveQuantity");
+                    //鑾峰彇鐗╁搧id
+                    String resId = paramIn.getString("resId");
+                    //鑾峰彇鐗╁搧id
+                    String resCode = paramIn.getString("resCode");
+                    //鑾峰彇鐗╁搧鍚嶇О
+                    String resName = paramIn.getString("resName");
+                    //鑾峰彇褰撳墠鐢ㄦ埛id
+                    String userId = paramInJson.getString("userId");
+                    //鑾峰彇鎺ュ彈杞禒鐢ㄦ埛id
+                    String acceptUserId = paramInJson.getString("acceptUserId");
+                    //鑾峰彇鎺ュ彈杞禒鐢ㄦ埛鍚嶇О
+                    String acceptUserName = paramInJson.getString("acceptUserName");
+                    //鑾峰彇鍟嗘埛id
+                    String storeId = paramInJson.getString("storeId");
+                    JSONObject allocationUserStorehouseJson = new JSONObject();
+                    allocationUserStorehouseJson.put("ausId", "-1");
+                    allocationUserStorehouseJson.put("resId", resId);
+                    allocationUserStorehouseJson.put("resCode", resCode);
+                    allocationUserStorehouseJson.put("resName", resName);
+                    allocationUserStorehouseJson.put("storeId", storeId);
+                    allocationUserStorehouseJson.put("stock", stock);
+                    allocationUserStorehouseJson.put("giveQuantity", giveQuantity);
+                    allocationUserStorehouseJson.put("startUserId", userId);
+                    allocationUserStorehouseJson.put("startUserName", paramInJson.getString("userName"));
+                    allocationUserStorehouseJson.put("acceptUserId", acceptUserId);
+                    allocationUserStorehouseJson.put("acceptUserName", acceptUserName);
+                    allocationUserStorehouseJson.put("createTime", new Date());
+                    allocationUserStorehouseJson.put("remark", paramInJson.getString("description"));
+                    AllocationUserStorehousePo allocationUserStorehousePo = BeanConvertUtil.covertBean(allocationUserStorehouseJson, AllocationUserStorehousePo.class);
+                    super.insert(dataFlowContext, allocationUserStorehousePo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_ALLOCATION_USER_STOREHOUSE);
+                    UserStorehouseDto userStorehouseDto = new UserStorehouseDto();
+                    userStorehouseDto.setUserId(userId);
+                    userStorehouseDto.setResId(resId);
+                    List<UserStorehouseDto> userStorehouseDtos = userStorehouseInnerServiceSMOImpl.queryUserStorehouses(userStorehouseDto);
+                    Assert.listOnlyOne(userStorehouseDtos, "鏌ヨ涓汉鐗╁搧淇℃伅閿欒锛�");
+                    //鑾峰彇涓汉鐗╁搧淇℃伅id
+                    String usId = userStorehouseDtos.get(0).getUsId();
+                    //鑾峰彇鐗╁搧鍗曚綅
+                    if (StringUtil.isEmpty(userStorehouseDtos.get(0).getUnitCode())) {
+                        throw new IllegalArgumentException("鐗╁搧鍗曚綅涓嶈兘涓虹┖");
                     }
-                    userStorePo.setMiniStock(giveQuantity);
-                    userStorePo.setUserId(acceptUserId);
-                    //淇濆瓨鎺ュ彈杞禒鐢ㄦ埛涓汉鐗╁搧淇℃伅
-                    super.insert(dataFlowContext, userStorePo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_USER_STOREHOUSE);
+                    String unitCode = userStorehouseDtos.get(0).getUnitCode();
+                    //鑾峰彇鐗╁搧鏈�灏忚閲忓崟浣�
+                    if (StringUtil.isEmpty(userStorehouseDtos.get(0).getMiniUnitCode())) {
+                        throw new IllegalArgumentException("鐗╁搧鏈�灏忚閲忓崟浣嶄笉鑳戒负绌�");
+                    }
+                    String miniUnitCode = userStorehouseDtos.get(0).getMiniUnitCode();
+                    UserStorehousePo userStorehousePo = new UserStorehousePo();
+                    userStorehousePo.setUsId(usId);
+                    //杞禒鍚庝釜浜虹墿鍝佹渶灏忚閲忔�绘暟
+                    BigDecimal num1 = new BigDecimal(miniStock);
+                    BigDecimal num2 = new BigDecimal(giveQuantity);
+                    BigDecimal quantity = num1.subtract(num2);
+                    if (quantity.doubleValue() == 0.0) {
+                        userStorehousePo.setMiniStock("0");
+                        userStorehousePo.setStock("0");
+                    } else {
+                        userStorehousePo.setMiniStock(String.valueOf(quantity));
+                        BigDecimal reduceNum = num1.subtract(num2);
+                        if (unitCode.equals(miniUnitCode)) { //濡傛灉鐗╁搧鍗曚綅涓庢渶灏忚閲忓崟浣嶇浉鍚岋紝灏变笉鍚戜笂鍙栨暣
+                            userStorehousePo.setStock(String.valueOf(reduceNum));
+                        } else { //濡傛灉鐗╁搧鏈�灏忚閲忓崟浣嶄笌鐗╁搧鍗曚綅涓嶅悓锛屽氨鍚戜笂鍙栨暣
+                            //鐢ㄨ浆璧犲悗鏈�灏忚閲忔�绘暟闄や互鏈�灏忚閲忓崟浣嶆暟閲忥紝骞跺悜涓婂彇鏁达紝鑾峰彇杞禒鍚庣殑搴撳瓨鏁�
+                            BigDecimal num3 = new BigDecimal(miniUnitStock);
+                            BigDecimal unitStock = reduceNum.divide(num3, 2, BigDecimal.ROUND_HALF_UP);
+                            Integer stockNumber = (int) Math.ceil(unitStock.doubleValue());
+                            userStorehousePo.setStock(String.valueOf(stockNumber));
+                        }
+                    }
+                    //鏇存柊褰撳墠鐢ㄦ埛搴撳瓨鏁�
+                    super.update(dataFlowContext, userStorehousePo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_USER_STOREHOUSE);
+                    UserStorehouseDto userStorehouse = new UserStorehouseDto();
+                    userStorehouse.setUserId(acceptUserId);
+                    userStorehouse.setResCode(resCode);
+                    //鏌ヨ鎺ュ彈杞禒浜虹殑涓汉鐗╁搧淇℃伅
+                    List<UserStorehouseDto> userStorehouses = userStorehouseInnerServiceSMOImpl.queryUserStorehouses(userStorehouse);
+                    if (userStorehouses != null && userStorehouses.size() == 1) {
+                        UserStorehousePo userStorePo = new UserStorehousePo();
+                        //璁$畻鎺ュ彈鐢ㄦ埛鐨勬渶灏忚閲忔�绘暟
+                        BigDecimal num4 = new BigDecimal(userStorehouses.get(0).getMiniStock());
+                        BigDecimal num5 = new BigDecimal(giveQuantity);
+                        BigDecimal addNum = num4.add(num5);
+                        BigDecimal acceptMiniStock = num4.add(num5);
+                        userStorePo.setMiniStock(String.valueOf(acceptMiniStock));
+                        //鑾峰彇鐗╁搧鍗曚綅
+                        if (StringUtil.isEmpty(userStorehouses.get(0).getUnitCode())) {
+                            throw new IllegalArgumentException("鐗╁搧鍗曚綅涓嶈兘涓虹┖");
+                        }
+                        String unitCode1 = userStorehouses.get(0).getUnitCode();
+                        //鑾峰彇鐗╁搧鏈�灏忚閲忓崟浣�
+                        if (StringUtil.isEmpty(userStorehouses.get(0).getMiniUnitCode())) {
+                            throw new IllegalArgumentException("鐗╁搧鏈�灏忚閲忓崟浣嶄笉鑳戒负绌�");
+                        }
+                        String miniUnitCode1 = userStorehouses.get(0).getMiniUnitCode();
+                        //璁$畻鎺ュ彈鐢ㄦ埛鐨勫簱瀛樻暟閲�
+                        BigDecimal num6 = new BigDecimal(miniUnitStock);
+                        BigDecimal unitStock = addNum.divide(num6, 2, BigDecimal.ROUND_HALF_UP);
+                        if (unitCode1.equals(miniUnitCode1)) { //濡傛灉鐗╁搧鍗曚綅涓庣墿鍝佹渶灏忚閲忓崟浣嶇浉鍚岋紝灏变笉鍚戜笂鍙栨暣
+                            //濡傛灉鐗╁搧鍗曚綅涓庢渶灏忚閲忓崟浣嶇浉鍚岋紝鐗╁搧搴撳瓨灏辩瓑浜庢渶灏忚閲忔�绘暟
+                            userStorePo.setStock(String.valueOf(acceptMiniStock));
+                        } else { //濡傛灉鐗╁搧鍗曚綅涓庣墿鍝佹渶灏忚閲忓崟浣嶄笉鍚岋紝灏卞悜涓婂彇鏁�
+                            Integer stockNumber = (int) Math.ceil(unitStock.doubleValue());
+                            userStorePo.setStock(String.valueOf(stockNumber));
+                        }
+                        userStorePo.setUsId(userStorehouses.get(0).getUsId());
+                        //鏇存柊褰撳墠鐢ㄦ埛鐨勫簱瀛樻暟閲�
+                        super.update(dataFlowContext, userStorePo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_USER_STOREHOUSE);
+                    } else if (userStorehouses != null && userStorehouses.size() > 1) {
+                        throw new IllegalArgumentException("鏌ヨ涓汉鐗╁搧淇℃伅閿欒锛�");
+                    } else {
+                        //璁$畻杞禒鍚庡簱瀛樻暟閲�
+                        BigDecimal num7 = new BigDecimal(giveQuantity);
+                        BigDecimal num8 = new BigDecimal(miniUnitStock);
+                        BigDecimal unitStock = num7.divide(num8, 2, BigDecimal.ROUND_HALF_UP);
+                        UserStorehousePo userStorePo = new UserStorehousePo();
+                        userStorePo.setUsId("-1");
+                        userStorePo.setResId(resId);
+                        userStorePo.setResName(resName);
+                        userStorePo.setStoreId(storeId);
+                        userStorePo.setResCode(resCode);
+                        if (unitCode.equals(miniUnitCode)) { //濡傛灉鐗╁搧鍗曚綅涓庣墿鍝佹渶灏忚閲忓崟浣嶇浉鍚岋紝灏变笉鍚戜笂鍙栨暣
+                            userStorePo.setStock(String.valueOf(num7));
+                        } else { //濡傛灉鐗╁搧鍗曚綅涓庣墿鍝佹渶灏忚閲忓崟浣嶄笉鍚岋紝灏卞悜涓婂彇鏁�
+                            Integer stockNumber = (int) Math.ceil(unitStock.doubleValue());
+                            userStorePo.setStock(String.valueOf(stockNumber));
+                        }
+                        userStorePo.setMiniStock(giveQuantity);
+                        userStorePo.setUserId(acceptUserId);
+                        //淇濆瓨鎺ュ彈杞禒鐢ㄦ埛涓汉鐗╁搧淇℃伅
+                        super.insert(dataFlowContext, userStorePo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_USER_STOREHOUSE);
+                    }
                 }
             }
         }
@@ -210,4 +301,53 @@
         super.update(dataFlowContext, allocationUserStorehousePo, BusinessTypeConstant.BUSINESS_TYPE_DELETE_ALLOCATION_USER_STOREHOUSE);
     }
 
+    @Override
+    public String getServiceCode() {
+        return null;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return null;
+    }
+
+    @Override
+    public ResponseEntity<String> callService(ServiceDataFlowEvent event) {
+        return null;
+    }
+
+    @Override
+    public ResponseEntity<String> callService(DataFlowContext context, String serviceCode, JSONArray businesses) {
+        return null;
+    }
+
+    @Override
+    public ResponseEntity<String> callService(DataFlowContext context, String serviceCode, JSONObject businesses) {
+        return null;
+    }
+
+    @Override
+    public ResponseEntity<String> callService(DataFlowContext context, AppService appService, Map paramIn) {
+        return null;
+    }
+
+    @Override
+    public JSONObject restToCenterProtocol(JSONObject businesses, Map<String, String> headers) {
+        return null;
+    }
+
+    @Override
+    public void freshHttpHeader(HttpHeaders httpHeaders, Map<String, String> headers) {
+
+    }
+
+    @Override
+    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) throws ParseException {
+
+    }
+
+    @Override
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) throws ParseException {
+
+    }
 }
diff --git a/service-api/src/main/java/com/java110/api/components/assetImport/ImportOwnerCarComponent.java b/service-api/src/main/java/com/java110/api/components/assetImport/ImportOwnerCarComponent.java
new file mode 100644
index 0000000..ab6e906
--- /dev/null
+++ b/service-api/src/main/java/com/java110/api/components/assetImport/ImportOwnerCarComponent.java
@@ -0,0 +1,54 @@
+package com.java110.api.components.assetImport;
+
+import com.java110.api.smo.assetExport.IExportOwnerCarSMO;
+import com.java110.api.smo.assetImport.impl.ImportOwnerCarSMOImpl;
+import com.java110.core.context.IPageData;
+import com.java110.core.context.PageData;
+import com.java110.dto.app.AppDto;
+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.multipart.MultipartFile;
+
+/**
+ * 娣诲姞搴旂敤缁勪欢
+ *
+ * @author fqz
+ * @date 2021-12-21
+ */
+@Component("importOwnerCar")
+public class ImportOwnerCarComponent {
+
+    private final static Logger logger = LoggerFactory.getLogger(ImportOwnerCarComponent.class);
+
+    @Autowired
+    private ImportOwnerCarSMOImpl importOwnerCarSMOImpl;
+
+    @Autowired
+    private IExportOwnerCarSMO exportOwnerCarSMOImpl;
+
+    /**
+     * 娣诲姞搴旂敤鏁版嵁
+     *
+     * @param pd 椤甸潰鏁版嵁灏佽
+     * @return ResponseEntity 瀵硅薄
+     */
+    public ResponseEntity<String> importData(IPageData pd, MultipartFile uploadFile) throws Exception {
+        return importOwnerCarSMOImpl.importExcelData(pd, uploadFile);
+    }
+
+    /**
+     * 娣诲姞搴旂敤鏁版嵁
+     *
+     * @param pd 椤甸潰鏁版嵁灏佽
+     * @return ResponseEntity 瀵硅薄
+     */
+    public ResponseEntity<Object> exportData(IPageData pd) throws Exception {
+        IPageData newPd = PageData.newInstance().builder(pd.getUserId(), pd.getUserName(), pd.getToken(), pd.getReqData(), pd.getComponentCode(), pd.getComponentMethod(), "",
+                pd.getSessionId(), AppDto.WEB_APP_ID, pd.getHeaders());
+        return exportOwnerCarSMOImpl.exportExcelData(newPd);
+    }
+
+}
diff --git a/service-api/src/main/java/com/java110/api/listener/complaint/ListComplaintsListener.java b/service-api/src/main/java/com/java110/api/listener/complaint/ListComplaintsListener.java
index bd1e816..abda339 100755
--- a/service-api/src/main/java/com/java110/api/listener/complaint/ListComplaintsListener.java
+++ b/service-api/src/main/java/com/java110/api/listener/complaint/ListComplaintsListener.java
@@ -79,10 +79,9 @@
     @Override
     protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
 
-
         ComplaintDto complaintDto = BeanConvertUtil.covertBean(reqJson, ComplaintDto.class);
 
-        String roomId=reqJson.getString("roomId");
+        String roomId = reqJson.getString("roomId");
         if (!StringUtil.isEmpty(roomId) && roomId.contains("-")) {
             String[] values = roomId.split("-");
             if (values.length == 3) {
diff --git a/service-api/src/main/java/com/java110/api/listener/fee/PayOweFeeListener.java b/service-api/src/main/java/com/java110/api/listener/fee/PayOweFeeListener.java
index ea17e3c..e3ee74b 100755
--- a/service-api/src/main/java/com/java110/api/listener/fee/PayOweFeeListener.java
+++ b/service-api/src/main/java/com/java110/api/listener/fee/PayOweFeeListener.java
@@ -10,6 +10,7 @@
 import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.dto.app.AppDto;
 import com.java110.dto.fee.FeeAttrDto;
+import com.java110.dto.fee.FeeDetailDto;
 import com.java110.dto.feeReceipt.FeeReceiptDetailDto;
 import com.java110.dto.repair.RepairDto;
 import com.java110.dto.repair.RepairUserDto;
@@ -18,11 +19,7 @@
 import com.java110.intf.community.IRepairInnerServiceSMO;
 import com.java110.intf.community.IRepairUserInnerServiceSMO;
 import com.java110.intf.community.IRoomInnerServiceSMO;
-import com.java110.intf.fee.IFeeAttrInnerServiceSMO;
-import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
-import com.java110.intf.fee.IFeeInnerServiceSMO;
-import com.java110.intf.fee.IFeeReceiptDetailInnerServiceSMO;
-import com.java110.intf.fee.IFeeReceiptInnerServiceSMO;
+import com.java110.intf.fee.*;
 import com.java110.po.feeReceipt.FeeReceiptPo;
 import com.java110.po.feeReceiptDetail.FeeReceiptDetailPo;
 import com.java110.po.owner.RepairPoolPo;
@@ -181,7 +178,10 @@
         }
         String appId = dataFlowContext.getAppId();
         logger.info("======鏀粯鏂瑰紡======锛�" + appId + "+======+" + paramObj.containsKey("primeRate") + "======:" + JSONArray.toJSONString(dataFlowContext));
-        if (AppDto.OWNER_WECHAT_PAY.equals(appId)) {  //寰俊鏀粯锛堟瑺璐圭即璐规棤娉曞尯鍒嗗皬绋嬪簭杩樻槸寰俊鍏紬鍙凤級
+        if (AppDto.OWNER_WECHAT_PAY.equals(appId)
+                && FeeDetailDto.PRIME_REATE_WECHAT.equals(paramObj.getString("primeRate"))) {  //寰俊鏀粯锛堟瑺璐圭即璐规棤娉曞尯鍒嗗皬绋嬪簭杩樻槸寰俊鍏紬鍙凤級
+            paramObj.put("remark", "绾夸笂鍏紬鍙锋敮浠�");
+        } else {
             paramObj.put("remark", "寰俊鏀粯");
         }
         paramObj.put("state", "1400");
diff --git a/service-api/src/main/java/com/java110/api/listener/login/UserLoginServiceListener.java b/service-api/src/main/java/com/java110/api/listener/login/UserLoginServiceListener.java
index 6a8d936..bc81264 100755
--- a/service-api/src/main/java/com/java110/api/listener/login/UserLoginServiceListener.java
+++ b/service-api/src/main/java/com/java110/api/listener/login/UserLoginServiceListener.java
@@ -10,7 +10,6 @@
 import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.dto.store.StoreDto;
 import com.java110.dto.store.StoreUserDto;
-import com.java110.dto.user.UserDto;
 import com.java110.dto.userLogin.UserLoginDto;
 import com.java110.entity.center.AppService;
 import com.java110.intf.store.IStoreInnerServiceSMO;
@@ -23,7 +22,6 @@
 import com.java110.utils.exception.SMOException;
 import com.java110.utils.util.Assert;
 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;
@@ -104,7 +102,7 @@
             dataFlowContext.setResponseEntity(responseEntity);
             return;
         }
-        String requestUrl = appService.getUrl() + "?userCode=" + paramInJson.getString("username") + "&pwd=" + paramInJson.getString("passwd")+ "&levelCdTag=1";
+        String requestUrl = appService.getUrl() + "?userCode=" + paramInJson.getString("username") + "&pwd=" + paramInJson.getString("passwd") + "&levelCdTag=1";
         HttpHeaders header = new HttpHeaders();
         header.add(CommonConstant.HTTP_SERVICE.toLowerCase(), ServiceCodeConstant.SERVICE_CODE_QUERY_USER_LOGIN);
         HttpEntity<String> httpEntity = new HttpEntity<String>("", header);
@@ -149,11 +147,14 @@
                 dataFlowContext.setResponseEntity(responseEntity);
                 return;
             }
+
+            StoreDto storeDto = new StoreDto();
+            storeDto.setStoreId(storeUserDtos.get(0).getStoreId());
+            List<StoreDto> storeDtos = storeInnerServiceSMOImpl.getStores(storeDto);
+            if (storeDtos != null && storeDtos.size() > 0) {
+                userInfo.put("storeType", storeDtos.get(0).getStoreTypeCd());
+            }
         }
-        StoreDto storeDto = new StoreDto();
-        storeDto.setStoreId(storeUserDtos.get(0).getStoreId());
-        List<StoreDto> storeDtos = storeInnerServiceSMOImpl.getStores(storeDto);
-        userInfo.put("storeType",storeDtos.get(0).getStoreTypeCd());
 
         try {
             Map userMap = new HashMap();
diff --git a/service-api/src/main/java/com/java110/api/listener/ownerRepair/GrabbingRepairListener.java b/service-api/src/main/java/com/java110/api/listener/ownerRepair/GrabbingRepairListener.java
index 3e38fb0..8d3c3d9 100755
--- a/service-api/src/main/java/com/java110/api/listener/ownerRepair/GrabbingRepairListener.java
+++ b/service-api/src/main/java/com/java110/api/listener/ownerRepair/GrabbingRepairListener.java
@@ -75,10 +75,14 @@
             DistributedLock.waitGetDistributedLock(key, requestId);
             //鑾峰彇褰撳墠澶勭悊鍛樺伐id
             String staffId = reqJson.getString("userId");
-            RepairUserDto repairUser = new RepairUserDto();
+            /*RepairUserDto repairUser = new RepairUserDto();
             repairUser.setStaffId(staffId);
             repairUser.setState("10001"); //澶勭悊涓�
-            int i = repairUserInnerServiceSMOImpl.queryRepairUsersCount(repairUser);
+            int i = repairUserInnerServiceSMOImpl.queryRepairUsersCount(repairUser);*/
+            RepairDto repair = new RepairDto();
+            repair.setStaffId(staffId);
+            repair.setCommunityId(reqJson.getString("communityId"));
+            int i = repairInnerServiceSMOImpl.queryStaffRepairsCount(repair);
             //鍙栧嚭寮�鍏虫槧灏勭殑鍊�(缁翠慨甯堝倕鏈鐞嗘渶澶у崟鏁�)
             String repairNumber = MappingCache.getValue(DOMAIN_COMMON, REPAIR_NUMBER);
             if (i >= Integer.parseInt(repairNumber)) {
diff --git a/service-api/src/main/java/com/java110/api/listener/ownerRepair/ListOwnerRepairsListener.java b/service-api/src/main/java/com/java110/api/listener/ownerRepair/ListOwnerRepairsListener.java
index 0cb24e1..0058b3f 100755
--- a/service-api/src/main/java/com/java110/api/listener/ownerRepair/ListOwnerRepairsListener.java
+++ b/service-api/src/main/java/com/java110/api/listener/ownerRepair/ListOwnerRepairsListener.java
@@ -5,12 +5,13 @@
 import com.java110.core.annotation.Java110Listener;
 import com.java110.core.context.DataFlowContext;
 import com.java110.core.event.service.api.ServiceDataFlowEvent;
-import com.java110.intf.common.IFileRelInnerServiceSMO;
-import com.java110.intf.community.IRepairInnerServiceSMO;
-import com.java110.intf.community.IRepairUserInnerServiceSMO;
 import com.java110.dto.file.FileRelDto;
 import com.java110.dto.repair.RepairDto;
 import com.java110.dto.repair.RepairUserDto;
+import com.java110.intf.common.IFileRelInnerServiceSMO;
+import com.java110.intf.community.IRepairInnerServiceSMO;
+import com.java110.intf.community.IRepairUserInnerServiceSMO;
+import com.java110.utils.cache.MappingCache;
 import com.java110.utils.constant.ServiceCodeOwnerRepairConstant;
 import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.StringUtil;
@@ -86,7 +87,7 @@
         }
         //pc鐢佃瘽鎶ヤ慨妯″潡 鍙繑鍥濸C鍛樺伐鐧昏鍜屾墜鏈虹鍛樺伐鐧昏鐨勬暟鎹�
         if (!StringUtil.isEmpty(ownerRepairDto.getReqSource()) && ownerRepairDto.getReqSource().equals("pc_mobile")) {
-            String[] repair_channel={RepairDto.REPAIR_CHANNEL_STAFF, RepairDto.REPAIR_CHANNEL_TEL};
+            String[] repair_channel = {RepairDto.REPAIR_CHANNEL_STAFF, RepairDto.REPAIR_CHANNEL_TEL};
             ownerRepairDto.setRepairChannels(Arrays.asList(repair_channel));
         }
 
@@ -95,7 +96,7 @@
         List<RepairDto> ownerRepairs = new ArrayList<>();
         if (count > 0) {
             List<RepairDto> repairDtos = repairInnerServiceSMOImpl.queryRepairs(ownerRepairDto);
-            for(RepairDto repairDto : repairDtos){
+            for (RepairDto repairDto : repairDtos) {
                 //鑾峰彇缁煎悎璇勪环寰楀垎
                 String appraiseScoreNumber = repairDto.getAppraiseScore();
                 Double appraiseScoreNum = 0.0;
@@ -164,6 +165,8 @@
         List<PhotoVo> beforePhotos = null;  //缁翠慨鍓嶅浘鐗�
         List<PhotoVo> afterPhotos = null;  //缁翠慨鍚庡浘鐗�
         PhotoVo photoVo = null;
+        String imgUrl = MappingCache.getValue("IMG_PATH");
+        imgUrl += (!StringUtil.isEmpty(imgUrl) && imgUrl.endsWith("/") ? "" : "/");
         for (RepairDto repairDto : ownerRepairs) {
             FileRelDto fileRelDto = new FileRelDto();
             fileRelDto.setObjId(repairDto.getRepairId());
@@ -174,22 +177,26 @@
             afterPhotos = new ArrayList<>();
             for (FileRelDto tmpFileRelDto : fileRelDtos) {
                 photoVo = new PhotoVo();
-                photoVo.setUrl("/callComponent/download/getFile/file?fileId=" + tmpFileRelDto.getFileRealName() + "&communityId=" + repairDto.getCommunityId());
+                //photoVo.setUrl("/callComponent/download/getFile/file?fileId=" + tmpFileRelDto.getFileRealName() + "&communityId=" + repairDto.getCommunityId());
+                photoVo.setUrl(imgUrl + tmpFileRelDto.getFileRealName());
                 photoVo.setRelTypeCd(tmpFileRelDto.getRelTypeCd());
                 photoVos.add(photoVo);
                 if (tmpFileRelDto.getRelTypeCd().equals(FileRelDto.REL_TYPE_CD_REPAIR)) {  //缁翠慨鍥剧墖
                     photoVo = new PhotoVo();
-                    photoVo.setUrl("/callComponent/download/getFile/file?fileId=" + tmpFileRelDto.getFileRealName() + "&communityId=" + repairDto.getCommunityId());
+                   // photoVo.setUrl("/callComponent/download/getFile/file?fileId=" + tmpFileRelDto.getFileRealName() + "&communityId=" + repairDto.getCommunityId());
+                    photoVo.setUrl(imgUrl + tmpFileRelDto.getFileRealName());
                     photoVo.setRelTypeCd(tmpFileRelDto.getRelTypeCd());
                     repairPhotos.add(photoVo);  //缁翠慨鍥剧墖
                 } else if (tmpFileRelDto.getRelTypeCd().equals(FileRelDto.BEFORE_REPAIR_PHOTOS)) {  //缁翠慨鍓嶅浘鐗�
                     photoVo = new PhotoVo();
-                    photoVo.setUrl("/callComponent/download/getFile/file?fileId=" + tmpFileRelDto.getFileRealName() + "&communityId=" + repairDto.getCommunityId());
+                    //photoVo.setUrl("/callComponent/download/getFile/file?fileId=" + tmpFileRelDto.getFileRealName() + "&communityId=" + repairDto.getCommunityId());
+                    photoVo.setUrl(imgUrl + tmpFileRelDto.getFileRealName());
                     photoVo.setRelTypeCd(tmpFileRelDto.getRelTypeCd());
                     beforePhotos.add(photoVo);  //缁翠慨鍓嶅浘鐗�
                 } else if (tmpFileRelDto.getRelTypeCd().equals(FileRelDto.AFTER_REPAIR_PHOTOS)) {  //缁翠慨鍚庡浘鐗�
                     photoVo = new PhotoVo();
-                    photoVo.setUrl("/callComponent/download/getFile/file?fileId=" + tmpFileRelDto.getFileRealName() + "&communityId=" + repairDto.getCommunityId());
+                    //photoVo.setUrl("/callComponent/download/getFile/file?fileId=" + tmpFileRelDto.getFileRealName() + "&communityId=" + repairDto.getCommunityId());
+                    photoVo.setUrl(imgUrl + tmpFileRelDto.getFileRealName());
                     photoVo.setRelTypeCd(tmpFileRelDto.getRelTypeCd());
                     afterPhotos.add(photoVo);
                 }
diff --git a/service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairDispatchListener.java b/service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairDispatchListener.java
index c6932f7..2a31325 100755
--- a/service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairDispatchListener.java
+++ b/service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairDispatchListener.java
@@ -237,10 +237,10 @@
     private void transferRepair(DataFlowContext context, JSONObject reqJson) {
         //鑾峰彇鎺ュ彈杞崟鐨勫憳宸�
         String staffId = reqJson.getString("staffId");
-        RepairUserDto repairUser = new RepairUserDto();
-        repairUser.setStaffId(staffId);
-        repairUser.setState("10001"); //澶勭悊涓�
-        int i = repairUserInnerServiceSMOImpl.queryRepairUsersCount(repairUser);
+        RepairDto repair = new RepairDto();
+        repair.setStaffId(staffId);
+        repair.setState("10001"); //澶勭悊涓�
+        int i = repairInnerServiceSMOImpl.queryStaffRepairsCount(repair);
         //鍙栧嚭寮�鍏虫槧灏勭殑鍊�(缁翠慨甯堝倕鏈鐞嗘渶澶у崟鏁�)
         String repairNumber = MappingCache.getValue(DOMAIN_COMMON, REPAIR_NUMBER);
         if (i >= Integer.parseInt(repairNumber)) {
@@ -300,10 +300,10 @@
     private void dispacthRepair(DataFlowContext context, JSONObject reqJson) {
         //鑾峰彇鎺ュ彈娲惧崟鐨勫憳宸�
         String staffId = reqJson.getString("staffId");
-        RepairUserDto repairUser = new RepairUserDto();
-        repairUser.setStaffId(staffId);
-        repairUser.setState("10001"); //澶勭悊涓�
-        int i = repairUserInnerServiceSMOImpl.queryRepairUsersCount(repairUser);
+        RepairDto repair = new RepairDto();
+        repair.setStaffId(staffId);
+        repair.setState("10001"); //澶勭悊涓�
+        int i = repairInnerServiceSMOImpl.queryStaffRepairsCount(repair);
         //鍙栧嚭寮�鍏虫槧灏勭殑鍊�(缁翠慨甯堝倕鏈鐞嗘渶澶у崟鏁�)
         String repairNumber = MappingCache.getValue(DOMAIN_COMMON, REPAIR_NUMBER);
         if (i >= Integer.parseInt(repairNumber)) {
diff --git a/service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairFinishListener.java b/service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairFinishListener.java
index 245e6af..e9d6ed6 100755
--- a/service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairFinishListener.java
+++ b/service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairFinishListener.java
@@ -301,6 +301,7 @@
                 resourceStoreUseRecordPo.setCreateUserName(reqJson.getString("userName"));
                 resourceStoreUseRecordPo.setRemark(reqJson.getString("context"));
                 resourceStoreUseRecordPo.setQuantity(useNumber);
+                resourceStoreUseRecordPo.setState("2002"); //1001 鎶ュ簾鍥炴敹   2002 宸ュ崟鎹熻��   3003 鍏敤鎹熻��
                 //鏈夊伩鏈嶅姟
                 if (maintenanceType.equals("1001")) {
                     resourceStoreUseRecordPo.setUnitPrice(paramIn.getString("price"));
diff --git a/service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairStartListener.java b/service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairStartListener.java
new file mode 100644
index 0000000..8254ff8
--- /dev/null
+++ b/service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairStartListener.java
@@ -0,0 +1,90 @@
+package com.java110.api.listener.ownerRepair;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiPlusListener;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.event.service.api.ServiceDataFlowEvent;
+import com.java110.dto.repair.RepairDto;
+import com.java110.dto.repair.RepairUserDto;
+import com.java110.intf.community.IRepairInnerServiceSMO;
+import com.java110.intf.community.IRepairUserInnerServiceSMO;
+import com.java110.po.owner.RepairPoolPo;
+import com.java110.po.owner.RepairUserPo;
+import com.java110.utils.constant.BusinessTypeConstant;
+import com.java110.utils.constant.ServiceCodeRepairDispatchStepConstant;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.StringUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 鍚姩鎶ヤ慨鍗�
+ *
+ * @author fqz
+ * @date 2021-12-24
+ */
+@Java110Listener("repairStartListener")
+public class RepairStartListener extends AbstractServiceApiPlusListener {
+
+    @Autowired
+    private IRepairInnerServiceSMO repairInnerServiceSMOImpl;
+
+    @Autowired
+    private IRepairUserInnerServiceSMO repairUserInnerServiceSMOImpl;
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeRepairDispatchStepConstant.BINDING_REPAIR_START;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.POST;
+    }
+
+    @Override
+    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "repairId", "鏈寘鍚姤淇崟淇℃伅");
+        Assert.hasKeyAndValue(reqJson, "communityId", "鏈寘鍚皬鍖轰俊鎭�");
+    }
+
+    @Override
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+        RepairDto repairDto = new RepairDto();
+        repairDto.setRepairId(reqJson.getString("repairId"));
+        //鏌ヨ鎶ヤ慨淇℃伅
+        List<RepairDto> repairDtos = repairInnerServiceSMOImpl.queryRepairs(repairDto);
+        Assert.listOnlyOne(repairDtos, "鏌ヨ鎶ヤ慨淇℃伅閿欒锛�");
+        String state = repairDtos.get(0).getState();
+        if (!StringUtil.isEmpty(state) && state.equals(RepairDto.STATE_STOP)) { //鐘舵�佹槸鏆傚仠鐘舵��
+            RepairPoolPo repairPoolPo = new RepairPoolPo();
+            repairPoolPo.setRepairId(reqJson.getString("repairId"));
+            repairPoolPo.setState(RepairDto.STATE_TAKING); //鐘舵�佸彉涓烘帴鍗曠姸鎬�
+            super.update(context, repairPoolPo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_REPAIR);
+            RepairUserDto repairUserDto = new RepairUserDto();
+            repairUserDto.setRepairId(reqJson.getString("repairId"));
+            repairUserDto.setState(RepairUserDto.STATE_STOP); //鏆傚仠鐘舵��
+            //鏌ヨ鎶ヤ慨娲惧崟
+            List<RepairUserDto> repairUserDtos = repairUserInnerServiceSMOImpl.queryRepairUsers(repairUserDto);
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            if (repairUserDtos != null && repairUserDtos.size() > 0) {
+                for (RepairUserDto repairUser : repairUserDtos) {
+                    if (repairUser.getEndTime() == null) {
+                        RepairUserPo repairUserPo = new RepairUserPo();
+                        repairUserPo.setRuId(repairUser.getRuId());
+                        repairUserPo.setEndTime(simpleDateFormat.format(new Date()));
+                        //淇敼鏆傚仠鎶ヤ慨鐘舵��
+                        super.update(context, repairUserPo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_REPAIR_USER);
+                    }
+                }
+            } else {
+                throw new IllegalArgumentException("鍚姩鎶ヤ慨鍗曢敊璇紒");
+            }
+        }
+    }
+}
diff --git a/service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairStopListener.java b/service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairStopListener.java
new file mode 100644
index 0000000..a73c918
--- /dev/null
+++ b/service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairStopListener.java
@@ -0,0 +1,97 @@
+package com.java110.api.listener.ownerRepair;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiPlusListener;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.event.service.api.ServiceDataFlowEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.repair.RepairDto;
+import com.java110.dto.repair.RepairUserDto;
+import com.java110.intf.community.IRepairInnerServiceSMO;
+import com.java110.intf.community.IRepairUserInnerServiceSMO;
+import com.java110.po.owner.RepairPoolPo;
+import com.java110.po.owner.RepairUserPo;
+import com.java110.utils.constant.BusinessTypeConstant;
+import com.java110.utils.constant.ServiceCodeRepairDispatchStepConstant;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.StringUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 鏆傚仠鎶ヤ慨鍗�
+ *
+ * @author fqz
+ * @date 2021-12-24
+ */
+@Java110Listener("repairStopListener")
+public class RepairStopListener extends AbstractServiceApiPlusListener {
+
+    @Autowired
+    private IRepairInnerServiceSMO repairInnerServiceSMOImpl;
+
+    @Autowired
+    private IRepairUserInnerServiceSMO repairUserInnerServiceSMOImpl;
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeRepairDispatchStepConstant.BINDING_REPAIR_STOP;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.POST;
+    }
+
+    @Override
+    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) throws ParseException {
+        Assert.hasKeyAndValue(reqJson, "repairId", "鏈寘鍚姤淇崟淇℃伅");
+        Assert.hasKeyAndValue(reqJson, "remark", "鏈寘鍚淳鍗曞唴瀹�");
+        Assert.hasKeyAndValue(reqJson, "communityId", "鏈寘鍚皬鍖轰俊鎭�");
+    }
+
+    @Override
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) throws ParseException {
+        RepairDto repairDto = new RepairDto();
+        repairDto.setRepairId(reqJson.getString("repairId"));
+        //鏌ヨ鎶ヤ慨淇℃伅
+        List<RepairDto> repairDtos = repairInnerServiceSMOImpl.queryRepairs(repairDto);
+        Assert.listOnlyOne(repairDtos, "鏌ヨ鎶ヤ慨鍗曢敊璇紒");
+        String state = repairDtos.get(0).getState();
+        if (!StringUtil.isEmpty(state) && !state.equals(RepairDto.STATE_STOP)) { //鎶ヤ慨鍗曚笉鏄殏鍋滅姸鎬�
+            RepairPoolPo repairPoolPo = BeanConvertUtil.covertBean(reqJson, RepairPoolPo.class);
+            repairPoolPo.setState(RepairDto.STATE_STOP); //灏嗘姤淇姸鎬佸彉涓烘殏鍋滅姸鎬�
+            //鏇存柊鎶ヤ慨鐘舵��
+            super.update(context, repairPoolPo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_REPAIR);
+            RepairUserPo repairUserPo = new RepairUserPo();
+            repairUserPo.setRuId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ruId)); //鎶ヤ慨娲惧崟id
+            repairUserPo.setRepairId(reqJson.getString("repairId")); //鎶ヤ慨娲惧崟
+            repairUserPo.setCommunityId(reqJson.getString("communityId")); //灏忓尯id
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            repairUserPo.setCreateTime(simpleDateFormat.format(new Date())); //鍒涘缓鏃堕棿
+            repairUserPo.setState(RepairUserDto.STATE_STOP); //鐘舵��(鏆傚仠鐘舵��)
+            repairUserPo.setContext(reqJson.getString("remark")); //鎶ヤ慨鍐呭
+            repairUserPo.setStaffId(reqJson.getString("userId")); //褰撳墠澶勭悊鍛樺伐id
+            repairUserPo.setStaffName(reqJson.getString("userName")); //褰撳墠澶勭悊鍛樺伐鍚嶇О
+            RepairUserDto repairUserDto = new RepairUserDto();
+            repairUserDto.setRepairId(reqJson.getString("repairId"));
+            repairUserDto.setState(RepairUserDto.STATE_DOING); //澶勭悊涓姸鎬�
+            //鏌ヨ鎶ヤ慨娲惧崟
+            List<RepairUserDto> repairUserDtos = repairUserInnerServiceSMOImpl.queryRepairUsers(repairUserDto);
+            Assert.listOnlyOne(repairUserDtos, "鏌ヨ鎶ヤ慨娲惧崟閿欒锛�");
+            repairUserPo.setPreStaffId(repairUserDtos.get(0).getStaffId()); //涓婁竴鑺傜偣澶勭悊鍛樺伐id
+            repairUserPo.setPreStaffName(repairUserDtos.get(0).getStaffName()); //涓婁竴鑺傜偣澶勭悊鍛樺伐鍚嶇О
+            repairUserPo.setStartTime(simpleDateFormat.format(new Date())); //寮�濮嬫椂闂�
+            repairUserPo.setRepairEvent(RepairUserDto.REPAIR_EVENT_AUDIT_USER); //瀹℃牳鐢ㄦ埛
+            repairUserPo.setPreRuId(repairUserDtos.get(0).getRuId()); //涓婁竴鑺傜偣澶勭悊id
+            super.insert(context, repairUserPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_REPAIR_USER);
+        }
+    }
+}
diff --git a/service-api/src/main/java/com/java110/api/listener/resourceStore/SaveAllocationUserStorehouseListener.java b/service-api/src/main/java/com/java110/api/listener/resourceStore/SaveAllocationUserStorehouseListener.java
index d40934e..4fabd16 100644
--- a/service-api/src/main/java/com/java110/api/listener/resourceStore/SaveAllocationUserStorehouseListener.java
+++ b/service-api/src/main/java/com/java110/api/listener/resourceStore/SaveAllocationUserStorehouseListener.java
@@ -27,7 +27,7 @@
     @Override
     protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
         //Assert.hasKeyAndValue(reqJson, "xxx", "xxx");
-        Assert.hasKeyAndValue(reqJson, "acceptUserId", "璇锋眰鎶ユ枃涓湭鍖呭惈acceptUserId");
+        //Assert.hasKeyAndValue(reqJson, "acceptUserId", "璇锋眰鎶ユ枃涓湭鍖呭惈acceptUserId");
         Assert.hasKeyAndValue(reqJson, "storeId", "璇锋眰鎶ユ枃涓湭鍖呭惈storeId");
     }
 
diff --git a/service-api/src/main/java/com/java110/api/properties/WechatAuthProperties.java b/service-api/src/main/java/com/java110/api/properties/WechatAuthProperties.java
index ae57a9d..e80ec21 100644
--- a/service-api/src/main/java/com/java110/api/properties/WechatAuthProperties.java
+++ b/service-api/src/main/java/com/java110/api/properties/WechatAuthProperties.java
@@ -129,6 +129,10 @@
     }
 
     public String getWechatAppId() {
+        String wechatAppIdCache = MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "wechatAppId");
+        if (!StringUtil.isEmpty(wechatAppIdCache)) {
+            return wechatAppIdCache;
+        }
         return wechatAppId;
     }
 
@@ -137,6 +141,10 @@
     }
 
     public String getWechatAppSecret() {
+        String wechatAppSecretCache = MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "wechatAppSecret");
+        if (!StringUtil.isEmpty(wechatAppSecretCache)) {
+            return wechatAppSecretCache;
+        }
         return wechatAppSecret;
     }
 
diff --git a/service-api/src/main/java/com/java110/api/smo/assetExport/IExportOwnerCarSMO.java b/service-api/src/main/java/com/java110/api/smo/assetExport/IExportOwnerCarSMO.java
new file mode 100644
index 0000000..bd59280
--- /dev/null
+++ b/service-api/src/main/java/com/java110/api/smo/assetExport/IExportOwnerCarSMO.java
@@ -0,0 +1,20 @@
+package com.java110.api.smo.assetExport;
+
+import com.java110.core.context.IPageData;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * @author fqz
+ * @date 2021-12-21
+ */
+public interface IExportOwnerCarSMO {
+
+    /**
+     * 瀵煎叆excel鏁版嵁
+     *
+     * @param pd 鍓嶅彴鏁版嵁灏佽
+     * @return ResponseEntity
+     */
+    public ResponseEntity<Object> exportExcelData(IPageData pd) throws Exception;
+
+}
diff --git a/service-api/src/main/java/com/java110/api/smo/assetExport/impl/ExportOwnerCarSMOImpl.java b/service-api/src/main/java/com/java110/api/smo/assetExport/impl/ExportOwnerCarSMOImpl.java
new file mode 100644
index 0000000..d938865
--- /dev/null
+++ b/service-api/src/main/java/com/java110/api/smo/assetExport/impl/ExportOwnerCarSMOImpl.java
@@ -0,0 +1,103 @@
+package com.java110.api.smo.assetExport.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.smo.DefaultAbstractComponentSMO;
+import com.java110.api.smo.assetExport.IExportOwnerCarSMO;
+import com.java110.core.context.IPageData;
+import com.java110.entity.component.ComponentValidateResult;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.DateUtil;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+@Service("exportOwnerCarSMOImpl")
+public class ExportOwnerCarSMOImpl extends DefaultAbstractComponentSMO implements IExportOwnerCarSMO {
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Override
+    public ResponseEntity<Object> exportExcelData(IPageData pd) throws Exception {
+        ComponentValidateResult result = this.validateStoreStaffCommunityRelationship(pd, restTemplate);
+        Assert.hasKeyAndValue(JSONObject.parseObject(pd.getReqData()), "communityId", "璇锋眰涓湭鍖呭惈灏忓尯");
+        Workbook workbook = null;  //宸ヤ綔绨�
+        //宸ヤ綔琛�
+        workbook = new XSSFWorkbook();
+        //鑾峰彇妤间俊鎭�
+        getOwnerCar(pd, result, workbook);
+        ByteArrayOutputStream os = new ByteArrayOutputStream();
+        MultiValueMap headers = new HttpHeaders();
+        headers.add("content-type", "application/octet-stream;charset=UTF-8");
+        headers.add("Content-Disposition", "attachment;filename=ownerCarImport_" + DateUtil.getyyyyMMddhhmmssDateString() + ".xlsx");
+        headers.add("Pargam", "no-cache");
+        headers.add("Cache-Control", "no-cache");
+        //headers.add("Content-Disposition", "attachment; filename=" + outParam.getString("fileName"));
+        headers.add("Accept-Ranges", "bytes");
+        byte[] context = null;
+        try {
+            workbook.write(os);
+            context = os.toByteArray();
+            os.close();
+            workbook.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+            // 淇濆瓨鏁版嵁
+            return new ResponseEntity<Object>("瀵煎嚭澶辫触", HttpStatus.INTERNAL_SERVER_ERROR);
+        }
+        // 淇濆瓨鏁版嵁
+        return new ResponseEntity<Object>(context, headers, HttpStatus.OK);
+    }
+
+    /**
+     * 鑾峰彇 鎴垮眿淇℃伅
+     *
+     * @param componentValidateResult
+     * @param workbook
+     */
+    private void getOwnerCar(IPageData pd, ComponentValidateResult componentValidateResult, Workbook workbook) {
+        Sheet sheet = workbook.createSheet("涓氫富杞﹁締淇℃伅");
+        Row row = sheet.createRow(0);
+        Cell cell0 = row.createCell(0);
+        cell0.setCellValue("鎴垮眿鍙�: 鏍煎紡涓簒x-xx-xx(妤兼爧-鍗曞厓-鎴垮眿)锛沑n杞﹁締绫诲瀷锛�9901琛ㄧず瀹剁敤灏忔苯杞︼紝9902琛ㄧず瀹㈣溅锛�9903琛ㄧず璐ц溅锛�" +
+                "\n杞︿綅锛歺x-xx(鍋滆溅鍦�-杞︿綅)" + "\n璧风鏃堕棿: 鏍煎紡涓篩YYY-MM-DD HH:mm:ss锛沑n鎴鏃堕棿: 鏍煎紡涓篩YYY-MM-DD HH:mm:ss锛�" +
+                "\n鍋滆溅鍦虹被鍨嬶細1001琛ㄧず鍦颁笂鍋滆溅鍦猴紝2001琛ㄧず鍦颁笅鍋滆溅鍦猴紱\n杞︿綅鐘舵�侊細S琛ㄧず鍑哄敭锛孒琛ㄧず鍑虹锛�" +
+                "\n娉ㄦ剰锛氭墍鏈夊崟鍏冩牸寮忎负鏂囨湰");
+        CellStyle cs = workbook.createCellStyle();
+        cs.setWrapText(true);  //鍏抽敭
+        cell0.setCellStyle(cs);
+        row.setHeight((short) (200 * 10));
+        row = sheet.createRow(1);
+        row.createCell(0).setCellValue("杞︾墝鍙�");
+        row.createCell(1).setCellValue("鎴垮眿鍙�");
+        row.createCell(2).setCellValue("杞﹁締鍝佺墝");
+        row.createCell(3).setCellValue("杞﹁締绫诲瀷");
+        row.createCell(4).setCellValue("棰滆壊");
+        row.createCell(5).setCellValue("涓氫富");
+        row.createCell(6).setCellValue("杞︿綅");
+        row.createCell(7).setCellValue("璧风鏃堕棿");
+        row.createCell(8).setCellValue("鎴鏃堕棿");
+        row.createCell(9).setCellValue("鍋滆溅鍦虹被鍨�");
+        row.createCell(10).setCellValue("杞︿綅绫诲瀷");
+        CellRangeAddress region = new CellRangeAddress(0, 0, 0, 8);
+        sheet.addMergedRegion(region);
+    }
+
+    public RestTemplate getRestTemplate() {
+        return restTemplate;
+    }
+
+    public void setRestTemplate(RestTemplate restTemplate) {
+        this.restTemplate = restTemplate;
+    }
+}
diff --git a/service-api/src/main/java/com/java110/api/smo/assetExport/impl/ExportReportFeeSMOImpl.java b/service-api/src/main/java/com/java110/api/smo/assetExport/impl/ExportReportFeeSMOImpl.java
index 0230b8d..b0ff2a5 100644
--- a/service-api/src/main/java/com/java110/api/smo/assetExport/impl/ExportReportFeeSMOImpl.java
+++ b/service-api/src/main/java/com/java110/api/smo/assetExport/impl/ExportReportFeeSMOImpl.java
@@ -887,12 +887,13 @@
         row.createCell(4).setCellValue("鐗╁搧鍚嶇О");
         row.createCell(5).setCellValue("鐗╁搧瑙勬牸");
         row.createCell(6).setCellValue("鏄惁鏄浐瀹氱墿鍝�");
-        row.createCell(7).setCellValue("鐗╁搧浣跨敤鏁伴噺");
-        row.createCell(8).setCellValue("鐗╁搧浠锋牸");
-        row.createCell(9).setCellValue("浣跨敤浜篒D");
-        row.createCell(10).setCellValue("浣跨敤浜�");
-        row.createCell(11).setCellValue("鍒涘缓鏃堕棿");
-        row.createCell(12).setCellValue("澶囨敞");
+        row.createCell(7).setCellValue("鐗╁搧浣跨敤绫诲瀷");
+        row.createCell(8).setCellValue("鐗╁搧浣跨敤鏁伴噺");
+        row.createCell(9).setCellValue("鐗╁搧浠锋牸");
+        row.createCell(10).setCellValue("浣跨敤浜篒D");
+        row.createCell(11).setCellValue("浣跨敤浜�");
+        row.createCell(12).setCellValue("鍒涘缓鏃堕棿");
+        row.createCell(13).setCellValue("澶囨敞");
         JSONArray resourceStoreUseRecords = this.getResourceStoreUseRecordManage(pd, result);
         if (resourceStoreUseRecords == null || resourceStoreUseRecords.size() == 0) {
             return;
@@ -908,12 +909,13 @@
             row.createCell(4).setCellValue(dataObj.getString("resourceStoreName"));
             row.createCell(5).setCellValue(dataObj.getString("specName"));
             row.createCell(6).setCellValue(dataObj.getString("isFixedName"));
-            row.createCell(7).setCellValue(dataObj.getString("quantity") + dataObj.getString("miniUnitCodeName"));
-            row.createCell(8).setCellValue(dataObj.getString("unitPrice"));
-            row.createCell(9).setCellValue(dataObj.getString("createUserId"));
-            row.createCell(10).setCellValue(dataObj.getString("createUserName"));
-            row.createCell(11).setCellValue(dataObj.getString("createTime"));
-            row.createCell(12).setCellValue(dataObj.getString("remark"));
+            row.createCell(7).setCellValue(dataObj.getString("stateName"));
+            row.createCell(8).setCellValue(dataObj.getString("quantity") + dataObj.getString("miniUnitCodeName"));
+            row.createCell(9).setCellValue(dataObj.getString("unitPrice"));
+            row.createCell(10).setCellValue(dataObj.getString("createUserId"));
+            row.createCell(11).setCellValue(dataObj.getString("createUserName"));
+            row.createCell(12).setCellValue(dataObj.getString("createTime"));
+            row.createCell(13).setCellValue(dataObj.getString("remark"));
         }
     }
 
diff --git a/service-api/src/main/java/com/java110/api/smo/assetImport/IImportOwnerCarSMO.java b/service-api/src/main/java/com/java110/api/smo/assetImport/IImportOwnerCarSMO.java
new file mode 100644
index 0000000..2716d7f
--- /dev/null
+++ b/service-api/src/main/java/com/java110/api/smo/assetImport/IImportOwnerCarSMO.java
@@ -0,0 +1,22 @@
+package com.java110.api.smo.assetImport;
+
+import com.java110.core.context.IPageData;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * @author fqz
+ * @date 2021-12-21
+ */
+public interface IImportOwnerCarSMO {
+
+    /**
+     * 瀵煎叆excel鏁版嵁
+     *
+     * @param pd         鍓嶅彴鏁版嵁灏佽
+     * @param uploadFile excel 鏂囦欢
+     * @return ResponseEntity
+     */
+    public ResponseEntity<String> importExcelData(IPageData pd, MultipartFile uploadFile) throws Exception;
+
+}
diff --git a/service-api/src/main/java/com/java110/api/smo/assetImport/impl/ImportOwnerCarSMOImpl.java b/service-api/src/main/java/com/java110/api/smo/assetImport/impl/ImportOwnerCarSMOImpl.java
new file mode 100644
index 0000000..bc22806
--- /dev/null
+++ b/service-api/src/main/java/com/java110/api/smo/assetImport/impl/ImportOwnerCarSMOImpl.java
@@ -0,0 +1,260 @@
+package com.java110.api.smo.assetImport.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.smo.DefaultAbstractComponentSMO;
+import com.java110.api.smo.assetImport.IImportOwnerCarSMO;
+import com.java110.core.context.IPageData;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.FloorDto;
+import com.java110.dto.RoomDto;
+import com.java110.dto.UnitDto;
+import com.java110.dto.owner.OwnerCarDto;
+import com.java110.dto.owner.OwnerDto;
+import com.java110.dto.owner.OwnerRoomRelDto;
+import com.java110.dto.parking.ParkingAreaDto;
+import com.java110.dto.parking.ParkingSpaceDto;
+import com.java110.entity.component.ComponentValidateResult;
+import com.java110.intf.community.*;
+import com.java110.intf.user.*;
+import com.java110.po.car.OwnerCarPo;
+import com.java110.po.parking.ParkingSpacePo;
+import com.java110.utils.util.*;
+import com.java110.vo.ResultVo;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Service("importOwnerCarSMOImpl")
+public class ImportOwnerCarSMOImpl extends DefaultAbstractComponentSMO implements IImportOwnerCarSMO {
+
+    private final static Logger logger = LoggerFactory.getLogger(ImportOwnerCarSMOImpl.class);
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Autowired
+    private IOwnerCarV1InnerServiceSMO ownerCarV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IFloorInnerServiceSMO floorInnerServiceSMOImpl;
+
+    @Autowired
+    private IUnitInnerServiceSMO unitInnerServiceSMOImpl;
+
+    @Autowired
+    private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
+
+    @Autowired
+    private IParkingAreaInnerServiceSMO parkingAreaInnerServiceSMOImpl;
+
+    @Autowired
+    private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
+
+    @Override
+    public ResponseEntity<String> importExcelData(IPageData pd, MultipartFile uploadFile) throws Exception {
+        try {
+            ComponentValidateResult result = this.validateStoreStaffCommunityRelationship(pd, restTemplate);
+            //InputStream is = uploadFile.getInputStream();
+            Workbook workbook = ImportExcelUtils.createWorkbook(uploadFile);  //宸ヤ綔绨�
+            List<OwnerCarDto> ownerCars = new ArrayList<OwnerCarDto>();
+            //鑾峰彇妤间俊鎭�
+            getOwnerCars(workbook, ownerCars);
+            // 淇濆瓨鏁版嵁
+            return dealExcelData(pd, ownerCars, result);
+        } catch (Exception e) {
+            logger.error("瀵煎叆澶辫触 ", e);
+            return new ResponseEntity<String>("闈炲父鎶辨瓑锛屾偍濉啓鐨勬ā鏉挎暟鎹湁璇細" + e.getMessage(), HttpStatus.BAD_REQUEST);
+        }
+    }
+
+    /**
+     * 鑾峰彇涓氫富杞﹁締淇℃伅
+     *
+     * @param workbook
+     * @param ownerCarDtos
+     */
+    private void getOwnerCars(Workbook workbook, List<OwnerCarDto> ownerCarDtos) throws ParseException {
+        Sheet sheet = null;
+        sheet = ImportExcelUtils.getSheet(workbook, "涓氫富杞﹁締淇℃伅");
+        List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
+        OwnerCarDto importOwnerCar = null;
+        for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
+            Object[] os = oList.get(osIndex);
+            if (osIndex == 0 || osIndex == 1) { // 绗竴琛屾槸 澶撮儴淇℃伅 鐩存帴璺宠繃
+                continue;
+            }
+            if (StringUtil.isNullOrNone(os[0])) {
+                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) + "杞︿綅涓嶈兘涓虹┖");
+            Assert.hasValue(os[7], (osIndex + 1) + "璧风鏃堕棿涓嶈兘涓虹┖");
+            Assert.hasValue(os[8], (osIndex + 1) + "鎴鏃堕棿涓嶈兘涓虹┖");
+            Assert.hasValue(os[9], (osIndex + 1) + "鍋滆溅鍦虹被鍨嬩笉鑳戒负绌�");
+            Assert.hasValue(os[10], (osIndex + 1) + "杞︿綅绫诲瀷涓嶈兘涓虹┖");
+            String startTime = excelDoubleToDate(os[7].toString());
+            String endTime = excelDoubleToDate(os[8].toString());
+            Assert.isDate(startTime, DateUtil.DATE_FORMATE_STRING_A, (osIndex + 1) + "琛屽紑濮嬫椂闂存牸寮忛敊璇� 璇峰~鍐橸YYY-MM-DD HH:mm:ss鏂囨湰鏍煎紡");
+            Assert.isDate(endTime, DateUtil.DATE_FORMATE_STRING_A, (osIndex + 1) + "琛岀粨鏉熸椂闂存牸寮忛敊璇� 璇峰~鍐橸YYY-MM-DD HH:mm:ss鏂囨湰鏍煎紡");
+            importOwnerCar = new OwnerCarDto();
+            importOwnerCar.setCarNum(os[0].toString());
+            importOwnerCar.setRoomName(os[1].toString());
+            importOwnerCar.setCarBrand(os[2].toString());
+            importOwnerCar.setCarType(os[3].toString());
+            importOwnerCar.setCarColor(os[4].toString());
+            importOwnerCar.setOwnerName(os[5].toString());
+            //鑾峰彇杞︿綅
+            String parkingLot = os[6].toString();
+            String[] split = parkingLot.split("-");
+            importOwnerCar.setAreaNum(split[0]);
+            importOwnerCar.setNum(split[1]);
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            importOwnerCar.setStartTime(simpleDateFormat.parse(startTime));
+            importOwnerCar.setEndTime(simpleDateFormat.parse(endTime));
+            importOwnerCar.setTypeCd(os[9].toString());
+            importOwnerCar.setSpaceSate(os[10].toString());
+            ownerCarDtos.add(importOwnerCar);
+        }
+    }
+
+
+    /**
+     * 澶勭悊ExcelData鏁版嵁
+     */
+    private ResponseEntity<String> dealExcelData(IPageData pd, List<OwnerCarDto> ownerCarDtos, ComponentValidateResult result) {
+        ResponseEntity<String> responseEntity = null;
+        //淇濆瓨鍗曞厓淇℃伅 鍜� 妤兼爧淇℃伅
+        responseEntity = savedOwnerCars(pd, ownerCarDtos, result);
+        if (responseEntity == null || responseEntity.getStatusCode() != HttpStatus.OK) {
+            return responseEntity;
+        }
+        return responseEntity;
+    }
+
+    private ResponseEntity<String> savedOwnerCars(IPageData pd, List<OwnerCarDto> ownerCars, ComponentValidateResult result) {
+        JSONObject reqJson = JSONObject.parseObject(pd.getReqData());
+        if (ownerCars.size() < 1) {
+            throw new IllegalArgumentException("娌℃湁鏁版嵁闇�瑕佸鐞�");
+        }
+        for (OwnerCarDto ownerCarDto : ownerCars) {
+            OwnerCarPo ownerCarPo = BeanConvertUtil.covertBean(ownerCarDto, OwnerCarPo.class);
+            //鑾峰彇鎴垮眿鍚嶇О
+            String roomName = ownerCarDto.getRoomName();
+            String[] split = roomName.split("-");
+            String floorNum = split[0];
+            String unitNum = split[1];
+            String roomNum = split[2];
+            FloorDto floorDto = new FloorDto();
+            floorDto.setCommunityId(reqJson.getString("communityId"));
+            floorDto.setFloorNum(floorNum);
+            //鏌ヨ妤兼爧
+            List<FloorDto> floorDtos = floorInnerServiceSMOImpl.queryFloors(floorDto);
+            Assert.listOnlyOne(floorDtos, "鏌ヨ妤兼爧閿欒锛�");
+            UnitDto unitDto = new UnitDto();
+            unitDto.setUnitNum(unitNum);
+            unitDto.setFloorId(floorDtos.get(0).getFloorId());
+            //鏌ヨ鍗曞厓
+            List<UnitDto> unitDtos = unitInnerServiceSMOImpl.queryUnits(unitDto);
+            Assert.listOnlyOne(unitDtos, "鏌ヨ鍗曞厓閿欒锛�");
+            RoomDto roomDto = new RoomDto();
+            roomDto.setRoomNum(roomNum);
+            roomDto.setUnitId(unitDtos.get(0).getUnitId());
+            //鏌ヨ鎴垮眿
+            List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto);
+            Assert.listOnlyOne(roomDtos, "鏌ヨ鎴垮眿閿欒锛�");
+            OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
+            ownerRoomRelDto.setRoomId(roomDtos.get(0).getRoomId());
+            //鏌ヨ涓氫富鎴垮眿鍏崇郴琛�
+            List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
+            Assert.listOnlyOne(ownerRoomRelDtos, "鏌ヨ涓氫富鎴垮眿淇℃伅閿欒锛�");
+            OwnerDto ownerDto = new OwnerDto();
+            ownerDto.setOwnerId(ownerRoomRelDtos.get(0).getOwnerId());
+            ownerDto.setName(ownerCarDto.getOwnerName());
+            //鏌ヨ涓氫富
+            List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto);
+            Assert.listOnlyOne(ownerDtos, "鏌ヨ涓氫富淇℃伅閿欒锛�");
+            if (ownerDtos.get(0).getOwnerTypeCd().equals("1001")) { //涓氫富
+                ownerCarPo.setCarTypeCd("1001"); //涓氫富杞﹁締
+            } else {
+                ownerCarPo.setCarTypeCd("1002"); //鎴愬憳杞﹁締
+            }
+            ParkingAreaDto parkingAreaDto = new ParkingAreaDto();
+            parkingAreaDto.setNum(ownerCarDto.getAreaNum());
+            parkingAreaDto.setTypeCd(ownerCarDto.getTypeCd());
+            //鏌ヨ鍋滆溅鍦�
+            List<ParkingAreaDto> parkingAreaDtos = parkingAreaInnerServiceSMOImpl.queryParkingAreas(parkingAreaDto);
+            Assert.listOnlyOne(parkingAreaDtos, "鏌ヨ鍋滆溅鍦洪敊璇紒");
+            ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
+            parkingSpaceDto.setNum(ownerCarDto.getNum());
+            parkingSpaceDto.setPaId(parkingAreaDtos.get(0).getPaId());
+            //鏌ヨ鍋滆溅浣�
+            List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
+            Assert.listOnlyOne(parkingSpaceDtos, "鏌ヨ鍋滆溅浣嶉敊璇紒");
+            //鑾峰彇鍋滆溅浣嶇姸鎬�(鍑哄敭 S锛屽嚭绉� H 锛岀┖闂� F)
+            String state = parkingSpaceDtos.get(0).getState();
+            if (!StringUtil.isEmpty(state) && !state.equals("F")) {
+                throw new IllegalArgumentException(parkingAreaDtos.get(0).getNum() + "鍋滆溅鍦�-" + parkingSpaceDtos.get(0).getNum() + "鍋滆溅浣嶄笉鏄┖闂茬姸鎬侊紒");
+            }
+            ownerCarPo.setPsId(parkingSpaceDtos.get(0).getPsId());
+            ownerCarPo.setOwnerId(ownerRoomRelDtos.get(0).getOwnerId());
+            ownerCarPo.setUserId("-1");
+            ownerCarPo.setCommunityId(reqJson.getString("communityId"));
+            ownerCarPo.setCarId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_carId));
+            ownerCarPo.setMemberId(ownerCarPo.getCarId());
+            ownerCarPo.setState("1001"); //1001 姝e父鐘舵�侊紝2002 杞︿綅閲婃斁娆犺垂鐘舵�侊紝3003 杞︿綅閲婃斁
+            ownerCarV1InnerServiceSMOImpl.saveOwnerCar(ownerCarPo);
+            ParkingSpacePo parkingSpacePo = new ParkingSpacePo();
+            parkingSpacePo.setPsId(parkingSpaceDtos.get(0).getPsId()); //杞︿綅id
+            parkingSpacePo.setState(ownerCarDto.getSpaceSate());
+            parkingSpaceInnerServiceSMOImpl.updateParkingSpace(parkingSpacePo);
+        }
+        return ResultVo.success();
+    }
+
+    //瑙f瀽Excel鏃ユ湡鏍煎紡
+    public static String excelDoubleToDate(String strDate) {
+        if (strDate.length() == 5) {
+            try {
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                Date tDate = DoubleToDate(Double.parseDouble(strDate));
+                return sdf.format(tDate);
+            } catch (Exception e) {
+                e.printStackTrace();
+                return strDate;
+            }
+        }
+        return strDate;
+    }
+
+    //瑙f瀽Excel鏃ユ湡鏍煎紡
+    public static Date DoubleToDate(Double dVal) {
+        Date tDate = new Date();
+        long localOffset = tDate.getTimezoneOffset() * 60000; //绯荤粺鏃跺尯鍋忕Щ 1900/1/1 鍒� 1970/1/1 鐨� 25569 澶�
+        tDate.setTime((long) ((dVal - 25569) * 24 * 3600 * 1000 + localOffset));
+        return tDate;
+    }
+}
diff --git a/service-api/src/main/java/com/java110/api/smo/payment/impl/ToPaySMOImpl.java b/service-api/src/main/java/com/java110/api/smo/payment/impl/ToPaySMOImpl.java
index f435146..8c2c9d7 100644
--- a/service-api/src/main/java/com/java110/api/smo/payment/impl/ToPaySMOImpl.java
+++ b/service-api/src/main/java/com/java110/api/smo/payment/impl/ToPaySMOImpl.java
@@ -94,7 +94,6 @@
         double money = Double.parseDouble(orderInfo.getString("receivedAmount"));
         //闇�瑕佸垽鏂噾棰濇槸鍚� == 0 绛変簬0 鐩存帴鎺夌即璐归�氱煡鎺ュ彛
         if (money <= 0) {
-
             JSONObject paramOut = new JSONObject();
             paramOut.put("oId", orderId);
             String urlOut = "fee.payFeeConfirm";
diff --git a/service-common/src/main/java/com/java110/common/smo/impl/FileInnerServiceSMOImpl.java b/service-common/src/main/java/com/java110/common/smo/impl/FileInnerServiceSMOImpl.java
index 32fe235..21b3d4d 100755
--- a/service-common/src/main/java/com/java110/common/smo/impl/FileInnerServiceSMOImpl.java
+++ b/service-common/src/main/java/com/java110/common/smo/impl/FileInnerServiceSMOImpl.java
@@ -75,9 +75,13 @@
         String context = "";
         String ossSwitch = MappingCache.getValue(OSSUtil.DOMAIN, OSSUtil.OSS_SWITCH);
         if (StringUtil.isEmpty(ossSwitch) || !OSSUtil.OSS_SWITCH_OSS.equals(ossSwitch)) {
-            context = ftpUploadTemplate.download(ftpPath, fileName, java110Properties.getFtpServer(),
-                    java110Properties.getFtpPort(), java110Properties.getFtpUserName(),
-                    java110Properties.getFtpUserPassword());
+            String ftpServer = MappingCache.getValue( FtpUploadTemplate.FTP_DOMAIN, FtpUploadTemplate.FTP_SERVER);
+            int ftpPort = Integer.parseInt(MappingCache.getValue( FtpUploadTemplate.FTP_DOMAIN, FtpUploadTemplate.FTP_PORT));
+            String ftpUserName = MappingCache.getValue( FtpUploadTemplate.FTP_DOMAIN, FtpUploadTemplate.FTP_USERNAME);
+            String ftpUserPassword = MappingCache.getValue( FtpUploadTemplate.FTP_DOMAIN, FtpUploadTemplate.FTP_USERPASSWORD);
+            context = ftpUploadTemplate.download(ftpPath, fileName, ftpServer,
+                    ftpPort, ftpUserName,
+                    ftpUserPassword);
         }else{
             context = ossUploadTemplate.download(ftpPath, fileName, java110Properties.getFtpServer(),
                     java110Properties.getFtpPort(), java110Properties.getFtpUserName(),
diff --git a/service-community/src/main/java/com/java110/community/api/RoomRenovationApi.java b/service-community/src/main/java/com/java110/community/api/RoomRenovationApi.java
index ef7716e..c10923d 100755
--- a/service-community/src/main/java/com/java110/community/api/RoomRenovationApi.java
+++ b/service-community/src/main/java/com/java110/community/api/RoomRenovationApi.java
@@ -542,6 +542,9 @@
                                                       @RequestParam(value = "personTel", required = false) String personTel,
                                                       @RequestParam(value = "state", required = false) String state,
                                                       @RequestParam(value = "isPostpone", required = false) String isPostpone,
+                                                      @RequestParam(value = "renovationTime", required = false) String renovationTime,
+                                                      @RequestParam(value = "renovationStartTime", required = false) String renovationStartTime,
+                                                      @RequestParam(value = "renovationEndTime", required = false) String renovationEndTime,
                                                       @RequestHeader(value = "user-id") String userId,
                                                       @RequestParam(value = "page", required = false) int page,
                                                       @RequestParam(value = "row", required = false) int row) {
@@ -556,6 +559,9 @@
         roomRenovationDto.setState(state);
         roomRenovationDto.setUserId(userId);
         roomRenovationDto.setIsPostpone(isPostpone);
+        roomRenovationDto.setRenovationTime(renovationTime);
+        roomRenovationDto.setRenovationStartTime(renovationStartTime);
+        roomRenovationDto.setRenovationEndTime(renovationEndTime);
         return getRoomRenovationBMOImpl.get(roomRenovationDto);
     }
 
diff --git a/service-community/src/main/java/com/java110/community/listener/repair/AbstractRepairSettingBusinessServiceDataFlowListener.java b/service-community/src/main/java/com/java110/community/listener/repair/AbstractRepairSettingBusinessServiceDataFlowListener.java
index eba67f2..1c76d82 100755
--- a/service-community/src/main/java/com/java110/community/listener/repair/AbstractRepairSettingBusinessServiceDataFlowListener.java
+++ b/service-community/src/main/java/com/java110/community/listener/repair/AbstractRepairSettingBusinessServiceDataFlowListener.java
@@ -39,7 +39,8 @@
         businessRepairSettingInfo.put("newBId", businessRepairSettingInfo.get("b_id"));
         businessRepairSettingInfo.put("operate", businessRepairSettingInfo.get("operate"));
         businessRepairSettingInfo.put("repairTypeName", businessRepairSettingInfo.get("repair_type_name"));
-        businessRepairSettingInfo.put("repairType", businessRepairSettingInfo.get("repair_type"));
+        businessRepairSettingInfo.put("repairSettingType", businessRepairSettingInfo.get("repair_setting_type"));
+        businessRepairSettingInfo.put("settingType", businessRepairSettingInfo.get("setting_type"));
         businessRepairSettingInfo.put("remark", businessRepairSettingInfo.get("remark"));
         businessRepairSettingInfo.put("communityId", businessRepairSettingInfo.get("community_id"));
         businessRepairSettingInfo.put("repairWay", businessRepairSettingInfo.get("repair_way"));
@@ -76,6 +77,7 @@
         currentRepairSettingInfo.put("operate", currentRepairSettingInfo.get("operate"));
         currentRepairSettingInfo.put("repairTypeName", currentRepairSettingInfo.get("repair_type_name"));
         currentRepairSettingInfo.put("repairType", currentRepairSettingInfo.get("repair_type"));
+        currentRepairSettingInfo.put("repairSettingType", currentRepairSettingInfo.get("repair_setting_type"));
         currentRepairSettingInfo.put("remark", currentRepairSettingInfo.get("remark"));
         currentRepairSettingInfo.put("communityId", currentRepairSettingInfo.get("community_id"));
         currentRepairSettingInfo.put("repairWay", currentRepairSettingInfo.get("repair_way"));
diff --git a/service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeeConfirmCmd.java b/service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeeConfirmCmd.java
index 5fc59af..90baead 100644
--- a/service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeeConfirmCmd.java
+++ b/service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeeConfirmCmd.java
@@ -3,11 +3,11 @@
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.annotation.Java110Cmd;
-import com.java110.core.context.DataFlowContext;
 import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.AbstractServiceCmdListener;
 import com.java110.core.event.cmd.CmdEvent;
 import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.account.AccountDto;
 import com.java110.dto.app.AppDto;
 import com.java110.dto.couponUser.CouponUserDto;
 import com.java110.dto.fee.FeeAttrDto;
@@ -15,17 +15,17 @@
 import com.java110.dto.fee.FeeDto;
 import com.java110.dto.feeDiscount.ComputeDiscountDto;
 import com.java110.dto.owner.OwnerCarDto;
-import com.java110.dto.payFeeDetailDiscount.PayFeeDetailDiscountDto;
 import com.java110.dto.repair.RepairDto;
 import com.java110.dto.repair.RepairUserDto;
-import com.java110.entity.order.Orders;
 import com.java110.fee.bmo.fee.IFeeBMO;
+import com.java110.intf.acct.IAccountInnerServiceSMO;
 import com.java110.intf.acct.ICouponUserDetailV1InnerServiceSMO;
 import com.java110.intf.acct.ICouponUserV1InnerServiceSMO;
 import com.java110.intf.community.IRepairUserInnerServiceSMO;
 import com.java110.intf.community.IRoomInnerServiceSMO;
 import com.java110.intf.fee.*;
 import com.java110.intf.user.IOwnerCarInnerServiceSMO;
+import com.java110.po.accountDetail.AccountDetailPo;
 import com.java110.po.applyRoomDiscount.ApplyRoomDiscountPo;
 import com.java110.po.car.OwnerCarPo;
 import com.java110.po.couponUser.CouponUserPo;
@@ -34,8 +34,6 @@
 import com.java110.po.owner.RepairUserPo;
 import com.java110.po.payFeeDetailDiscount.PayFeeDetailDiscountPo;
 import com.java110.utils.cache.CommonCache;
-import com.java110.utils.constant.BusinessTypeConstant;
-import com.java110.utils.constant.CommonConstant;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
@@ -43,8 +41,6 @@
 import com.java110.utils.util.StringUtil;
 import com.java110.vo.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
 
 import java.math.BigDecimal;
 import java.text.DecimalFormat;
@@ -99,6 +95,9 @@
     @Autowired
     private ICouponUserDetailV1InnerServiceSMO couponUserDetailV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IAccountInnerServiceSMO accountInnerServiceSMOImpl;
+
     //榛樿搴忓垪
     protected static final int DEFAULT_SEQ = 1;
 
@@ -125,19 +124,20 @@
             paramObj.put("remark", "绾夸笂灏忕▼搴忔敮浠�");
         }
 
+        //澶勭悊鐜伴噾璐︽埛
+        dealAccount(paramObj);
+
+        //澶勭悊 浼樻儬鎶樻墸
+        addDiscount(paramObj);
+
+        //淇敼宸蹭娇鐢ㄤ紭鎯犲嵎淇℃伅
+        modifyCouponUser(paramObj);
+
         //娣诲姞鍗曞厓淇℃伅
         feeBMOImpl.addFeePreDetail(paramObj);
         feeBMOImpl.modifyPreFee(paramObj);
 
-        double discountPrice = paramObj.getDouble("discountPrice");
-        if (discountPrice > 0) {
-            addDiscount(paramObj);
-        }
-
         dealOwnerCartEndTime(paramObj);
-
-        //淇敼宸蹭娇鐢ㄤ紭鎯犲嵎淇℃伅
-        modifyCouponUser(paramObj);
 
         //鍒ゆ柇鏄惁鏈夋淳鍗曞睘鎬D
         FeeAttrDto feeAttrDto = new FeeAttrDto();
@@ -228,10 +228,63 @@
         cmdDataFlowContext.setResponseEntity(ResultVo.success());
     }
 
+    private void dealAccount(JSONObject paramObj) {
+
+        if (!paramObj.containsKey("deductionAmount") || paramObj.getDouble("deductionAmount") <= 0) {
+            return;
+        }
+
+        BigDecimal deductionAmount = new BigDecimal(paramObj.getDouble("deductionAmount"));
+
+        JSONArray accountDtos = paramObj.getJSONArray("selectUserAccount");
+        BigDecimal amount = null;
+        AccountDto accountDto = null;
+        for (int accountIndex = 0; accountIndex < accountDtos.size(); accountIndex++) {
+            accountDto = BeanConvertUtil.covertBean(accountDtos.getJSONObject(accountIndex), AccountDto.class);
+            amount = new BigDecimal(Double.parseDouble(accountDto.getAmount()));
+            AccountDetailPo accountDetailPo = new AccountDetailPo();
+            accountDetailPo.setAcctId(accountDto.getAcctId());
+            accountDetailPo.setObjId(accountDto.getObjId());
+            if (amount.doubleValue() < deductionAmount.doubleValue()) {
+                accountDetailPo.setAmount(amount.doubleValue() + "");
+                deductionAmount = deductionAmount.subtract(amount).setScale(2, BigDecimal.ROUND_HALF_UP);
+            } else {
+                accountDetailPo.setAmount(deductionAmount.doubleValue() + "");
+                deductionAmount = deductionAmount.subtract(deductionAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
+            }
+            int flag = accountInnerServiceSMOImpl.withholdAccount(accountDetailPo);
+
+            if (flag < 1) {
+                throw new CmdException("鎵f澶辫触");
+            }
+        }
+
+
+        if (deductionAmount.doubleValue() > 0) {
+            throw new CmdException("璐︽埛閲戦涓嶈冻");
+        }
+
+        paramObj.put("remark", paramObj.getString("remark") + "-鐜伴噾璐︽埛鎶垫墸" + paramObj.getDouble("deductionAmount") + "鍏�");
+
+    }
+
     private void modifyCouponUser(JSONObject paramObj) {
-        FeeDto feeInfo = (FeeDto) paramObj.get("feeInfo");
-        List<CouponUserDto> couponUserDtos = (List<CouponUserDto>) paramObj.get("couponUserDtos");
-        for (CouponUserDto couponUser : couponUserDtos) {
+        if (!paramObj.containsKey("couponPrice") || paramObj.getDouble("couponPrice") <= 0) {
+            return;
+        }
+        //FeeDto feeInfo = (FeeDto) paramObj.get("feeInfo");
+        CouponUserDto couponUserDto = null;
+        JSONArray couponUserDtos = paramObj.getJSONArray("couponUserDtos");
+        CouponUserDto couponUser = null;
+        for (int accountIndex = 0; accountIndex < couponUserDtos.size(); accountIndex++) {
+            couponUser = BeanConvertUtil.covertBean(couponUserDtos.getJSONObject(accountIndex), CouponUserDto.class);
+            couponUserDto = new CouponUserDto();
+            couponUserDto.setCouponId(couponUser.getCouponId());
+            couponUserDto.setState(CouponUserDto.COUPON_STATE_RUN);
+            List<CouponUserDto> couponUserDtos1 = couponUserV1InnerServiceSMOImpl.queryCouponUsers(couponUserDto);
+            if (couponUserDtos1 == null || couponUserDtos1.size() < 1) {
+                throw new CmdException("浼樻儬鍒歌浣跨敤");
+            }
             CouponUserPo couponUserPo = new CouponUserPo();
             couponUserPo.setState(CouponUserDto.COUPON_STATE_STOP);
             couponUserPo.setCouponId(couponUser.getCouponId());
@@ -245,8 +298,8 @@
             couponUserDetailPo.setUserId(couponUser.getUserId());
             couponUserDetailPo.setCouponName(couponUser.getCouponName());
             couponUserDetailPo.setUserName(couponUser.getUserName());
-            couponUserDetailPo.setObjId(feeInfo.getFeeId());
-            couponUserDetailPo.setObjType(feeInfo.getFeeTypeCd());
+            couponUserDetailPo.setObjId(paramObj.getString("feeId"));
+            couponUserDetailPo.setObjType(paramObj.getString("feeTypeCd"));
             couponUserDetailPo.setOrderId(paramObj.getString("oId"));
             fage = couponUserDetailV1InnerServiceSMOImpl.saveCouponUserDetail(couponUserDetailPo);
             if (fage < 1) {
@@ -254,11 +307,19 @@
             }
         }
 
+        paramObj.put("remark", paramObj.getString("remark") + "-浼樻儬鍔垫姷鎵�" + paramObj.getDouble("couponPrice") + "鍏�");
+
     }
 
     private void addDiscount(JSONObject paramObj) {
-        List<ComputeDiscountDto> computeDiscountDtos = (List<ComputeDiscountDto>) paramObj.get("computeDiscountDtos");
-        for (ComputeDiscountDto computeDiscountDto : computeDiscountDtos) {
+
+        if (!paramObj.containsKey("discountPrice") || paramObj.getDouble("discountPrice") <= 0) {
+            return;
+        }
+        JSONArray computeDiscountDtos = paramObj.getJSONArray("computeDiscountDtos");
+        ComputeDiscountDto computeDiscountDto = null;
+        for (int accountIndex = 0; accountIndex < computeDiscountDtos.size(); accountIndex++) {
+            computeDiscountDto = BeanConvertUtil.covertBean(computeDiscountDtos.getJSONObject(accountIndex), ComputeDiscountDto.class);
             if (computeDiscountDto.getDiscountPrice() <= 0) {
                 continue;
             }
diff --git a/service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeePreCmd.java b/service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeePreCmd.java
index 1443d4c..f0e1ce1 100644
--- a/service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeePreCmd.java
+++ b/service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeePreCmd.java
@@ -8,10 +8,12 @@
 import com.java110.core.event.cmd.CmdEvent;
 import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.core.smo.IComputeFeeSMO;
+import com.java110.dto.account.AccountDto;
 import com.java110.dto.couponUser.CouponUserDto;
 import com.java110.dto.fee.FeeDetailDto;
 import com.java110.dto.fee.FeeDto;
 import com.java110.dto.feeDiscount.ComputeDiscountDto;
+import com.java110.intf.acct.IAccountInnerServiceSMO;
 import com.java110.intf.acct.ICouponUserV1InnerServiceSMO;
 import com.java110.intf.community.IRepairUserInnerServiceSMO;
 import com.java110.intf.community.IRoomInnerServiceSMO;
@@ -22,6 +24,7 @@
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.exception.ListenerExecuteException;
 import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.DateUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -46,7 +49,7 @@
  * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
  * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
  */
-@Java110Cmd(serviceCode = "fee.payFeePreNew")
+@Java110Cmd(serviceCode = "fee.payFeePre")
 public class PayFeePreCmd extends AbstractServiceCmdListener {
     private static Logger logger = LoggerFactory.getLogger(PayFeePreCmd.class);
 
@@ -83,6 +86,9 @@
     @Autowired
     private ICouponUserV1InnerServiceSMO couponUserV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IAccountInnerServiceSMO accountInnerServiceSMOImpl;
+
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
         Assert.jsonObjectHaveKey(reqJson, "communityId", "璇锋眰鎶ユ枃涓湭鍖呭惈communityId鑺傜偣");
@@ -102,16 +108,9 @@
     public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
         logger.debug("ServiceDataFlowEvent : {}", event);
 
-        JSONObject paramObj = reqJson;
-
-        JSONArray businesses = new JSONArray();
-        //鍒ゆ柇鏄惁鏈夋姌鎵f儏鍐�
-        judgeDiscount(paramObj);
-        //3.0 鑰冭檻浼樻儬鍗�
-        checkCouponUser(paramObj);
-
         String appId = cmdDataFlowContext.getReqHeaders().get("app-id");
         reqJson.put("appId", appId);
+
         FeeDto feeDto = new FeeDto();
         feeDto.setFeeId(reqJson.getString("feeId"));
         feeDto.setCommunityId(reqJson.getString("communityId"));
@@ -120,40 +119,110 @@
             throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "鏌ヨ璐圭敤淇℃伅澶辫触锛屾湭鏌ュ埌鏁版嵁鎴栨煡鍒板鏉℃暟鎹�");
         }
         feeDto = feeDtos.get(0);
-
+        reqJson.put("feeTypeCd", feeDto.getFeeTypeCd());
+        reqJson.put("feeId", feeDto.getFeeId());
         Map feePriceAll = computeFeeSMOImpl.getFeePrice(feeDto);
-
         BigDecimal receivableAmount = new BigDecimal(feePriceAll.get("feePrice").toString());
         BigDecimal cycles = new BigDecimal(Double.parseDouble(reqJson.getString("cycles")));
         double tmpReceivableAmount = cycles.multiply(receivableAmount).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
-        double discountPrice = reqJson.getDouble("discountPrice");
-        double couponPrice = reqJson.getDouble("couponPrice");
         JSONObject paramOut = new JSONObject();
         paramOut.put("receivableAmount", tmpReceivableAmount);
         paramOut.put("oId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_oId));
-        //1.0 鑰冭檻浼樻儬閲戦
+
+        //瀹炴敹閲戦
+        BigDecimal tmpReceivedAmout = new BigDecimal(tmpReceivableAmount);
+
+        //鍒ゆ柇鏄惁鏈夋姌鎵f儏鍐�
+        double discountPrice = judgeDiscount(reqJson);
+        tmpReceivedAmout = tmpReceivedAmout.subtract(new BigDecimal(discountPrice)).setScale(2, BigDecimal.ROUND_HALF_EVEN);
         //2.0 鑰冭檻璐︽埛鎶垫秷
+        double accountPrice = judgeAccount(reqJson);
+        tmpReceivedAmout = tmpReceivedAmout.subtract(new BigDecimal(accountPrice)).setScale(2, BigDecimal.ROUND_HALF_EVEN);
+
         //3.0 鑰冭檻浼樻儬鍗�
-        BigDecimal tmpReceivedAmout = new BigDecimal(tmpReceivableAmount).subtract(new BigDecimal(discountPrice)).setScale(2, BigDecimal.ROUND_HALF_EVEN);
-        double receivedAmount = tmpReceivedAmout.subtract(new BigDecimal(couponPrice)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
+        double couponPrice = checkCouponUser(reqJson);
+        tmpReceivedAmout = tmpReceivedAmout.subtract(new BigDecimal(couponPrice)).setScale(2, BigDecimal.ROUND_HALF_EVEN);
+
+
+        double receivedAmount = tmpReceivedAmout.doubleValue();
         //鎵�鏈� 浼樻儬鎶樻墸璁$畻瀹屽悗锛屽鏋滄�婚噾棰濆皬浜庣瓑浜�0锛屽垯杩斿洖鎬绘墸娆句负0
         if (receivedAmount <= 0) {
             receivedAmount = 0.0;
         }
         paramOut.put("receivedAmount", receivedAmount);
+
         ResponseEntity<String> responseEntity = new ResponseEntity<>(paramOut.toJSONString(), HttpStatus.OK);
+        reqJson.putAll(paramOut);
         CommonCache.setValue("payFeePre" + paramOut.getString("oId"), reqJson.toJSONString(), 24 * 60 * 60);
         cmdDataFlowContext.setResponseEntity(responseEntity);
     }
 
-    private void checkCouponUser(JSONObject paramObj) {
+    /**
+     * 鑰冭檻璐︽埛鎶垫秷
+     *
+     * @param reqJson
+     */
+    private double judgeAccount(JSONObject reqJson) {
+        if (!reqJson.containsKey("deductionAmount")) {
+            reqJson.put("deductionAmount", 0.0);
+            return 0.0;
+        }
+
+        double deductionAmount = reqJson.getDouble("deductionAmount");
+        if (deductionAmount <= 0) {
+            reqJson.put("deductionAmount", 0.0);
+            return 0.0;
+        }
+
+        if (!reqJson.containsKey("selectUserAccount")) {
+            reqJson.put("deductionAmount", 0.0);
+            return 0.0;
+        }
+
+        JSONArray selectUserAccount = reqJson.getJSONArray("selectUserAccount");
+        if (selectUserAccount == null || selectUserAccount.size() < 1) {
+            reqJson.put("deductionAmount", 0.0);
+            return 0.0;
+        }
+        List<String> acctIds = new ArrayList<>();
+        for (int userAccountIndex = 0; userAccountIndex < selectUserAccount.size(); userAccountIndex++) {
+            acctIds.add(selectUserAccount.getJSONObject(userAccountIndex).getString("acctId"));
+        }
+
+        AccountDto accountDto = new AccountDto();
+        accountDto.setAcctIds(acctIds.toArray(new String[acctIds.size()]));
+        List<AccountDto> accountDtos = accountInnerServiceSMOImpl.queryAccounts(accountDto);
+
+        if (accountDtos == null || accountDtos.size() < 1) {
+            reqJson.put("deductionAmount", 0.0);
+            return 0.0;
+        }
+
+        BigDecimal totalAccountAmount = new BigDecimal(0);
+        for (AccountDto tmpAccountDto : accountDtos) {
+            totalAccountAmount = totalAccountAmount.add(new BigDecimal(tmpAccountDto.getAmount()));
+        }
+
+        deductionAmount = totalAccountAmount.subtract(new BigDecimal(deductionAmount)).doubleValue();
+        if (deductionAmount < 0) {
+            reqJson.put("deductionAmount", totalAccountAmount.doubleValue());
+            reqJson.put("selectUserAccount", BeanConvertUtil.beanCovertJSONArray(accountDtos));
+            return totalAccountAmount.doubleValue();
+        }
+        reqJson.put("deductionAmount", deductionAmount);
+        reqJson.put("selectUserAccount", BeanConvertUtil.beanCovertJSONArray(accountDtos));
+        return deductionAmount;
+    }
+
+    private double checkCouponUser(JSONObject paramObj) {
         JSONArray couponList = paramObj.getJSONArray("couponList");
         BigDecimal couponPrice = new BigDecimal(0.0);
         List<String> couponIds = new ArrayList<String>();
 
         if (couponList == null || couponList.size() < 1) {
-            paramObj.put("couponPrice", couponPrice);
-            return;
+            paramObj.put("couponPrice", couponPrice.doubleValue());
+            paramObj.put("couponUserDtos", new JSONArray()); //杩欓噷鑰冭檻绌�
+            return couponPrice.doubleValue();
         }
         for (int couponIndex = 0; couponIndex < couponList.size(); couponIndex++) {
             couponIds.add(couponList.getJSONObject(couponIndex).getString("couponId"));
@@ -162,21 +231,22 @@
         couponUserDto.setCouponIds(couponIds.toArray(new String[couponIds.size()]));
         List<CouponUserDto> couponUserDtos = couponUserV1InnerServiceSMOImpl.queryCouponUsers(couponUserDto);
         if (couponUserDtos == null || couponUserDtos.size() < 1) {
-            paramObj.put("couponPrice", couponPrice);
-            return;
+            paramObj.put("couponPrice", couponPrice.doubleValue());
+            return couponPrice.doubleValue();
         }
         for (CouponUserDto couponUser : couponUserDtos) {
             //涓嶈绠楀凡杩囨湡璐墿鍒搁噾棰�
             if (couponUser.getEndTime().compareTo(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_B)) >= 0) {
-                couponPrice.add(new BigDecimal(Double.parseDouble(couponUser.getActualPrice())));
+                couponPrice = couponPrice.add(new BigDecimal(Double.parseDouble(couponUser.getActualPrice())));
             }
         }
-        paramObj.put("couponPrice", couponPrice);
-        paramObj.put("couponUserDtos", couponUserDtos);
+        paramObj.put("couponPrice", couponPrice.doubleValue());
+        paramObj.put("couponUserDtos", BeanConvertUtil.beanCovertJSONArray(couponUserDtos));
+        return couponPrice.doubleValue();
     }
 
 
-    private void judgeDiscount(JSONObject paramObj) {
+    private double judgeDiscount(JSONObject paramObj) {
         FeeDetailDto feeDetailDto = new FeeDetailDto();
         feeDetailDto.setCommunityId(paramObj.getString("communityId"));
         feeDetailDto.setFeeId(paramObj.getString("feeId"));
@@ -197,13 +267,14 @@
 
         if (computeDiscountDtos == null || computeDiscountDtos.size() < 1) {
             paramObj.put("discountPrice", 0.0);
-            return;
+            return 0.0;
         }
         BigDecimal discountPrice = new BigDecimal(0);
         for (ComputeDiscountDto computeDiscountDto : computeDiscountDtos) {
             discountPrice = discountPrice.add(new BigDecimal(computeDiscountDto.getDiscountPrice()));
         }
-        paramObj.put("discountPrice", discountPrice);
-        paramObj.put("computeDiscountDtos", computeDiscountDtos);
+        paramObj.put("discountPrice", discountPrice.doubleValue());
+        paramObj.put("computeDiscountDtos", BeanConvertUtil.beanCovertJSONArray(computeDiscountDtos));
+        return discountPrice.doubleValue();
     }
 }
diff --git a/service-job/src/main/java/com/java110/job/adapt/fee/ReturnPayFeeMoneyAdapt.java b/service-job/src/main/java/com/java110/job/adapt/fee/ReturnPayFeeMoneyAdapt.java
new file mode 100644
index 0000000..2497389
--- /dev/null
+++ b/service-job/src/main/java/com/java110/job/adapt/fee/ReturnPayFeeMoneyAdapt.java
@@ -0,0 +1,214 @@
+package com.java110.job.adapt.fee;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.client.FtpUploadTemplate;
+import com.java110.core.client.OssUploadTemplate;
+import com.java110.dto.file.FileDto;
+import com.java110.dto.onlinePay.OnlinePayDto;
+import com.java110.dto.smallWeChat.SmallWeChatDto;
+import com.java110.entity.order.Business;
+import com.java110.intf.acct.IOnlinePayV1InnerServiceSMO;
+import com.java110.intf.fee.IReturnPayFeeInnerServiceSMO;
+import com.java110.intf.order.IOrderInnerServiceSMO;
+import com.java110.intf.store.ISmallWeChatInnerServiceSMO;
+import com.java110.job.adapt.DatabusAdaptImpl;
+import com.java110.po.onlinePay.OnlinePayPo;
+import com.java110.utils.cache.MappingCache;
+import com.java110.utils.constant.WechatConstant;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.OSSUtil;
+import com.java110.utils.util.PayUtil;
+import com.java110.utils.util.StringUtil;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.ssl.SSLContexts;
+import org.apache.http.util.EntityUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+import javax.net.ssl.SSLContext;
+import java.io.ByteArrayInputStream;
+import java.security.KeyStore;
+import java.util.*;
+
+/**
+ * 閫�璐瑰鏍搁�氳繃鍚� 閫氱煡 寰俊鏀粯骞冲彴閫�娆惧鐞�
+ *
+ * @author fqz
+ * @Date 2021-08-19 10:12
+ */
+@Component(value = "returnPayFeeMoneyAdapt")
+public class ReturnPayFeeMoneyAdapt extends DatabusAdaptImpl {
+
+    @Autowired
+    private IReturnPayFeeInnerServiceSMO returnPayFeeInnerServiceSMOImpl;
+
+    @Autowired
+    private IOrderInnerServiceSMO orderInnerServiceSMOImpl;
+
+    @Autowired
+    private IOnlinePayV1InnerServiceSMO onlinePayV1InnerServiceSMOImpl;
+
+
+    @Autowired
+    private ISmallWeChatInnerServiceSMO smallWeChatInnerServiceSMOImpl;
+
+
+    @Autowired
+    private RestTemplate outRestTemplate;
+
+    public static final String wechatReturnUrl = "https://api.mch.weixin.qq.com/secapi/pay/refund";
+
+    private static Logger logger = LoggerFactory.getLogger(ReturnPayFeeMoneyAdapt.class);
+
+    @Autowired
+    private FtpUploadTemplate ftpUploadTemplate;
+
+    @Autowired
+    private OssUploadTemplate ossUploadTemplate;
+
+
+    @Override
+    public void execute(Business business, List<Business> businesses) {
+        JSONObject data = business.getData();
+        OnlinePayPo oaWorkflowDataPo = BeanConvertUtil.covertBean(data, OnlinePayPo.class);
+
+        try {
+            doPayFeeMoney(oaWorkflowDataPo);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
+    /**
+     * 閫氱煡閫�娆�
+     *
+     * @param oaWorkflowDataPo
+     */
+    public void doPayFeeMoney(OnlinePayPo oaWorkflowDataPo) throws Exception {
+
+        //鏌ヨ灏忓尯淇℃伅
+        OnlinePayDto onlinePayDto = new OnlinePayDto();
+        onlinePayDto.setPayId(oaWorkflowDataPo.getPayId());
+        onlinePayDto.setState(OnlinePayDto.STATE_WT);
+        List<OnlinePayDto> onlinePayDtos = onlinePayV1InnerServiceSMOImpl.queryOnlinePays(onlinePayDto);
+
+        if (onlinePayDtos == null || onlinePayDtos.size() < 1) {
+            return;
+        }
+
+        String payPassword = "";
+        String certData = "";
+
+        SmallWeChatDto smallWeChatDto = new SmallWeChatDto();
+        smallWeChatDto.setMchId(onlinePayDtos.get(0).getMchId());
+        smallWeChatDto.setAppId(onlinePayDtos.get(0).getAppId());
+        List<SmallWeChatDto> smallWeChatDtos = smallWeChatInnerServiceSMOImpl.querySmallWeChats(smallWeChatDto);
+        if (smallWeChatDto == null || smallWeChatDtos.size() <= 0) {
+            payPassword = MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, "key");
+            certData = MappingCache.getRemark(WechatConstant.WECHAT_DOMAIN, "cert");
+        } else {
+            payPassword = smallWeChatDtos.get(0).getPayPassword();
+            certData = smallWeChatDtos.get(0).getRemarks();
+
+        }
+
+        SortedMap<String, String> parameters = new TreeMap<String, String>();
+        parameters.put("appid", onlinePayDtos.get(0).getAppId());//appid
+        parameters.put("mch_id", onlinePayDtos.get(0).getMchId());//鍟嗘埛鍙�
+        parameters.put("nonce_str", PayUtil.makeUUID(32));//闅忔満鏁�
+        parameters.put("out_trade_no", onlinePayDtos.get(0).getMchId());//鍟嗘埛璁㈠崟鍙�
+        parameters.put("out_refund_no", onlinePayDtos.get(0).getPayId());//鎴戜滑鑷繁璁惧畾鐨勯��娆剧敵璇峰彿锛岀害鏉熶负UK
+        parameters.put("total_fee", PayUtil.moneyToIntegerStr(Double.parseDouble(onlinePayDtos.get(0).getTotalFee())));//璁㈠崟閲戦 鍗曚綅涓哄垎锛侊紒锛佽繖閲岀◢寰敞鎰忎竴涓�
+        parameters.put("refund_fee", PayUtil.moneyToIntegerStr(Double.parseDouble(onlinePayDtos.get(0).getRefundFee())));//閫�娆鹃噾棰� 鍗曚綅涓哄垎锛侊紒锛�
+        parameters.put("sign", PayUtil.createSign(parameters, payPassword));
+        String xmlData = PayUtil.mapToXml(parameters);
+
+
+        KeyStore keyStore = KeyStore.getInstance("PKCS12");
+        ByteArrayInputStream inputStream = new ByteArrayInputStream(getPkcs12(certData));
+        try {
+            //杩欓噷鍐欏瘑鐮�..榛樿鏄綘鐨凪CHID
+            keyStore.load(inputStream, onlinePayDtos.get(0).getMchId().toCharArray());
+        } finally {
+            inputStream.close();
+        }
+
+        SSLContext sslcontext = SSLContexts.custom()
+                //杩欓噷涔熸槸鍐欏瘑鐮佺殑
+                .loadKeyMaterial(keyStore, onlinePayDtos.get(0).getMchId().toCharArray())
+                .build();
+        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
+                sslcontext,
+                SSLConnectionSocketFactory.getDefaultHostnameVerifier());
+        CloseableHttpClient httpclient = HttpClients.custom()
+                .setSSLSocketFactory(sslsf)
+                .build();
+        String jsonStr = "";
+        try {
+            HttpPost httpost = new HttpPost(wechatReturnUrl);
+            httpost.setEntity(new StringEntity(xmlData, "UTF-8"));
+            CloseableHttpResponse response = httpclient.execute(httpost);
+            try {
+                HttpEntity entity = response.getEntity();
+                //鎺ュ彈鍒拌繑鍥炰俊鎭�
+                jsonStr = EntityUtils.toString(response.getEntity(), "UTF-8");
+                EntityUtils.consume(entity);
+            } finally {
+                response.close();
+            }
+        } finally {
+            httpclient.close();
+        }
+
+        Map<String, String> resMap = PayUtil.xmlStrToMap(jsonStr);
+
+        if ("SUCCESS".equals(resMap.get("return_code")) && "SUCCESS".equals(resMap.get("result_code"))) {
+            doUpdateOnlinePay(onlinePayDtos.get(0).getOrderId(), OnlinePayDto.STATE_CT, "閫�娆惧畬鎴�");
+        } else {
+            doUpdateOnlinePay(onlinePayDtos.get(0).getOrderId(), OnlinePayDto.STATE_FT, resMap.get("return_msg"));
+        }
+
+    }
+
+    private void doUpdateOnlinePay(String orderId, String state, String message) {
+        OnlinePayPo onlinePayPo = new OnlinePayPo();
+        onlinePayPo.setMessage(message.length() > 1000 ? message.substring(0, 1000) : message);
+        onlinePayPo.setOrderId(orderId);
+        onlinePayPo.setState(state);
+        onlinePayV1InnerServiceSMOImpl.updateOnlinePay(onlinePayPo);
+    }
+
+    private byte[] getPkcs12(String fileName) {
+        List<FileDto> fileDtos = new ArrayList<>();
+
+        byte[] context = null;
+        String ftpPath = MappingCache.getValue(FtpUploadTemplate.FTP_DOMAIN, FtpUploadTemplate.FTP_PATH);
+
+        String ossSwitch = MappingCache.getValue(OSSUtil.DOMAIN, OSSUtil.OSS_SWITCH);
+        if (StringUtil.isEmpty(ossSwitch) || !OSSUtil.OSS_SWITCH_OSS.equals(ossSwitch)) {
+            String ftpServer = MappingCache.getValue(FtpUploadTemplate.FTP_DOMAIN, FtpUploadTemplate.FTP_SERVER);
+            int ftpPort = Integer.parseInt(MappingCache.getValue(FtpUploadTemplate.FTP_DOMAIN, FtpUploadTemplate.FTP_PORT));
+            String ftpUserName = MappingCache.getValue(FtpUploadTemplate.FTP_DOMAIN, FtpUploadTemplate.FTP_USERNAME);
+            String ftpUserPassword = MappingCache.getValue(FtpUploadTemplate.FTP_DOMAIN, FtpUploadTemplate.FTP_USERPASSWORD);
+            context = ftpUploadTemplate.downFileByte(ftpPath, fileName, ftpServer,
+                    ftpPort, ftpUserName,
+                    ftpUserPassword);
+        } else {
+            context = ossUploadTemplate.downFileByte(ftpPath, fileName, "",
+                    0, "",
+                    "");
+        }
+
+        return context;
+    }
+}
diff --git a/service-job/src/main/java/com/java110/job/task/wechat/WeChatPushMessageTemplate.java b/service-job/src/main/java/com/java110/job/task/wechat/WeChatPushMessageTemplate.java
index ed37784..1cb24f0 100755
--- a/service-job/src/main/java/com/java110/job/task/wechat/WeChatPushMessageTemplate.java
+++ b/service-job/src/main/java/com/java110/job/task/wechat/WeChatPushMessageTemplate.java
@@ -337,7 +337,7 @@
                 data.setKeyword3(new Content(StringUtil.delHtmlTag(noticeDto.getContext())));
                 data.setRemark(new Content("濡傛湁鐤戦棶璇疯仈绯荤浉鍏崇墿涓氫汉鍛�"));
                 templateMessage.setData(data);
-                templateMessage.setUrl(wechatUrl + noticeDto.getNoticeId() + "&wAppId=" + weChatDto.getAppId());
+                templateMessage.setUrl(wechatUrl + noticeDto.getNoticeId() + "&wAppId=" + weChatDto.getAppId()+"&communityId="+noticeDto.getCommunityId());
                 logger.info("鍙戦�佹ā鏉挎秷鎭唴瀹�:{}", JSON.toJSONString(templateMessage));
                 responseEntity = outRestTemplate.postForEntity(sendTemplate + accessToken, JSON.toJSONString(templateMessage), String.class);
                 logger.info("寰俊妯℃澘杩斿洖鍐呭:{}", responseEntity);
@@ -412,9 +412,9 @@
                 templateMessage.setData(data);
                 if (!StringUtil.isEmpty(wechatUrl)) {
                     if (miniprogram == null) {
-                        templateMessage.setUrl(wechatUrl + "/#/pages/notice/detail/detail?noticeId=" + noticeDto.getNoticeId() + "&wAppId=" + weChatDto.getAppId());
+                        templateMessage.setUrl(wechatUrl + "/#/pages/notice/detail/detail?noticeId=" + noticeDto.getNoticeId() + "&wAppId=" + weChatDto.getAppId()+"&communityId="+noticeDto.getCommunityId());
                     } else {
-                        miniprogram.setPagepath("/pages/notice/detail/detail?noticeId=" + noticeDto.getNoticeId() + "&wAppId=" + weChatDto.getAppId());
+                        miniprogram.setPagepath("/pages/notice/detail/detail?noticeId=" + noticeDto.getNoticeId() + "&wAppId=" + weChatDto.getAppId()+"&communityId="+noticeDto.getCommunityId());
                         templateMessage.setMiniprogram(miniprogram);
                     }
                 }
diff --git a/service-store/src/main/java/com/java110/store/bmo/storeAds/impl/GetStoreAdsBMOImpl.java b/service-store/src/main/java/com/java110/store/bmo/storeAds/impl/GetStoreAdsBMOImpl.java
index 308877c..e618c4b 100644
--- a/service-store/src/main/java/com/java110/store/bmo/storeAds/impl/GetStoreAdsBMOImpl.java
+++ b/service-store/src/main/java/com/java110/store/bmo/storeAds/impl/GetStoreAdsBMOImpl.java
@@ -48,7 +48,7 @@
         String imgUrl = MappingCache.getValue("IMG_PATH");
         imgUrl += (!StringUtil.isEmpty(imgUrl) && imgUrl.endsWith("/") ? "" : "/");
         for (StoreAdsDto tmpStoreAdsDto : storeAdsDtos) {
-            tmpStoreAdsDto.setUrl(imgUrl + tmpStoreAdsDto.getUrl() + "&communityId=-1");
+            tmpStoreAdsDto.setUrl(imgUrl + tmpStoreAdsDto.getUrl());
         }
     }
 
diff --git a/service-store/src/main/java/com/java110/store/listener/resourceStoreUseRecord/AbstractResourceStoreUseRecordBusinessServiceDataFlowListener.java b/service-store/src/main/java/com/java110/store/listener/resourceStoreUseRecord/AbstractResourceStoreUseRecordBusinessServiceDataFlowListener.java
index 1cc0ebf..09179da 100644
--- a/service-store/src/main/java/com/java110/store/listener/resourceStoreUseRecord/AbstractResourceStoreUseRecordBusinessServiceDataFlowListener.java
+++ b/service-store/src/main/java/com/java110/store/listener/resourceStoreUseRecord/AbstractResourceStoreUseRecordBusinessServiceDataFlowListener.java
@@ -49,6 +49,7 @@
         businessResourceStoreUseRecordInfo.put("operate", businessResourceStoreUseRecordInfo.get("operate"));
         businessResourceStoreUseRecordInfo.put("communityId", businessResourceStoreUseRecordInfo.get("community_id"));
         businessResourceStoreUseRecordInfo.put("resourceStoreName", businessResourceStoreUseRecordInfo.get("resource_store_name"));
+        businessResourceStoreUseRecordInfo.put("state", businessResourceStoreUseRecordInfo.get("state"));
         businessResourceStoreUseRecordInfo.remove("bId");
         businessResourceStoreUseRecordInfo.put("statusCd", statusCd);
     }
@@ -82,6 +83,7 @@
         currentResourceStoreUseRecordInfo.put("operate", currentResourceStoreUseRecordInfo.get("operate"));
         currentResourceStoreUseRecordInfo.put("communityId", currentResourceStoreUseRecordInfo.get("community_id"));
         currentResourceStoreUseRecordInfo.put("resourceStoreName", currentResourceStoreUseRecordInfo.get("resource_store_name"));
+        currentResourceStoreUseRecordInfo.put("state", currentResourceStoreUseRecordInfo.get("state"));
         currentResourceStoreUseRecordInfo.put("operate", StatusConstant.OPERATE_DEL);
         getResourceStoreUseRecordServiceDaoImpl().saveBusinessResourceStoreUseRecordInfo(currentResourceStoreUseRecordInfo);
         for (Object key : currentResourceStoreUseRecordInfo.keySet()) {
diff --git a/service-user/src/main/java/com/java110/user/dao/impl/OwnerCarV1ServiceDaoImpl.java b/service-user/src/main/java/com/java110/user/dao/impl/OwnerCarV1ServiceDaoImpl.java
index c984aa2..94a8e9a 100644
--- a/service-user/src/main/java/com/java110/user/dao/impl/OwnerCarV1ServiceDaoImpl.java
+++ b/service-user/src/main/java/com/java110/user/dao/impl/OwnerCarV1ServiceDaoImpl.java
@@ -15,16 +15,12 @@
  */
 package com.java110.user.dao.impl;
 
-import com.alibaba.fastjson.JSONObject;
-import com.java110.utils.constant.ResponseConstant;
 import com.java110.utils.exception.DAOException;
-import com.java110.utils.util.DateUtil;
 import com.java110.core.base.dao.BaseServiceDao;
 import com.java110.user.dao.IOwnerCarV1ServiceDao;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.Map;
@@ -42,20 +38,17 @@
 
     private static Logger logger = LoggerFactory.getLogger(OwnerCarV1ServiceDaoImpl.class);
 
-
-
-
-
     /**
      * 淇濆瓨杞﹁締淇℃伅 鍒� instance
-     * @param info   bId 淇℃伅
+     *
+     * @param info bId 淇℃伅
      * @throws DAOException DAO寮傚父
      */
     @Override
     public int saveOwnerCarInfo(Map info) throws DAOException {
-        logger.debug("淇濆瓨 saveOwnerCarInfo 鍏ュ弬 info : {}",info);
+        logger.debug("淇濆瓨 saveOwnerCarInfo 鍏ュ弬 info : {}", info);
 
-        int saveFlag = sqlSessionTemplate.insert("ownerCarV1ServiceDaoImpl.saveOwnerCarInfo",info);
+        int saveFlag = sqlSessionTemplate.insert("ownerCarV1ServiceDaoImpl.saveOwnerCarInfo", info);
 
         return saveFlag;
     }
@@ -63,15 +56,16 @@
 
     /**
      * 鏌ヨ杞﹁締淇℃伅锛坕nstance锛�
+     *
      * @param info bId 淇℃伅
      * @return List<Map>
      * @throws DAOException DAO寮傚父
      */
     @Override
     public List<Map> getOwnerCarInfo(Map info) throws DAOException {
-        logger.debug("鏌ヨ getOwnerCarInfo 鍏ュ弬 info : {}",info);
+        logger.debug("鏌ヨ getOwnerCarInfo 鍏ュ弬 info : {}", info);
 
-        List<Map> businessOwnerCarInfos = sqlSessionTemplate.selectList("ownerCarV1ServiceDaoImpl.getOwnerCarInfo",info);
+        List<Map> businessOwnerCarInfos = sqlSessionTemplate.selectList("ownerCarV1ServiceDaoImpl.getOwnerCarInfo", info);
 
         return businessOwnerCarInfos;
     }
@@ -79,26 +73,28 @@
 
     /**
      * 淇敼杞﹁締淇℃伅
+     *
      * @param info 淇敼淇℃伅
      * @throws DAOException DAO寮傚父
      */
     @Override
     public int updateOwnerCarInfo(Map info) throws DAOException {
-        logger.debug("淇敼 updateOwnerCarInfo 鍏ュ弬 info : {}",info);
+        logger.debug("淇敼 updateOwnerCarInfo 鍏ュ弬 info : {}", info);
 
-        int saveFlag = sqlSessionTemplate.update("ownerCarV1ServiceDaoImpl.updateOwnerCarInfo",info);
+        int saveFlag = sqlSessionTemplate.update("ownerCarV1ServiceDaoImpl.updateOwnerCarInfo", info);
 
         return saveFlag;
     }
 
-     /**
+    /**
      * 鏌ヨ杞﹁締鏁伴噺
+     *
      * @param info 杞﹁締淇℃伅
      * @return 杞﹁締鏁伴噺
      */
     @Override
     public int queryOwnerCarsCount(Map info) {
-        logger.debug("鏌ヨ queryOwnerCarsCount 鍏ュ弬 info : {}",info);
+        logger.debug("鏌ヨ queryOwnerCarsCount 鍏ュ弬 info : {}", info);
 
         List<Map> businessOwnerCarInfos = sqlSessionTemplate.selectList("ownerCarV1ServiceDaoImpl.queryOwnerCarsCount", info);
         if (businessOwnerCarInfos.size() < 1) {

--
Gitblit v1.8.0