From 0b04f664887c73e90bf684a4e69c0fdbfe26349d Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期三, 29 三月 2023 13:35:20 +0800
Subject: [PATCH] Merge branch 'master' of http://git.homecommunity.cn/supervip/MicroCommunity
---
service-fee/src/main/java/com/java110/fee/bmo/importFee/impl/FeeSharingBMOImpl.java | 213 +++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 191 insertions(+), 22 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
old mode 100644
new mode 100755
index facb719..e645c99
--- 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,26 +4,30 @@
import com.java110.core.annotation.Java110Transactional;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.dto.RoomDto;
+import com.java110.dto.community.CommunityDto;
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.dto.owner.OwnerDto;
+import com.java110.dto.payFeeBatch.PayFeeBatchDto;
+import com.java110.dto.user.UserDto;
import com.java110.fee.bmo.importFee.IFeeSharingBMO;
-import com.java110.intf.IImportFeeDetailInnerServiceSMO;
+import com.java110.intf.community.ICommunityInnerServiceSMO;
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.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.PayFeeConfigPo;
import com.java110.po.fee.PayFeePo;
import com.java110.po.importFee.ImportFeePo;
import com.java110.po.importFeeDetail.ImportFeeDetailPo;
+import com.java110.po.payFeeBatch.PayFeeBatchPo;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
@@ -33,7 +37,9 @@
import javax.script.ScriptEngineManager;
import java.math.BigDecimal;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
@Service("feeSharingBMOImpl")
public class FeeSharingBMOImpl implements IFeeSharingBMO {
@@ -61,6 +67,18 @@
@Autowired
private IImportFeeDetailInnerServiceSMO importFeeDetailInnerServiceSMOImpl;
+ @Autowired
+ private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
+
+ @Autowired
+ private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
+
+ @Autowired
+ private IPayFeeBatchV1InnerServiceSMO payFeeBatchV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IUserInnerServiceSMO userInnerServiceSMOImpl;
+
/**
* 娣诲姞灏忓尯淇℃伅
*
@@ -71,9 +89,31 @@
public ResponseEntity<String> share(JSONObject reqJson) {
+ CommunityDto communityDto = new CommunityDto();
+ communityDto.setCommunityId(reqJson.getString("communityId"));
+ List<CommunityDto> communityDtos = communityInnerServiceSMOImpl.queryCommunitys(communityDto);
+
+ Assert.listOnlyOne(communityDtos, "鏈壘鍒板皬鍖轰俊鎭�");
+
+ //鐢熸垚鎵规
+ generatorBatch(reqJson);
+
String scope = reqJson.getString("scope");
RoomDto roomDto = new RoomDto();
- roomDto.setState(RoomDto.STATE_SELL); // 宸插敭鎴垮眿
+ String[] states = null;
+ if (reqJson.containsKey("roomState") && reqJson.getString("roomState").split(",").length > 0) {
+ states = reqJson.getString("roomState").split(",");
+ roomDto.setStates(states);
+ } else {
+ roomDto.setStates(new String[]{RoomDto.STATE_SELL, RoomDto.STATE_SHOP_SELL}); // 宸茬粡鍏ヤ綇
+ }
+ if (reqJson.containsKey("roomType")) {
+ roomDto.setRoomType(reqJson.getString("roomType"));
+ }
+ if (reqJson.containsKey("feeLayer") && !"鍏ㄩ儴".equals(reqJson.getString("feeLayer"))) {
+ String[] layers = reqJson.getString("feeLayer").split("#");
+ roomDto.setLayers(layers);
+ }
List<RoomDto> roomDtos = null;
if ("1001".equals(scope)) {//灏忓尯
roomDto.setCommunityId(reqJson.getString("objId"));
@@ -89,7 +129,26 @@
}
if (roomDtos == null || roomDtos.size() < 1) {
- throw new IllegalArgumentException("鏈壘鍒扮浉搴旀埧灞嬪叕鎽婅垂鐢�");
+ throw new IllegalArgumentException("鏈壘鍒扮浉搴旀埧灞�");
+ }
+
+ //鎴垮眿鍒峰叆涓氫富淇℃伅
+ List<String> roomIds = new ArrayList<>();
+ for (RoomDto tmpRoomDto : roomDtos) {
+ roomIds.add(tmpRoomDto.getRoomId());
+ }
+ OwnerDto ownerDto = new OwnerDto();
+ ownerDto.setCommunityId(roomDtos.get(0).getCommunityId());
+ ownerDto.setRoomIds(roomIds.toArray(new String[roomIds.size()]));
+ List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnersByRoom(ownerDto);
+ for (RoomDto tmpRoomDto : roomDtos) {
+ for (OwnerDto tmpOwnerDto : ownerDtos) {
+ if (tmpRoomDto.getRoomId().equals(tmpOwnerDto.getRoomId())) {
+ tmpRoomDto.setOwnerId(tmpOwnerDto.getOwnerId());
+ tmpRoomDto.setOwnerName(tmpOwnerDto.getName());
+ tmpRoomDto.setLink(tmpOwnerDto.getLink());
+ }
+ }
}
FeeConfigDto feeConfigDto = new FeeConfigDto();
@@ -117,7 +176,7 @@
String formulaValue = deakFormula(feeFormulaDtos.get(0));
//鍏憡璐圭敤鍒版埧灞�
- sharingFeeToRoom(formulaValue, Double.parseDouble(feeFormulaDtos.get(0).getPrice()), roomDtos, reqJson, feeConfigDto);
+ sharingFeeToRoom(formulaValue, Double.parseDouble(feeFormulaDtos.get(0).getPrice()), roomDtos, reqJson, feeConfigDto, communityDtos.get(0),states);
return ResultVo.success();
@@ -130,15 +189,18 @@
* @param roomDtos
*/
private void sharingFeeToRoom(String formulaValue, double price, List<RoomDto> roomDtos,
- JSONObject reqJson, FeeConfigDto feeConfigDto) {
+ JSONObject reqJson, FeeConfigDto feeConfigDto, CommunityDto communityDto,String[] states) {
List<PayFeePo> payFeePos = new ArrayList<>();
List<FeeAttrPo> feeAttrPos = new ArrayList<>();
List<ImportFeeDetailPo> importFeeDetailPos = new ArrayList<>();
String importFeeId = GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId);
+ Map<String, Integer> floorRooms = new HashMap();
+ Map<String, Integer> unitRooms = new HashMap();
for (RoomDto roomDto : roomDtos) {
- doSharingFeeToRoom(formulaValue, price, roomDto, reqJson, payFeePos, feeConfigDto, feeAttrPos, importFeeId, importFeeDetailPos);
+ doSharingFeeToRoom(formulaValue, price, roomDto, reqJson, payFeePos, feeConfigDto, feeAttrPos,
+ importFeeId, importFeeDetailPos, floorRooms, unitRooms, communityDto,states);
}
feeInnerServiceSMOImpl.saveFee(payFeePos);
@@ -183,13 +245,44 @@
private void doSharingFeeToRoom(String formulaValue, double price, RoomDto roomDto, JSONObject reqJson,
List<PayFeePo> payFeePos, FeeConfigDto feeConfigDto,
List<FeeAttrPo> feeAttrPos, String importFeeId,
- List<ImportFeeDetailPo> importFeeDetailPos) {
+ List<ImportFeeDetailPo> importFeeDetailPos,
+ Map<String, Integer> floorRooms,
+ Map<String, Integer> unitRooms,
+ CommunityDto communityDto,
+ String[] states) {
+
+ if (!floorRooms.containsKey(roomDto.getFloorId())) {
+ RoomDto tmpRoomDto = new RoomDto();
+ tmpRoomDto.setCommunityId(communityDto.getCommunityId());
+ tmpRoomDto.setFloorId(roomDto.getFloorId());
+ tmpRoomDto.setStates(states);
+ int roomCount = roomInnerServiceSMOImpl.queryRoomsCount(tmpRoomDto);
+ floorRooms.put(roomDto.getFloorId(), roomCount);
+ }
+
+ if (!unitRooms.containsKey(roomDto.getUnitId())) {
+ RoomDto tmpRoomDto = new RoomDto();
+ tmpRoomDto.setCommunityId(communityDto.getCommunityId());
+ tmpRoomDto.setUnitId(roomDto.getUnitId());
+ tmpRoomDto.setStates(states);
+ int roomCount = roomInnerServiceSMOImpl.queryRoomsCount(tmpRoomDto);
+ unitRooms.put(roomDto.getUnitId(), roomCount);
+ }
+
+ long floorRoomCount = floorRooms.get(roomDto.getFloorId());
+ long unitRoomCount = unitRooms.get(roomDto.getUnitId());
+
+
String orgFormulaValue = formulaValue;
- formulaValue = formulaValue.replace("T", reqJson.getString("totalDegrees"))
- .replace("F", roomDto.getFloorArea())
- .replace("U", roomDto.getUnitArea())
- .replace("R", roomDto.getBuiltUpArea())
- .replace("X", roomDto.getFeeCoefficient());
+ formulaValue = formulaValue.replaceAll("T", reqJson.getString("totalDegrees"))
+ .replaceAll("F", roomDto.getFloorArea())
+ .replaceAll("U", roomDto.getUnitArea())
+ .replaceAll("R", roomDto.getBuiltUpArea())
+ .replaceAll("X", roomDto.getFeeCoefficient())
+ .replaceAll("L", floorRoomCount + "")
+ .replaceAll("D", unitRoomCount + "")
+ .replaceAll("C", communityDto.getCommunityArea());
+
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
@@ -201,6 +294,7 @@
BigDecimal priceObj = new BigDecimal(price);
priceObj = valueObj.multiply(priceObj).setScale(2, BigDecimal.ROUND_HALF_EVEN);
amount = priceObj.doubleValue();
+ value = valueObj.setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue() + "";
} catch (Exception e) {
throw new IllegalArgumentException("鍏紡璁$畻寮傚父锛屽叕寮忎负銆�" + orgFormulaValue + "銆�,璁$畻 銆�" + formulaValue + "銆戝紓甯�");
}
@@ -218,6 +312,7 @@
payFeePo.setFeeTypeCd(reqJson.getString("feeTypeCd"));
payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE);
payFeePo.setAmount(amount + "");
+ payFeePo.setBatchId(reqJson.getString("batchId"));
//payFeePo.setStartTime(importRoomFee.getStartTime());
payFeePo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
@@ -250,11 +345,49 @@
feeAttrPo.setFeeId(payFeePo.getFeeId());
feeAttrPos.add(feeAttrPo);
- String formulaValueRemark = orgFormulaValue.replace("T", reqJson.getString("totalDegrees")+"<鎬荤敤閲�>")
- .replace("F", roomDto.getFloorArea()+"<"+roomDto.getFloorNum()+"鏍嬮潰绉�>")
- .replace("U", roomDto.getUnitArea()+"<"+roomDto.getUnitNum()+"鍗曞厓闈㈢Н>")
- .replace("R", roomDto.getBuiltUpArea()+"<"+roomDto.getRoomNum()+"瀹ら潰绉�>")
- .replace("X", roomDto.getFeeCoefficient()+"<"+roomDto.getRoomNum()+"瀹ょ畻璐圭郴鏁�>");
+
+ feeAttrPo = new FeeAttrPo();
+ feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+ feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+ feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME);
+ feeAttrPo.setValue(reqJson.getString("endTime"));
+ feeAttrPo.setFeeId(payFeePo.getFeeId());
+ feeAttrPos.add(feeAttrPo);
+
+ if (!StringUtil.isEmpty(roomDto.getOwnerId())) {
+ feeAttrPo = new FeeAttrPo();
+ feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+ feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+ feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_ID);
+ feeAttrPo.setValue(roomDto.getOwnerId());
+ 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_OWNER_NAME);
+ feeAttrPo.setValue(roomDto.getOwnerName());
+ 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_OWNER_LINK);
+ feeAttrPo.setValue(roomDto.getLink());
+ feeAttrPo.setFeeId(payFeePo.getFeeId());
+ feeAttrPos.add(feeAttrPo);
+ }
+
+ String formulaValueRemark = orgFormulaValue.replace("T", reqJson.getString("totalDegrees") + "<鎬荤敤閲�>")
+ .replace("F", roomDto.getFloorArea() + "<" + roomDto.getFloorNum() + "鏍嬮潰绉�>")
+ .replace("U", roomDto.getUnitArea() + "<" + roomDto.getUnitNum() + "鍗曞厓闈㈢Н>")
+ .replace("R", roomDto.getBuiltUpArea() + "<" + roomDto.getRoomNum() + "瀹ら潰绉�>")
+ .replace("C", communityDto.getCommunityArea() + "<灏忓尯闈㈢Н>")
+ .replace("X", roomDto.getFeeCoefficient() + "<" + roomDto.getRoomNum() + "瀹ょ畻璐圭郴鏁�>");
+
+ formulaValueRemark += (" * " + price + "<鍗曚环>");
// 鍏憡鍏紡
feeAttrPo = new FeeAttrPo();
feeAttrPo.setCommunityId(reqJson.getString("communityId"));
@@ -279,6 +412,10 @@
importFeeDetailPo.setState("1000");
importFeeDetailPo.setImportFeeId(importFeeId);
importFeeDetailPo.setRemark("鍏憡鐢ㄩ噺锛�" + value);
+ importFeeDetailPo.setObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
+ importFeeDetailPo.setObjId(roomDto.getRoomId());
+ importFeeDetailPo.setObjName(RoomDto.ROOM_TYPE_ROOM.equals(roomDto.getRoomType()) ? roomDto.getFloorNum() + "-" + roomDto.getUnitNum() + "-" + roomDto.getRoomNum() :
+ roomDto.getFloorNum() + "-" + roomDto.getRoomNum());
importFeeDetailPos.add(importFeeDetailPo);
}
@@ -312,6 +449,11 @@
payFeeConfigPo.setSquarePrice("0");
payFeeConfigPo.setPaymentCycle("1");
payFeeConfigPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+ payFeeConfigPo.setDeductFrom(FeeConfigDto.DEDUCT_FROM_N);
+ payFeeConfigPo.setDecimalPlace("2");
+ payFeeConfigPo.setScale("1");
+ payFeeConfigPo.setUnits("鍏�");
+ payFeeConfigPo.setPayOnline("Y");
int saveFlag = feeConfigInnerServiceSMOImpl.saveFeeConfig(payFeeConfigPo);
if (saveFlag < 1) {
@@ -319,4 +461,31 @@
}
}
+ /**
+ * 鐢熸垚鎵规鍙�
+ *
+ * @param reqJson
+ */
+ private void generatorBatch(JSONObject reqJson) {
+ PayFeeBatchPo payFeeBatchPo = new PayFeeBatchPo();
+ payFeeBatchPo.setBatchId(GenerateCodeFactory.getGeneratorId("12"));
+ payFeeBatchPo.setCommunityId(reqJson.getString("communityId"));
+ payFeeBatchPo.setCreateUserId(reqJson.getString("userId"));
+ UserDto userDto = new UserDto();
+ userDto.setUserId(reqJson.getString("userId"));
+ List<UserDto> userDtos = userInnerServiceSMOImpl.getUsers(userDto);
+
+ Assert.listOnlyOne(userDtos, "鐢ㄦ埛涓嶅瓨鍦�");
+ payFeeBatchPo.setCreateUserName(userDtos.get(0).getUserName());
+ payFeeBatchPo.setState(PayFeeBatchDto.STATE_NORMAL);
+ payFeeBatchPo.setMsg("姝e父");
+ int flag = payFeeBatchV1InnerServiceSMOImpl.savePayFeeBatch(payFeeBatchPo);
+
+ if (flag < 1) {
+ throw new IllegalArgumentException("鐢熸垚鎵规澶辫触");
+ }
+
+ reqJson.put("batchId", payFeeBatchPo.getBatchId());
+ }
+
}
--
Gitblit v1.8.0