package com.ydtech.modules.fnc.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.ydtech.core.page.HttpResult; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.fnc.dao.SettlementDocumentaryFeesMapper; import com.ydtech.modules.fnc.entity.InsPlyIncome; import com.ydtech.modules.fnc.entity.SettlementDocumentaryFeesEntity; import com.ydtech.modules.fnc.entity.SettlementDocumentaryLogEntity; import com.ydtech.modules.fnc.service.SettlementDocumentaryFeesService; import com.ydtech.modules.fnc.service.SettlementDocumentaryLogService; import com.ydtech.modules.fnc.vo.SettlementDocumentaryFeesVo; import com.ydtech.modules.order.entity.BasePageResult; import com.ydtech.modules.order.entity.InsOrders; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.Date; import java.util.HashMap; import java.util.List; @Service public class SettlementDocumentaryFeesServiceImpl extends ServiceImpl implements SettlementDocumentaryFeesService { @Autowired private SettlementDocumentaryLogService settlementDocumentaryLogService; @Override public HttpResult> querySettle(SettlementDocumentaryFeesVo settlementDocumentaryFeesVo) { try { HashMap params = new HashMap<>(); params.put("pageNum", settlementDocumentaryFeesVo.getPageNum()); params.put("pageSize", settlementDocumentaryFeesVo.getPageSize()); PageInfo> pageHelper = null; List list = this.baseMapper.querySettle(params); pageHelper = new PageInfo(list); BasePageResult pageResult = new BasePageResult(settlementDocumentaryFeesVo.getPageNum(), settlementDocumentaryFeesVo.getPageSize(), pageHelper.getTotal(), pageHelper.getPages(), list); return HttpResult.ok(pageResult); } catch (Exception e) { e.printStackTrace(); return HttpResult.error("查询异常"); } } @Override @Transactional public HttpResult inertSettle(SettlementDocumentaryFeesVo settlementDocumentaryFeesVo) { int i = this.compareAmount(settlementDocumentaryFeesVo.getTotalAmount(), settlementDocumentaryFeesVo.getSettlementAmount()); if (i < 0) { return HttpResult.error("结算金额大于总金额,请重新结算"); } SettlementDocumentaryFeesEntity settlementDocumentaryFeesEntity = new SettlementDocumentaryFeesEntity(); BeanUtils.copyProperties(settlementDocumentaryFeesVo, settlementDocumentaryFeesEntity); baseMapper.insert(settlementDocumentaryFeesEntity); // 生成跟单费结算记录 SettlementDocumentaryLogEntity settlementDocumentaryLogEntity = new SettlementDocumentaryLogEntity(); settlementDocumentaryLogEntity.setAmount(settlementDocumentaryFeesVo.getSettlementAmount()); // 结算金额 settlementDocumentaryLogEntity.setSettlementDocumentaryId(settlementDocumentaryFeesEntity.getId()); // 关联id settlementDocumentaryLogEntity.setAmountType("2"); //跟单费结算 settlementDocumentaryLogEntity.setCreateTime(new Date()); settlementDocumentaryLogService.save(settlementDocumentaryLogEntity); return HttpResult.ok("结算成功"); } @Override public String checkDate(HashMap params) { List startList = baseMapper.checkDate(params); if (startList.size() > 0) { return "有重复"; } return null; } @Override @Transactional public HttpResult documentarySettle(SettlementDocumentaryFeesVo settlementDocumentaryFeesVo) { SettlementDocumentaryFeesEntity settlementDocumentaryFeesEntity = baseMapper.selectById(settlementDocumentaryFeesVo.getId()); if (settlementDocumentaryFeesVo.getSettlementAmount() != null && ObjectUtils.isNotEmpty(settlementDocumentaryFeesEntity)) { int i = this.compareAmount(settlementDocumentaryFeesEntity.getUnsettledAmount(), settlementDocumentaryFeesVo.getSettlementAmount()); if (i < 0) { return HttpResult.error("结算金额大于未结算金额,请重新结算"); } settlementDocumentaryFeesEntity.setSettlementAmount(settlementDocumentaryFeesEntity.getSettlementAmount().add(settlementDocumentaryFeesVo.getSettlementAmount())); settlementDocumentaryFeesEntity.setUnsettledAmount(settlementDocumentaryFeesEntity.getTotalAmount().subtract(settlementDocumentaryFeesEntity.getSettlementAmount())); //未结算金额 baseMapper.updateById(settlementDocumentaryFeesEntity); // 记录 // 生成跟单费结算记录 SettlementDocumentaryLogEntity settlementDocumentaryLogEntity = new SettlementDocumentaryLogEntity(); settlementDocumentaryLogEntity.setAmount(settlementDocumentaryFeesVo.getSettlementAmount()); // 结算金额 settlementDocumentaryLogEntity.setSettlementDocumentaryId(settlementDocumentaryFeesEntity.getId()); // 关联id settlementDocumentaryLogEntity.setAmountType("2"); //跟单费结算 settlementDocumentaryLogEntity.setCreateTime(new Date()); settlementDocumentaryLogService.save(settlementDocumentaryLogEntity); return HttpResult.ok("修改成功"); } return null; } private int compareAmount(BigDecimal settlementAmount, BigDecimal settlementAmount1) { return settlementAmount.compareTo(settlementAmount1); } }