java110 лет назад: 5
Родитель
Сommit
dd74a90bcb
24 измененных файлов с 1191 добавлено и 30 удалено
  1. 24 13
      java110-bean/src/main/java/com/java110/dto/fee/FeeAttrDto.java
  2. 2 0
      java110-bean/src/main/java/com/java110/dto/fee/FeeConfigDto.java
  3. 3 0
      java110-bean/src/main/java/com/java110/dto/fee/FeeDto.java
  4. 19 0
      java110-bean/src/main/java/com/java110/dto/repair/RepairDto.java
  5. 2 0
      java110-bean/src/main/java/com/java110/dto/repair/RepairUserDto.java
  6. 42 0
      java110-core/src/main/java/com/java110/core/smo/community/IRepairInnerServiceSMO.java
  7. 232 0
      java110-db/src/main/resources/mapper/community/RepairServiceDaoImplMapper.xml
  8. 1 1
      java110-db/src/main/resources/mapper/community/RepairUserServiceDaoImplMapper.xml
  9. 5 0
      java110-utils/src/main/java/com/java110/utils/constant/FeeTypeConstant.java
  10. 10 0
      java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeOwnerRepairConstant.java
  11. 11 0
      java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeRepairDispatchStepConstant.java
  12. 1 1
      service-api/src/main/java/com/java110/api/bmo/community/ICommunityBMO.java
  13. 6 6
      service-api/src/main/java/com/java110/api/bmo/community/impl/CommunityBMOImpl.java
  14. 1 1
      service-api/src/main/java/com/java110/api/listener/community/SaveCommunityListener.java
  15. 120 0
      service-api/src/main/java/com/java110/api/listener/ownerRepair/AppraiseRepairListener.java
  16. 119 0
      service-api/src/main/java/com/java110/api/listener/ownerRepair/ListStaffFinishRepairsListener.java
  17. 119 0
      service-api/src/main/java/com/java110/api/listener/ownerRepair/ListStaffRepairsListener.java
  18. 168 7
      service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairDispatchListener.java
  19. 187 0
      service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairFinishListener.java
  20. 1 1
      service-api/src/main/java/com/java110/api/listener/store/ListStoresListener.java
  21. 37 0
      service-community/src/main/java/com/java110/community/dao/IRepairServiceDao.java
  22. 39 0
      service-community/src/main/java/com/java110/community/dao/impl/RepairServiceDaoImpl.java
  23. 41 0
      service-community/src/main/java/com/java110/community/smo/impl/RepairInnerServiceSMOImpl.java
  24. 1 0
      service-front/src/main/java/com/java110/front/smo/common/impl/CommonPostSMOImpl.java

+ 24 - 13
java110-bean/src/main/java/com/java110/dto/fee/FeeAttrDto.java

@@ -15,11 +15,13 @@ import java.util.Date;
  **/
 public class FeeAttrDto extends PageDto implements Serializable {
 
+    public static final String SPEC_CD_REPAIR = "390001"; // 报修单ID
+
     private String attrId;
-private String specCd;
-private String communityId;
-private String feeId;
-private String value;
+    private String specCd;
+    private String communityId;
+    private String feeId;
+    private String value;
 
 
     private Date createTime;
@@ -30,31 +32,40 @@ private String value;
     public String getAttrId() {
         return attrId;
     }
-public void setAttrId(String attrId) {
+
+    public void setAttrId(String attrId) {
         this.attrId = attrId;
     }
-public String getSpecCd() {
+
+    public String getSpecCd() {
         return specCd;
     }
-public void setSpecCd(String specCd) {
+
+    public void setSpecCd(String specCd) {
         this.specCd = specCd;
     }
-public String getCommunityId() {
+
+    public String getCommunityId() {
         return communityId;
     }
-public void setCommunityId(String communityId) {
+
+    public void setCommunityId(String communityId) {
         this.communityId = communityId;
     }
-public String getFeeId() {
+
+    public String getFeeId() {
         return feeId;
     }
-public void setFeeId(String feeId) {
+
+    public void setFeeId(String feeId) {
         this.feeId = feeId;
     }
-public String getValue() {
+
+    public String getValue() {
         return value;
     }
-public void setValue(String value) {
+
+    public void setValue(String value) {
         this.value = value;
     }
 

+ 2 - 0
java110-bean/src/main/java/com/java110/dto/fee/FeeConfigDto.java

@@ -21,6 +21,8 @@ public class FeeConfigDto extends PageDto implements Serializable {
     public static final String BILL_TYPE_EVERY = "004";// 实时
     public static final String BILL_TYPE_ONCE_MONTH = "005";// 一次性按月
 
+    public static final String DEFAULT_FEE_CONFIG = "T";
+
 
     private String feeTypeCd;
     private String computingFormula;

+ 3 - 0
java110-bean/src/main/java/com/java110/dto/fee/FeeDto.java

@@ -16,10 +16,13 @@ import java.util.Date;
 public class FeeDto extends PageDto implements Serializable {
 
     public static final String STATE_FINISH = "2009001"; // 收费结束
+    public static final String STATE_DOING = "2008001"; // 收费中
 
     public static final String PAYER_OBJ_TYPE_ROOM = "3333"; //房屋 6666 是车位
     public static final String PAYER_OBJ_TYPE_PARKING_SPACE = "6666";//是车位
 
+    public static final String FEE_FLAG_ONCE = "2006012";
+
     private String amount;
     private String incomeObjId;
     private String feeTypeCd;

+ 19 - 0
java110-bean/src/main/java/com/java110/dto/repair/RepairDto.java

@@ -59,6 +59,9 @@ public class RepairDto extends PageDto implements Serializable {
     private String repairDispatchContext;
     private String repairDispatchStateName;
 
+    private String preStaffId;
+    private String preStaffName;
+
     private Date createTime;
 
     private String statusCd = "0";
@@ -217,4 +220,20 @@ public class RepairDto extends PageDto implements Serializable {
     public void setRepairWay(String repairWay) {
         this.repairWay = repairWay;
     }
+
+    public String getPreStaffId() {
+        return preStaffId;
+    }
+
+    public void setPreStaffId(String preStaffId) {
+        this.preStaffId = preStaffId;
+    }
+
+    public String getPreStaffName() {
+        return preStaffName;
+    }
+
+    public void setPreStaffName(String preStaffName) {
+        this.preStaffName = preStaffName;
+    }
 }

+ 2 - 0
java110-bean/src/main/java/com/java110/dto/repair/RepairUserDto.java

@@ -20,6 +20,8 @@ public class RepairUserDto extends PageDto implements Serializable {
     //审核用户
     public static final String REPAIR_EVENT_AUDIT_USER = "auditUser";
 
+    public static final String REPAIR_EVENT_PAY_USER = "payUser";
+
     public  static final String STATE_DOING = "10001";// 处理中
     public  static final String STATE_CLOSE = "10002";// 结单
     public  static final String STATE_BACK = "10003";// 退单

+ 42 - 0
java110-core/src/main/java/com/java110/core/smo/community/IRepairInnerServiceSMO.java

@@ -39,4 +39,46 @@ public interface IRepairInnerServiceSMO {
      */
     @RequestMapping(value = "/queryRepairsCount", method = RequestMethod.POST)
     int queryRepairsCount(@RequestBody RepairDto repairDto);
+
+
+
+    /**
+     * <p>查询小区楼信息</p>
+     *
+     *
+     * @param repairDto 数据对象分享
+     * @return RepairDto 对象数据
+     */
+    @RequestMapping(value = "/queryStaffRepairs", method = RequestMethod.POST)
+    List<RepairDto> queryStaffRepairs(@RequestBody RepairDto repairDto);
+
+    /**
+     * 查询<p>小区楼</p>总记录数
+     *
+     * @param repairDto 数据对象分享
+     * @return 小区下的小区楼记录数
+     */
+    @RequestMapping(value = "/queryStaffRepairsCount", method = RequestMethod.POST)
+    int queryStaffRepairsCount(@RequestBody RepairDto repairDto);
+
+
+
+    /**
+     * <p>查询小区楼信息</p>
+     *
+     *
+     * @param repairDto 数据对象分享
+     * @return RepairDto 对象数据
+     */
+    @RequestMapping(value = "/queryStaffFinishRepairs", method = RequestMethod.POST)
+    List<RepairDto> queryStaffFinishRepairs(@RequestBody RepairDto repairDto);
+
+    /**
+     * 查询<p>小区楼</p>总记录数
+     *
+     * @param repairDto 数据对象分享
+     * @return 小区下的小区楼记录数
+     */
+    @RequestMapping(value = "/queryStaffFinishRepairsCount", method = RequestMethod.POST)
+    int queryStaffFinishRepairsCount(@RequestBody RepairDto repairDto);
 }

+ 232 - 0
java110-db/src/main/resources/mapper/community/RepairServiceDaoImplMapper.xml

@@ -274,4 +274,236 @@
 
     </select>
 
+    <!-- 查询报修信息信息 add by wuxw 2018-07-03 -->
+    <select id="getStaffRepairInfo" parameterType="Map" resultType="Map">
+        select distinct t.repair_name,t.repair_name repairName,t.appointment_time,t.appointment_time
+        appointmentTime,t.repair_type,t.repair_type repairType,t.context,t.repair_id,t.repair_id
+        repairId,t.tel,t.status_cd,t.status_cd statusCd,t.state,t.community_id,t.community_id communityId,t.b_id,t.b_id
+        bId,t.room_id,t.room_id roomId,ru.pre_staff_id preStaffId,ru.pre_staff_name preStaffName,
+        d.name stateName,
+        rs.repair_type_name repairTypeName,rs.repair_way repairWay
+        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_user ru on t.repair_id = ru.repair_id and t.status_cd = 0
+        where 1 =1
+        and ru.end_time is null
+        and ru.state = '10001'
+        and ru.staff_id = #{staffId}
+        <if test="repairName !=null and repairName != ''">
+            and t.repair_name= #{repairName}
+        </if>
+        <if test="appointmentTime !=null ">
+            and t.appointment_time= #{appointmentTime}
+        </if>
+        <if test="repairType !=null and repairType != ''">
+            and t.repair_type= #{repairType}
+        </if>
+        <if test="context !=null and context != ''">
+            and t.context= #{context}
+        </if>
+        <if test="repairId !=null and repairId != ''">
+            and t.repair_id= #{repairId}
+        </if>
+        <if test="tel !=null and tel != ''">
+            and t.tel= #{tel}
+        </if>
+        <if test="statusCd !=null and statusCd != ''">
+            and t.status_cd= #{statusCd}
+        </if>
+        <if test="state !=null and state != ''">
+            and t.state= #{state}
+        </if>
+        <if test="communityId !=null and communityId != ''">
+            and t.community_id= #{communityId}
+        </if>
+        <if test="bId !=null and bId != ''">
+            and t.b_id= #{bId}
+        </if>
+        <if test="roomId !=null and roomId != ''">
+            and t.room_id= #{roomId}
+        </if>
+        <if test="roomIds !=null ">
+            and t.room_id in
+            <foreach collection="roomIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </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 -->
+    <select id="queryStaffRepairsCount" parameterType="Map" resultType="Map">
+        select count(1) count
+        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_user ru on t.repair_id = ru.repair_id and t.status_cd = 0
+        where 1 =1
+        and ru.end_time is null
+        and ru.state = '10001'
+        and ru.staff_id = #{staffId}
+        <if test="repairName !=null and repairName != ''">
+            and t.repair_name= #{repairName}
+        </if>
+        <if test="appointmentTime !=null ">
+            and t.appointment_time= #{appointmentTime}
+        </if>
+        <if test="repairType !=null and repairType != ''">
+            and t.repair_type= #{repairType}
+        </if>
+        <if test="context !=null and context != ''">
+            and t.context= #{context}
+        </if>
+        <if test="repairId !=null and repairId != ''">
+            and t.repair_id= #{repairId}
+        </if>
+        <if test="tel !=null and tel != ''">
+            and t.tel= #{tel}
+        </if>
+        <if test="statusCd !=null and statusCd != ''">
+            and t.status_cd= #{statusCd}
+        </if>
+        <if test="state !=null and state != ''">
+            and t.state= #{state}
+        </if>
+        <if test="communityId !=null and communityId != ''">
+            and t.community_id= #{communityId}
+        </if>
+        <if test="bId !=null and bId != ''">
+            and t.b_id= #{bId}
+        </if>
+        <if test="roomId !=null and roomId != ''">
+            and t.room_id= #{roomId}
+        </if>
+        <if test="roomIds !=null ">
+            and t.room_id in
+            <foreach collection="roomIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+
+
+    </select>
+
+
+
+    <!-- 查询报修信息信息 add by wuxw 2018-07-03 -->
+    <select id="getStaffFinishRepairInfo" parameterType="Map" resultType="Map">
+        select t.repair_name,t.repair_name repairName,t.appointment_time,t.appointment_time
+        appointmentTime,t.repair_type,t.repair_type repairType,t.context,t.repair_id,t.repair_id
+        repairId,t.tel,t.status_cd,t.status_cd statusCd,t.state,t.community_id,t.community_id communityId,t.b_id,t.b_id
+        bId,t.room_id,t.room_id roomId,
+        d.name stateName,
+        rs.repair_type_name repairTypeName,rs.repair_way repairWay
+        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_user ru on t.repair_id = ru.repair_id and t.status_cd = 0
+        where 1 =1
+        and ru.state in ('10002','10003','10004','10005')
+        and ru.staff_id = #{staffId}
+        <if test="repairName !=null and repairName != ''">
+            and t.repair_name= #{repairName}
+        </if>
+        <if test="appointmentTime !=null ">
+            and t.appointment_time= #{appointmentTime}
+        </if>
+        <if test="repairType !=null and repairType != ''">
+            and t.repair_type= #{repairType}
+        </if>
+        <if test="context !=null and context != ''">
+            and t.context= #{context}
+        </if>
+        <if test="repairId !=null and repairId != ''">
+            and t.repair_id= #{repairId}
+        </if>
+        <if test="tel !=null and tel != ''">
+            and t.tel= #{tel}
+        </if>
+        <if test="statusCd !=null and statusCd != ''">
+            and t.status_cd= #{statusCd}
+        </if>
+        <if test="state !=null and state != ''">
+            and t.state= #{state}
+        </if>
+        <if test="communityId !=null and communityId != ''">
+            and t.community_id= #{communityId}
+        </if>
+        <if test="bId !=null and bId != ''">
+            and t.b_id= #{bId}
+        </if>
+        <if test="roomId !=null and roomId != ''">
+            and t.room_id= #{roomId}
+        </if>
+        <if test="roomIds !=null ">
+            and t.room_id in
+            <foreach collection="roomIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </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 -->
+    <select id="queryStaffFinishRepairsCount" parameterType="Map" resultType="Map">
+        select count(1) count
+        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_user ru on t.repair_id = ru.repair_id and t.status_cd = 0
+        where 1 =1
+        and ru.state in ('10002','10003','10004','10005')
+        and ru.staff_id = #{staffId}
+        <if test="repairName !=null and repairName != ''">
+            and t.repair_name= #{repairName}
+        </if>
+        <if test="appointmentTime !=null ">
+            and t.appointment_time= #{appointmentTime}
+        </if>
+        <if test="repairType !=null and repairType != ''">
+            and t.repair_type= #{repairType}
+        </if>
+        <if test="context !=null and context != ''">
+            and t.context= #{context}
+        </if>
+        <if test="repairId !=null and repairId != ''">
+            and t.repair_id= #{repairId}
+        </if>
+        <if test="tel !=null and tel != ''">
+            and t.tel= #{tel}
+        </if>
+        <if test="statusCd !=null and statusCd != ''">
+            and t.status_cd= #{statusCd}
+        </if>
+        <if test="state !=null and state != ''">
+            and t.state= #{state}
+        </if>
+        <if test="communityId !=null and communityId != ''">
+            and t.community_id= #{communityId}
+        </if>
+        <if test="bId !=null and bId != ''">
+            and t.b_id= #{bId}
+        </if>
+        <if test="roomId !=null and roomId != ''">
+            and t.room_id= #{roomId}
+        </if>
+        <if test="roomIds !=null ">
+            and t.room_id in
+            <foreach collection="roomIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+
+
+    </select>
+
 </mapper>

+ 1 - 1
java110-db/src/main/resources/mapper/community/RepairUserServiceDaoImplMapper.xml

@@ -133,7 +133,7 @@
         <if test="preStaffId !=null and preStaffId != ''">
             and t.pre_staff_id= #{preStaffId}
         </if>
-        order by t.create_time desc
+        order by t.create_time
         <if test="page != -1 and page != null ">
             limit #{page}, #{row}
         </if>

+ 5 - 0
java110-utils/src/main/java/com/java110/utils/constant/FeeTypeConstant.java

@@ -27,6 +27,11 @@ public class FeeTypeConstant {
      */
     public static final String FEE_TYPE_CAR = "888800010008";
 
+    /**
+     * 保修费费
+     */
+    public static final String FEE_TYPE_REPAIR = "888800010012";
+
 
 
 

+ 10 - 0
java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeOwnerRepairConstant.java

@@ -27,6 +27,16 @@ public class ServiceCodeOwnerRepairConstant {
      */
     public static final String LIST_OWNERREPAIRS = "ownerRepair.listOwnerRepairs";
 
+    /**
+     * 查询 员工报修
+     */
+    public static final String LIST_STAFF_REPAIRS = "ownerRepair.listStaffRepairs";
+
+    /**
+     * 查询 员工已办报修
+     */
+    public static final String LIST_STAFF_FINISH_REPAIRS = "ownerRepair.listStaffFinishRepairs";
+
 
     /**
      * 查询 报修处理员工

+ 11 - 0
java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeRepairDispatchStepConstant.java

@@ -23,5 +23,16 @@ public class ServiceCodeRepairDispatchStepConstant {
     public static final String CLOSE_REPAIR_DISPATCH = "ownerRepair.closeRepairDispatch";
 
 
+    /**
+     * 添加 报修结单
+     */
+    public static final String BINDING_REPAIR_FINISH = "ownerRepair.repairFinish";
+
+    /**
+     * 评价
+     */
+    public static final String BINDING_APPRAISE_REPAIR = "ownerRepair.appraiseRepair";
+
+
 
 }

+ 1 - 1
service-api/src/main/java/com/java110/api/bmo/community/ICommunityBMO.java

@@ -83,7 +83,7 @@ public interface ICommunityBMO extends IApiBaseBMO {
      * @param dataFlowContext 数据上下文
      * @return 订单服务能够接受的报文
      */
-    public void addFeeConfigParkingSpace(JSONObject paramInJson, DataFlowContext dataFlowContext);
+    public void addFeeConfigRepair(JSONObject paramInJson, DataFlowContext dataFlowContext);
 
     /**
      * 添加小区信息

+ 6 - 6
service-api/src/main/java/com/java110/api/bmo/community/impl/CommunityBMOImpl.java

@@ -259,22 +259,22 @@ public class CommunityBMOImpl extends ApiBaseBMO implements ICommunityBMO {
      * @param dataFlowContext 数据上下文
      * @return 订单服务能够接受的报文
      */
-    public void addFeeConfigParkingSpace(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+    public void addFeeConfigRepair(JSONObject paramInJson, DataFlowContext dataFlowContext) {
         paramInJson.put("configId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_configId));
         JSONObject businessFeeConfig = new JSONObject();
         businessFeeConfig.putAll(paramInJson);
-        businessFeeConfig.put("feeTypeCd", FeeTypeConstant.FEE_TYPE_CAR);
-        businessFeeConfig.put("feeName", "停车费[系统默认]");
-        businessFeeConfig.put("feeFlag", "2006012");
+        businessFeeConfig.put("feeTypeCd", FeeTypeConstant.FEE_TYPE_REPAIR);
+        businessFeeConfig.put("feeName", "报修费[系统默认]");
+        businessFeeConfig.put("feeFlag", "2006012"); //一次性费用
         businessFeeConfig.put("startTime", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
         businessFeeConfig.put("endTime", DateUtil.LAST_TIME);
-        businessFeeConfig.put("computingFormula", "2002");
+        businessFeeConfig.put("computingFormula", "4004");
         businessFeeConfig.put("squarePrice", "0.00");
         businessFeeConfig.put("additionalAmount", "0.00");
         businessFeeConfig.put("communityId", paramInJson.getString("communityId"));
         businessFeeConfig.put("configId", paramInJson.getString("configId"));
         businessFeeConfig.put("billType", "003");//按天出账
-        businessFeeConfig.put("paymentCd", "1200");
+        businessFeeConfig.put("paymentCd", "2100");
         businessFeeConfig.put("paymentCycle", "1");//按月出账
         businessFeeConfig.put("isDefault", "T");
         PayFeeConfigPo payFeeConfigPo = BeanConvertUtil.covertBean(businessFeeConfig, PayFeeConfigPo.class);

+ 1 - 1
service-api/src/main/java/com/java110/api/listener/community/SaveCommunityListener.java

@@ -39,7 +39,7 @@ public class SaveCommunityListener extends AbstractServiceApiPlusListener {
         communityBMOImpl.addCommunityMembers(reqJson, context);
         //产生物业费配置信息
         communityBMOImpl.addFeeConfigProperty(reqJson, context);
-//        communityBMOImpl.addFeeConfigParkingSpace(reqJson, context); // 地上出售
+        communityBMOImpl.addFeeConfigRepair(reqJson, context); // 报修费用
 //       communityBMOImpl.addFeeConfigParkingSpaceUpSell(reqJson, context); // 地上出售
 //        communityBMOImpl.addFeeConfigParkingSpaceDownSell(reqJson, context); // 地下出售
 //        communityBMOImpl.addFeeConfigParkingSpaceUpHire(reqJson, context);//地上出租

+ 120 - 0
service-api/src/main/java/com/java110/api/listener/ownerRepair/AppraiseRepairListener.java

@@ -0,0 +1,120 @@
+package com.java110.api.listener.ownerRepair;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.bmo.ownerRepair.IOwnerRepairBMO;
+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.core.smo.community.IRepairInnerServiceSMO;
+import com.java110.core.smo.community.IRepairUserInnerServiceSMO;
+import com.java110.core.smo.fee.IFeeConfigInnerServiceSMO;
+import com.java110.dto.fee.FeeAttrDto;
+import com.java110.dto.fee.FeeConfigDto;
+import com.java110.dto.fee.FeeDto;
+import com.java110.dto.repair.RepairDto;
+import com.java110.dto.repair.RepairUserDto;
+import com.java110.po.fee.FeeAttrPo;
+import com.java110.po.fee.PayFeePo;
+import com.java110.po.owner.RepairUserPo;
+import com.java110.utils.constant.BusinessTypeConstant;
+import com.java110.utils.constant.FeeTypeConstant;
+import com.java110.utils.constant.ServiceCodeRepairDispatchStepConstant;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.DateUtil;
+import com.java110.vo.ResultVo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+
+import java.util.List;
+
+/**
+ * 评价报修
+ * add by wuxw 2019-06-30
+ */
+@Java110Listener("appraiseRepairListener")
+public class AppraiseRepairListener extends AbstractServiceApiPlusListener {
+
+
+    private static Logger logger = LoggerFactory.getLogger(AppraiseRepairListener.class);
+
+    @Autowired
+    private IOwnerRepairBMO ownerRepairBMOImpl;
+
+    @Autowired
+    private IRepairUserInnerServiceSMO repairUserInnerServiceSMOImpl;
+
+    @Autowired
+    private IRepairInnerServiceSMO repairInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeConfigInnerServiceSMO feeConfigInnerServiceSMOImpl;
+
+    @Override
+    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+        //Assert.hasKeyAndValue(reqJson, "xxx", "xxx");
+
+        Assert.hasKeyAndValue(reqJson, "repairId", "未包含报修单信息");
+        Assert.hasKeyAndValue(reqJson, "context", "未包含派单内容");
+        Assert.hasKeyAndValue(reqJson, "communityId", "未包含小区信息");
+
+
+    }
+
+    @Override
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+        String userId = reqJson.getString("userId");
+        String userName = reqJson.getString("userName");
+
+        RepairUserDto repairUserDto = new RepairUserDto();
+        repairUserDto.setRepairId(reqJson.getString("repairId"));
+        repairUserDto.setCommunityId(reqJson.getString("communityId"));
+        repairUserDto.setState(RepairUserDto.STATE_DOING);
+        repairUserDto.setStaffId(userId);
+        List<RepairUserDto> repairUserDtos = repairUserInnerServiceSMOImpl.queryRepairUsers(repairUserDto);
+        Assert.listOnlyOne(repairUserDtos, "当前用户没有需要处理订单");
+        // 1.0 关闭自己订单
+        RepairUserPo repairUserPo = new RepairUserPo();
+        repairUserPo.setRuId(repairUserDtos.get(0).getRuId());
+        repairUserPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        repairUserPo.setState(RepairUserDto.STATE_CLOSE);
+        repairUserPo.setContext(reqJson.getString("context"));
+        repairUserPo.setCommunityId(reqJson.getString("communityId"));
+        super.update(context, repairUserPo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_REPAIR_USER);
+
+        ownerRepairBMOImpl.modifyBusinessRepairDispatch(reqJson, context, RepairDto.STATE_RETURN_VISIT);
+
+
+        ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_OK, ResultVo.MSG_OK);
+
+        context.setResponseEntity(responseEntity);
+
+    }
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeRepairDispatchStepConstant.BINDING_APPRAISE_REPAIR;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.POST;
+    }
+
+    @Override
+    public int getOrder() {
+        return DEFAULT_ORDER;
+    }
+
+    public IRepairInnerServiceSMO getRepairInnerServiceSMOImpl() {
+        return repairInnerServiceSMOImpl;
+    }
+
+    public void setRepairInnerServiceSMOImpl(IRepairInnerServiceSMO repairInnerServiceSMOImpl) {
+        this.repairInnerServiceSMOImpl = repairInnerServiceSMOImpl;
+    }
+}

+ 119 - 0
service-api/src/main/java/com/java110/api/listener/ownerRepair/ListStaffFinishRepairsListener.java

@@ -0,0 +1,119 @@
+package com.java110.api.listener.ownerRepair;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiListener;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.event.service.api.ServiceDataFlowEvent;
+import com.java110.core.smo.community.IRepairInnerServiceSMO;
+import com.java110.core.smo.community.IRepairUserInnerServiceSMO;
+import com.java110.dto.repair.RepairDto;
+import com.java110.dto.repair.RepairUserDto;
+import com.java110.utils.constant.ServiceCodeOwnerRepairConstant;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * 查询小区侦听类
+ */
+@Java110Listener("listStaffFinishRepairsListener")
+public class ListStaffFinishRepairsListener extends AbstractServiceApiListener {
+
+    @Autowired
+    private IRepairInnerServiceSMO repairInnerServiceSMOImpl;
+
+
+    @Autowired
+    private IRepairUserInnerServiceSMO repairUserInnerServiceSMOImpl;
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeOwnerRepairConstant.LIST_STAFF_FINISH_REPAIRS;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.GET;
+    }
+
+
+    @Override
+    public int getOrder() {
+        return DEFAULT_ORDER;
+    }
+
+
+    public IRepairInnerServiceSMO getRepairInnerServiceSMOImpl() {
+        return repairInnerServiceSMOImpl;
+    }
+
+    public void setRepairInnerServiceSMOImpl(IRepairInnerServiceSMO repairInnerServiceSMOImpl) {
+        this.repairInnerServiceSMOImpl = repairInnerServiceSMOImpl;
+    }
+
+    @Override
+    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+        super.validatePageInfo(reqJson);
+        Assert.hasKeyAndValue(reqJson, "communityId", "请求中未包含小区ID");
+        Assert.hasKeyAndValue(reqJson, "userId", "请求中未包含员工信息");
+
+    }
+
+    @Override
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+
+        RepairDto ownerRepairDto = BeanConvertUtil.covertBean(reqJson, RepairDto.class);
+        ownerRepairDto.setStaffId(reqJson.getString("userId"));
+
+        int count = repairInnerServiceSMOImpl.queryStaffFinishRepairsCount(ownerRepairDto);
+
+
+        List<RepairDto> ownerRepairs = null;
+        if (count > 0) {
+            ownerRepairs = repairInnerServiceSMOImpl.queryStaffFinishRepairs(ownerRepairDto);
+
+            //refreshStaffName(ownerRepairs);
+        } else {
+            ownerRepairs = new ArrayList<>();
+        }
+
+        ResponseEntity<String> responseEntity = ResultVo.createResponseEntity((int) Math.ceil((double) count / (double) reqJson.getInteger("row")), count, ownerRepairs);
+
+
+        context.setResponseEntity(responseEntity);
+
+    }
+
+    private void refreshStaffName(List<RepairDto> ownerRepairs) {
+
+        List<String> repairIds = new ArrayList<>();
+        for (RepairDto apiOwnerRepairDataVo : ownerRepairs) {
+            repairIds.add(apiOwnerRepairDataVo.getRepairId());
+        }
+
+        if (repairIds.size() < 1) {
+            return;
+        }
+        RepairUserDto repairUserDto = new RepairUserDto();
+        repairUserDto.setRepairIds(repairIds.toArray(new String[repairIds.size()]));
+        List<RepairUserDto> repairUserDtos = repairUserInnerServiceSMOImpl.queryRepairUsers(repairUserDto);
+
+        for (RepairUserDto tmpRepairUserDto : repairUserDtos) {
+            for (RepairDto apiOwnerRepairDataVo : ownerRepairs) {
+                if (tmpRepairUserDto.getRepairId().equals(apiOwnerRepairDataVo.getRepairId())) {
+                    apiOwnerRepairDataVo.setStaffId(tmpRepairUserDto.getUserId());
+                    //apiOwnerRepairDataVo.setStatmpRepairUserDto.getUserName());
+                }
+            }
+        }
+
+    }
+}

+ 119 - 0
service-api/src/main/java/com/java110/api/listener/ownerRepair/ListStaffRepairsListener.java

@@ -0,0 +1,119 @@
+package com.java110.api.listener.ownerRepair;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiListener;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.event.service.api.ServiceDataFlowEvent;
+import com.java110.core.smo.community.IRepairInnerServiceSMO;
+import com.java110.core.smo.community.IRepairUserInnerServiceSMO;
+import com.java110.dto.repair.RepairDto;
+import com.java110.dto.repair.RepairUserDto;
+import com.java110.utils.constant.ServiceCodeOwnerRepairConstant;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * 查询小区侦听类
+ */
+@Java110Listener("listStaffRepairsListener")
+public class ListStaffRepairsListener extends AbstractServiceApiListener {
+
+    @Autowired
+    private IRepairInnerServiceSMO repairInnerServiceSMOImpl;
+
+
+    @Autowired
+    private IRepairUserInnerServiceSMO repairUserInnerServiceSMOImpl;
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeOwnerRepairConstant.LIST_STAFF_REPAIRS;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.GET;
+    }
+
+
+    @Override
+    public int getOrder() {
+        return DEFAULT_ORDER;
+    }
+
+
+    public IRepairInnerServiceSMO getRepairInnerServiceSMOImpl() {
+        return repairInnerServiceSMOImpl;
+    }
+
+    public void setRepairInnerServiceSMOImpl(IRepairInnerServiceSMO repairInnerServiceSMOImpl) {
+        this.repairInnerServiceSMOImpl = repairInnerServiceSMOImpl;
+    }
+
+    @Override
+    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+        super.validatePageInfo(reqJson);
+        Assert.hasKeyAndValue(reqJson, "communityId", "请求中未包含小区ID");
+        Assert.hasKeyAndValue(reqJson, "userId", "请求中未包含员工信息");
+
+    }
+
+    @Override
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+
+        RepairDto ownerRepairDto = BeanConvertUtil.covertBean(reqJson, RepairDto.class);
+        ownerRepairDto.setStaffId(reqJson.getString("userId"));
+
+        int count = repairInnerServiceSMOImpl.queryStaffRepairsCount(ownerRepairDto);
+
+
+        List<RepairDto> ownerRepairs = null;
+        if (count > 0) {
+            ownerRepairs = repairInnerServiceSMOImpl.queryStaffRepairs(ownerRepairDto);
+
+            //refreshStaffName(ownerRepairs);
+        } else {
+            ownerRepairs = new ArrayList<>();
+        }
+
+        ResponseEntity<String> responseEntity = ResultVo.createResponseEntity((int) Math.ceil((double) count / (double) reqJson.getInteger("row")), count, ownerRepairs);
+
+
+        context.setResponseEntity(responseEntity);
+
+    }
+//
+//    private void refreshStaffName(List<RepairDto> ownerRepairs) {
+//
+//        List<String> repairIds = new ArrayList<>();
+//        for (RepairDto apiOwnerRepairDataVo : ownerRepairs) {
+//            repairIds.add(apiOwnerRepairDataVo.getRepairId());
+//        }
+//
+//        if (repairIds.size() < 1) {
+//            return;
+//        }
+//        RepairUserDto repairUserDto = new RepairUserDto();
+//        repairUserDto.setRepairIds(repairIds.toArray(new String[repairIds.size()]));
+//        List<RepairUserDto> repairUserDtos = repairUserInnerServiceSMOImpl.queryRepairUsers(repairUserDto);
+//
+//        for (RepairUserDto tmpRepairUserDto : repairUserDtos) {
+//            for (RepairDto apiOwnerRepairDataVo : ownerRepairs) {
+//                if (tmpRepairUserDto.getRepairId().equals(apiOwnerRepairDataVo.getRepairId())) {
+//                    apiOwnerRepairDataVo.setStaffId(tmpRepairUserDto.getUserId());
+//                    //apiOwnerRepairDataVo.setStatmpRepairUserDto.getUserName());
+//                }
+//            }
+//        }
+//
+//    }
+}

+ 168 - 7
service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairDispatchListener.java

@@ -15,10 +15,13 @@ 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.DateUtil;
+import com.java110.vo.ResultVo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
 
 import java.util.List;
 
@@ -29,6 +32,16 @@ import java.util.List;
 @Java110Listener("repairDispatchListener")
 public class RepairDispatchListener extends AbstractServiceApiPlusListener {
 
+
+    //派单
+    public static final String ACTION_DISPATCH = "DISPATCH";
+
+    //转单
+    public static final String ACTION_TRANSFER = "TRANSFER";
+    //退单
+    public static final String ACTION_BACK = "BACK";
+
+
     private static Logger logger = LoggerFactory.getLogger(RepairDispatchListener.class);
 
     @Autowired
@@ -49,6 +62,7 @@ public class RepairDispatchListener extends AbstractServiceApiPlusListener {
         Assert.hasKeyAndValue(reqJson, "repairId", "未包含报修单信息");
         Assert.hasKeyAndValue(reqJson, "context", "未包含派单内容");
         Assert.hasKeyAndValue(reqJson, "communityId", "未包含小区信息");
+        Assert.hasKeyAndValue(reqJson, "action", "未包含处理动作");
 
 
     }
@@ -57,29 +71,176 @@ public class RepairDispatchListener extends AbstractServiceApiPlusListener {
     protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
         RepairUserPo repairUserPo = BeanConvertUtil.covertBean(reqJson, RepairUserPo.class);
 
+        String action = reqJson.getString("action");
+
+        switch (action) {
+            case ACTION_DISPATCH:
+                dispacthRepair(context, reqJson);
+                break;
+            case ACTION_TRANSFER:
+                transferRepair(context, reqJson);
+                break;
+            case ACTION_BACK:
+                backRepair(context, reqJson);
+                break;
+        }
+
+        ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_OK, ResultVo.MSG_OK);
+
+        context.setResponseEntity(responseEntity);
+
+    }
+
+    private void backRepair(DataFlowContext context, JSONObject reqJson) {
+        String userId = reqJson.getString("userId");
+        String userName = reqJson.getString("userName");
+
         RepairUserDto repairUserDto = new RepairUserDto();
         repairUserDto.setRepairId(reqJson.getString("repairId"));
         repairUserDto.setCommunityId(reqJson.getString("communityId"));
-        repairUserDto.setRepairEvent(RepairUserDto.REPAIR_EVENT_START_USER);
+        repairUserDto.setState(RepairUserDto.STATE_DOING);
+        repairUserDto.setStaffId(userId);
         List<RepairUserDto> repairUserDtos = repairUserInnerServiceSMOImpl.queryRepairUsers(repairUserDto);
+        Assert.listOnlyOne(repairUserDtos, "当前用户没有需要处理订单");
+        //插入派单者的信息
+        RepairUserPo repairUserPo = new RepairUserPo();
+        repairUserPo.setRuId(repairUserDtos.get(0).getRuId());
+        repairUserPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        repairUserPo.setState(RepairUserDto.STATE_BACK);
+        repairUserPo.setContext(reqJson.getString("context"));
+        repairUserPo.setCommunityId(reqJson.getString("communityId"));
+        super.update(context, repairUserPo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_REPAIR_USER);
+        //处理人信息
+        repairUserPo = new RepairUserPo();
+        repairUserPo.setRuId("-1");
+        repairUserPo.setState(RepairUserDto.STATE_DOING);
+        repairUserPo.setRepairId(reqJson.getString("repairId"));
+        repairUserPo.setStaffId(reqJson.getString("staffId"));
+        repairUserPo.setStaffName(reqJson.getString("staffName"));
+        repairUserDto = new RepairUserDto();
+        repairUserDto.setRepairId(reqJson.getString("repairId"));
+        repairUserDto.setStaffId(reqJson.getString("staffId"));
+        repairUserDto.setCommunityId(reqJson.getString("communityId"));
+        repairUserDto.setState(RepairUserDto.STATE_TRANSFER);
+        repairUserDtos = repairUserInnerServiceSMOImpl.queryRepairUsers(repairUserDto);
 
         if (repairUserDtos == null || repairUserDtos.size() < 1) {
-            repairUserPo.setPreStaffId("-1");
-            repairUserPo.setPreStaffName("-1");
-        } else {
-            repairUserPo.setPreStaffId(repairUserDtos.get(0).getStaffId());
-            repairUserPo.setPreStaffName(repairUserDtos.get(0).getStaffName());
+            throw new IllegalArgumentException("未找到上级处理人");
         }
 
+        repairUserPo.setPreStaffId(repairUserDtos.get(0).getPreStaffId());
+        repairUserPo.setPreStaffName(repairUserDtos.get(0).getPreStaffName());
         repairUserPo.setRepairEvent(RepairUserDto.REPAIR_EVENT_AUDIT_USER);
+        repairUserPo.setContext("");
+        repairUserPo.setCommunityId(reqJson.getString("communityId"));
+        super.insert(context, repairUserPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_REPAIR_USER);
+        ownerRepairBMOImpl.modifyBusinessRepairDispatch(reqJson, context, RepairDto.STATE_BACK);
+    }
+
+    /**
+     * 转单
+     *
+     * @param context
+     * @param reqJson
+     */
+    private void transferRepair(DataFlowContext context, JSONObject reqJson) {
+        String userId = reqJson.getString("userId");
+        String userName = reqJson.getString("userName");
+
+        RepairUserDto repairUserDto = new RepairUserDto();
+        repairUserDto.setRepairId(reqJson.getString("repairId"));
+        repairUserDto.setCommunityId(reqJson.getString("communityId"));
+        repairUserDto.setState(RepairUserDto.STATE_DOING);
+        repairUserDto.setStaffId(userId);
+        List<RepairUserDto> repairUserDtos = repairUserInnerServiceSMOImpl.queryRepairUsers(repairUserDto);
+        Assert.listOnlyOne(repairUserDtos, "当前用户没有需要处理订单");
+        //插入派单者的信息
+        RepairUserPo repairUserPo = new RepairUserPo();
+        repairUserPo.setRuId(repairUserDtos.get(0).getRuId());
+        repairUserPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        repairUserPo.setState(RepairUserDto.STATE_TRANSFER);
+        repairUserPo.setContext(reqJson.getString("context"));
+        repairUserPo.setCommunityId(reqJson.getString("communityId"));
+        super.update(context, repairUserPo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_REPAIR_USER);
+        //处理人信息
+        repairUserPo = new RepairUserPo();
         repairUserPo.setRuId("-1");
         repairUserPo.setState(RepairUserDto.STATE_DOING);
-
+        repairUserPo.setRepairId(reqJson.getString("repairId"));
+        repairUserPo.setStaffId(reqJson.getString("staffId"));
+        repairUserPo.setStaffName(reqJson.getString("staffName"));
+        repairUserPo.setPreStaffId(userId);
+        repairUserPo.setPreStaffName(userName);
+        repairUserPo.setRepairEvent(RepairUserDto.REPAIR_EVENT_AUDIT_USER);
+        repairUserPo.setContext("");
+        repairUserPo.setCommunityId(reqJson.getString("communityId"));
         super.insert(context, repairUserPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_REPAIR_USER);
+        ownerRepairBMOImpl.modifyBusinessRepairDispatch(reqJson, context, RepairDto.STATE_TRANSFER);
+
+    }
+
+    /**
+     * 派单处理
+     *
+     * @param context
+     * @param reqJson
+     */
+    private void dispacthRepair(DataFlowContext context, JSONObject reqJson) {
+        String userId = reqJson.getString("userId");
+        String userName = reqJson.getString("userName");
 
+        // 自己的单子状态修改为转单
+        RepairUserPo repairUserPo = new RepairUserPo();
+        repairUserPo.setRuId("-1");
+        repairUserPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        repairUserPo.setState(RepairUserDto.STATE_TRANSFER);
+        repairUserPo.setRepairId(reqJson.getString("repairId"));
+        repairUserPo.setStaffId(userId);
+        repairUserPo.setStaffName(userName);
+        freshPreStaff(reqJson, repairUserPo);
+        repairUserPo.setRepairEvent(RepairUserDto.REPAIR_EVENT_AUDIT_USER);
+        repairUserPo.setContext(reqJson.getString("context"));
+        repairUserPo.setCommunityId(reqJson.getString("communityId"));
+        super.insert(context, repairUserPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_REPAIR_USER);
+        //处理人信息
+        repairUserPo = new RepairUserPo();
+        repairUserPo.setRuId("-2");
+        repairUserPo.setState(RepairUserDto.STATE_DOING);
+        repairUserPo.setRepairId(reqJson.getString("repairId"));
+        repairUserPo.setStaffId(reqJson.getString("staffId"));
+        repairUserPo.setStaffName(reqJson.getString("staffName"));
+        repairUserPo.setPreStaffId(userId);
+        repairUserPo.setPreStaffName(userName);
+        repairUserPo.setRepairEvent(RepairUserDto.REPAIR_EVENT_AUDIT_USER);
+        repairUserPo.setContext("");
+        repairUserPo.setCommunityId(reqJson.getString("communityId"));
+        super.insert(context, repairUserPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_REPAIR_USER);
         ownerRepairBMOImpl.modifyBusinessRepairDispatch(reqJson, context, RepairDto.STATE_TAKING);
     }
 
+    /**
+     * 刷入上一处理人
+     *
+     * @param reqJson
+     * @param repairUserPo
+     */
+    private void freshPreStaff(JSONObject reqJson, RepairUserPo repairUserPo) {
+
+        RepairUserDto repairUserDto = new RepairUserDto();
+        repairUserDto.setRepairId(reqJson.getString("repairId"));
+        repairUserDto.setCommunityId(reqJson.getString("communityId"));
+        //repairUserDto.setRepairEvent(RepairUserDto.REPAIR_EVENT_START_USER);
+        List<RepairUserDto> repairUserDtos = repairUserInnerServiceSMOImpl.queryRepairUsers(repairUserDto);
+        if (repairUserDtos == null || repairUserDtos.size() < 1) {
+            repairUserPo.setPreStaffId("-1");
+            repairUserPo.setPreStaffName("-1");
+        } else {
+            int pos = repairUserDtos.size() - 1;
+            repairUserPo.setPreStaffId(repairUserDtos.get(pos).getStaffId());
+            repairUserPo.setPreStaffName(repairUserDtos.get(pos).getStaffName());
+        }
+    }
+
     @Override
     public String getServiceCode() {
         return ServiceCodeRepairDispatchStepConstant.BINDING_REPAIR_DISPATCH;

+ 187 - 0
service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairFinishListener.java

@@ -0,0 +1,187 @@
+package com.java110.api.listener.ownerRepair;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.bmo.ownerRepair.IOwnerRepairBMO;
+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.core.smo.community.IRepairInnerServiceSMO;
+import com.java110.core.smo.community.IRepairUserInnerServiceSMO;
+import com.java110.core.smo.fee.IFeeConfigInnerServiceSMO;
+import com.java110.dto.fee.FeeAttrDto;
+import com.java110.dto.fee.FeeConfigDto;
+import com.java110.dto.fee.FeeDto;
+import com.java110.dto.repair.RepairDto;
+import com.java110.dto.repair.RepairUserDto;
+import com.java110.po.fee.FeeAttrPo;
+import com.java110.po.fee.PayFeePo;
+import com.java110.po.owner.RepairUserPo;
+import com.java110.utils.constant.BusinessTypeConstant;
+import com.java110.utils.constant.FeeTypeConstant;
+import com.java110.utils.constant.ServiceCodeRepairDispatchStepConstant;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.DateUtil;
+import com.java110.vo.ResultVo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+
+import java.util.List;
+
+/**
+ * 完成报修
+ * add by wuxw 2019-06-30
+ */
+@Java110Listener("repairCloseListener")
+public class RepairFinishListener extends AbstractServiceApiPlusListener {
+
+
+    private static Logger logger = LoggerFactory.getLogger(RepairFinishListener.class);
+
+    @Autowired
+    private IOwnerRepairBMO ownerRepairBMOImpl;
+
+    @Autowired
+    private IRepairUserInnerServiceSMO repairUserInnerServiceSMOImpl;
+
+    @Autowired
+    private IRepairInnerServiceSMO repairInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeConfigInnerServiceSMO feeConfigInnerServiceSMOImpl;
+
+    @Override
+    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+        //Assert.hasKeyAndValue(reqJson, "xxx", "xxx");
+
+        Assert.hasKeyAndValue(reqJson, "repairId", "未包含报修单信息");
+        Assert.hasKeyAndValue(reqJson, "context", "未包含派单内容");
+        Assert.hasKeyAndValue(reqJson, "communityId", "未包含小区信息");
+        Assert.hasKeyAndValue(reqJson, "amount", "未包含金额");
+        Assert.hasKeyAndValue(reqJson, "feeFlag", "未包含费用标识");
+
+
+    }
+
+    @Override
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+        String userId = reqJson.getString("userId");
+        String userName = reqJson.getString("userName");
+
+        RepairUserDto repairUserDto = new RepairUserDto();
+        repairUserDto.setRepairId(reqJson.getString("repairId"));
+        repairUserDto.setCommunityId(reqJson.getString("communityId"));
+        repairUserDto.setState(RepairUserDto.STATE_DOING);
+        repairUserDto.setStaffId(userId);
+        List<RepairUserDto> repairUserDtos = repairUserInnerServiceSMOImpl.queryRepairUsers(repairUserDto);
+        Assert.listOnlyOne(repairUserDtos, "当前用户没有需要处理订单");
+        // 1.0 关闭自己订单
+        RepairUserPo repairUserPo = new RepairUserPo();
+        repairUserPo.setRuId(repairUserDtos.get(0).getRuId());
+        repairUserPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        repairUserPo.setState(RepairUserDto.STATE_CLOSE);
+        repairUserPo.setContext(reqJson.getString("context"));
+        repairUserPo.setCommunityId(reqJson.getString("communityId"));
+        super.update(context, repairUserPo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_REPAIR_USER);
+        //2.0 给开始节点派支付单
+        repairUserDto = new RepairUserDto();
+        repairUserDto.setRepairId(reqJson.getString("repairId"));
+        repairUserDto.setCommunityId(reqJson.getString("communityId"));
+        repairUserDto.setRepairEvent(RepairUserDto.REPAIR_EVENT_START_USER);
+        repairUserDtos = repairUserInnerServiceSMOImpl.queryRepairUsers(repairUserDto);
+        Assert.listOnlyOne(repairUserDtos, "数据错误 该订单没有发起人");
+        repairUserPo = new RepairUserPo();
+        repairUserPo.setRuId("-1");
+        repairUserPo.setState(RepairUserDto.STATE_DOING);
+        repairUserPo.setRepairId(reqJson.getString("repairId"));
+        repairUserPo.setStaffId(repairUserDtos.get(0).getStaffId());
+        repairUserPo.setStaffName(repairUserDtos.get(0).getStaffName());
+        repairUserPo.setPreStaffId(userId);
+        repairUserPo.setPreStaffName(userName);
+        repairUserPo.setRepairEvent(RepairUserDto.REPAIR_EVENT_PAY_USER);
+        repairUserPo.setContext("");
+        repairUserPo.setCommunityId(reqJson.getString("communityId"));
+        super.insert(context, repairUserPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_REPAIR_USER);
+
+        if ("200".equals(reqJson.getString("feeFlag"))) { // 没有费用
+            ownerRepairBMOImpl.modifyBusinessRepairDispatch(reqJson, context, RepairDto.STATE_APPRAISE);
+            ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_OK, ResultVo.MSG_OK);
+            context.setResponseEntity(responseEntity);
+            return;
+        }
+        //3.0 生成支付费用
+        //查询默认费用项
+        FeeConfigDto feeConfigDto = new FeeConfigDto();
+        feeConfigDto.setCommunityId(reqJson.getString("communityId"));
+        feeConfigDto.setFeeTypeCd(FeeTypeConstant.FEE_TYPE_REPAIR);
+        feeConfigDto.setIsDefault(FeeConfigDto.DEFAULT_FEE_CONFIG);
+        List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
+
+        Assert.listOnlyOne(feeConfigDtos, "默认维修费用有多条或不存在");
+
+        PayFeePo feePo = new PayFeePo();
+        feePo.setAmount(reqJson.getString("amount"));
+        feePo.setCommunityId(reqJson.getString("communityId"));
+        feePo.setConfigId(feeConfigDtos.get(0).getConfigId());
+        feePo.setEndTime(DateUtil.getLastTime());
+        feePo.setFeeFlag(feeConfigDtos.get(0).getFeeFlag());
+        feePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId));
+        feePo.setFeeTypeCd(FeeTypeConstant.FEE_TYPE_REPAIR);
+        feePo.setIncomeObjId(reqJson.getString("storeId"));
+        feePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
+        RepairDto repairDto = new RepairDto();
+        repairDto.setCommunityId(reqJson.getString("communityId"));
+        repairDto.setRepairId(reqJson.getString("repairId"));
+        List<RepairDto> repairDtos = repairInnerServiceSMOImpl.queryRepairs(repairDto);
+        Assert.listOnlyOne(repairDtos, "维修单有多条或不存在");
+
+        feePo.setPayerObjId(repairDtos.get(0).getRoomId());
+        feePo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        feePo.setState(FeeDto.STATE_DOING);
+        feePo.setUserId(userId);
+        super.insert(context, feePo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_FEE_INFO);
+
+        FeeAttrPo feeAttrPo = new FeeAttrPo();
+        feeAttrPo.setAttrId("-1");
+        feeAttrPo.setFeeId(feePo.getFeeId());
+        feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_REPAIR);
+        feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+        feeAttrPo.setValue(reqJson.getString("repairId"));
+        super.insert(context, feeAttrPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_FEE_INFO);
+
+        ownerRepairBMOImpl.modifyBusinessRepairDispatch(reqJson, context, RepairDto.STATE_PAY);
+
+
+        ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_OK, ResultVo.MSG_OK);
+
+        context.setResponseEntity(responseEntity);
+
+    }
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeRepairDispatchStepConstant.BINDING_REPAIR_FINISH;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.POST;
+    }
+
+    @Override
+    public int getOrder() {
+        return DEFAULT_ORDER;
+    }
+
+    public IRepairInnerServiceSMO getRepairInnerServiceSMOImpl() {
+        return repairInnerServiceSMOImpl;
+    }
+
+    public void setRepairInnerServiceSMOImpl(IRepairInnerServiceSMO repairInnerServiceSMOImpl) {
+        this.repairInnerServiceSMOImpl = repairInnerServiceSMOImpl;
+    }
+}

+ 1 - 1
service-api/src/main/java/com/java110/api/listener/store/ListStoresListener.java

@@ -79,7 +79,7 @@ public class ListStoresListener extends AbstractServiceApiListener {
             List<StoreAttrDto> storeAttrs = new ArrayList<StoreAttrDto>();
             for (StoreAttrDto tmpStoreAttrDto : storeAttrDtos) {
 
-                if(storeDataVo.getStoreId().equals(storeDataVo.getStoreId())){
+                if(storeDataVo.getStoreId().equals(tmpStoreAttrDto.getStoreId())){
                     storeAttrs.add(tmpStoreAttrDto);
                 }
 

+ 37 - 0
service-community/src/main/java/com/java110/community/dao/IRepairServiceDao.java

@@ -78,4 +78,41 @@ public interface IRepairServiceDao {
      */
     int queryRepairsCount(Map info);
 
+
+    /**
+     * 查询报修信息信息(instance过程)
+     * 根据bId 查询报修信息信息
+     * @param info bId 信息
+     * @return 报修信息信息
+     * @throws DAOException DAO异常
+     */
+    List<Map> getStaffRepairInfo(Map info) throws DAOException;
+
+    /**
+     * 查询报修信息总数
+     *
+     * @param info 报修信息信息
+     * @return 报修信息数量
+     */
+    int queryStaffRepairsCount(Map info);
+
+
+    /**
+     * 查询报修信息信息(instance过程)
+     * 根据bId 查询报修信息信息
+     * @param info bId 信息
+     * @return 报修信息信息
+     * @throws DAOException DAO异常
+     */
+    List<Map> getStaffFinishRepairInfo(Map info) throws DAOException;
+
+    /**
+     * 查询报修信息总数
+     *
+     * @param info 报修信息信息
+     * @return 报修信息数量
+     */
+    int queryStaffFinishRepairsCount(Map info);
+
+
 }

+ 39 - 0
service-community/src/main/java/com/java110/community/dao/impl/RepairServiceDaoImpl.java

@@ -125,5 +125,44 @@ public class RepairServiceDaoImpl extends BaseServiceDao implements IRepairServi
         return Integer.parseInt(businessRepairInfos.get(0).get("count").toString());
     }
 
+    @Override
+    public List<Map> getStaffRepairInfo(Map info) throws DAOException {
+        logger.debug("查询报修信息信息 入参 info : {}",info);
+
+        List<Map> businessRepairInfos = sqlSessionTemplate.selectList("repairServiceDaoImpl.getStaffRepairInfo",info);
+
+        return businessRepairInfos;
+    }
+
+    @Override
+    public int queryStaffRepairsCount(Map info) {
+        logger.debug("查询报修信息数据 入参 info : {}",info);
+
+        List<Map> businessRepairInfos = sqlSessionTemplate.selectList("repairServiceDaoImpl.queryStaffRepairsCount", info);
+        if (businessRepairInfos.size() < 1) {
+            return 0;
+        }
+
+        return Integer.parseInt(businessRepairInfos.get(0).get("count").toString());    }
+
+
+    @Override
+    public List<Map> getStaffFinishRepairInfo(Map info) throws DAOException {
+        logger.debug("查询报修信息信息 入参 info : {}",info);
+
+        List<Map> businessRepairInfos = sqlSessionTemplate.selectList("repairServiceDaoImpl.getStaffFinishRepairInfo",info);
+
+        return businessRepairInfos;
+    }
+
+    @Override
+    public int queryStaffFinishRepairsCount(Map info) {
+        logger.debug("查询报修信息数据 入参 info : {}",info);
+
+        List<Map> businessRepairInfos = sqlSessionTemplate.selectList("repairServiceDaoImpl.queryStaffFinishRepairsCount", info);
+        if (businessRepairInfos.size() < 1) {
+            return 0;
+        }
 
+        return Integer.parseInt(businessRepairInfos.get(0).get("count").toString());    }
 }

+ 41 - 0
service-community/src/main/java/com/java110/community/smo/impl/RepairInnerServiceSMOImpl.java

@@ -54,6 +54,47 @@ public class RepairInnerServiceSMOImpl extends BaseServiceSMO implements IRepair
         return repairServiceDaoImpl.queryRepairsCount(BeanConvertUtil.beanCovertMap(repairDto));
     }
 
+    @Override
+    public List<RepairDto> queryStaffRepairs(@RequestBody RepairDto repairDto) {
+        //校验是否传了 分页信息
+
+        int page = repairDto.getPage();
+
+        if (page != PageDto.DEFAULT_PAGE) {
+            repairDto.setPage((page - 1) * repairDto.getRow());
+        }
+
+        List<RepairDto> repairs = BeanConvertUtil.covertBeanList(repairServiceDaoImpl.getStaffRepairInfo(BeanConvertUtil.beanCovertMap(repairDto)), RepairDto.class);
+
+
+        return repairs;
+    }
+
+    @Override
+    public int queryStaffRepairsCount(@RequestBody RepairDto repairDto) {
+        return repairServiceDaoImpl.queryStaffRepairsCount(BeanConvertUtil.beanCovertMap(repairDto));
+    }
+
+    @Override
+    public List<RepairDto> queryStaffFinishRepairs(@RequestBody RepairDto repairDto) {
+
+        int page = repairDto.getPage();
+
+        if (page != PageDto.DEFAULT_PAGE) {
+            repairDto.setPage((page - 1) * repairDto.getRow());
+        }
+
+        List<RepairDto> repairs = BeanConvertUtil.covertBeanList(repairServiceDaoImpl.getStaffFinishRepairInfo(BeanConvertUtil.beanCovertMap(repairDto)), RepairDto.class);
+
+
+        return repairs;
+    }
+
+    @Override
+    public int queryStaffFinishRepairsCount(@RequestBody RepairDto repairDto) {
+        return repairServiceDaoImpl.queryStaffFinishRepairsCount(BeanConvertUtil.beanCovertMap(repairDto));
+    }
+
     public IRepairServiceDao getRepairServiceDaoImpl() {
         return repairServiceDaoImpl;
     }

+ 1 - 0
service-front/src/main/java/com/java110/front/smo/common/impl/CommonPostSMOImpl.java

@@ -52,6 +52,7 @@ public class CommonPostSMOImpl extends AbstractComponentSMO implements ICommonPo
         ResponseEntity<String> responseEntity = null;
         ComponentValidateResult result = super.validateStoreStaffCommunityRelationship(pd, restTemplate);
         paramIn.put("userId",result.getUserId());
+        paramIn.put("userName",result.getUserName());
         paramIn.put("storeId",result.getStoreId());
         responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(),
                 ServiceConstant.SERVICE_API_URL + pd.getApiUrl(),