package com.ydtech.modules.inv.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ydtech.constants.enums.inv.InvPayMethodEnum; import com.ydtech.core.page.HttpResult; import com.ydtech.core.page.PageRequest; import com.ydtech.modules.inv.model.*; import com.ydtech.modules.inv.service.*; import com.ydtech.modules.inv.dao.InvAccountOperateMapper; import com.ydtech.modules.inv.utils.EasyExcelUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import static com.ydtech.modules.inv.utils.TransferUtils.outsideTransfer; /** * @author Administrator * @description 针对表【ins_account_operate(账户操作记录表)】的数据库操作Service实现 * @createDate 2024-01-04 18:29:20 */ @Service public class InvAccountOperateServiceImpl extends ServiceImpl implements InvAccountOperateService { @Autowired private InvAccountOperateMapper insAccountOperateMapper; @Autowired private InvAccountOpService invAccountOpService; @Autowired private InvAccountCardService invAccountCardService; @Autowired private InvAccountService invAccountService; @Autowired private InvAccountProfitService invAccountProfitService; @Value("${upload.file.path}") String uploadFilePath; /** * 查询操作列表 * * @param accountOperate * @return */ @Override public IPage selectList(InvAccountOperate accountOperate) { PageRequest pageRequest = new PageRequest(); pageRequest.setPageNum(accountOperate.getPageNo()); pageRequest.setPageSize(accountOperate.getPageSize()); Page page = PageRequest.buildPageRequest(pageRequest); IPage invAccountOperateIPage = insAccountOperateMapper.selectInsAccountOperate(page, accountOperate); List records = invAccountOperateIPage.getRecords(); for (InvAccountOperate record:records){ StringBuilder a = new StringBuilder(); if (record.getPayMethod() != null){ String[] split = record.getPayMethod().split(","); for (String i : split) { a.append(InvPayMethodEnum.getNameByCode(i)).append(","); } record.setPayMethod(a.toString()); } } invAccountOperateIPage.setRecords(records); return invAccountOperateIPage; } /** * 外部转内部 * @param invAccountOperate * @return */ @Override public HttpResult insert(InvAccountOperate invAccountOperate) { InvAccountCard enterAccount = invAccountCardService.getById(invAccountOperate.getEnterCardId()); InvAccountCard invAccount = outsideTransfer(enterAccount, invAccountOperate); InvAccount account = invAccountService.getById(invAccount.getAccountId()); if (!invAccountCardService.updateById(invAccount)){ return HttpResult.error("新增收入失败"); } invAccountOperate.setCreateTime(LocalDateTime.now()); insAccountOperateMapper.insert(invAccountOperate); List list = new ArrayList<>(); for (Map.Entry entry:invAccountOperate.getOutProfit().entrySet()){ InvAccountOp invAccountOp = new InvAccountOp(); invAccountOp.setAccountId(enterAccount.getAccountId()); invAccountOp.setAccountName(account.getAccountName()); invAccountOp.setCardNum(invAccount.getBankCardNum()); invAccountOp.setCardName(invAccount.getBankName()); invAccountOp.setProfit(entry.getKey()); invAccountOp.setMoney(entry.getValue().toString()); list.add(invAccountOp); } invAccountOpService.saveBatch(list); return HttpResult.ok("新增收入成功"); } @Override public HttpResult excelAccount(InvAccountOperate accountOperate) { List invAccountOperates = insAccountOperateMapper.selectInsAccountOperateList(accountOperate); List list = invAccountProfitService.list(); for (InvAccountOperate record:invAccountOperates){ StringBuilder a = new StringBuilder(); if (record.getPayMethod() != null){ String[] split = record.getPayMethod().split(","); for (String i : split) { a.append(InvPayMethodEnum.getNameByCode(i)).append(","); } record.setPayMethod(a.toString()); } if (record.getOutProfit()!=null) { StringBuffer buffer = new StringBuffer(); for (Map.Entry entry : record.getOutProfit().entrySet()){ list.forEach(invAccountProfit -> { if (invAccountProfit.getProfitEng().equals(entry.getKey())) { buffer.append(invAccountProfit.getProfitName()).append(" "); } }); } record.setPlate(buffer.toString()); } } return HttpResult.ok("", EasyExcelUtils.downExcel(uploadFilePath, InvAccountOperate.class, invAccountOperates)); } }