From 3b0ddfa0b1c3490fbbf421a84e0431a60fb58387 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期四, 01 四月 2021 12:25:35 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/xinghong-dev'

---
 service-api/src/main/java/com/java110/api/listener/ownerRepair/RepairFinishListener.java |  227 +++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 141 insertions(+), 86 deletions(-)

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 9dcaad8..1921c78 100644
--- 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
@@ -13,16 +13,20 @@
 import com.java110.dto.fee.FeeDto;
 import com.java110.dto.file.FileDto;
 import com.java110.dto.file.FileRelDto;
+import com.java110.dto.owner.OwnerDto;
+import com.java110.dto.owner.OwnerRoomRelDto;
 import com.java110.dto.repair.RepairDto;
 import com.java110.dto.repair.RepairUserDto;
 import com.java110.intf.common.IFileInnerServiceSMO;
-import com.java110.intf.common.IFileRelInnerServiceSMO;
 import com.java110.intf.community.IRepairInnerServiceSMO;
 import com.java110.intf.community.IRepairUserInnerServiceSMO;
 import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
+import com.java110.intf.user.IOwnerInnerServiceSMO;
+import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
 import com.java110.po.fee.FeeAttrPo;
 import com.java110.po.fee.PayFeePo;
 import com.java110.po.file.FileRelPo;
+import com.java110.po.owner.RepairPoolPo;
 import com.java110.po.owner.RepairUserPo;
 import com.java110.utils.constant.BusinessTypeConstant;
 import com.java110.utils.constant.FeeTypeConstant;
@@ -30,6 +34,7 @@
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.StringUtil;
 import com.java110.vo.ResultVo;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -46,7 +51,6 @@
  */
 @Java110Listener("repairCloseListener")
 public class RepairFinishListener extends AbstractServiceApiPlusListener {
-
 
     private static Logger logger = LoggerFactory.getLogger(RepairFinishListener.class);
 
@@ -66,26 +70,42 @@
     private IFileInnerServiceSMO fileInnerServiceSMOImpl;
 
     @Autowired
-    private IFileRelInnerServiceSMO fileRelInnerServiceSMO;
+    private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMO;
+
+    @Autowired
+    private IOwnerInnerServiceSMO ownerInnerServiceSMO;
 
     @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");
-
+        String publicArea = reqJson.getString("publicArea");
+        //鑾峰彇鎶ヤ慨娓犻亾
+        String repairChannel = reqJson.getString("repairChannel");
+        //鑾峰彇缁翠慨绫诲瀷
+        String maintenanceType = reqJson.getString("maintenanceType");
+        if (!reqJson.getString("outLowPrice").equals(reqJson.getString("outHighPrice"))
+                && maintenanceType.equals("1001")) {
+            //鑾峰彇浠锋牸
+            Double price = Double.parseDouble(reqJson.getString("price"));
+            //鑾峰彇鏈�浣庝环
+            Double outLowPrice = Double.parseDouble(reqJson.getString("outLowPrice"));
+            //鑾峰彇鏈�楂樹环
+            Double outHighPrice = Double.parseDouble(reqJson.getString("outHighPrice"));
+            //鐗╁搧浠锋牸搴旇鍦ㄦ渶浣庝环鍜屾渶楂樹环涔嬮棿
+            if (price < outLowPrice || price > outHighPrice) {
+                throw new IllegalArgumentException("杈撳叆鐨勪环鏍间笉姝g‘锛岃閲嶆柊杈撳叆锛�");
+            }
+        }
         RepairUserDto repairUserDto = new RepairUserDto();
         repairUserDto.setRepairId(reqJson.getString("repairId"));
         repairUserDto.setCommunityId(reqJson.getString("communityId"));
@@ -101,28 +121,58 @@
         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.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
-        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.setPreRuId(repairUserDtos.get(0).getRuId());
-        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 (repairChannel.equals("Z") || (!StringUtil.isEmpty(maintenanceType) && maintenanceType.equals("1001"))) {  //濡傛灉鏄笟涓绘姤淇垨鑰呮槸鏈夊伩鐨勫氨鐢熸垚涓�鏉℃柊鐘舵�侊紝鍚﹀垯涓嶅彉
+            //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.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+            if (maintenanceType.equals("1001")) { //濡傛灉鏄湁鍋跨殑灏辫蛋涓嬮潰(涓氫富鎶ヤ慨鏈夊伩鎴栬�呯數璇濈敵璇锋湁鍋挎垨鑰呭憳宸ユ姤淇湁鍋�)
+                repairUserPo.setState(RepairUserDto.STATE_PAY_FEE);
+            } else {
+                repairUserPo.setState(RepairUserDto.STATE_EVALUATE);
+            }
+            repairUserPo.setRepairId(reqJson.getString("repairId"));
+            if (repairChannel.equals("Z")) {  //濡傛灉鏄笟涓荤鎶ヤ慨鐨勮蛋涓嬮潰鐨勬柟娉�
+                repairUserPo.setStaffId(repairUserDtos.get(0).getStaffId());
+                repairUserPo.setStaffName(repairUserDtos.get(0).getStaffName());
+            } else { //濡傛灉涓嶆槸涓氫富鎶ヤ慨锛屽苟涓旀湁鍋�
+                RepairDto repairDto = new RepairDto();
+                repairDto.setRepairId(reqJson.getString("repairId"));
+                List<RepairDto> repairDtos = repairInnerServiceSMOImpl.queryRepairs(repairDto);
+                Assert.listOnlyOne(repairDtos, "鏁版嵁閿欒 璇ョ敤鎴锋病鏈夋姤淇崟");
+                //姝ゆ椂鐨勬姤淇璞D鍗虫埧灞婭D
+                String roomId = repairDtos.get(0).getRepairObjId();
+                OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
+                ownerRoomRelDto.setRoomId(roomId);
+                //鏌ヨ鎴垮眿涓氫富鍏崇郴琛�
+                List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelInnerServiceSMO.queryOwnerRoomRels(ownerRoomRelDto);
+                Assert.listOnlyOne(ownerRoomRelDtos, "淇℃伅閿欒");
+                //鑾峰彇涓氫富id
+                String ownerId = ownerRoomRelDtos.get(0).getOwnerId();
+                OwnerDto ownerDto = new OwnerDto();
+                ownerDto.setOwnerId(ownerId);
+                //鏍规嵁涓氫富id鏌ヨ涓氫富淇℃伅
+                List<OwnerDto> ownerDtos = ownerInnerServiceSMO.queryOwners(ownerDto);
+                Assert.listOnlyOne(ownerDtos, "淇℃伅閿欒");
+                //鑾峰彇涓氫富濮撳悕
+                String ownerName = ownerDtos.get(0).getName();
+                repairUserPo.setStaffId(ownerId);
+                repairUserPo.setStaffName(ownerName);
+            }
+            repairUserPo.setPreStaffId(userId);
+            repairUserPo.setPreStaffName(userName);
+            repairUserPo.setPreRuId(repairUserDtos.get(0).getRuId());
+            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 (reqJson.containsKey("beforeRepairPhotos") && !StringUtils.isEmpty(reqJson.getString("beforeRepairPhotos"))) {
             JSONArray beforeRepairPhotos = reqJson.getJSONArray("beforeRepairPhotos");
@@ -144,11 +194,9 @@
                 businessUnit.put("fileRealName", fileName);
                 businessUnit.put("fileSaveName", fileName);
                 FileRelPo fileRelPo = BeanConvertUtil.covertBean(businessUnit, FileRelPo.class);
-                fileRelInnerServiceSMO.saveFileRel(fileRelPo);
-//                super.insert(context, fileRelPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_FILE_REL);
+                super.insert(context, fileRelPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_FILE_REL);
             }
         }
-
         //缁翠慨鍚庡浘鐗囧鐞�
         if (reqJson.containsKey("afterRepairPhotos") && !StringUtils.isEmpty(reqJson.getString("afterRepairPhotos"))) {
             JSONArray afterRepairPhotos = reqJson.getJSONArray("afterRepairPhotos");
@@ -170,64 +218,71 @@
                 businessUnit.put("fileRealName", fileName);
                 businessUnit.put("fileSaveName", fileName);
                 FileRelPo fileRelPo = BeanConvertUtil.covertBean(businessUnit, FileRelPo.class);
-                fileRelInnerServiceSMO.saveFileRel(fileRelPo);
-//                super.insert(context, fileRelPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_FILE_REL);
+                super.insert(context, fileRelPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_FILE_REL);
             }
         }
-
-        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;
+        if (publicArea.equals("F") && "1002".equals(reqJson.getString("maintenanceType"))) { //濡傛灉涓嶆槸鍏叡鍖哄煙涓旀槸鏃犲伩鐨勮蛋涓嬮潰
+            //鏀瑰彉r_repair_pool琛╩aintenance_type缁翠慨绫诲瀷
+            RepairPoolPo repairPoolPo = new RepairPoolPo();
+            repairPoolPo.setRepairId(reqJson.getString("repairId"));
+            repairPoolPo.setMaintenanceType(reqJson.getString("maintenanceType"));
+            super.update(context, repairPoolPo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_REPAIR);
+            if (repairChannel.equals("T") || repairChannel.equals("D")) { //濡傛灉鏄數璇濇姤淇拰鍛樺伐浠e鎶ヤ慨缁撳崟鍚庣姸鎬佸彉涓哄緟鍥炶
+                ownerRepairBMOImpl.modifyBusinessRepairDispatch(reqJson, context, RepairDto.STATE_RETURN_VISIT);
+            } else if (repairChannel.equals("Z")) { //濡傛灉鏄笟涓昏嚜涓绘姤淇粨鍗曞悗鐘舵�佸彉涓哄緟璇勪环
+                ownerRepairBMOImpl.modifyBusinessRepairDispatch(reqJson, context, RepairDto.STATE_APPRAISE);
+            }
+        } else if (publicArea.equals("F") && "1001".equals(reqJson.getString("maintenanceType"))) { //濡傛灉涓嶆槸鍏叡鍖哄煙涓旀槸鏈夊伩鐨勮蛋涓嬮潰
+            //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("price"));
+            feePo.setCommunityId(reqJson.getString("communityId"));
+            feePo.setConfigId(feeConfigDtos.get(0).getConfigId());
+            feePo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+            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).getRepairObjId());
+            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);
+            //鏀瑰彉r_repair_pool琛╩aintenance_type缁翠慨绫诲瀷
+            RepairPoolPo repairPoolPo = new RepairPoolPo();
+            repairPoolPo.setRepairId(reqJson.getString("repairId"));
+            repairPoolPo.setMaintenanceType(reqJson.getString("maintenanceType"));
+            super.update(context, repairPoolPo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_REPAIR);
+            ownerRepairBMOImpl.modifyBusinessRepairDispatch(reqJson, context, RepairDto.STATE_PAY);
+        } else if (publicArea.equals("T")) {  //鍏叡鍖哄煙璧拌繖閲�
+            if (repairChannel.equals("T") || repairChannel.equals("D")) { //濡傛灉鏄數璇濇姤淇拰鍛樺伐浠e鎶ヤ慨缁撳崟鍚庣姸鎬佸彉涓哄緟鍥炶
+                ownerRepairBMOImpl.modifyBusinessRepairDispatch(reqJson, context, RepairDto.STATE_RETURN_VISIT);
+            } else if (repairChannel.equals("Z")) { //濡傛灉鏄笟涓昏嚜涓绘姤淇粨鍗曞悗鐘舵�佸彉涓哄緟璇勪环
+                ownerRepairBMOImpl.modifyBusinessRepairDispatch(reqJson, context, RepairDto.STATE_APPRAISE);
+            }
         }
-        //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.getNow(DateUtil.DATE_FORMATE_STRING_A));
-        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).getRepairObjId());
-        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

--
Gitblit v1.8.0