|
|
@@ -24,6 +24,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
+import org.springblade.core.tool.utils.Func;
|
|
|
import org.springblade.core.tool.utils.StringUtil;
|
|
|
import org.springblade.los.Util.CurrencyUtils;
|
|
|
import org.springblade.los.basic.business.entity.BusinessType;
|
|
|
@@ -336,7 +337,7 @@ public class ExpenseApplicationServiceImpl extends ServiceImpl<ExpenseApplicatio
|
|
|
throw new SecurityException("操作失败,请联系管理员");
|
|
|
}
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
BusinessType businessType = bBusinessTypeService.getOne(new LambdaQueryWrapper<BusinessType>()
|
|
|
.eq(BusinessType::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(BusinessType::getIsDeleted, 0)
|
|
|
@@ -505,194 +506,348 @@ public class ExpenseApplicationServiceImpl extends ServiceImpl<ExpenseApplicatio
|
|
|
if (feeCenterList.isEmpty()) {
|
|
|
throw new RuntimeException("未查到可申请费用");
|
|
|
}
|
|
|
- List<ExpenseApplication> expenseApplicationList = new ArrayList<>();
|
|
|
- if ("BUY,ZR,DL,OW-N,OW-F,XGFY,XGDX,CCSQ".contains(type)) {
|
|
|
- List<TradingBox> tradingBoxList = tradingBoxService.list(new LambdaQueryWrapper<TradingBox>()
|
|
|
- .eq(TradingBox::getIsDeleted, 0)
|
|
|
- .eq(TradingBox::getTenantId, AuthUtil.getTenantId())
|
|
|
- .apply("find_in_set(id,'" + ids + "')"));
|
|
|
- for (TradingBox tradingBox : tradingBoxList) {
|
|
|
- ExpenseApplication expenseApplication = new ExpenseApplication();
|
|
|
- expenseApplication.setSrcId(tradingBox.getId());
|
|
|
- expenseApplication.setSrcType(type);
|
|
|
- expenseApplication.setCreateUser(AuthUtil.getUserId());
|
|
|
- expenseApplication.setCreateTime(new Date());
|
|
|
- expenseApplication.setCreateUserName(AuthUtil.getUserName());
|
|
|
- expenseApplication.setSrcNo(tradingBox.getSysNo());
|
|
|
- expenseApplication.setSrcMblno(tradingBox.getContractNo());
|
|
|
- expenseApplication.setSrcContainerNumber(tradingBox.getContainerNumber());
|
|
|
- expenseApplication.setSrcContractNo(tradingBox.getContractNo());
|
|
|
- expenseApplication.setStatus("审核提交");
|
|
|
- expenseApplication.setSrcBusDate(new Date());
|
|
|
- expenseApplication.setCorpId(tradingBox.getPurchaseCompanyId());
|
|
|
- expenseApplication.setCorpCnName(tradingBox.getPurchaseCompanyName());
|
|
|
- expenseApplication.setCorpEnName(tradingBox.getPurchaseCompanyName());
|
|
|
- expenseApplication.setBranchId(AuthUtil.getDeptId());
|
|
|
- List<FeeCenter> feeCenters = feeCenterList.stream().filter(e -> e.getPid().equals(tradingBox.getId())).collect(Collectors.toList());
|
|
|
- if (!feeCenters.isEmpty()) {
|
|
|
- List<FeeCenter> feeCentersNew = new ArrayList<>();
|
|
|
- for (FeeCenter item : feeCenters) {
|
|
|
- item.setUpdateTime(new Date());
|
|
|
- item.setUpdateUser(AuthUtil.getUserId());
|
|
|
- item.setUpdateUserName(AuthUtil.getUserName());
|
|
|
- item.setStlPid(expenseApplication.getId());
|
|
|
- item.setAuditStatus("1");
|
|
|
- item.setApplyId(AuthUtil.getUserId());
|
|
|
- item.setApplyName(AuthUtil.getUserName());
|
|
|
- item.setApplyTime(new Date());
|
|
|
- feeCentersNew.add(item);
|
|
|
+ String status = sysClient.getParamService("expense.application");
|
|
|
+ if (status.equals("1")) {
|
|
|
+ List<ExpenseApplication> expenseApplicationList = new ArrayList<>();
|
|
|
+ if ("BUY,ZR,DL,OW-N,OW-F,XGFY,XGDX,CCSQ".contains(type)) {
|
|
|
+ List<TradingBox> tradingBoxList = tradingBoxService.list(new LambdaQueryWrapper<TradingBox>()
|
|
|
+ .eq(TradingBox::getIsDeleted, 0)
|
|
|
+ .eq(TradingBox::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .apply("find_in_set(id,'" + ids + "')"));
|
|
|
+ for (TradingBox tradingBox : tradingBoxList) {
|
|
|
+ ExpenseApplication expenseApplication = new ExpenseApplication();
|
|
|
+ expenseApplication.setSrcId(tradingBox.getId());
|
|
|
+ expenseApplication.setSrcType(type);
|
|
|
+ expenseApplication.setCreateUser(AuthUtil.getUserId());
|
|
|
+ expenseApplication.setCreateTime(new Date());
|
|
|
+ expenseApplication.setCreateUserName(AuthUtil.getUserName());
|
|
|
+ expenseApplication.setSrcNo(tradingBox.getSysNo());
|
|
|
+ expenseApplication.setSrcMblno(tradingBox.getContractNo());
|
|
|
+ expenseApplication.setSrcContainerNumber(tradingBox.getContainerNumber());
|
|
|
+ expenseApplication.setSrcContractNo(tradingBox.getContractNo());
|
|
|
+ expenseApplication.setStatus("审核提交");
|
|
|
+ expenseApplication.setSrcBusDate(new Date());
|
|
|
+ expenseApplication.setCorpId(tradingBox.getPurchaseCompanyId());
|
|
|
+ expenseApplication.setCorpCnName(tradingBox.getPurchaseCompanyName());
|
|
|
+ expenseApplication.setCorpEnName(tradingBox.getPurchaseCompanyName());
|
|
|
+ expenseApplication.setBranchId(AuthUtil.getDeptId());
|
|
|
+ List<FeeCenter> feeCenters = feeCenterList.stream().filter(e -> e.getPid().equals(tradingBox.getId())).collect(Collectors.toList());
|
|
|
+ if (!feeCenters.isEmpty()) {
|
|
|
+ List<FeeCenter> feeCentersNew = new ArrayList<>();
|
|
|
+ for (FeeCenter item : feeCenters) {
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ item.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ item.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ item.setStlPid(expenseApplication.getId());
|
|
|
+ item.setAuditStatus("1");
|
|
|
+ item.setApplyId(AuthUtil.getUserId());
|
|
|
+ item.setApplyName(AuthUtil.getUserName());
|
|
|
+ item.setApplyTime(new Date());
|
|
|
+ feeCentersNew.add(item);
|
|
|
+ }
|
|
|
+ expenseApplication.setFeeCenterList(feeCentersNew);
|
|
|
+ expenseApplicationList.add(expenseApplication);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if ("HYJK,HYCK".contains(type)) {
|
|
|
+ List<Bills> billsList = billsService.list(new LambdaQueryWrapper<Bills>()
|
|
|
+ .eq(Bills::getIsDeleted, 0)
|
|
|
+ .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .apply("find_in_set(id,'" + ids + "')"));
|
|
|
+ for (Bills bills : billsList) {
|
|
|
+ ExpenseApplication expenseApplication = new ExpenseApplication();
|
|
|
+ expenseApplication.setSrcId(bills.getId());
|
|
|
+ expenseApplication.setSrcType(type);
|
|
|
+ expenseApplication.setCreateUser(AuthUtil.getUserId());
|
|
|
+ expenseApplication.setCreateTime(new Date());
|
|
|
+ expenseApplication.setCreateUserName(AuthUtil.getUserName());
|
|
|
+ expenseApplication.setSrcNo(bills.getBillNo());
|
|
|
+ expenseApplication.setSrcMblno(bills.getMblno());
|
|
|
+ expenseApplication.setSrcHblno(bills.getHblno());
|
|
|
+ expenseApplication.setSrcContainerNumber("");
|
|
|
+ expenseApplication.setSrcContractNo(bills.getBookingNo());
|
|
|
+ expenseApplication.setStatus("审核提交");
|
|
|
+ expenseApplication.setSrcBusDate(new Date());
|
|
|
+ expenseApplication.setCorpId(bills.getCorpId());
|
|
|
+ expenseApplication.setCorpCnName(bills.getCorpCnName());
|
|
|
+ expenseApplication.setCorpEnName(bills.getCorpEnName());
|
|
|
+ expenseApplication.setBranchId(bills.getBranchId());
|
|
|
+ expenseApplication.setBranchName(bills.getBranchName());
|
|
|
+ List<FeeCenter> feeCenters = feeCenterList.stream().filter(e -> e.getPid().equals(bills.getId())).collect(Collectors.toList());
|
|
|
+ if (!feeCenters.isEmpty()) {
|
|
|
+ List<FeeCenter> feeCentersNew = new ArrayList<>();
|
|
|
+ for (FeeCenter item : feeCenters) {
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ item.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ item.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ item.setStlPid(expenseApplication.getId());
|
|
|
+ item.setAuditStatus("1");
|
|
|
+ item.setApplyId(AuthUtil.getUserId());
|
|
|
+ item.setApplyName(AuthUtil.getUserName());
|
|
|
+ item.setApplyTime(new Date());
|
|
|
+ feeCentersNew.add(item);
|
|
|
+ }
|
|
|
+ expenseApplication.setFeeCenterList(feeCentersNew);
|
|
|
+ expenseApplicationList.add(expenseApplication);
|
|
|
}
|
|
|
- expenseApplication.setFeeCenterList(feeCentersNew);
|
|
|
- expenseApplicationList.add(expenseApplication);
|
|
|
}
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("类型错误,未查到单据");
|
|
|
}
|
|
|
- } else if ("HYJK,HYCK".contains(type)) {
|
|
|
- List<Bills> billsList = billsService.list(new LambdaQueryWrapper<Bills>()
|
|
|
- .eq(Bills::getIsDeleted, 0)
|
|
|
- .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
- .apply("find_in_set(id,'" + ids + "')"));
|
|
|
- for (Bills bills : billsList) {
|
|
|
- ExpenseApplication expenseApplication = new ExpenseApplication();
|
|
|
- expenseApplication.setSrcId(bills.getId());
|
|
|
- expenseApplication.setSrcType(type);
|
|
|
- expenseApplication.setCreateUser(AuthUtil.getUserId());
|
|
|
- expenseApplication.setCreateTime(new Date());
|
|
|
- expenseApplication.setCreateUserName(AuthUtil.getUserName());
|
|
|
- expenseApplication.setSrcNo(bills.getBillNo());
|
|
|
- expenseApplication.setSrcMblno(bills.getMblno());
|
|
|
- expenseApplication.setSrcHblno(bills.getHblno());
|
|
|
- expenseApplication.setSrcContainerNumber("");
|
|
|
- expenseApplication.setSrcContractNo(bills.getBookingNo());
|
|
|
- expenseApplication.setStatus("审核提交");
|
|
|
- expenseApplication.setSrcBusDate(new Date());
|
|
|
- expenseApplication.setCorpId(bills.getCorpId());
|
|
|
- expenseApplication.setCorpCnName(bills.getCorpCnName());
|
|
|
- expenseApplication.setCorpEnName(bills.getCorpEnName());
|
|
|
- expenseApplication.setBranchId(bills.getBranchId());
|
|
|
- expenseApplication.setBranchName(bills.getBranchName());
|
|
|
- List<FeeCenter> feeCenters = feeCenterList.stream().filter(e -> e.getPid().equals(bills.getId())).collect(Collectors.toList());
|
|
|
- if (!feeCenters.isEmpty()) {
|
|
|
- List<FeeCenter> feeCentersNew = new ArrayList<>();
|
|
|
- for (FeeCenter item : feeCenters) {
|
|
|
- item.setUpdateTime(new Date());
|
|
|
- item.setUpdateUser(AuthUtil.getUserId());
|
|
|
- item.setUpdateUserName(AuthUtil.getUserName());
|
|
|
- item.setStlPid(expenseApplication.getId());
|
|
|
- item.setAuditStatus("1");
|
|
|
- item.setApplyId(AuthUtil.getUserId());
|
|
|
- item.setApplyName(AuthUtil.getUserName());
|
|
|
- item.setApplyTime(new Date());
|
|
|
- feeCentersNew.add(item);
|
|
|
+ this.saveBatch(expenseApplicationList);
|
|
|
+ for (ExpenseApplication item : expenseApplicationList) {
|
|
|
+ if (ObjectUtils.isNotNull(item.getFeeCenterList()) && !item.getFeeCenterList().isEmpty()) {
|
|
|
+ for (FeeCenter feeCenter : item.getFeeCenterList()) {
|
|
|
+ feeCenter.setUpdateTime(new Date());
|
|
|
+ feeCenter.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ feeCenter.setUpdateUserName(AuthUtil.getUserName());
|
|
|
+ feeCenter.setStlPid(item.getId());
|
|
|
+ feeCenter.setAuditStatus("1");
|
|
|
+ feeCenter.setApplyId(AuthUtil.getUserId());
|
|
|
+ feeCenter.setApplyName(AuthUtil.getUserName());
|
|
|
+ feeCenter.setApplyTime(new Date());
|
|
|
}
|
|
|
- expenseApplication.setFeeCenterList(feeCentersNew);
|
|
|
- expenseApplicationList.add(expenseApplication);
|
|
|
+ feeCenterService.updateBatchById(item.getFeeCenterList());
|
|
|
}
|
|
|
}
|
|
|
- } else {
|
|
|
- throw new RuntimeException("类型错误,未查到单据");
|
|
|
- }
|
|
|
- this.saveBatch(expenseApplicationList);
|
|
|
- for (ExpenseApplication item : expenseApplicationList) {
|
|
|
- if (ObjectUtils.isNotNull(item.getFeeCenterList()) && !item.getFeeCenterList().isEmpty()) {
|
|
|
- for (FeeCenter feeCenter : item.getFeeCenterList()) {
|
|
|
- feeCenter.setUpdateTime(new Date());
|
|
|
- feeCenter.setUpdateUser(AuthUtil.getUserId());
|
|
|
- feeCenter.setUpdateUserName(AuthUtil.getUserName());
|
|
|
- feeCenter.setStlPid(item.getId());
|
|
|
- feeCenter.setAuditStatus("1");
|
|
|
- feeCenter.setApplyId(AuthUtil.getUserId());
|
|
|
- feeCenter.setApplyName(AuthUtil.getUserName());
|
|
|
- feeCenter.setApplyTime(new Date());
|
|
|
- }
|
|
|
- feeCenterService.updateBatchById(item.getFeeCenterList());
|
|
|
+ int actId;
|
|
|
+ String processType;
|
|
|
+ String checkType;
|
|
|
+ if ("C".equals(dc)) {
|
|
|
+ actId = 1132;
|
|
|
+ processType = "请核费用-付费";
|
|
|
+ checkType = "FYSQ-C";
|
|
|
+ } else {
|
|
|
+ actId = 1130;
|
|
|
+ processType = "请核费用";
|
|
|
+ checkType = "FYSQ";
|
|
|
+ }
|
|
|
+ //审批流程
|
|
|
+ LambdaQueryWrapper<LosAuditPathsActs> auditPathsActsLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ auditPathsActsLambdaQueryWrapper
|
|
|
+ .eq(LosAuditPathsActs::getFidStatus, "status")
|
|
|
+ .eq(LosAuditPathsActs::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(LosAuditPathsActs::getActId, actId);
|
|
|
+ // 判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过
|
|
|
+ List<LosAuditPathsActs> pathsActsList = auditPathsActsService.list(auditPathsActsLambdaQueryWrapper);
|
|
|
+ if (pathsActsList.isEmpty()) {
|
|
|
+ throw new RuntimeException("请先维护审批路径");
|
|
|
+ }
|
|
|
+ //获取审批级次
|
|
|
+ List<LosAuditPathsLevels> auditPathsLevels = auditPathsLevelsService.list(new LambdaQueryWrapper<LosAuditPathsLevels>()
|
|
|
+ .eq(LosAuditPathsLevels::getTenantId, AuthUtil.getTenantId()));
|
|
|
+ if (auditPathsLevels.isEmpty()) {
|
|
|
+ throw new RuntimeException("请先维护审批人");
|
|
|
+ }
|
|
|
+ for (ExpenseApplication expenseApplication : expenseApplicationList) {
|
|
|
+ //审批数据
|
|
|
+ LosAuditProecessDTO auditProecessDTO = new LosAuditProecessDTO();
|
|
|
+ auditProecessDTO.setTimes(1);
|
|
|
+ auditProecessDTO.setProcessType(processType);
|
|
|
+ //获取审批信息
|
|
|
+ LosAuditPathsActs pathsActs = pathsActsList.stream().filter(e -> expenseApplication.getBranchId().equals(e.getSalesCompanyId() + ""))
|
|
|
+ .findFirst().orElse(null);
|
|
|
+ // 没开启审批流直接走 通过流程
|
|
|
+ if (pathsActs == null || pathsActs.getIsEnable() == 2) {
|
|
|
+ throw new SecurityException("当前租户未查询到审批流配置");
|
|
|
+ } else {
|
|
|
+ Long pathId = pathsActs.getPathId();
|
|
|
+ //获取审批级次
|
|
|
+ List<LosAuditPathsLevels> levelsList = auditPathsLevels.stream().filter(e -> e.getPathId().equals(pathId))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isEmpty(levelsList)) {
|
|
|
+ throw new SecurityException("开启审批失败:未查询到审批信息");
|
|
|
+ }
|
|
|
+ // 绑定审核类型
|
|
|
+ auditProecessDTO.setCheckType(checkType);
|
|
|
+ auditProecessDTO.setPathsLevelsList(levelsList);
|
|
|
+ auditProecessDTO.setActId(1);
|
|
|
+ auditProecessDTO.setSendUserId(AuthUtil.getUserId());
|
|
|
+ auditProecessDTO.setSendName(AuthUtil.getUserName());
|
|
|
+ auditProecessDTO.setSendTime(new Date());
|
|
|
+ auditProecessDTO.setTenantId(AuthUtil.getTenantId());
|
|
|
+ // 追加跳转路由url
|
|
|
+ auditProecessDTO.setUrl(expenseApplication.getUrl());
|
|
|
+ auditProecessDTO.setPageStatus(expenseApplication.getPageStatus());
|
|
|
+ auditProecessDTO.setPageLabel(expenseApplication.getPageLabel());
|
|
|
+ auditProecessDTO.setOrderRemark(expenseApplication.getRemarks());
|
|
|
+ auditProecessDTO.setSrcBillId(expenseApplication.getId());
|
|
|
+ auditProecessDTO.setBillId(expenseApplication.getSrcId());
|
|
|
+ auditProecessDTO.setBillNo(expenseApplication.getSrcNo());
|
|
|
+ auditProecessDTO.setBillTime(expenseApplication.getCreateTime());
|
|
|
+ auditProecessDTO.setCorpId(expenseApplication.getCorpId());
|
|
|
+ auditProecessDTO.setCorpsName(expenseApplication.getCorpCnName());
|
|
|
+ auditProecessDTO.setReferenceNumber(expenseApplication.getSrcContainerNumber());
|
|
|
+ auditProecessDTO.setMorderNo(expenseApplication.getSrcMblno());
|
|
|
+ auditProecessDTO.setSrcBusType(expenseApplication.getSrcType());
|
|
|
+ auditProecessDTO.setSalesCompanyId(Long.parseLong(expenseApplication.getBranchId()));
|
|
|
+ auditProecessDTO.setSalesCompanyName(expenseApplication.getBranchName());
|
|
|
+ auditProecessDTO.setMblno(expenseApplication.getSrcMblno());
|
|
|
+ auditProecessDTO.setHblno(expenseApplication.getSrcHblno());
|
|
|
+ BigDecimal salesPrice = expenseApplication.getFeeCenterList().stream().filter(e -> e.getDc().equals("D"))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal costPrice = expenseApplication.getFeeCenterList().stream().filter(e -> e.getDc().equals("C"))
|
|
|
+ .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ auditProecessDTO.setPayAmount(costPrice);
|
|
|
+ auditProecessDTO.setReceivableAmount(salesPrice);
|
|
|
+ auditProecessDTO.setGrossProfit(salesPrice.subtract(costPrice));
|
|
|
+ R financeProcess = auditProecessService.createFinanceProcess(auditProecessDTO);
|
|
|
+ if (!financeProcess.isSuccess()) {
|
|
|
+ throw new SecurityException("操作失败,请联系管理员");
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- int actId;
|
|
|
- String processType;
|
|
|
- String checkType;
|
|
|
- if ("C".equals(dc)) {
|
|
|
- actId = 1132;
|
|
|
- processType = "请核费用-付费";
|
|
|
- checkType = "FYSQ-C";
|
|
|
} else {
|
|
|
- actId = 1130;
|
|
|
- processType = "请核费用";
|
|
|
- checkType = "FYSQ";
|
|
|
- }
|
|
|
- //审批流程
|
|
|
- LambdaQueryWrapper<LosAuditPathsActs> auditPathsActsLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- auditPathsActsLambdaQueryWrapper
|
|
|
- .eq(LosAuditPathsActs::getFidStatus, "status")
|
|
|
- .eq(LosAuditPathsActs::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(LosAuditPathsActs::getActId, actId);
|
|
|
- // 判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过
|
|
|
- List<LosAuditPathsActs> pathsActsList = auditPathsActsService.list(auditPathsActsLambdaQueryWrapper);
|
|
|
- if (pathsActsList.isEmpty()) {
|
|
|
- throw new RuntimeException("请先维护审批路径");
|
|
|
- }
|
|
|
- //获取审批级次
|
|
|
- List<LosAuditPathsLevels> auditPathsLevels = auditPathsLevelsService.list(new LambdaQueryWrapper<LosAuditPathsLevels>()
|
|
|
- .eq(LosAuditPathsLevels::getTenantId, AuthUtil.getTenantId()));
|
|
|
- if (auditPathsLevels.isEmpty()) {
|
|
|
- throw new RuntimeException("请先维护审批人");
|
|
|
- }
|
|
|
- for (ExpenseApplication expenseApplication : expenseApplicationList) {
|
|
|
- //审批数据
|
|
|
- LosAuditProecessDTO auditProecessDTO = new LosAuditProecessDTO();
|
|
|
- auditProecessDTO.setTimes(1);
|
|
|
- auditProecessDTO.setProcessType(processType);
|
|
|
- //获取审批信息
|
|
|
- LosAuditPathsActs pathsActs = pathsActsList.stream().filter(e -> expenseApplication.getBranchId().equals(e.getSalesCompanyId() + ""))
|
|
|
- .findFirst().orElse(null);
|
|
|
- // 没开启审批流直接走 通过流程
|
|
|
- if (pathsActs == null || pathsActs.getIsEnable() == 2) {
|
|
|
- throw new SecurityException("当前租户未查询到审批流配置");
|
|
|
- } else {
|
|
|
- Long pathId = pathsActs.getPathId();
|
|
|
- //获取审批级次
|
|
|
- List<LosAuditPathsLevels> levelsList = auditPathsLevels.stream().filter(e -> e.getPathId().equals(pathId))
|
|
|
- .collect(Collectors.toList());
|
|
|
- if (CollectionUtils.isEmpty(levelsList)) {
|
|
|
- throw new SecurityException("开启审批失败:未查询到审批信息");
|
|
|
+ BusinessType businessType = bBusinessTypeService.getOne(new LambdaQueryWrapper<BusinessType>()
|
|
|
+ .eq(BusinessType::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(BusinessType::getIsDeleted, 0)
|
|
|
+ .eq(BusinessType::getStatus, 0)
|
|
|
+ .eq(BusinessType::getCode, "YWZD"));
|
|
|
+ if (businessType == null) {
|
|
|
+ throw new RuntimeException("未找到可用业务类型");
|
|
|
+ }
|
|
|
+ List<Bills> bills = new ArrayList<>();
|
|
|
+ if ("HYJK,HYCK".contains(type)) {
|
|
|
+ bills = billsService.list(new LambdaQueryWrapper<Bills>()
|
|
|
+ .eq(Bills::getIsDeleted, 0)
|
|
|
+ .eq(Bills::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .in(Bills::getId, Func.toLongList(ids)));
|
|
|
+ }
|
|
|
+ for (FeeCenter item : feeCenterList) {
|
|
|
+ if (1 == item.getAccStatus()) {
|
|
|
+ throw new RuntimeException("费用:" + item.getFeeCnName() + "已生成账单");
|
|
|
}
|
|
|
- // 绑定审核类型
|
|
|
- auditProecessDTO.setCheckType(checkType);
|
|
|
- auditProecessDTO.setPathsLevelsList(levelsList);
|
|
|
- auditProecessDTO.setActId(1);
|
|
|
- auditProecessDTO.setSendUserId(AuthUtil.getUserId());
|
|
|
- auditProecessDTO.setSendName(AuthUtil.getUserName());
|
|
|
- auditProecessDTO.setSendTime(new Date());
|
|
|
- auditProecessDTO.setTenantId(AuthUtil.getTenantId());
|
|
|
- // 追加跳转路由url
|
|
|
- auditProecessDTO.setUrl(expenseApplication.getUrl());
|
|
|
- auditProecessDTO.setPageStatus(expenseApplication.getPageStatus());
|
|
|
- auditProecessDTO.setPageLabel(expenseApplication.getPageLabel());
|
|
|
- auditProecessDTO.setOrderRemark(expenseApplication.getRemarks());
|
|
|
- auditProecessDTO.setSrcBillId(expenseApplication.getId());
|
|
|
- auditProecessDTO.setBillId(expenseApplication.getSrcId());
|
|
|
- auditProecessDTO.setBillNo(expenseApplication.getSrcNo());
|
|
|
- auditProecessDTO.setBillTime(expenseApplication.getCreateTime());
|
|
|
- auditProecessDTO.setCorpId(expenseApplication.getCorpId());
|
|
|
- auditProecessDTO.setCorpsName(expenseApplication.getCorpCnName());
|
|
|
- auditProecessDTO.setReferenceNumber(expenseApplication.getSrcContainerNumber());
|
|
|
- auditProecessDTO.setMorderNo(expenseApplication.getSrcMblno());
|
|
|
- auditProecessDTO.setSrcBusType(expenseApplication.getSrcType());
|
|
|
- auditProecessDTO.setSalesCompanyId(Long.parseLong(expenseApplication.getBranchId()));
|
|
|
- auditProecessDTO.setSalesCompanyName(expenseApplication.getBranchName());
|
|
|
- auditProecessDTO.setMblno(expenseApplication.getSrcMblno());
|
|
|
- auditProecessDTO.setHblno(expenseApplication.getSrcHblno());
|
|
|
- BigDecimal salesPrice = expenseApplication.getFeeCenterList().stream().filter(e -> e.getDc().equals("D"))
|
|
|
- .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal costPrice = expenseApplication.getFeeCenterList().stream().filter(e -> e.getDc().equals("C"))
|
|
|
- .map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- auditProecessDTO.setPayAmount(costPrice);
|
|
|
- auditProecessDTO.setReceivableAmount(salesPrice);
|
|
|
- auditProecessDTO.setGrossProfit(salesPrice.subtract(costPrice));
|
|
|
- R financeProcess = auditProecessService.createFinanceProcess(auditProecessDTO);
|
|
|
- if (!financeProcess.isSuccess()) {
|
|
|
- throw new SecurityException("操作失败,请联系管理员");
|
|
|
+ FinAccBills data = new FinAccBills();
|
|
|
+ data.setGenerationCorpId(item.getGenerationCorpId());
|
|
|
+ data.setGenerationCorpCnName(item.getGenerationCorpCnName());
|
|
|
+ data.setGenerationCorpEnName(item.getGenerationCorpEnName());
|
|
|
+ data.setCreateTime(new Date());
|
|
|
+ data.setCreateUser(AuthUtil.getUserId());
|
|
|
+ data.setCreateUserName(AuthUtil.getUserName());
|
|
|
+ if (ObjectUtils.isNull(item.getBranchId())) {
|
|
|
+ data.setCreateDept(AuthUtil.getDeptId());
|
|
|
+ R<String> res = sysClient.getDeptName(Long.parseLong(AuthUtil.getDeptId()));
|
|
|
+ if (res.isSuccess()) {
|
|
|
+ data.setCreateDeptName(res.getData());
|
|
|
+ data.setBranchName(res.getData());
|
|
|
+ data.setDeptName(res.getData());
|
|
|
+ }
|
|
|
+ data.setBranchId(item.getBranchId());
|
|
|
+ data.setDeptId(Long.parseLong(AuthUtil.getDeptId()));
|
|
|
+ } else {
|
|
|
+ data.setCreateDept(item.getBranchId());
|
|
|
+ data.setCreateDeptName(item.getBranchName());
|
|
|
+ data.setBranchId(item.getBranchId());
|
|
|
+ data.setBranchName(item.getBranchName());
|
|
|
+ data.setDeptId(Long.parseLong(item.getBranchId()));
|
|
|
+ data.setDeptName(item.getBranchName());
|
|
|
+ }
|
|
|
+ data.setBookingAgentId(item.getBookingAgentId());
|
|
|
+ data.setBookingAgentCnName(item.getBookingAgentCnName());
|
|
|
+ data.setBookingAgentEnName(item.getBookingAgentEnName());
|
|
|
+ data.setQuantityCntrDescr(item.getQuantityCntrDescr());
|
|
|
+ data.setTeu(item.getTeu());
|
|
|
+ BusinessBillNo businessBillNo = new BusinessBillNo();
|
|
|
+ businessBillNo.setBusinessTypeId(businessType.getId());
|
|
|
+ businessBillNo.setCode("YWZD");
|
|
|
+ businessBillNo.setBranchId(item.getBranchId());
|
|
|
+ R clientBillNo = businessBillNoService.getBillNoLos(businessBillNo);
|
|
|
+ if (!clientBillNo.isSuccess()) {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ throw new RuntimeException("生成订单编号失败");
|
|
|
+ }
|
|
|
+ data.setWarehousingDate(item.getStorageDate());
|
|
|
+ data.setOutboundDate(item.getOutboundDate());
|
|
|
+ data.setBillNo((String) clientBillNo.getData());
|
|
|
+ data.setBillDate(new Date());
|
|
|
+ data.setAccountDc(item.getDc());
|
|
|
+ data.setAccountDate(item.getBillDate());
|
|
|
+ data.setBusinessType(item.getBusinessType());
|
|
|
+ data.setBusinessBillId(item.getPid());
|
|
|
+ data.setBusinessBillNo(item.getBillNo());
|
|
|
+ data.setBusinessDate(item.getBillDate());
|
|
|
+ data.setBillType(item.getBillType());
|
|
|
+ data.setSrcId(item.getSrcId());
|
|
|
+ data.setSrcCnName(item.getSrcCnName());
|
|
|
+ data.setSrcEnName(item.getSrcEnName());
|
|
|
+ data.setSrcType(item.getSrcType());
|
|
|
+ if (!bills.isEmpty()){
|
|
|
+ Bills bills1 = bills.stream().filter(e-> e.getId().equals(item.getPid())).findFirst().orElse(null);
|
|
|
+ if (bills1 != null){
|
|
|
+ data.setOperatorId(bills1.getOperatorId());
|
|
|
+ data.setOperatorName(bills1.getOperatorName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ data.setPaymode(item.getPaymode());
|
|
|
+ data.setCorpId(item.getCorpId());
|
|
|
+ data.setCorpCnName(item.getCorpCnName());
|
|
|
+ data.setCorpEnName(item.getCorpEnName());
|
|
|
+ data.setBillCorpId(item.getBillCorpId());
|
|
|
+ data.setBillCorpCnName(item.getBillCorpCnName());
|
|
|
+ data.setBillCorpEnName(item.getBillCorpEnName());
|
|
|
+ data.setVesselId(item.getVesselId());
|
|
|
+ data.setVesselCnName(item.getVesselCnName());
|
|
|
+ data.setVesselEnName(item.getVesselEnName());
|
|
|
+ data.setVoyageNo(item.getVoyageNo());
|
|
|
+ data.setMblno(item.getMblno());
|
|
|
+ data.setHblno(item.getHblno());
|
|
|
+ data.setRefno(item.getRefno());
|
|
|
+ data.setBookingNo(item.getBookingNo());
|
|
|
+ data.setEtd(item.getEtd());
|
|
|
+ data.setEta(item.getEta());
|
|
|
+ data.setPolId(item.getPolId());
|
|
|
+ data.setPolCnName(item.getPolCnName());
|
|
|
+ data.setPolEnName(item.getPolEnName());
|
|
|
+ data.setPodId(item.getPodId());
|
|
|
+ data.setPodCnName(item.getPodCnName());
|
|
|
+ data.setPodCode(item.getPodCode());
|
|
|
+ data.setPodEnName(item.getPodEnName());
|
|
|
+ BigDecimal amountDrLoc = new BigDecimal("0.00");
|
|
|
+ BigDecimal amountCrLoc = new BigDecimal("0.00");
|
|
|
+ if ("CNY".equals(item.getCurCode())) {
|
|
|
+ if ("D".equals(item.getDc())) {
|
|
|
+ data.setAmountDr(item.getAmount());
|
|
|
+ data.setAmountCr(new BigDecimal("0.00"));
|
|
|
+ } else {
|
|
|
+ data.setAmountCr(item.getAmount());
|
|
|
+ data.setAmountDr(new BigDecimal("0.00"));
|
|
|
+ }
|
|
|
+ data.setAmountDrUsd(new BigDecimal("0.00"));
|
|
|
+ data.setAmountCrUsd(new BigDecimal("0.00"));
|
|
|
+ } else {
|
|
|
+ if ("D".equals(item.getDc())) {
|
|
|
+ data.setAmountDrUsd(item.getAmount());
|
|
|
+ data.setAmountCrUsd(new BigDecimal("0.00"));
|
|
|
+ } else {
|
|
|
+ data.setAmountDrUsd(new BigDecimal("0.00"));
|
|
|
+ data.setAmountCrUsd(item.getAmount());
|
|
|
+ }
|
|
|
+ data.setAmountDr(new BigDecimal("0.00"));
|
|
|
+ data.setAmountCr(new BigDecimal("0.00"));
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(data.getAmountCrUsd()) && ObjectUtils.isNotNull(item.getExrate())) {
|
|
|
+ BigDecimal crCny = data.getAmountCrUsd().multiply(item.getExrate());
|
|
|
+ amountCrLoc = amountCrLoc.add(data.getAmountCr()).add(crCny);
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(data.getAmountDrUsd()) && ObjectUtils.isNotNull(item.getExrate())) {
|
|
|
+ BigDecimal drCny = data.getAmountDrUsd().multiply(item.getExrate());
|
|
|
+ amountDrLoc = amountDrLoc.add(data.getAmountDr()).add(drCny);
|
|
|
}
|
|
|
+ data.setAmountDrLoc(amountDrLoc);
|
|
|
+ data.setAmountCrLoc(amountCrLoc);
|
|
|
+ finAccBillsService.save(data);
|
|
|
+ item.setAccBillId(data.getId());
|
|
|
+ item.setAccBillNo(data.getBillNo());
|
|
|
+ item.setAccDate(data.getBillDate());
|
|
|
+ item.setAccAmount(amountDrLoc.add(amountCrLoc));
|
|
|
+ item.setAccStatus(1);
|
|
|
+ item.setAccById(AuthUtil.getUserId());
|
|
|
+ item.setAccByName(AuthUtil.getUserName());
|
|
|
+ item.setAuditStatus("4");
|
|
|
+ int version = StringUtil.isBlank(item.getVersion()) ? 1 : Integer.parseInt(item.getVersion());
|
|
|
+ item.setVersion(String.valueOf(version + 1));
|
|
|
}
|
|
|
+ feeCenterService.updateBatchById(feeCenterList);
|
|
|
}
|
|
|
return R.data("操作成功");
|
|
|
}
|
|
|
@@ -706,7 +861,7 @@ public class ExpenseApplicationServiceImpl extends ServiceImpl<ExpenseApplicatio
|
|
|
throw new RuntimeException("请选择明细");
|
|
|
}
|
|
|
String status = sysClient.getParamService("expense.application");
|
|
|
- if (status.equals("1")){
|
|
|
+ if (status.equals("1")) {
|
|
|
List<Long> idList = expenseApplication.getFeeCenterList().stream().map(FeeCenter::getStlPid).filter(Objects::nonNull).distinct().collect(Collectors.toList());
|
|
|
if (idList.isEmpty()) {
|
|
|
throw new RuntimeException("数据错误,请联系管理员");
|
|
|
@@ -755,13 +910,10 @@ public class ExpenseApplicationServiceImpl extends ServiceImpl<ExpenseApplicatio
|
|
|
throw new SecurityException("操作失败,请联系管理员");
|
|
|
}
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
StringBuilder text = new StringBuilder();
|
|
|
List<FeeCenter> feeCenterList = new ArrayList<>();
|
|
|
for (FeeCenter item : expenseApplication.getFeeCenterList()) {
|
|
|
- if (item.getStlPid() == null) {
|
|
|
- text.append("费用:").append(item.getFeeCnName()).append("金额:").append(item.getAmount()).append("未申请,");
|
|
|
- }
|
|
|
if (item.getStlTtlAmount().compareTo(BigDecimal.ZERO) != 0) {
|
|
|
text.append("费用:").append(item.getFeeCnName()).append("已结算");
|
|
|
}
|