From b6184e2ddf3db37a94f7efb3b619bbc64642a292 Mon Sep 17 00:00:00 2001
From: chengf <cgf12138@163.com>
Date: 星期二, 27 一月 2026 18:12:48 +0800
Subject: [PATCH] Z四

---
 service-fee/src/main/java/com/java110/fee/cmd/meterWater/SaveMeterWaterCmd.java |   71 +++++++++++++++++++++++++++--------
 1 files changed, 55 insertions(+), 16 deletions(-)

diff --git a/service-fee/src/main/java/com/java110/fee/cmd/meterWater/SaveMeterWaterCmd.java b/service-fee/src/main/java/com/java110/fee/cmd/meterWater/SaveMeterWaterCmd.java
index ee3cfaf..e2397dc 100644
--- a/service-fee/src/main/java/com/java110/fee/cmd/meterWater/SaveMeterWaterCmd.java
+++ b/service-fee/src/main/java/com/java110/fee/cmd/meterWater/SaveMeterWaterCmd.java
@@ -22,28 +22,27 @@
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
 import com.java110.core.factory.GenerateCodeFactory;
-import com.java110.dto.RoomDto;
+import com.java110.dto.room.RoomDto;
 import com.java110.dto.fee.FeeAttrDto;
 import com.java110.dto.fee.FeeConfigDto;
 import com.java110.dto.fee.FeeDto;
 import com.java110.dto.owner.OwnerDto;
-import com.java110.dto.payFeeBatch.PayFeeBatchDto;
+import com.java110.dto.payFee.PayFeeBatchDto;
 import com.java110.dto.user.UserDto;
+import com.java110.fee.feeMonth.IPayFeeMonth;
 import com.java110.intf.community.IRoomInnerServiceSMO;
-import com.java110.intf.fee.IFeeAttrInnerServiceSMO;
-import com.java110.intf.fee.IMeterWaterV1InnerServiceSMO;
-import com.java110.intf.fee.IPayFeeBatchV1InnerServiceSMO;
-import com.java110.intf.fee.IPayFeeV1InnerServiceSMO;
+import com.java110.intf.fee.*;
 import com.java110.intf.user.IOwnerInnerServiceSMO;
 import com.java110.intf.user.IUserInnerServiceSMO;
 import com.java110.po.fee.FeeAttrPo;
 import com.java110.po.fee.PayFeePo;
-import com.java110.po.meterWater.MeterWaterPo;
-import com.java110.po.payFeeBatch.PayFeeBatchPo;
+import com.java110.po.meter.MeterWaterPo;
+import com.java110.po.payFee.PayFeeBatchPo;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.ListUtil;
 import com.java110.utils.util.StringUtil;
 import com.java110.vo.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -87,6 +86,9 @@
     private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
 
     @Autowired
+    private IPayFeeConfigV1InnerServiceSMO payFeeConfigV1InnerServiceSMOImpl;
+
+    @Autowired
     private IPayFeeBatchV1InnerServiceSMO payFeeBatchV1InnerServiceSMOImpl;
 
     @Autowired
@@ -98,12 +100,12 @@
     @Autowired
     private IPayFeeV1InnerServiceSMO payFeeV1InnerServiceSMOImpl;
 
+
     @Autowired
     private IFeeAttrInnerServiceSMO feeAttrInnerServiceSMOImpl;
 
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
-        Assert.hasKeyAndValue(reqJson, "feeTypeCd", "璇锋眰鎶ユ枃涓湭鍖呭惈璐圭敤绫诲瀷");
         Assert.hasKeyAndValue(reqJson, "configId", "璇锋眰鎶ユ枃涓湭鍖呭惈璐圭敤椤�");
         Assert.hasKeyAndValue(reqJson, "objType", "璇锋眰鎶ユ枃涓湭鍖呭惈objType");
         Assert.hasKeyAndValue(reqJson, "objId", "璇锋眰鎶ユ枃涓湭鍖呭惈objId");
@@ -113,11 +115,30 @@
         Assert.hasKeyAndValue(reqJson, "curReadingTime", "璇锋眰鎶ユ枃涓湭鍖呭惈curReadingTime");
         Assert.hasKeyAndValue(reqJson, "objType", "璇锋眰鎶ユ枃涓湭鍖呭惈objType");
         Assert.hasKeyAndValue(reqJson, "meterType", "璇锋眰鎶ユ枃涓湭鍖呭惈鎶勮〃绫诲瀷");
+
+        if (reqJson.getDoubleValue("curDegrees") < reqJson.getDoubleValue("preDegrees")) {
+            throw new CmdException("褰撳墠璇绘暟灏忎簬涓婃湡璇绘暟");
+        }
+
+
     }
 
     @Override
     @Java110Transactional
     public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+        job(reqJson);
+        cmdDataFlowContext.setResponseEntity(ResultVo.success());
+    }
+
+    public void job(JSONObject reqJson) {
+        FeeConfigDto feeConfigDto = new FeeConfigDto();
+        feeConfigDto.setConfigId(reqJson.getString("configId"));
+        feeConfigDto.setCommunityId(reqJson.getString("communityId"));
+        List<FeeConfigDto> feeConfigDtos = payFeeConfigV1InnerServiceSMOImpl.queryPayFeeConfigs(feeConfigDto);
+        if (ListUtil.isNull(feeConfigDtos)) {
+            throw new CmdException("璐圭敤椤逛笉瀛樺湪");
+        }
+        reqJson.put("feeTypeCd", feeConfigDtos.get(0).getFeeTypeCd());
         String objId = reqJson.getString("objId");
         RoomDto roomDto = new RoomDto();
         roomDto.setRoomId(objId);
@@ -145,15 +166,17 @@
             //灏嗘暟缁勮浆鎴恖ist闆嗗悎(鐢佃垂榛戝悕鍗曢泦鍚�)
             electricRemarkList = Arrays.asList(electricSplit);
         }
+
+
         //濡傛灉鏄按璐癸紝涓斿湪姘磋垂榛戝悕鍗曞氨鐩存帴鐢熸垚姘磋垂璁板綍锛屼笉鐢熸垚璐圭敤
         if (waterRemarkList.contains(communityId)
                 && FeeConfigDto.FEE_TYPE_CD_METER.equals(reqJson.getString("feeTypeCd"))) {
             reqJson.put("feeId", "-1");
-            addMeterWater(reqJson);
+            addMeterWater(reqJson, roomList.get(0));
         } else if (electricRemarkList.contains(communityId)
                 && FeeConfigDto.FEE_TYPE_CD_WATER.equals(reqJson.getString("feeTypeCd"))) {
             reqJson.put("feeId", "-1");
-            addMeterWater(reqJson);
+            addMeterWater(reqJson, roomList.get(0));
         } else {
             PayFeePo payFeePo = BeanConvertUtil.covertBean(reqJson, PayFeePo.class);
             payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId));
@@ -169,6 +192,11 @@
             payFeePo.setState(FeeDto.STATE_DOING);
             payFeePo.setBatchId(reqJson.getString("batchId"));
             payFeePo.setUserId("-1");
+
+            //todo 鍏堝啓 涓嶇劧 鍐欐湀绂绘暎琛� 鏌ヨ璐圭敤鏃� 鏌ヤ笉鍒�
+            reqJson.put("feeId", payFeePo.getFeeId());
+            addMeterWater(reqJson, roomList.get(0));
+
             int flag = payFeeV1InnerServiceSMOImpl.savePayFee(payFeePo);
             if (flag < 1) {
                 throw new CmdException("淇濆瓨鏁版嵁澶辫触");
@@ -183,6 +211,19 @@
             if (flag < 1) {
                 throw new CmdException("淇濆瓨鏁版嵁澶辫触");
             }
+
+            //todo 淇濆瓨 鎴垮眿鍚嶇О
+            feeAttrPo = new FeeAttrPo();
+            feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_PAY_OBJECT_NAME);
+            feeAttrPo.setValue(roomList.get(0).getFloorNum() + "-" + roomList.get(0).getUnitNum() + "-" + roomList.get(0).getRoomNum());
+            feeAttrPo.setFeeId(payFeePo.getFeeId());
+            feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+            flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo);
+            if (flag < 1) {
+                throw new CmdException("淇濆瓨鏁版嵁澶辫触");
+            }
+
             OwnerDto ownerDto = new OwnerDto();
             ownerDto.setCommunityId(reqJson.getString("communityId"));
             ownerDto.setRoomId(reqJson.getString("objId"));
@@ -222,10 +263,8 @@
                     throw new CmdException("淇濆瓨鏁版嵁澶辫触");
                 }
             }
-            reqJson.put("feeId", payFeePo.getFeeId());
-            addMeterWater(reqJson);
+
         }
-        cmdDataFlowContext.setResponseEntity(ResultVo.success());
     }
 
     /**
@@ -234,13 +273,13 @@
      * @param paramInJson 鎺ュ彛璋冪敤鏀句紶鍏ュ叆鍙�
      * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
      */
-    public void addMeterWater(JSONObject paramInJson) {
+    public void addMeterWater(JSONObject paramInJson, RoomDto roomDto) {
         MeterWaterPo meterWaterPo = BeanConvertUtil.covertBean(paramInJson, MeterWaterPo.class);
         if (StringUtil.isEmpty(meterWaterPo.getbId())) {
             meterWaterPo.setbId("-1");
         }
         meterWaterPo.setWaterId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
-
+        meterWaterPo.setObjName(roomDto.getFloorNum() + "-" + roomDto.getUnitNum() + "-" + roomDto.getRoomNum());
         int flag = meterWaterV1InnerServiceSMOImpl.saveMeterWater(meterWaterPo);
 
         if (flag < 1) {

--
Gitblit v1.8.0