Your Name
2023-08-26 7958f1dddb8a7f4e70d232b07a7703955ecedae0
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.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.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;
    }