|
|
@@ -28,6 +28,7 @@ import org.springblade.client.feign.IMessageClient;
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
import org.springblade.core.tool.utils.StringUtil;
|
|
|
+import org.springblade.los.Util.CurrencyUtils;
|
|
|
import org.springblade.los.basic.business.entity.BusinessType;
|
|
|
import org.springblade.los.basic.business.service.IBusinessTypeService;
|
|
|
import org.springblade.los.basic.corps.entity.BCorps;
|
|
|
@@ -51,14 +52,15 @@ import org.springblade.los.check.mapper.AuditProecessMapper;
|
|
|
import org.springblade.los.check.service.IAuditProecessService;
|
|
|
import org.springblade.los.check.vo.LosAuditProecessVO;
|
|
|
import org.springblade.los.finance.fee.entity.FeeCenter;
|
|
|
+import org.springblade.los.finance.fee.entity.FeeCenterUpdateRecord;
|
|
|
import org.springblade.los.finance.fee.entity.FinAccBills;
|
|
|
+import org.springblade.los.finance.fee.mapper.FeeCenterUpdateRecordMapper;
|
|
|
import org.springblade.los.finance.fee.service.IFeeCenterService;
|
|
|
import org.springblade.los.finance.fee.service.IFinAccBillsService;
|
|
|
import org.springblade.los.finance.invoices.entity.FinInvoices;
|
|
|
import org.springblade.los.finance.invoices.mapper.FinInvoicesMapper;
|
|
|
import org.springblade.los.finance.stl.entity.FinStlBills;
|
|
|
import org.springblade.los.finance.stl.mapper.FinStlBillsMapper;
|
|
|
-import org.springblade.system.feign.ISysClient;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
@@ -100,12 +102,14 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
|
|
|
|
|
|
private final IBusinessBillNoService businessBillNoService;
|
|
|
|
|
|
- private final ISysClient sysClient;
|
|
|
-
|
|
|
private final RouteCostMapper routeCostMapper;
|
|
|
|
|
|
private final ExpenseApplicationMapper expenseApplicationMapper;
|
|
|
|
|
|
+ private final FeeCenterUpdateRecordMapper feeCenterUpdateRecordMapper;
|
|
|
+
|
|
|
+ private final CurrencyUtils currencyUtils;
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
public IPage<LosAuditProecessVO> selectAuditProecessPage(IPage<LosAuditProecessVO> page, LosAuditProecessVO auditProecess) {
|
|
|
@@ -1576,6 +1580,334 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
|
|
|
baseMapper.updateById(auditProecess);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void applyUpdateFee(LosAuditProecess auditProecess) {
|
|
|
+ //查看最新操作记录,防止重复提交
|
|
|
+ LosAuditProecess proecessTemp = baseMapper.selectById(auditProecess.getId());
|
|
|
+ if (proecessTemp == null) {
|
|
|
+ throw new SecurityException("未查到此审批记录,禁止操作");
|
|
|
+ }
|
|
|
+ if ("A".equals(proecessTemp.getAuditStatus()) || "B".equals(proecessTemp.getAuditStatus())) {
|
|
|
+ throw new SecurityException("当前记录已经完成审批,禁止重复操作");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (auditProecess.getAuditStatus() == null || !"S".equals(auditProecess.getAuditStatus())) {
|
|
|
+ throw new SecurityException("审批状态非待审,禁止操作");
|
|
|
+ }
|
|
|
+ //信息
|
|
|
+ Message sendMessage = new Message();
|
|
|
+ sendMessage.setParameter(String.valueOf(auditProecess.getBillId()));
|
|
|
+ sendMessage.setUserName(AuthUtil.getUserName());
|
|
|
+ sendMessage.setUserId(AuthUtil.getUserId());
|
|
|
+ sendMessage.setToUserId(auditProecess.getSendUserId());
|
|
|
+ sendMessage.setToUserName(auditProecess.getSendName());
|
|
|
+ sendMessage.setMessageType(1);
|
|
|
+ sendMessage.setTenantId(AuthUtil.getTenantId());
|
|
|
+ sendMessage.setCreateUser(AuthUtil.getUserId());
|
|
|
+ sendMessage.setCreateTime(new Date());
|
|
|
+ sendMessage.setUrl(auditProecess.getUrl());
|
|
|
+ sendMessage.setPageLabel(auditProecess.getPageLabel());
|
|
|
+ sendMessage.setPageStatus(auditProecess.getPageStatus());
|
|
|
+
|
|
|
+ //用户操作 1.通过 2.驳回
|
|
|
+ Integer operate = auditProecess.getOperate();
|
|
|
+ //查看当前审批是否为最后一级
|
|
|
+ String iffinalItem = auditProecess.getIffinalItem();
|
|
|
+ //审批人
|
|
|
+ auditProecess.setAuditUserId(String.valueOf(AuthUtil.getUserId()));
|
|
|
+ //审批时间
|
|
|
+ auditProecess.setAuditOpTime(new Date());
|
|
|
+
|
|
|
+ FeeCenterUpdateRecord feeCenterUpdateRecord = feeCenterUpdateRecordMapper.selectById(proecessTemp.getSrcBillId());
|
|
|
+ if (feeCenterUpdateRecord == null) {
|
|
|
+ throw new SecurityException("审批通过失败");
|
|
|
+ }
|
|
|
+ FeeCenter feeCenter = feeCenterService.getById(feeCenterUpdateRecord.getItemId());
|
|
|
+ //不是最后一级
|
|
|
+ if ("F".equals(iffinalItem)) {
|
|
|
+
|
|
|
+ //通过
|
|
|
+ if (operate == 1) {
|
|
|
+ //如果是第一级, 则修改状态为审批中
|
|
|
+ if (auditProecess.getLevelId() == 1) {
|
|
|
+ feeCenterUpdateRecord.setStatus("2");
|
|
|
+ feeCenterUpdateRecord.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ feeCenterUpdateRecord.setUpdateTime(new Date());
|
|
|
+ feeCenterUpdateRecord.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ feeCenterUpdateRecordMapper.updateById(feeCenterUpdateRecord);
|
|
|
+ }
|
|
|
+ auditProecess.setAuditStatus("A");
|
|
|
+ //查询下一级,开启待审
|
|
|
+ LambdaQueryWrapper<LosAuditProecess> auditProecessLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ auditProecessLambdaQueryWrapper
|
|
|
+ .eq(LosAuditProecess::getBatchNo, auditProecess.getBatchNo())
|
|
|
+ .eq(LosAuditProecess::getSrcBillId, auditProecess.getSrcBillId())
|
|
|
+ .eq(LosAuditProecess::getIsDelete, 0)
|
|
|
+ .eq(LosAuditProecess::getActId, auditProecess.getActId())
|
|
|
+ .eq(LosAuditProecess::getBillId, auditProecess.getBillId())
|
|
|
+ .eq(LosAuditProecess::getBillNo, auditProecess.getBillNo())
|
|
|
+ .eq(LosAuditProecess::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(LosAuditProecess::getLevelId, auditProecess.getLevelId() + 1);
|
|
|
+ Integer count = baseMapper.selectCount(auditProecessLambdaQueryWrapper);
|
|
|
+ if (count != null && count > 1) {
|
|
|
+ throw new SecurityException("审核失败,获取下一级信息失败");
|
|
|
+ }
|
|
|
+ LosAuditProecess proecess = baseMapper.selectOne(auditProecessLambdaQueryWrapper);
|
|
|
+ if (proecess == null) {
|
|
|
+ throw new SecurityException("审批通过=>获取下一级信息失败");
|
|
|
+ }
|
|
|
+ proecess.setAuditStatus("S");
|
|
|
+ baseMapper.updateById(proecess);
|
|
|
+
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
|
|
|
+
|
|
|
+ //获得订单创建日期
|
|
|
+ String billsDate = null;
|
|
|
+ if (proecessTemp.getBillId() != null) {
|
|
|
+ billsDate = simpleDateFormat.format(feeCenterUpdateRecord.getCreateTime());
|
|
|
+ }
|
|
|
+ Message message = new Message();
|
|
|
+ message.setUserName(AuthUtil.getUserName());
|
|
|
+ message.setUserId(AuthUtil.getUserId());
|
|
|
+ message.setParameter(String.valueOf(auditProecess.getBillId()));
|
|
|
+ message.setMessageType(1);
|
|
|
+ message.setTenantId(AuthUtil.getTenantId());
|
|
|
+ if ("费用-申请修改".equals(auditProecess.getProcessType())) {
|
|
|
+ message.setMessageBody("您有新的费用-申请修改审核,业务单号:" + proecessTemp.getBillNo() + ","
|
|
|
+ + "单据日期:" + billsDate + ",请审核。"
|
|
|
+ + "提交人:" + proecessTemp.getSendName() + " " + "提交时间" + simpleDateFormat.format(proecessTemp.getSendTime())
|
|
|
+ );
|
|
|
+ } else if ("费用-申请删除".equals(auditProecess.getProcessType())) {
|
|
|
+ message.setMessageBody("您有新的费用-申请删除审核,业务单号:" + proecessTemp.getBillNo() + ","
|
|
|
+ + "单据日期:" + billsDate + ",请审核。"
|
|
|
+ + "提交人:" + proecessTemp.getSendName() + " " + "提交时间" + simpleDateFormat.format(proecessTemp.getSendTime())
|
|
|
+ );
|
|
|
+ }
|
|
|
+ message.setUrl(auditProecess.getUrl());
|
|
|
+ message.setPageLabel(auditProecess.getPageLabel());
|
|
|
+ message.setPageStatus(auditProecess.getPageStatus());
|
|
|
+ message.setCreateUser(AuthUtil.getUserId());
|
|
|
+ message.setCreateTime(new Date());
|
|
|
+ // 消息批量通知下一级
|
|
|
+ sendMsgToGroup(message, proecess.getAuditUserId());
|
|
|
+ }
|
|
|
+ //不通过
|
|
|
+ else if (operate == 2) {
|
|
|
+ auditProecess.setAuditStatus("B");
|
|
|
+ feeCenterUpdateRecord.setStatus("4");
|
|
|
+ feeCenterUpdateRecord.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ feeCenterUpdateRecord.setUpdateTime(new Date());
|
|
|
+ feeCenterUpdateRecord.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ feeCenterUpdateRecordMapper.updateById(feeCenterUpdateRecord);
|
|
|
+
|
|
|
+ feeCenter.setAuditStatus("4");
|
|
|
+ int version = StringUtil.isBlank(feeCenter.getVersion()) ? 1 : Integer.parseInt(feeCenter.getVersion());
|
|
|
+ feeCenter.setVersion(String.valueOf(version + 1));
|
|
|
+ feeCenter.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ feeCenter.setUpdateTime(new Date());
|
|
|
+ feeCenter.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ feeCenterService.updateById(feeCenter);
|
|
|
+ if ("费用-申请修改".equals(auditProecess.getProcessType())) {
|
|
|
+ sendMessage.setMessageBody("您的费用-申请修改审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
|
|
|
+ } else if ("费用-申请删除".equals(auditProecess.getProcessType())) {
|
|
|
+ sendMessage.setMessageBody("您的费用-申请删除审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
|
|
|
+ }
|
|
|
+ R save = messageClient.save(sendMessage);
|
|
|
+ if (!save.isSuccess()) {
|
|
|
+ throw new SecurityException("发送消息失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //是最后一级
|
|
|
+ else if ("T".equals(iffinalItem)) {
|
|
|
+ //通过
|
|
|
+ if (operate == 1) {
|
|
|
+ auditProecess.setAuditStatus("A");
|
|
|
+ this.updateFeeCenter(feeCenterUpdateRecord, feeCenter);
|
|
|
+ if ("费用-申请修改".equals(auditProecess.getProcessType())) {
|
|
|
+ sendMessage.setMessageBody("您的费用-申请修改审核已通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
|
|
|
+ } else if ("费用-申请删除".equals(auditProecess.getProcessType())) {
|
|
|
+ sendMessage.setMessageBody("您的费用-申请删除审核已通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
|
|
|
+ }
|
|
|
+ R save = messageClient.save(sendMessage);
|
|
|
+ if (!save.isSuccess()) {
|
|
|
+ throw new SecurityException("发送消息失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //不通过
|
|
|
+ else if (operate == 2) {
|
|
|
+ auditProecess.setAuditStatus("B");
|
|
|
+ feeCenterUpdateRecord.setStatus("4");
|
|
|
+ feeCenterUpdateRecord.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ feeCenterUpdateRecord.setUpdateTime(new Date());
|
|
|
+ feeCenterUpdateRecord.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ feeCenterUpdateRecordMapper.updateById(feeCenterUpdateRecord);
|
|
|
+
|
|
|
+ feeCenter.setAuditStatus("4");
|
|
|
+ int version = StringUtil.isBlank(feeCenter.getVersion()) ? 1 : Integer.parseInt(feeCenter.getVersion());
|
|
|
+ feeCenter.setVersion(String.valueOf(version + 1));
|
|
|
+ feeCenter.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ feeCenter.setUpdateTime(new Date());
|
|
|
+ feeCenter.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ feeCenterService.updateById(feeCenter);
|
|
|
+ if ("费用-申请修改".equals(auditProecess.getProcessType())) {
|
|
|
+ sendMessage.setMessageBody("您的费用-申请修改审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
|
|
|
+ } else if ("费用-申请删除".equals(auditProecess.getProcessType())) {
|
|
|
+ sendMessage.setMessageBody("您的费用-申请删除审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
|
|
|
+ }
|
|
|
+ R save = messageClient.save(sendMessage);
|
|
|
+ if (!save.isSuccess()) {
|
|
|
+ throw new SecurityException("发送消息失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new SecurityException("审批异常,请联系管理员");
|
|
|
+ }
|
|
|
+
|
|
|
+ cleanMsg(proecessTemp.getAuditUserId(), AuthUtil.getUserId(), proecessTemp.getSrcBillId());
|
|
|
+
|
|
|
+ //保存操作记录
|
|
|
+ auditProecess.setAuditMsg(auditProecess.getAuditMsg());
|
|
|
+ auditProecess.setAuditItem(new Date());
|
|
|
+ baseMapper.updateById(auditProecess);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void updateFeeCenter(FeeCenterUpdateRecord feeCenterUpdateRecord, FeeCenter feeCenter) {
|
|
|
+ feeCenterUpdateRecord.setStatus("3");
|
|
|
+ feeCenterUpdateRecord.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ feeCenterUpdateRecord.setUpdateTime(new Date());
|
|
|
+ feeCenterUpdateRecord.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ feeCenterUpdateRecordMapper.updateById(feeCenterUpdateRecord);
|
|
|
+ FinAccBills finAccBills = finAccBillsService.getById(feeCenter.getAccBillId());
|
|
|
+ if (finAccBills == null) {
|
|
|
+ throw new RuntimeException("未查到账单信息");
|
|
|
+ }
|
|
|
+ Bills bills = new Bills();
|
|
|
+ String exrateType;
|
|
|
+ BigDecimal amountProfit = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountProfitUsd = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountProfitLoc = new BigDecimal("0.00");
|
|
|
+ BigDecimal oceanFreightProfit = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountDr = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountDrUsd = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountDrLoc = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountCr = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountCrUsd = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountCrLoc = new BigDecimal("0.00");
|
|
|
+ BigDecimal oceanFreightDr = new BigDecimal("0.00");
|
|
|
+ BigDecimal oceanFreightCr = new BigDecimal("0.00");
|
|
|
+ if ("HYJK,HYCK".contains(feeCenter.getBusinessType())) {
|
|
|
+ bills = billsMapper.selectById(feeCenterUpdateRecord.getPid());
|
|
|
+ if (bills == null) {
|
|
|
+ throw new RuntimeException("未查到单据信息");
|
|
|
+ }
|
|
|
+ exrateType = currencyUtils.standardCurrency(bills.getBranchId());
|
|
|
+ List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .eq(FeeCenter::getPid, bills.getId()));
|
|
|
+ if (feeCenterList.isEmpty()) {
|
|
|
+ throw new RuntimeException("未查到费用明细");
|
|
|
+ }
|
|
|
+
|
|
|
+ amountDr = feeCenterList.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())
|
|
|
+ && !e.getId().equals(feeCenter.getId())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ amountDrUsd = feeCenterList.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())
|
|
|
+ && !e.getId().equals(feeCenter.getId())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ amountDrLoc = feeCenterList.stream().filter(e -> "D".equals(e.getDc()) && !e.getId().equals(feeCenter.getId()))
|
|
|
+ .map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ amountCr = feeCenterList.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())
|
|
|
+ && !e.getId().equals(feeCenter.getId())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ amountCrUsd = feeCenterList.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())
|
|
|
+ && !e.getId().equals(feeCenter.getId())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ amountCrLoc = feeCenterList.stream().filter(e -> "C".equals(e.getDc()) && !e.getId().equals(feeCenter.getId()))
|
|
|
+ .map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ oceanFreightDr = feeCenterList.stream().filter(e -> "D".equals(e.getDc()) && "HYF".equals(e.getFeeCode())
|
|
|
+ && !e.getId().equals(feeCenter.getId())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ oceanFreightCr = feeCenterList.stream().filter(e -> "C".equals(e.getDc()) && "HYF".equals(e.getFeeCode())
|
|
|
+ && !e.getId().equals(feeCenter.getId())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ } else {
|
|
|
+ exrateType = currencyUtils.standardCurrency(AuthUtil.getDeptId());
|
|
|
+ }
|
|
|
+ if ("1".equals(feeCenterUpdateRecord.getType())) {
|
|
|
+ feeCenterService.removeById(feeCenter.getId());
|
|
|
+ finAccBillsService.removeById(finAccBills.getId());
|
|
|
+ } else {
|
|
|
+ feeCenter.setAuditStatus("4");
|
|
|
+ int version = StringUtil.isBlank(feeCenter.getVersion()) ? 1 : Integer.parseInt(feeCenter.getVersion());
|
|
|
+ feeCenter.setVersion(String.valueOf(version + 1));
|
|
|
+ feeCenter.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ feeCenter.setUpdateTime(new Date());
|
|
|
+ feeCenter.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ feeCenter.setCorpId(feeCenterUpdateRecord.getCorpIdUpdate());
|
|
|
+ feeCenter.setCorpCnName(feeCenterUpdateRecord.getCorpCnNameUpdate());
|
|
|
+ feeCenter.setCorpEnName(feeCenterUpdateRecord.getCorpEnNameUpdate());
|
|
|
+ feeCenter.setShortName(feeCenterUpdateRecord.getShortNameUpdate());
|
|
|
+ feeCenter.setBillCorpId(feeCenterUpdateRecord.getBillCorpIdUpdate());
|
|
|
+ feeCenter.setBillCorpCnName(feeCenterUpdateRecord.getBillCorpCnNameUpdate());
|
|
|
+ feeCenter.setBillCorpEnName(feeCenterUpdateRecord.getBillCorpEnNameUpdate());
|
|
|
+ feeCenter.setBillShortName(feeCenterUpdateRecord.getBillShortNameUpdate());
|
|
|
+ feeCenter.setFeeId(feeCenterUpdateRecord.getFeeIdUpdate());
|
|
|
+ feeCenter.setFeeCode(feeCenterUpdateRecord.getFeeCodeUpdate());
|
|
|
+ feeCenter.setFeeCnName(feeCenterUpdateRecord.getFeeCnNameUpdate());
|
|
|
+ feeCenter.setFeeEnName(feeCenterUpdateRecord.getFeeEnNameUpdate());
|
|
|
+ feeCenter.setQuantity(feeCenterUpdateRecord.getQuantityUpdate());
|
|
|
+ feeCenter.setUnitNo(feeCenterUpdateRecord.getUnitNoUpdate());
|
|
|
+ feeCenter.setPrice(feeCenterUpdateRecord.getPriceUpdate());
|
|
|
+ feeCenter.setCurCode(feeCenterUpdateRecord.getCurCodeUpdate());
|
|
|
+ feeCenter.setExrate(feeCenterUpdateRecord.getExrateUpdate());
|
|
|
+ feeCenter.setAmount(feeCenterUpdateRecord.getAmountUpdate());
|
|
|
+ feeCenter.setAmountLoc(feeCenterUpdateRecord.getAmountLocUpdate());
|
|
|
+ feeCenter.setRemarks(feeCenterUpdateRecord.getRemarksUpdate());
|
|
|
+ feeCenterService.updateById(feeCenter);
|
|
|
+ if (feeCenter.getAccBillId() == null) {
|
|
|
+ throw new RuntimeException("账单id不能为空");
|
|
|
+ }
|
|
|
+ if ("D".equals(feeCenter.getDc())) {
|
|
|
+ if (exrateType.equals(feeCenter.getCurCode())) {
|
|
|
+ amountDr = amountDr.add(feeCenter.getAmount());
|
|
|
+ finAccBills.setAmountDr(feeCenter.getAmount());
|
|
|
+ } else {
|
|
|
+ amountDrUsd = amountDrUsd.add(feeCenter.getAmount());
|
|
|
+ finAccBills.setAmountDrUsd(feeCenter.getAmount());
|
|
|
+ }
|
|
|
+ amountDrLoc = amountDrLoc.add(feeCenter.getAmountLoc());
|
|
|
+ finAccBills.setAmountDrLoc(feeCenter.getAmountLoc());
|
|
|
+ } else {
|
|
|
+ if (exrateType.equals(feeCenter.getCurCode())) {
|
|
|
+ amountCr = amountCr.add(feeCenter.getAmount());
|
|
|
+ finAccBills.setAmountCr(feeCenter.getAmount());
|
|
|
+ } else {
|
|
|
+ amountCrUsd = amountCrUsd.add(feeCenter.getAmount());
|
|
|
+ finAccBills.setAmountCrUsd(feeCenter.getAmount());
|
|
|
+ }
|
|
|
+ amountCrLoc = amountCrLoc.add(feeCenter.getAmountLoc());
|
|
|
+ finAccBills.setAmountCrLoc(feeCenter.getAmountLoc());
|
|
|
+ }
|
|
|
+ finAccBillsService.updateById(finAccBills);
|
|
|
+ }
|
|
|
+ if ("HYJK,HYCK".contains(feeCenter.getBusinessType())) {
|
|
|
+ //利润 = 收 - 付
|
|
|
+ oceanFreightProfit = oceanFreightDr.subtract(oceanFreightCr);
|
|
|
+ amountProfit = amountDr.subtract(amountCr);
|
|
|
+ amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
|
|
|
+ amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
|
|
|
+ bills.setAmountDr(amountDr);
|
|
|
+ bills.setOceanFreightDr(oceanFreightDr);
|
|
|
+ bills.setAmountCr(amountCr);
|
|
|
+ bills.setOceanFreightCr(oceanFreightCr);
|
|
|
+ bills.setAmountProfit(amountProfit);
|
|
|
+ bills.setOceanFreightProfit(oceanFreightProfit);
|
|
|
+ bills.setAmountDrUsd(amountDrUsd);
|
|
|
+ bills.setAmountCrUsd(amountCrUsd);
|
|
|
+ bills.setAmountProfitUsd(amountProfitUsd);
|
|
|
+ bills.setAmountDrLoc(amountDrLoc);
|
|
|
+ bills.setAmountCrLoc(amountCrLoc);
|
|
|
+ bills.setAmountProfitLoc(amountProfitLoc);
|
|
|
+ billsMapper.updateById(bills);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private void updateData(ExpenseApplication expenseApplication, List<FeeCenter> feeCenterList, String number) {
|
|
|
int count = expenseApplicationMapper.updateById(expenseApplication);
|
|
|
if (count == 0) {
|