package com.java110.fee.smo.impl; 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; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @ClassName FloorInnerServiceSMOImpl * @Description 收据内部服务实现类 * @Author wuxw * @Date 2019/4/24 9:20 * @Version 1.0 * add by wuxw 2019/4/24 **/ @RestController public class FeeReceiptInnerServiceSMOImpl extends BaseServiceSMO implements IFeeReceiptInnerServiceSMO { @Autowired private IFeeReceiptServiceDao feeReceiptServiceDaoImpl; @Autowired private ICommunitySettingInnerServiceSMO communitySettingInnerServiceSMOImpl; @Override public int saveFeeReceipt(@RequestBody FeeReceiptPo feeReceiptPo) { int saveFlag = 1; feeReceiptServiceDaoImpl.saveFeeReceiptInfo(BeanConvertUtil.beanCovertMap(feeReceiptPo)); return saveFlag; } @Override public int saveFeeReceipts(@RequestBody List feeReceiptPos) { List fees = new ArrayList<>(); for (FeeReceiptPo feeReceiptPo : feeReceiptPos) { fees.add(BeanConvertUtil.beanCovertMap(feeReceiptPo)); } Map info = new HashMap(); info.put("feeReceiptPos", fees); feeReceiptServiceDaoImpl.saveFeeReceipts(info); return 1; } @Override public int updateFeeReceipt(@RequestBody FeeReceiptPo feeReceiptPo) { int saveFlag = 1; feeReceiptServiceDaoImpl.updateFeeReceiptInfo(BeanConvertUtil.beanCovertMap(feeReceiptPo)); return saveFlag; } @Override public int deleteFeeReceipt(@RequestBody FeeReceiptPo feeReceiptPo) { int saveFlag = 1; feeReceiptPo.setStatusCd("1"); feeReceiptServiceDaoImpl.updateFeeReceiptInfo(BeanConvertUtil.beanCovertMap(feeReceiptPo)); return saveFlag; } @Override public List queryFeeReceipts(@RequestBody FeeReceiptDto feeReceiptDto) { //校验是否传了 分页信息 int page = feeReceiptDto.getPage(); if (page != PageDto.DEFAULT_PAGE) { feeReceiptDto.setPage((page - 1) * feeReceiptDto.getRow()); } List feeReceipts = BeanConvertUtil.covertBeanList(feeReceiptServiceDaoImpl.getFeeReceiptInfo(BeanConvertUtil.beanCovertMap(feeReceiptDto)), FeeReceiptDto.class); return feeReceipts; } @Override public List queryFeeReceiptsNew(FeeReceiptDtoNew feeReceiptDto) { //校验是否传了 分页信息 int page = feeReceiptDto.getPage(); if (page != PageDto.DEFAULT_PAGE) { feeReceiptDto.setPage((page - 1) * feeReceiptDto.getRow()); } List feeReceipts = BeanConvertUtil.covertBeanList(feeReceiptServiceDaoImpl.getFeeReceiptInfoNew(BeanConvertUtil.beanCovertMap(feeReceiptDto)), FeeReceiptDtoNew.class); return feeReceipts; } @Override public int queryFeeReceiptsCount(@RequestBody FeeReceiptDto feeReceiptDto) { 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 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; } public void setFeeReceiptServiceDaoImpl(IFeeReceiptServiceDao feeReceiptServiceDaoImpl) { this.feeReceiptServiceDaoImpl = feeReceiptServiceDaoImpl; } }