From 7958f1dddb8a7f4e70d232b07a7703955ecedae0 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期六, 26 八月 2023 12:45:33 +0800
Subject: [PATCH] 优化diamante

---
 service-fee/src/main/java/com/java110/fee/smo/impl/FeeReceiptInnerServiceSMOImpl.java |   79 ++++++++++++++++++++++++++++++++++++++-
 1 files changed, 76 insertions(+), 3 deletions(-)

diff --git a/service-fee/src/main/java/com/java110/fee/smo/impl/FeeReceiptInnerServiceSMOImpl.java b/service-fee/src/main/java/com/java110/fee/smo/impl/FeeReceiptInnerServiceSMOImpl.java
index 8baa616..060664d 100755
--- a/service-fee/src/main/java/com/java110/fee/smo/impl/FeeReceiptInnerServiceSMOImpl.java
+++ b/service-fee/src/main/java/com/java110/fee/smo/impl/FeeReceiptInnerServiceSMOImpl.java
@@ -2,13 +2,20 @@
 
 
 import com.java110.core.base.smo.BaseServiceSMO;
+import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.dto.PageDto;
-import com.java110.dto.feeReceipt.FeeReceiptDto;
-import com.java110.dto.feeReceipt.FeeReceiptDtoNew;
+import com.java110.dto.community.CommunitySettingDto;
+import com.java110.dto.fee.FeeReceiptDto;
+import com.java110.dto.fee.FeeReceiptDtoNew;
 import com.java110.fee.dao.IFeeReceiptServiceDao;
+import com.java110.intf.community.ICommunitySettingInnerServiceSMO;
 import com.java110.intf.fee.IFeeReceiptInnerServiceSMO;
-import com.java110.po.feeReceipt.FeeReceiptPo;
+import com.java110.po.community.CommunitySettingPo;
+import com.java110.po.fee.FeeReceiptPo;
+import com.java110.utils.lock.DistributedLock;
 import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
@@ -31,6 +38,9 @@
 
     @Autowired
     private IFeeReceiptServiceDao feeReceiptServiceDaoImpl;
+
+    @Autowired
+    private ICommunitySettingInnerServiceSMO communitySettingInnerServiceSMOImpl;
 
 
     @Override
@@ -107,6 +117,69 @@
         return feeReceiptServiceDaoImpl.queryFeeReceiptsCount(BeanConvertUtil.beanCovertMap(feeReceiptDto));
     }
 
+    /**
+     * 鐢熸垚鏀舵嵁缂栧彿
+     *
+     * @param communityId 灏忓尯ID
+     * @return 鏀舵嵁缂栧彿
+     */
+    @Override
+    public String generatorReceiptCode(@RequestBody String communityId) {
+
+        // todo 鏋烽攣
+        String requestId = DistributedLock.getLockUUID();
+        String key = this.getClass().getSimpleName() + communityId;
+        String receiptCode = "";
+        String preReceiptCode = "";
+        String startCode = DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_M);
+        try {
+            DistributedLock.waitGetDistributedLock(key, requestId);
+            CommunitySettingDto communitySettingDto = new CommunitySettingDto();
+            communitySettingDto.setCommunityId(communityId);
+            communitySettingDto.setSettingType(CommunitySettingDto.SETTING_TYPE_FEE);
+            communitySettingDto.setSettingKey(CommunitySettingDto.SETTING_KEY_RECEIPT_CODE);
+            List<CommunitySettingDto> communitySettingDtos = communitySettingInnerServiceSMOImpl.queryCommunitySettings(communitySettingDto);
+            //todo 娌℃湁璁剧疆 鑷姩鐢熸垚
+            if (communitySettingDtos == null || communitySettingDtos.size() < 1) {
+                saveReceiptCode(communityId);
+                communitySettingDtos = communitySettingInnerServiceSMOImpl.queryCommunitySettings(communitySettingDto);
+            }
+
+            preReceiptCode = communitySettingDtos.get(0).getSettingValue().trim();
+            if (!StringUtil.isNumber(preReceiptCode)) {
+                return startCode + preReceiptCode;
+            }
+
+            if (preReceiptCode.length() > 24) {
+                receiptCode = String.format("%024d", (Long.parseLong(preReceiptCode) + 1));
+            } else {
+                receiptCode = String.format("%0" + preReceiptCode.length() + "d", (Long.parseLong(preReceiptCode) + 1));
+            }
+
+            CommunitySettingPo communitySettingPo = new CommunitySettingPo();
+            communitySettingPo.setCsId(communitySettingDtos.get(0).getCsId());
+            communitySettingPo.setSettingValue(receiptCode);
+            communitySettingInnerServiceSMOImpl.updateCommunitySetting(communitySettingPo);
+
+        } finally {
+            DistributedLock.releaseDistributedLock(key, requestId);
+        }
+
+        return startCode + receiptCode;
+    }
+
+    private void saveReceiptCode(String communityId) {
+        CommunitySettingPo communitySettingPo = new CommunitySettingPo();
+        communitySettingPo.setCommunityId(communityId);
+        communitySettingPo.setCsId(GenerateCodeFactory.getGeneratorId("10"));
+        communitySettingPo.setSettingType(CommunitySettingDto.SETTING_TYPE_FEE);
+        communitySettingPo.setSettingKey(CommunitySettingDto.SETTING_KEY_RECEIPT_CODE);
+        communitySettingPo.setSettingValue("001");
+        communitySettingPo.setSettingName("鏀舵嵁寮�濮嬬紪鍙�");
+        communitySettingPo.setRemark("绯荤粺鑷姩鐢熸垚");
+        communitySettingInnerServiceSMOImpl.saveCommunitySetting(communitySettingPo);
+    }
+
     public IFeeReceiptServiceDao getFeeReceiptServiceDaoImpl() {
         return feeReceiptServiceDaoImpl;
     }

--
Gitblit v1.8.0