From ca3473a3e803c5c77e93f6671f36637813f5c951 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期四, 07 十月 2021 21:18:18 +0800
Subject: [PATCH] 优化修改业主问题

---
 java110-interface/src/main/java/com/java110/intf/fee/IFeeAttrInnerServiceSMO.java                 |   16 +++
 service-job/src/main/java/com/java110/job/adapt/fee/asyn/IUpdateFeeOwnerInfo.java                 |    9 +
 service-fee/src/main/java/com/java110/fee/smo/impl/FeeAttrInnerServiceSMOImpl.java                |   15 +++
 service-order/src/main/java/com/java110/order/listener/TransactionOrderInfoToDataBusListener.java |    1 
 service-job/src/main/java/com/java110/job/adapt/fee/asyn/impl/UpdateFeeOwnerInfoImpl.java         |  137 +++++++++++++++++++++++++++
 service-job/src/main/java/com/java110/job/adapt/fee/UpdateFeeOwnerInfoAdapt.java                  |   71 ++++++++++++++
 6 files changed, 248 insertions(+), 1 deletions(-)

diff --git a/java110-interface/src/main/java/com/java110/intf/fee/IFeeAttrInnerServiceSMO.java b/java110-interface/src/main/java/com/java110/intf/fee/IFeeAttrInnerServiceSMO.java
index 2cb65d7..8f65dd1 100755
--- a/java110-interface/src/main/java/com/java110/intf/fee/IFeeAttrInnerServiceSMO.java
+++ b/java110-interface/src/main/java/com/java110/intf/fee/IFeeAttrInnerServiceSMO.java
@@ -48,4 +48,20 @@
      */
     @RequestMapping(value = "/saveFeeAttrs", method = RequestMethod.POST)
     int saveFeeAttrs(@RequestBody List<FeeAttrPo> feeAttrPos);
+
+    /**
+     * 淇濆瓨璐圭敤灞炴��
+     * @param feeAttrPo
+     * @return
+     */
+    @RequestMapping(value = "/saveFeeAttr", method = RequestMethod.POST)
+    int saveFeeAttr(@RequestBody FeeAttrPo feeAttrPo);
+
+    /**
+     * 淇敼璐圭敤灞炴��
+     * @param feeAttrPo
+     * @return
+     */
+    @RequestMapping(value = "/updateFeeAttr", method = RequestMethod.POST)
+    int updateFeeAttr(@RequestBody FeeAttrPo feeAttrPo);
 }
diff --git a/service-fee/src/main/java/com/java110/fee/smo/impl/FeeAttrInnerServiceSMOImpl.java b/service-fee/src/main/java/com/java110/fee/smo/impl/FeeAttrInnerServiceSMOImpl.java
index b889bd2..038d903 100755
--- a/service-fee/src/main/java/com/java110/fee/smo/impl/FeeAttrInnerServiceSMOImpl.java
+++ b/service-fee/src/main/java/com/java110/fee/smo/impl/FeeAttrInnerServiceSMOImpl.java
@@ -71,6 +71,21 @@
         return feeAttrServiceDaoImpl.saveFeeAttrs(info);
     }
 
+    @Override
+    public int saveFeeAttr(@RequestBody FeeAttrPo feeAttrPo) {
+        List<Map> feeAttrs = new ArrayList<>();
+        feeAttrs.add(BeanConvertUtil.beanCovertMap(feeAttrPo));
+        Map info = new HashMap();
+        info.put("feeAttrPos", feeAttrs);
+        return feeAttrServiceDaoImpl.saveFeeAttrs(info);
+    }
+
+    @Override
+    public int updateFeeAttr(@RequestBody FeeAttrPo feeAttrPo) {
+        feeAttrServiceDaoImpl.updateFeeAttrInfoInstance(BeanConvertUtil.beanCovertMap(feeAttrPo));
+        return 1;
+    }
+
     public IFeeAttrServiceDao getFeeAttrServiceDaoImpl() {
         return feeAttrServiceDaoImpl;
     }
diff --git a/service-job/src/main/java/com/java110/job/adapt/fee/UpdateFeeOwnerInfoAdapt.java b/service-job/src/main/java/com/java110/job/adapt/fee/UpdateFeeOwnerInfoAdapt.java
new file mode 100644
index 0000000..3a82011
--- /dev/null
+++ b/service-job/src/main/java/com/java110/job/adapt/fee/UpdateFeeOwnerInfoAdapt.java
@@ -0,0 +1,71 @@
+package com.java110.job.adapt.fee;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.entity.order.Business;
+import com.java110.job.adapt.DatabusAdaptImpl;
+import com.java110.job.adapt.fee.asyn.IUpdateFeeOwnerInfo;
+import com.java110.po.owner.OwnerPo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 淇敼涓氫富鏃� 鍒锋柊璐圭敤淇℃伅
+ *
+ * @ClassName UpdateFeeOwnerInfoAdapt
+ * @Description TODO
+ * @Author wuxw
+ * @Date 2021/10/7 20:50
+ * @Version 1.0
+ * add by wuxw 2021/10/7
+ **/
+@Component(value = "updateFeeOwnerInfoAdapt")
+public class UpdateFeeOwnerInfoAdapt extends DatabusAdaptImpl {
+
+
+    @Autowired
+    private IUpdateFeeOwnerInfo updateFeeOwnerInfoImpl;
+
+    /**
+     * accessToken={access_token}
+     * &extCommunityUuid=01000
+     * &extCommunityId=1
+     * &devSn=111111111
+     * &name=璁惧鍚嶇О
+     * &positionType=0
+     * &positionUuid=1
+     *
+     * @param business   褰撳墠澶勭悊涓氬姟
+     * @param businesses 鎵�鏈変笟鍔′俊鎭�
+     */
+    @Override
+    public void execute(Business business, List<Business> businesses) {
+        JSONObject data = business.getData();
+        if (data.containsKey(OwnerPo.class.getSimpleName())) {
+            Object bObj = data.get(OwnerPo.class.getSimpleName());
+            JSONArray businessMachines = null;
+            if (bObj instanceof JSONObject) {
+                businessMachines = new JSONArray();
+                businessMachines.add(bObj);
+            } else if (bObj instanceof List) {
+                businessMachines = JSONArray.parseArray(JSONObject.toJSONString(bObj));
+            } else {
+                businessMachines = (JSONArray) bObj;
+            }
+            for (int bOwnerIndex = 0; bOwnerIndex < businessMachines.size(); bOwnerIndex++) {
+                JSONObject businessOwner = businessMachines.getJSONObject(bOwnerIndex);
+                doOwnerInfo(business, businessOwner);
+            }
+        }
+    }
+
+    private void doOwnerInfo(Business business, JSONObject businessOwner) {
+
+        updateFeeOwnerInfoImpl.doUpdate(business, businessOwner);
+
+
+    }
+
+}
diff --git a/service-job/src/main/java/com/java110/job/adapt/fee/asyn/IUpdateFeeOwnerInfo.java b/service-job/src/main/java/com/java110/job/adapt/fee/asyn/IUpdateFeeOwnerInfo.java
new file mode 100644
index 0000000..0998aed
--- /dev/null
+++ b/service-job/src/main/java/com/java110/job/adapt/fee/asyn/IUpdateFeeOwnerInfo.java
@@ -0,0 +1,9 @@
+package com.java110.job.adapt.fee.asyn;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.entity.order.Business;
+
+public interface IUpdateFeeOwnerInfo {
+
+    void doUpdate(Business business, JSONObject businessOwner);
+}
diff --git a/service-job/src/main/java/com/java110/job/adapt/fee/asyn/impl/UpdateFeeOwnerInfoImpl.java b/service-job/src/main/java/com/java110/job/adapt/fee/asyn/impl/UpdateFeeOwnerInfoImpl.java
new file mode 100644
index 0000000..e3e74bb
--- /dev/null
+++ b/service-job/src/main/java/com/java110/job/adapt/fee/asyn/impl/UpdateFeeOwnerInfoImpl.java
@@ -0,0 +1,137 @@
+package com.java110.job.adapt.fee.asyn.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.RoomDto;
+import com.java110.dto.fee.FeeAttrDto;
+import com.java110.dto.fee.FeeDto;
+import com.java110.dto.owner.OwnerDto;
+import com.java110.entity.order.Business;
+import com.java110.intf.community.IRoomInnerServiceSMO;
+import com.java110.intf.fee.IFeeAttrInnerServiceSMO;
+import com.java110.intf.fee.IFeeInnerServiceSMO;
+import com.java110.intf.user.IOwnerInnerServiceSMO;
+import com.java110.job.adapt.fee.asyn.IUpdateFeeOwnerInfo;
+import com.java110.po.fee.FeeAttrPo;
+import com.java110.po.owner.OwnerPo;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class UpdateFeeOwnerInfoImpl implements IUpdateFeeOwnerInfo {
+
+    @Autowired
+    private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeAttrInnerServiceSMO feeAttrInnerServiceSMOImpl;
+
+
+    @Autowired
+    private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
+
+
+    @Override
+    @Async
+    public void doUpdate(Business business, JSONObject businessOwner) {
+        OwnerPo ownerPo = BeanConvertUtil.covertBean(businessOwner, OwnerPo.class);
+
+        RoomDto roomDto = new RoomDto();
+        roomDto.setOwnerId(ownerPo.getOwnerId());
+        //杩欑鎯呭喌璇存槑 涓氫富宸茬粡鍒犳帀浜� 闇�瑕佹煡璇㈢姸鎬佷负 1 鐨勬暟鎹�
+        List<RoomDto> rooms = roomInnerServiceSMOImpl.queryRoomsByOwner(roomDto);
+
+        //娌℃湁鎴垮眿鏃惰繑鍥�
+        if (rooms == null || rooms.size() < 1) {
+            return;
+        }
+
+        OwnerDto ownerDto = new OwnerDto();
+        ownerDto.setMemberId(ownerPo.getMemberId());
+        ownerDto.setCommunityId(ownerPo.getCommunityId());
+        List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnerMembers(ownerDto);
+        Assert.listOnlyOne(ownerDtos, "涓氫富涓嶅瓨鍦�");
+
+        //鎷垮埌灏忓尯ID
+        String communityId = ownerPo.getCommunityId();
+
+        List<String> payerObjIds = new ArrayList<>();
+        for (RoomDto tRoomDto : rooms) {
+            payerObjIds.add(tRoomDto.getUnitId());
+            payerObjIds.add(tRoomDto.getRoomId());
+            payerObjIds.add(tRoomDto.getFloorId());
+        }
+
+        FeeDto feeDto = new FeeDto();
+        feeDto.setCommunityId(communityId);
+        feeDto.setPayerObjIds(payerObjIds.toArray(new String[payerObjIds.size()]));
+        feeDto.setState(FeeDto.STATE_DOING);
+        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
+
+        for (FeeDto tmpFeeDto : feeDtos) {
+            doDealFeeDto(tmpFeeDto, ownerDtos.get(0));
+        }
+
+    }
+
+    private void doDealFeeDto(FeeDto tmpFeeDto, OwnerDto ownerDto) {
+
+        //鍒ゆ柇鏄惁瀛樺湪 涓氫富鍚嶇О
+
+        FeeAttrDto ownerNameAttr = getOwnerFeeAttr(tmpFeeDto, FeeAttrDto.SPEC_CD_OWNER_NAME);
+        FeeAttrPo tmpFeeAttrPo = new FeeAttrPo();
+        if (ownerNameAttr == null) {
+            tmpFeeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+            tmpFeeAttrPo.setCommunityId(ownerDto.getCommunityId());
+            tmpFeeAttrPo.setFeeId(tmpFeeDto.getFeeId());
+            tmpFeeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_NAME);
+            tmpFeeAttrPo.setValue(ownerDto.getName());
+            feeAttrInnerServiceSMOImpl.saveFeeAttr(tmpFeeAttrPo);
+        } else {
+            tmpFeeAttrPo.setAttrId(ownerNameAttr.getAttrId());
+            tmpFeeAttrPo.setValue(ownerDto.getName());
+            feeAttrInnerServiceSMOImpl.updateFeeAttr(tmpFeeAttrPo);
+        }
+
+        //鍒ゆ柇鏄惁瀛樺湪涓氫富鑱旂郴鐢佃瘽
+        ownerNameAttr = getOwnerFeeAttr(tmpFeeDto, FeeAttrDto.SPEC_CD_OWNER_LINK);
+        tmpFeeAttrPo = new FeeAttrPo();
+        if (ownerNameAttr == null) {
+            tmpFeeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+            tmpFeeAttrPo.setCommunityId(ownerDto.getCommunityId());
+            tmpFeeAttrPo.setFeeId(tmpFeeDto.getFeeId());
+            tmpFeeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_NAME);
+            tmpFeeAttrPo.setValue(ownerDto.getName());
+            feeAttrInnerServiceSMOImpl.saveFeeAttr(tmpFeeAttrPo);
+        } else {
+            tmpFeeAttrPo.setAttrId(ownerNameAttr.getAttrId());
+            tmpFeeAttrPo.setValue(ownerDto.getName());
+            feeAttrInnerServiceSMOImpl.updateFeeAttr(tmpFeeAttrPo);
+        }
+
+    }
+
+    private FeeAttrDto getOwnerFeeAttr(FeeDto tmpFeeDto, String specCd) {
+        List<FeeAttrDto> feeAttrDtos = tmpFeeDto.getFeeAttrDtos();
+        if (feeAttrDtos == null || feeAttrDtos.size() < 1) {
+            return null;
+        }
+
+        for (FeeAttrDto feeAttrDto : feeAttrDtos) {
+            if (!specCd.equals(feeAttrDto.getSpecCd())) {
+                continue;
+            }
+            return feeAttrDto;
+        }
+        return null;
+    }
+}
diff --git a/service-order/src/main/java/com/java110/order/listener/TransactionOrderInfoToDataBusListener.java b/service-order/src/main/java/com/java110/order/listener/TransactionOrderInfoToDataBusListener.java
index 985a8b1..8254295 100755
--- a/service-order/src/main/java/com/java110/order/listener/TransactionOrderInfoToDataBusListener.java
+++ b/service-order/src/main/java/com/java110/order/listener/TransactionOrderInfoToDataBusListener.java
@@ -58,7 +58,6 @@
             return;
         }
 
-
         String databusSwitch = MappingCache.getValue(DomainContant.COMMON_DOMAIN, DATABUS_SWITCH);
 
         if (!DATABUS_SWITCH_ON.equals(databusSwitch)) {

--
Gitblit v1.8.0