From 627f3930f06a41db3d9b59a7ed06689a6d939b30 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期四, 10 九月 2020 23:44:15 +0800
Subject: [PATCH] 优化代码
---
service-fee/src/main/java/com/java110/fee/bmo/importFee/impl/FeeSharingBMOImpl.java | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 150 insertions(+), 21 deletions(-)
diff --git a/service-fee/src/main/java/com/java110/fee/bmo/importFee/impl/FeeSharingBMOImpl.java b/service-fee/src/main/java/com/java110/fee/bmo/importFee/impl/FeeSharingBMOImpl.java
index 7b65ec1..08f0762 100644
--- a/service-fee/src/main/java/com/java110/fee/bmo/importFee/impl/FeeSharingBMOImpl.java
+++ b/service-fee/src/main/java/com/java110/fee/bmo/importFee/impl/FeeSharingBMOImpl.java
@@ -4,15 +4,26 @@
import com.java110.core.annotation.Java110Transactional;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.dto.RoomDto;
+import com.java110.dto.fee.FeeAttrDto;
+import com.java110.dto.fee.FeeConfigDto;
import com.java110.dto.fee.FeeDto;
import com.java110.dto.feeFormula.FeeFormulaDto;
import com.java110.fee.bmo.importFee.IFeeSharingBMO;
+import com.java110.intf.IImportFeeDetailInnerServiceSMO;
import com.java110.intf.community.IRoomInnerServiceSMO;
+import com.java110.intf.fee.IFeeAttrInnerServiceSMO;
+import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
import com.java110.intf.fee.IFeeFormulaInnerServiceSMO;
import com.java110.intf.fee.IFeeInnerServiceSMO;
import com.java110.intf.fee.IImportFeeInnerServiceSMO;
+import com.java110.po.fee.FeeAttrPo;
+import com.java110.po.fee.PayFeeConfigPo;
import com.java110.po.fee.PayFeePo;
+import com.java110.po.importFee.ImportFeePo;
+import com.java110.po.importFeeDetail.ImportFeeDetailPo;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
@@ -20,11 +31,14 @@
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
+import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@Service("feeSharingBMOImpl")
public class FeeSharingBMOImpl implements IFeeSharingBMO {
+
+ private static final String IMPORT_FEE_NAME = "瀵煎叆璐圭敤";
@Autowired
private IImportFeeInnerServiceSMO importFeeInnerServiceSMOImpl;
@@ -37,6 +51,15 @@
@Autowired
private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
+
+ @Autowired
+ private IFeeConfigInnerServiceSMO feeConfigInnerServiceSMOImpl;
+
+ @Autowired
+ private IFeeAttrInnerServiceSMO feeAttrInnerServiceSMOImpl;
+
+ @Autowired
+ private IImportFeeDetailInnerServiceSMO importFeeDetailInnerServiceSMOImpl;
/**
* 娣诲姞灏忓尯淇℃伅
@@ -69,6 +92,20 @@
throw new IllegalArgumentException("鏈壘鍒扮浉搴旀埧灞嬪叕鎽婅垂鐢�");
}
+ FeeConfigDto feeConfigDto = new FeeConfigDto();
+ feeConfigDto.setFeeTypeCd(reqJson.getString("feeTypeCd"));
+ feeConfigDto.setFeeName(IMPORT_FEE_NAME);
+ feeConfigDto.setCommunityId(reqJson.getString("communityId"));
+ List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
+ // 鏍规嵁璐圭敤澶х被 鍒ゆ柇鏄惁鏈夊瓨鍦� 璐圭敤瀵煎叆鏀跺叆椤�
+ if (feeConfigDtos == null || feeConfigDtos.size() < 1) {
+ //鐢熸垚瀵煎叆璐�
+ feeConfigDto.setConfigId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_configId));
+ saveFeeConfig(feeConfigDto);
+ } else {
+ feeConfigDto.setConfigId(feeConfigDtos.get(0).getConfigId());
+ }
+
FeeFormulaDto feeFormulaDto = new FeeFormulaDto();
feeFormulaDto.setCommunityId(reqJson.getString("communityId"));
feeFormulaDto.setFormulaId(reqJson.getString("formulaId"));
@@ -80,7 +117,7 @@
String formulaValue = deakFormula(feeFormulaDtos.get(0));
//鍏憡璐圭敤鍒版埧灞�
- sharingFeeToRoom(formulaValue, roomDtos, reqJson);
+ sharingFeeToRoom(formulaValue, feeFormulaDtos.get(0).getPrice(), roomDtos, reqJson, feeConfigDto);
return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "淇濆瓨澶辫触");
@@ -92,13 +129,42 @@
* @param formulaValue
* @param roomDtos
*/
- private void sharingFeeToRoom(String formulaValue, List<RoomDto> roomDtos, JSONObject reqJson) {
+ private void sharingFeeToRoom(String formulaValue, double price, List<RoomDto> roomDtos,
+ JSONObject reqJson, FeeConfigDto feeConfigDto) {
List<PayFeePo> payFeePos = new ArrayList<>();
+ List<FeeAttrPo> feeAttrPos = new ArrayList<>();
+ List<ImportFeeDetailPo> importFeeDetailPos = new ArrayList<>();
+ String importFeeId = GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId);
for (RoomDto roomDto : roomDtos) {
- doSharingFeeToRoom(formulaValue, roomDto, reqJson, payFeePos);
+ doSharingFeeToRoom(formulaValue, price, roomDto, reqJson, payFeePos, feeConfigDto, feeAttrPos, importFeeId, importFeeDetailPos);
}
+
+ feeInnerServiceSMOImpl.saveFee(payFeePos);
+
+ feeAttrInnerServiceSMOImpl.saveFeeAttrs(feeAttrPos);
+
+ //淇濆瓨鏃ュ織
+ ImportFeePo importFeePo = new ImportFeePo();
+ importFeePo.setCommunityId(reqJson.getString("communityId"));
+ importFeePo.setFeeTypeCd(reqJson.getString("feeTypeCd"));
+ importFeePo.setImportFeeId(importFeeId);
+ String scope = reqJson.getString("scope");
+ String scopeName = "";
+ if ("1001".equals(scope)) {//灏忓尯
+ scopeName = "鏁翠釜灏忓尯";
+ } else if ("2002".equals(scope)) {//妤兼爧
+ scopeName = roomDtos.get(0).getFloorNum() + "鏍�";
+ } else {//鍗曞厓
+ scopeName = roomDtos.get(0).getFloorNum() + "鏍�" + roomDtos.get(0).getUnitNum() + "鍗曞厓";
+ }
+ importFeePo.setRemark("鎬讳娇鐢ㄩ噺锛�" + reqJson.getString("totalDegrees")
+ + ",鍏紡锛�" + formulaValue + ",鍏憡鑼冨洿锛�" + scopeName);
+ importFeeInnerServiceSMOImpl.saveImportFee(importFeePo);
+
+ importFeeDetailInnerServiceSMOImpl.saveImportFeeDetails(importFeeDetailPos);
+
}
/**
@@ -114,18 +180,10 @@
* @param formulaValue
* @param roomDto
*/
- private void doSharingFeeToRoom(String formulaValue, RoomDto roomDto, JSONObject reqJson, List<PayFeePo> payFeePos) {
- Assert.hasKeyAndValue(reqJson, "communityId", "鏈寘鍚皬鍖篒D");
- Assert.hasKeyAndValue(reqJson, "totalDegrees", "鏈寘鍚娇鐢ㄩ噺");
- Assert.hasKeyAndValue(reqJson, "scope", "鏈寘鍚叕鎽婅寖鍥�");
- Assert.hasKeyAndValue(reqJson, "formulaId", "鏈寘鍚叕鎽婂叕寮�");
- Assert.hasKeyAndValue(reqJson, "feeName", "鏈寘鍚垂鐢ㄥ悕绉�");
- Assert.hasKeyAndValue(reqJson, "startTime", "鏈寘鍚紑濮嬫椂闂�");
- Assert.hasKeyAndValue(reqJson, "endTime", "鏈寘鍚粨鏉熸椂闂�");
- Assert.hasKeyAndValue(reqJson, "objId", "鏈寘鍚叕鎽婂璞�");
- Assert.hasKeyAndValue(reqJson, "feeTypeCd", "鏈寘鍚垂鐢ㄧ被鍨�");
-
-
+ private void doSharingFeeToRoom(String formulaValue, double price, RoomDto roomDto, JSONObject reqJson,
+ List<PayFeePo> payFeePos, FeeConfigDto feeConfigDto,
+ List<FeeAttrPo> feeAttrPos, String importFeeId,
+ List<ImportFeeDetailPo> importFeeDetailPos) {
String orgFormulaValue = formulaValue;
formulaValue = formulaValue.replace("T", reqJson.getString("totalDegrees"))
.replace("F", roomDto.getFloorArea())
@@ -136,22 +194,66 @@
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
String value = "";
+ double amount = 0.0;
try {
value = engine.eval(formulaValue).toString();
- value = engine.eval(value + ".toFixed(2)").toString();
+ BigDecimal valueObj = new BigDecimal(Double.parseDouble(value));
+ BigDecimal priceObj = new BigDecimal(price);
+ priceObj = valueObj.multiply(priceObj).setScale(2, BigDecimal.ROUND_HALF_EVEN);
+ amount = priceObj.doubleValue();
} catch (Exception e) {
throw new IllegalArgumentException("鍏紡璁$畻寮傚父锛屽叕寮忎负銆�" + orgFormulaValue + "銆�,璁$畻 銆�" + formulaValue + "銆戝紓甯�");
}
PayFeePo payFeePo = new PayFeePo();
- payFeePo.setEndTime(reqJson.getString("endTime"));
- payFeePo.setUserId(reqJson.getString("userId"));
- payFeePo.setPayerObjId(roomDto.getRoomId());
- payFeePo.setCommunityId(reqJson.getString("communityId"));
payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId));
+ payFeePo.setEndTime(reqJson.getString("startTime"));
payFeePo.setState(FeeDto.STATE_DOING);
+ payFeePo.setCommunityId(reqJson.getString("communityId"));
+ payFeePo.setConfigId(feeConfigDto.getConfigId());
+ payFeePo.setPayerObjId(reqJson.getString("objId"));
+ payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
+ payFeePo.setUserId(reqJson.getString("userId"));
payFeePo.setIncomeObjId(reqJson.getString("storeId"));
- //payFeePo.setFeeFlag();
+ payFeePo.setFeeTypeCd(reqJson.getString("feeTypeCd"));
+ payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE);
+ payFeePo.setAmount(amount + "");
+ //payFeePo.setStartTime(importRoomFee.getStartTime());
+ payFeePo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+
+ payFeePos.add(payFeePo);
+
+ FeeAttrPo feeAttrPo = new FeeAttrPo();
+ feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+ feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+ feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_IMPORT_FEE_NAME);
+ feeAttrPo.setValue(reqJson.getString("feeName"));
+ 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_SHARE_DEGREES);
+ feeAttrPo.setValue(reqJson.getString("value"));
+ feeAttrPo.setFeeId(payFeePo.getFeeId());
+ feeAttrPos.add(feeAttrPo);
+ ImportFeeDetailPo importFeeDetailPo = new ImportFeeDetailPo();
+ importFeeDetailPo.setAmount(value);
+ importFeeDetailPo.setCommunityId(reqJson.getString("communityId"));
+ importFeeDetailPo.setEndTime(reqJson.getString("endTime"));
+ importFeeDetailPo.setFeeId(payFeePo.getFeeId());
+ importFeeDetailPo.setFeeName(reqJson.getString("feeName"));
+ importFeeDetailPo.setFloorNum(roomDto.getFloorNum());
+ importFeeDetailPo.setUnitNum(roomDto.getUnitNum());
+ importFeeDetailPo.setRoomNum(roomDto.getRoomNum());
+ importFeeDetailPo.setRoomId(roomDto.getRoomId());
+ importFeeDetailPo.setStartTime(reqJson.getString("startTime"));
+ importFeeDetailPo.setIfdId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId));
+ importFeeDetailPo.setState("1000");
+ importFeeDetailPo.setImportFeeId(importFeeId);
+ importFeeDetailPo.setRemark("鍏憡鐢ㄩ噺锛�" + value);
+ importFeeDetailPos.add(importFeeDetailPo);
}
@@ -166,4 +268,31 @@
return value;
}
+
+ /**
+ * 淇濆瓨淇濆瓨瀵煎叆璐圭敤閰嶇疆
+ *
+ * @param feeConfigDto
+ */
+ private void saveFeeConfig(FeeConfigDto feeConfigDto) {
+
+ PayFeeConfigPo payFeeConfigPo = BeanConvertUtil.covertBean(feeConfigDto, PayFeeConfigPo.class);
+ payFeeConfigPo.setAdditionalAmount("0");
+ payFeeConfigPo.setBillType(FeeConfigDto.BILL_TYPE_MONTH);
+ payFeeConfigPo.setComputingFormula("4004");
+ payFeeConfigPo.setEndTime(DateUtil.getLastTime());
+ payFeeConfigPo.setFeeFlag("2006012");
+ payFeeConfigPo.setIsDefault("T");
+ payFeeConfigPo.setPaymentCd("2100");
+ payFeeConfigPo.setFeeName(IMPORT_FEE_NAME);
+ payFeeConfigPo.setSquarePrice("0");
+ payFeeConfigPo.setPaymentCycle("1");
+ payFeeConfigPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+ int saveFlag = feeConfigInnerServiceSMOImpl.saveFeeConfig(payFeeConfigPo);
+
+ if (saveFlag < 1) {
+ throw new IllegalArgumentException("鍒涘缓瀵煎叆璐圭敤澶辫触");
+ }
+ }
+
}
--
Gitblit v1.8.0