From 05683f2b2bdbdbe21cf17ad523c21ab338bd1c54 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期二, 19 七月 2022 21:49:55 +0800
Subject: [PATCH] 优化添加设备 功能

---
 service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarLogCmd.java |  175 ++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 139 insertions(+), 36 deletions(-)

diff --git a/service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarLogCmd.java b/service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarLogCmd.java
index 13f0326..94af0ea 100644
--- a/service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarLogCmd.java
+++ b/service-common/src/main/java/com/java110/common/cmd/machineTranslate/MachineUploadCarLogCmd.java
@@ -4,7 +4,7 @@
 import com.java110.core.annotation.Java110Cmd;
 import com.java110.core.annotation.Java110Transactional;
 import com.java110.core.context.ICmdDataFlowContext;
-import com.java110.core.event.cmd.AbstractServiceCmdListener;
+import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
 import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.dto.CommunityMemberDto;
@@ -18,10 +18,12 @@
 import com.java110.dto.owner.OwnerDto;
 import com.java110.dto.tempCarFeeConfig.TempCarFeeConfigDto;
 import com.java110.intf.common.ICarInoutDetailV1InnerServiceSMO;
+import com.java110.intf.common.ICarInoutPaymentV1InnerServiceSMO;
 import com.java110.intf.common.ICarInoutV1InnerServiceSMO;
 import com.java110.intf.common.IMachineInnerServiceSMO;
 import com.java110.intf.community.ICommunityInnerServiceSMO;
 import com.java110.intf.fee.IFeeAttrInnerServiceSMO;
+import com.java110.intf.fee.IFeeDetailInnerServiceSMO;
 import com.java110.intf.fee.IFeeInnerServiceSMO;
 import com.java110.intf.fee.ITempCarFeeConfigInnerServiceSMO;
 import com.java110.intf.user.IBuildingOwnerV1InnerServiceSMO;
@@ -30,7 +32,9 @@
 import com.java110.po.car.CarInoutDetailPo;
 import com.java110.po.car.CarInoutPo;
 import com.java110.po.car.OwnerCarPo;
+import com.java110.po.carInoutPayment.CarInoutPaymentPo;
 import com.java110.po.fee.FeeAttrPo;
+import com.java110.po.fee.PayFeeDetailPo;
 import com.java110.po.fee.PayFeePo;
 import com.java110.po.owner.OwnerPo;
 import com.java110.utils.exception.CmdException;
@@ -52,7 +56,7 @@
  * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
  */
 @Java110Cmd(serviceCode = "machineTranslate.machineUploadCarLog")
-public class MachineUploadCarLogCmd extends AbstractServiceCmdListener {
+public class MachineUploadCarLogCmd extends Cmd {
 
     public static final int CAR_TYPE_MONTH = 0; //鏈堢杞�
     public static final int CAR_TYPE_SUB = 1; //鎴愬憳杞﹁締
@@ -94,6 +98,12 @@
     @Autowired
     private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
 
+    @Autowired
+    private ICarInoutPaymentV1InnerServiceSMO carInoutPaymentV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl;
+
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
         Assert.hasKeyAndValue(reqJson, "machineCode", "蹇呭~锛岃濉啓璁惧缂栫爜");
@@ -113,7 +123,6 @@
         MachineDto machineDto = new MachineDto();
         machineDto.setMachineCode(reqJson.getString("machineCode"));
         machineDto.setCommunityId(reqJson.getString("communityId"));
-        machineDto.setMachineTypeCd(MachineDto.MACHINE_TYPE_CAR);
         List<MachineDto> machineDtos = machineInnerServiceSMOImpl.queryMachines(machineDto);
 
         Assert.listOnlyOne(machineDtos, "璁惧涓嶅瓨鍦�");
@@ -129,12 +138,10 @@
             tempCar = CAR_TYPE_NO_DATA;
         } else {
             reqJson.put("carId", ownerCarDtos.get(0).getCarId());
+            if (OwnerCarDto.CAR_TYPE_TEMP.equals(ownerCarDtos.get(0).getCarTypeCd())) {
+                tempCar = CAR_TYPE_TEMP;
+            }
         }
-
-        if (OwnerCarDto.CAR_TYPE_TEMP.equals(ownerCarDtos.get(0).getCarType())) {
-            tempCar = CAR_TYPE_TEMP;
-        }
-
 
         //杩涘満澶勭悊
         if (MachineDto.DIRECTION_IN.equals(machineDtos.get(0).getDirection())) {
@@ -166,18 +173,9 @@
         List<CarInoutDto> carInoutDtos = carInoutV1InnerServiceSMOImpl.queryCarInouts(carInoutDto);
 
         if (carInoutDtos == null || carInoutDtos.size() < 1) {
-            //鍙兘杞﹁締寮傚父鎯呭喌 娌℃湁 杩涘満 璁板綍 琛ヤ竴鏉� carInout
-            CarInoutPo carInoutPo = new CarInoutPo();
-            carInoutPo.setCarNum(reqJson.getString("carNum"));
-            carInoutPo.setCommunityId(reqJson.getString("communityId"));
-            carInoutPo.setInoutId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
-            carInoutPo.setInTime(reqJson.getString("outTime"));
-            carInoutPo.setState(CarInoutDto.STATE_IN);
-            carInoutPo.setPaId(machineDto.getLocationObjId());
-            int flag = carInoutV1InnerServiceSMOImpl.saveCarInout(carInoutPo);
-            if (flag < 1) {
-                throw new CmdException("鍑哄満淇濆瓨璁板綍澶辫触");
-            }
+            //鍙兘杞﹁締寮傚父鎯呭喌 娌℃湁 杩涘満 琛ュ厖杩涘満璁板綍
+            reqJson.put("inTime", reqJson.getString("outTime"));
+            carIn(reqJson, machineDto, tempCar);
             carInoutDtos = carInoutV1InnerServiceSMOImpl.queryCarInouts(carInoutDto);
         }
 
@@ -199,8 +197,107 @@
 
         //灏嗙姸鎬佹洿鏂颁负 鍑哄満鐘舵��
 
+        CarInoutPo carInoutPo = new CarInoutPo();
+        carInoutPo.setPaId(carInoutDtos.get(0).getPaId());
+        carInoutPo.setOutTime(reqJson.getString("outTime"));
+        carInoutPo.setInoutId(carInoutDtos.get(0).getInoutId());
+        carInoutPo.setCommunityId(carInoutDtos.get(0).getCommunityId());
+        carInoutPo.setState(CarInoutDto.STATE_OUT);
+        flag = carInoutV1InnerServiceSMOImpl.updateCarInout(carInoutPo);
+
+        if (flag < 1) {
+            throw new CmdException("鏇存柊鍑哄満鏃堕棿澶辫触");
+        }
+
+        //鍐欐敮浠樿褰�
+        CarInoutPaymentPo carInoutPaymentPo = new CarInoutPaymentPo();
+        carInoutPaymentPo.setPaymentId(GenerateCodeFactory.getGeneratorId("10"));
+        carInoutPaymentPo.setCommunityId(carInoutDtos.get(0).getCommunityId());
+        carInoutPaymentPo.setInoutId(carInoutDtos.get(0).getInoutId());
+        carInoutPaymentPo.setPaId(carInoutDtos.get(0).getPaId());
+        carInoutPaymentPo.setPayCharge(reqJson.getString("payCharge"));
+        carInoutPaymentPo.setPayType(reqJson.getString("payType"));
+        carInoutPaymentPo.setRealCharge(reqJson.getString("realCharge"));
+        flag = carInoutPaymentV1InnerServiceSMOImpl.saveCarInoutPayment(carInoutPaymentPo);
+        if (flag < 1) {
+            throw new CmdException("鏇存柊鍑哄満鏃堕棿澶辫触");
+        }
+
+        //鏈堢杞�
+        if (tempCar != CAR_TYPE_NO_DATA && tempCar != CAR_TYPE_TEMP) {
+            return;
+        }
+
+        //濡傛灉鏈夎垂鐢� 鍒欑即璐�
+        boolean hasFee = hasFeeAndPayFee(carInoutDtos.get(0), reqJson, carInoutPo, carInoutPaymentPo);
+
+        double realCharge = Double.parseDouble(carInoutPaymentPo.getRealCharge());
+
+        //鏈夎垂鐢� 鎴栬�� 缂磋垂涓�0 鏃剁粨鏉�
+        if (hasFee || realCharge == 0) {
+            return;
+        }
+        // 鍒ゆ柇鏄惁瀛樺湪 涓存椂杞� 铏氭嫙涓氫富
+        OwnerDto ownerDto = new OwnerDto();
+        ownerDto.setCommunityId(reqJson.getString("communityId"));
+        ownerDto.setOwnerTypeCd(OwnerDto.OWNER_TYPE_CD_OWNER);
+        ownerDto.setOwnerFlag(OwnerDto.OWNER_FLAG_FALSE);
+        ownerDto.setName(TEMP_CAR_OWNER);
+        List<OwnerDto> ownerDtos = buildingOwnerV1InnerServiceSMOImpl.queryBuildingOwners(ownerDto);
+        if (ownerDtos == null || ownerDtos.size() < 1) {
+            return;
+        }
+        JSONObject paramIn = new JSONObject();
+        paramIn.put("inTime", carInoutDtos.get(0).getInTime());
+        paramIn.put("carId", reqJson.getString("carId"));
+        paramIn.put("communityId", carInoutDtos.get(0).getCommunityId());
+        paramIn.put("inoutId", carInoutDtos.get(0).getInoutId());
+        paramIn.put("ownerId", ownerDtos.get(0).getMemberId());
+        saveTempCarFee(paramIn, machineDto);
+
+        //鍐嶅幓缂磋垂
+        hasFeeAndPayFee(carInoutDtos.get(0), reqJson, carInoutPo, carInoutPaymentPo);
+    }
+
+    private boolean hasFeeAndPayFee(CarInoutDto carInoutDto, JSONObject reqJson, CarInoutPo carInoutPo, CarInoutPaymentPo carInoutPaymentPo) {
+
+        FeeAttrDto feeAttrDto = new FeeAttrDto();
+        feeAttrDto.setCommunityId(carInoutPo.getCommunityId());
+        feeAttrDto.setSpecCd(FeeAttrDto.SPEC_CD_CAR_INOUT_ID);
+        feeAttrDto.setValue(carInoutPo.getInoutId());
+        feeAttrDto.setState(FeeDto.STATE_DOING);
+        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFeeByAttr(feeAttrDto);
+        if (feeDtos == null || feeDtos.size() < 1) {
+            return false;
+        }
+        PayFeePo payFeePo = new PayFeePo();
+        payFeePo.setState(FeeDto.STATE_FINISH);
+        payFeePo.setFeeId(feeDtos.get(0).getFeeId());
+        payFeePo.setEndTime(carInoutPo.getOutTime());
+        payFeePo.setCommunityId(feeDtos.get(0).getCommunityId());
+        int flag = feeInnerServiceSMOImpl.updateFee(payFeePo);
+        if (flag < 1) {
+            throw new CmdException("鏇存柊璐圭敤澶辫触");
+        }
 
 
+        PayFeeDetailPo payFeeDetailPo = new PayFeeDetailPo();
+        payFeeDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
+        payFeeDetailPo.setPrimeRate("1.00");
+        FeeDto feeDto = feeDtos.get(0);
+        payFeeDetailPo.setStartTime(DateUtil.getFormatTimeString(feeDto.getStartTime(), DateUtil.DATE_FORMATE_STRING_A));
+        payFeeDetailPo.setEndTime(carInoutPo.getOutTime());
+        payFeeDetailPo.setCommunityId(carInoutDto.getCommunityId());
+        payFeeDetailPo.setCycles("1");
+        payFeeDetailPo.setReceivableAmount(carInoutPaymentPo.getPayCharge());
+        payFeeDetailPo.setReceivedAmount(carInoutPaymentPo.getRealCharge());
+        payFeeDetailPo.setFeeId(feeDto.getFeeId());
+
+        flag = feeDetailInnerServiceSMOImpl.saveFeeDetail(payFeeDetailPo);
+        if (flag < 1) {
+            throw new CmdException("鏇存柊璐圭敤澶辫触");
+        }
+        return true;
     }
 
     /**
@@ -224,6 +321,7 @@
         if (flag < 1) {
             throw new CmdException("淇濆瓨鍏ヨ褰曞け璐�");
         }
+        reqJson.put("inoutId", carInoutPo.getInoutId());
 
         //淇濆瓨鏄庣粏
         CarInoutDetailPo carInoutDetailPo = new CarInoutDetailPo();
@@ -267,18 +365,7 @@
             saveTempCar(reqJson, machineDto);
         }
 
-        //鍒涘缓璐圭敤
-        TempCarFeeConfigDto tempCarFeeConfigDto = new TempCarFeeConfigDto();
-        tempCarFeeConfigDto.setCommunityId(reqJson.getString("communityId"));
-        tempCarFeeConfigDto.setPaId(machineDto.getLocationObjId());
-
-        List<TempCarFeeConfigDto> tempCarFeeConfigDtos = tempCarFeeConfigInnerServiceSMOImpl.queryTempCarFeeConfigs(tempCarFeeConfigDto);
-
-        if (tempCarFeeConfigDtos == null || tempCarFeeConfigDtos.size() < 1) { // 鍋滆溅鍦烘湭閰嶇疆鏀惰垂瑙勫垯 鍒欎笉鍒涘缓璐圭敤
-            return;
-        }
-
-        saveTempCarFee(reqJson, machineDto, tempCarFeeConfigDtos.get(0));
+        saveTempCarFee(reqJson, machineDto);
     }
 
     /**
@@ -286,9 +373,19 @@
      *
      * @param reqJson
      * @param machineDto
-     * @param tempCarFeeConfigDto
      */
-    private void saveTempCarFee(JSONObject reqJson, MachineDto machineDto, TempCarFeeConfigDto tempCarFeeConfigDto) {
+    private void saveTempCarFee(JSONObject reqJson, MachineDto machineDto) {
+
+        //鍒涘缓璐圭敤
+        TempCarFeeConfigDto tempCarFeeConfigDto = new TempCarFeeConfigDto();
+        tempCarFeeConfigDto.setCommunityId(reqJson.getString("communityId"));
+        tempCarFeeConfigDto.setPaId(machineDto.getLocationObjId());
+        List<TempCarFeeConfigDto> tempCarFeeConfigDtos = tempCarFeeConfigInnerServiceSMOImpl.queryTempCarFeeConfigs(tempCarFeeConfigDto);
+
+        if (tempCarFeeConfigDtos == null || tempCarFeeConfigDtos.size() < 1) { // 鍋滆溅鍦烘湭閰嶇疆鏀惰垂瑙勫垯 鍒欎笉鍒涘缓璐圭敤
+            return;
+        }
+
         CommunityMemberDto communityMemberDto = new CommunityMemberDto();
         communityMemberDto.setCommunityId(reqJson.getString("communityId"));
         communityMemberDto.setMemberTypeCd(CommunityMemberDto.MEMBER_TYPE_PROPERTY);
@@ -341,6 +438,13 @@
         feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
         feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_LINK);
         feeAttrPo.setValue("11111111111");
+        feeAttrPo.setFeeId(payFeePo.getFeeId());
+        feeAttrPos.add(feeAttrPo);
+        feeAttrPo = new FeeAttrPo();
+        feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+        feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+        feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_CAR_INOUT_ID);
+        feeAttrPo.setValue(reqJson.getString("inoutId"));
         feeAttrPo.setFeeId(payFeePo.getFeeId());
         feeAttrPos.add(feeAttrPo);
         int flag = feeInnerServiceSMOImpl.saveFee(payFeePos);
@@ -399,6 +503,7 @@
         ownerCarPo.setPsId("-1");
         ownerCarPo.setMemberId(ownerCarPo.getCarId());
         ownerCarPo.setCarTypeCd(OwnerCarDto.CAR_TYPE_CD_TEMP);
+        ownerCarPo.setCarType("9901");
         ownerCarPo.setCarBrand("鏈煡");
         ownerCarPo.setCarColor("鏈煡");
         ownerCarPo.setCarNum(reqJson.getString("carNum"));
@@ -413,7 +518,5 @@
         }
 
         reqJson.put("carId", ownerCarPo.getCarId());
-
-
     }
 }

--
Gitblit v1.8.0