package com.dk.mdm.service.mst; import com.dk.common.infrastructure.annotaiton.Pagination; import com.dk.common.model.pojo.PageList; import com.dk.common.response.ResponseResultUtil; import com.dk.common.response.ResponseResultVO; import com.dk.common.util.DateUtils; import com.dk.common.util.ExcelUtils; import com.dk.mdm.mapper.mst.ReceiptItemMapper; import com.dk.mdm.mapper.mst.ReceiptMapper; import com.dk.mdm.model.pojo.mst.CpTrade; import com.dk.mdm.mapper.mst.CpTradeMapper; import com.dk.common.service.BaseService; import com.dk.common.mapper.BaseMapper; import com.dk.mdm.model.pojo.mst.Receipt; import com.dk.mdm.model.query.mst.CpTradeQuery; import com.dk.mdm.model.query.mst.ReceiptItemQuery; import com.dk.mdm.model.query.mst.ReceiptQuery; import com.dk.mdm.model.response.mst.CpTradeResponse; import com.dk.mdm.model.response.mst.ReceiptItemResponse; import com.dk.mdm.model.vo.mst.ReceiptVO; import org.springframework.stereotype.Service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.time.LocalDate; import java.util.Date; import java.util.List; @Service @Transactional public class CpTradeService extends BaseService { @Override public BaseMapper getRepository() { return cpTradeMapper; } @Autowired private CpTradeMapper cpTradeMapper; @Autowired private ReceiptItemMapper receiptItemMapper; @Autowired private ReceiptMapper receiptMapper; /** * @desc : 查询 * @author : 常皓宁 * @date : 2023/1/5 9:39 */ @Pagination public ResponseResultVO> selectByCond(CpTradeQuery cpTradeQuery) { return super.mergeListWithCount(cpTradeQuery, cpTradeMapper.selectByCond(cpTradeQuery), cpTradeMapper.countByCond(cpTradeQuery)); } /** * @desc : 发票管理查询 * @author : 常皓宁 * @date : 2023/1/5 9:39 */ @Pagination public ResponseResultVO> selectReceipt(CpTradeQuery cpTradeQuery) { return super.mergeListWithCount(cpTradeQuery, cpTradeMapper.selectReceipt(cpTradeQuery), cpTradeMapper.countByReceipt(cpTradeQuery)); } /** * @desc : 开发票 * @author : 常皓宁 * @date : 2024/8/2 8:44 */ @Transactional( rollbackFor = {Exception.class} ) public ResponseResultVO invoicing(List cpTradeQuery) { //交易记录list for (CpTradeQuery cpTradeQuery1 : cpTradeQuery) { //修改交易记录的状态和时间 cpTradeMapper.updateCpReciptStatus(new CpTradeQuery() .setTradeId(cpTradeQuery1.getTradeId()) .setReceiptStatus("开票状态-已开票") .setReceiptDate(LocalDate.now())); //查询发票明细 List receiptItemResponse = receiptItemMapper.selectByCond(new ReceiptItemQuery().setTradeId(Math.toIntExact(cpTradeQuery1.getTradeId()))); //根据发票明细查询发票总单 if (receiptItemResponse != null && receiptItemResponse.size() > 0) { receiptMapper.updateReciptStatus(new ReceiptQuery() .setReceiptId(receiptItemResponse.get(0).getReceiptId()) .setReceiptStatus("发票状态-开具") .setReceiptDate(LocalDate.now())); } } return ResponseResultUtil.success(cpTradeQuery); } /** * @desc : 取消开发票 * @author : 常皓宁 * @date : 2024/8/2 8:44 */ @Transactional( rollbackFor = {Exception.class} ) public ResponseResultVO unInvoicing(List cpTradeQuery) { //交易记录list for (CpTradeQuery cpTradeQuery1 : cpTradeQuery) { //修改交易记录的状态和时间 cpTradeMapper.updateCpReciptStatus(new CpTradeQuery() .setTradeId(cpTradeQuery1.getTradeId()) .setReceiptStatus("开票状态-开票中") .setReceiptDate(null)); //查询发票明细 List receiptItemResponse = receiptItemMapper.selectByCond(new ReceiptItemQuery().setTradeId(Math.toIntExact(cpTradeQuery1.getTradeId()))); //根据发票明细查询发票总单 if (receiptItemResponse != null && receiptItemResponse.size() > 0) { receiptMapper.updateReciptStatus(new ReceiptQuery() .setReceiptId(receiptItemResponse.get(0).getReceiptId()) .setReceiptStatus("发票状态-申请") .setReceiptDate(null)); } } return ResponseResultUtil.success(cpTradeQuery); } /** * @desc : 导出数据 * @author : 常皓宁 * @date : 2024/6/5 9:48 */ public void exportList(HttpServletResponse response,CpTradeQuery cpTradeQuery) { String title = "发票管理"; ExcelUtils.exportExcel(cpTradeMapper.selectReceipt(cpTradeQuery), title, title, CpTradeResponse.class, title + "_" + DateUtils.formatDate(new Date(), "yyyy-MM-dd-HH-mm-ss") + ".xls", response); } }