|
|
@@ -20,9 +20,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import io.seata.spring.annotation.GlobalTransactional;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
-import org.springblade.box.tube.entity.Transport;
|
|
|
import org.springblade.box.tube.ocean.dto.ShippingBillDTO;
|
|
|
import org.springblade.box.tube.ocean.entity.*;
|
|
|
import org.springblade.box.tube.ocean.mapper.*;
|
|
|
@@ -31,15 +32,27 @@ import org.springblade.check.dto.AuditProecessDTO;
|
|
|
import org.springblade.check.entity.AuditPathsActs;
|
|
|
import org.springblade.check.entity.AuditPathsLevels;
|
|
|
import org.springblade.check.feign.ICheckClient;
|
|
|
+import org.springblade.client.entity.Message;
|
|
|
+import org.springblade.client.feign.IMessageClient;
|
|
|
import org.springblade.client.feign.ISerialClient;
|
|
|
import org.springblade.core.mp.support.Condition;
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
+import org.springblade.core.secure.utils.SecureUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
+import org.springblade.finance.dto.ApplyDTO;
|
|
|
+import org.springblade.finance.feign.IFinanceClient;
|
|
|
+import org.springblade.finance.vojo.Acc;
|
|
|
+import org.springblade.finance.vojo.Items;
|
|
|
+import org.springblade.system.feign.ISysClient;
|
|
|
+import org.springblade.system.user.entity.User;
|
|
|
import org.springblade.system.user.feign.IUserClient;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -71,6 +84,12 @@ public class ShippingBillServiceImpl extends ServiceImpl<ShippingBillMapper, Shi
|
|
|
|
|
|
private final ICheckClient iCheckClient;
|
|
|
|
|
|
+ private final IFinanceClient financeClient;//财务
|
|
|
+
|
|
|
+ private final ISysClient sysClient;
|
|
|
+
|
|
|
+ private final IMessageClient messageClient;//消息
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<ShippingBillDTO> selectShippingBillPage(IPage<ShippingBillDTO> page, ShippingBillDTO shippingBill) {
|
|
|
return page.setRecords(baseMapper.selectShippingBillPage(page, shippingBill));
|
|
|
@@ -107,22 +126,25 @@ public class ShippingBillServiceImpl extends ServiceImpl<ShippingBillMapper, Shi
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
|
|
|
public ShippingBill addOrUpdate(ShippingBill shippingBill) {
|
|
|
|
|
|
- shippingBill.setShippingCompanyName(shippingBill.get$shippingCompanyId());//船公司
|
|
|
- shippingBill.setCorpName(shippingBill.get$corpId());//客户
|
|
|
- shippingBill.setConsigneeName(shippingBill.get$consigneeId());//收货人
|
|
|
- shippingBill.setConsignorName(shippingBill.get$consignorId());//发货人
|
|
|
- shippingBill.setBookingAgentName(shippingBill.get$bookingAgentId());//订舱代理
|
|
|
- shippingBill.setAffiliatedCompanyName(shippingBill.get$affiliatedCompanyId());//所属公司
|
|
|
- shippingBill.setDeliveryAddressName(shippingBill.get$deliveryAddressId());//交货地
|
|
|
- shippingBill.setDeliverGoodsAddressName(shippingBill.get$deliverGoodsAddressId());//发货地
|
|
|
- shippingBill.setDeptName(shippingBill.get$deptId());//部门
|
|
|
- shippingBill.setDestinationName(shippingBill.get$destinationId());//目的地
|
|
|
- shippingBill.setDischargeCargoHarborName(shippingBill.get$dischargeCargoHarborId());//卸货港
|
|
|
- shippingBill.setNotifierName(shippingBill.get$notifierId());//通知人
|
|
|
- shippingBill.setPreparedByName(shippingBill.get$preparedBy());//制单人
|
|
|
- shippingBill.setLoadingPortName(shippingBill.get$loadingPortId());//装货港
|
|
|
+
|
|
|
+ shippingBill.setShippingCompanyName(ObjectUtils.isNull(shippingBill.getShippingCompanyName()) ? shippingBill.get$shippingCompanyId() : shippingBill.getShippingCompanyName());//船公司
|
|
|
+ shippingBill.setCorpName(ObjectUtils.isNull(shippingBill.getCorpName()) ? shippingBill.get$corpId() : shippingBill.getCorpName());//客户
|
|
|
+ shippingBill.setConsigneeName(ObjectUtils.isNull(shippingBill.getConsigneeName()) ? shippingBill.get$consigneeId() : shippingBill.getConsigneeName());//收货人
|
|
|
+ shippingBill.setConsignorName(ObjectUtils.isNull(shippingBill.getConsignorName()) ? shippingBill.get$consignorId() : shippingBill.getConsignorName());//发货人
|
|
|
+ shippingBill.setBookingAgentName(ObjectUtils.isNull(shippingBill.getBookingAgentName()) ? shippingBill.get$bookingAgentId() : shippingBill.getBookingAgentName());//订舱代理
|
|
|
+ shippingBill.setAffiliatedCompanyName(ObjectUtils.isNull(shippingBill.getAffiliatedCompanyName()) ? shippingBill.get$affiliatedCompanyId() : shippingBill.getAffiliatedCompanyName());//所属公司
|
|
|
+ shippingBill.setDeliveryAddressName(ObjectUtils.isNull(shippingBill.getDeliveryAddressName()) ? shippingBill.get$deliveryAddressId() : shippingBill.getDeliveryAddressName());//交货地
|
|
|
+ shippingBill.setDeliverGoodsAddressName(ObjectUtils.isNull(shippingBill.getDeliverGoodsAddressName()) ? shippingBill.get$deliverGoodsAddressId() : shippingBill.getDeliverGoodsAddressName());//发货地
|
|
|
+ shippingBill.setDeptName(ObjectUtils.isNull(shippingBill.getDeptName()) ? shippingBill.get$deptId() : shippingBill.getDeptName());//部门
|
|
|
+ shippingBill.setDestinationName(ObjectUtils.isNull(shippingBill.getDestinationName()) ? shippingBill.get$destinationId() : shippingBill.getDestinationName());//目的地
|
|
|
+ shippingBill.setDischargeCargoHarborName(ObjectUtils.isNull(shippingBill.getDischargeCargoHarborName()) ? shippingBill.get$dischargeCargoHarborId() : shippingBill.getDischargeCargoHarborName());//卸货港
|
|
|
+ shippingBill.setNotifierName(ObjectUtils.isNull(shippingBill.getNotifierName()) ? shippingBill.get$notifierId() : shippingBill.getNotifierName());//通知人
|
|
|
+ shippingBill.setPreparedByName(ObjectUtils.isNull(shippingBill.getPreparedByName()) ? shippingBill.get$preparedBy() : shippingBill.getPreparedByName());//制单人
|
|
|
+ shippingBill.setLoadingPortName(ObjectUtils.isNull(shippingBill.getLoadingPortName()) ? shippingBill.get$loadingPortId() : shippingBill.getLoadingPortName());//装货港
|
|
|
|
|
|
//单据信息
|
|
|
if (shippingBill.getId() == null) {
|
|
|
@@ -144,13 +166,13 @@ public class ShippingBillServiceImpl extends ServiceImpl<ShippingBillMapper, Shi
|
|
|
}
|
|
|
//明细
|
|
|
if (ObjectUtils.isNotNull(shippingBill.getShippingBillDetails())) {
|
|
|
- shippingBill.getShippingBillDetails().setAccountingDeptName(shippingBill.getShippingBillDetails().get$accountingDeptId());//核算部门
|
|
|
- shippingBill.getShippingBillDetails().setShipName(shippingBill.getShippingBillDetails().get$shipId());//船名
|
|
|
- shippingBill.getShippingBillDetails().setBranchPayPlaceName(shippingBill.getShippingBillDetails().get$branchPayPlaceId());//分单付费地点
|
|
|
- shippingBill.getShippingBillDetails().setGoodsName(shippingBill.getShippingBillDetails().get$goodsId());//货物
|
|
|
- shippingBill.getShippingBillDetails().setOperatorName(shippingBill.getShippingBillDetails().get$operatorId());//操作员
|
|
|
- shippingBill.getShippingBillDetails().setMainPayPlaceName(shippingBill.getShippingBillDetails().get$mainPayPlaceId());//主单付费地点
|
|
|
- shippingBill.getShippingBillDetails().setVoyageNumber(shippingBill.getShippingBillDetails().get$voyageNumberId());//航次
|
|
|
+ shippingBill.getShippingBillDetails().setAccountingDeptName(ObjectUtils.isNull(shippingBill.getShippingBillDetails().getAccountingDeptName()) ? shippingBill.getShippingBillDetails().get$accountingDeptId() : shippingBill.getShippingBillDetails().getAccountingDeptName());//核算部门
|
|
|
+ shippingBill.getShippingBillDetails().setShipName(ObjectUtils.isNull(shippingBill.getShippingBillDetails().getShipName()) ? shippingBill.getShippingBillDetails().get$shipId() : shippingBill.getShippingBillDetails().getShipName());//船名
|
|
|
+ shippingBill.getShippingBillDetails().setBranchPayPlaceName(ObjectUtils.isNull(shippingBill.getShippingBillDetails().getBranchPayPlaceName()) ? shippingBill.getShippingBillDetails().get$branchPayPlaceId() : shippingBill.getShippingBillDetails().getBranchPayPlaceName());//分单付费地点
|
|
|
+ shippingBill.getShippingBillDetails().setGoodsName(ObjectUtils.isNull(shippingBill.getShippingBillDetails().getGoodsName()) ? shippingBill.getShippingBillDetails().get$goodsId() : shippingBill.getShippingBillDetails().getGoodsName());//货物
|
|
|
+ shippingBill.getShippingBillDetails().setOperatorName(ObjectUtils.isNull(shippingBill.getShippingBillDetails().getOperatorName()) ? shippingBill.getShippingBillDetails().get$operatorId() : shippingBill.getShippingBillDetails().getOperatorName());//操作员
|
|
|
+ shippingBill.getShippingBillDetails().setMainPayPlaceName(ObjectUtils.isNull(shippingBill.getShippingBillDetails().getMainPayPlaceName()) ? shippingBill.getShippingBillDetails().get$mainPayPlaceId() : shippingBill.getShippingBillDetails().getMainPayPlaceName());//主单付费地点
|
|
|
+ shippingBill.getShippingBillDetails().setVoyageNumber(ObjectUtils.isNull(shippingBill.getShippingBillDetails().getVoyageNumber()) ? shippingBill.getShippingBillDetails().get$voyageNumberId() : shippingBill.getShippingBillDetails().getVoyageNumber());//航次
|
|
|
if (shippingBill.getShippingBillDetails().getId() == null) {
|
|
|
shippingBill.getShippingBillDetails().setCreateUser(AuthUtil.getUserId());
|
|
|
shippingBill.getShippingBillDetails().setCreateTime(new Date());
|
|
|
@@ -167,7 +189,6 @@ public class ShippingBillServiceImpl extends ServiceImpl<ShippingBillMapper, Shi
|
|
|
if (ObjectUtils.isNotNull(shippingBill.getShippingBoxTypeList())) {
|
|
|
int boxQuantity = 0;
|
|
|
for (ShippingBoxType shippingBoxType : shippingBill.getShippingBoxTypeList()) {
|
|
|
- shippingBoxType.setBoxTypeName(shippingBoxType.get$boxTypeId());
|
|
|
if (shippingBoxType.getId() == null) {
|
|
|
shippingBoxType.setCreateUser(AuthUtil.getUserId());
|
|
|
shippingBoxType.setCreateTime(new Date());
|
|
|
@@ -187,10 +208,10 @@ public class ShippingBillServiceImpl extends ServiceImpl<ShippingBillMapper, Shi
|
|
|
shippingBill.setShippingBoxTypeNumber(boxQuantity);
|
|
|
//TEU
|
|
|
StringBuilder boxTypeNumber = new StringBuilder();
|
|
|
- List<String> boxType = shippingBill.getShippingBoxTypeList().stream().filter(e -> ObjectUtils.isNotNull(e.getBoxTypeName())).map(ShippingBoxType::getBoxTypeName).distinct().collect(Collectors.toList());
|
|
|
+ List<String> boxType = shippingBill.getShippingBoxTypeList().stream().filter(e -> ObjectUtils.isNotNull(e.getBoxType())).map(ShippingBoxType::getBoxType).distinct().collect(Collectors.toList());
|
|
|
for (String boxType_ : boxType) {
|
|
|
if (ObjectUtils.isNotNull(boxType) && boxType.size() > 0) {
|
|
|
- List<ShippingBoxType> boxTypeSize = shippingBill.getShippingBoxTypeList().stream().filter(e -> ObjectUtils.isNotNull(e.getBoxTypeName()) && e.getBoxTypeName().equals(boxType_)).collect(Collectors.toList());
|
|
|
+ List<ShippingBoxType> boxTypeSize = shippingBill.getShippingBoxTypeList().stream().filter(e -> ObjectUtils.isNotNull(e.getBoxType()) && e.getBoxType().equals(boxType_)).collect(Collectors.toList());
|
|
|
if (ObjectUtils.isNotNull(boxTypeSize) && boxTypeSize.size() > 0) {
|
|
|
boxTypeNumber.append(boxType_).append("X").append(boxTypeSize.size()).append(",");
|
|
|
}
|
|
|
@@ -203,7 +224,6 @@ public class ShippingBillServiceImpl extends ServiceImpl<ShippingBillMapper, Shi
|
|
|
//配箱信息
|
|
|
if (ObjectUtils.isNotNull(shippingBill.getShippingMatchBoxList())) {
|
|
|
for (ShippingMatchBox shippingMatchBox : shippingBill.getShippingMatchBoxList()) {
|
|
|
- shippingMatchBox.setBoxTypeName(shippingMatchBox.get$boxTypeId());
|
|
|
if (shippingMatchBox.getId() == null) {
|
|
|
shippingMatchBox.setCreateUser(AuthUtil.getUserId());
|
|
|
shippingMatchBox.setCreateTime(new Date());
|
|
|
@@ -253,6 +273,8 @@ public class ShippingBillServiceImpl extends ServiceImpl<ShippingBillMapper, Shi
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
|
|
|
public ShippingBill checkShippingBill(ShippingBill shippingBill) {
|
|
|
ShippingBill selectShippingBill = baseMapper.selectById(shippingBill.getId());
|
|
|
//审批数据
|
|
|
@@ -279,7 +301,9 @@ public class ShippingBillServiceImpl extends ServiceImpl<ShippingBillMapper, Shi
|
|
|
|
|
|
auditProecessDTO.setProcessType("海运出口单据审批");
|
|
|
// 绑定审核类型
|
|
|
- auditProecessDTO.setCheckType(shippingBill.getBillType() + "-DJ");
|
|
|
+ auditProecessDTO.setCheckType(selectShippingBill.getBillType() + "-DJ");
|
|
|
+ selectShippingBill.setStatus(1);
|
|
|
+
|
|
|
} else {
|
|
|
if (shippingBill.getCheckFlag() == 1 && selectShippingBill.getStatus() != 0) {
|
|
|
throw new SecurityException("订单已开启审核,请勿重复提交");
|
|
|
@@ -291,13 +315,13 @@ public class ShippingBillServiceImpl extends ServiceImpl<ShippingBillMapper, Shi
|
|
|
|
|
|
auditProecessDTO.setProcessType("海运出口费用审批");
|
|
|
// 绑定审核类型
|
|
|
- auditProecessDTO.setCheckType(shippingBill.getBillType() + "-FY");
|
|
|
+ auditProecessDTO.setCheckType(selectShippingBill.getBillType() + "-FY");
|
|
|
}
|
|
|
|
|
|
/* 进口返程审批流程 */
|
|
|
} else if ("HYJK".equals(shippingBill.getBillType()) && checkFlag == 2) {
|
|
|
if (shippingBill.getApprovalType().equals("1")) {
|
|
|
- if (shippingBill.getCheckFlag() == 1 && selectShippingBill.getStatus() != 0) {
|
|
|
+ if (shippingBill.getCheckFlag() == 2 && selectShippingBill.getStatus() != 0) {
|
|
|
throw new SecurityException("订单已开启审核,请勿重复提交");
|
|
|
}
|
|
|
//是否开启流程
|
|
|
@@ -307,9 +331,11 @@ public class ShippingBillServiceImpl extends ServiceImpl<ShippingBillMapper, Shi
|
|
|
|
|
|
auditProecessDTO.setProcessType("海运进口单据审批");
|
|
|
// 绑定审核类型
|
|
|
- auditProecessDTO.setCheckType(shippingBill.getBillType() + "-DJ");
|
|
|
+ auditProecessDTO.setCheckType(selectShippingBill.getBillType() + "-DJ");
|
|
|
+ selectShippingBill.setStatus(1);
|
|
|
+
|
|
|
} else {
|
|
|
- if (shippingBill.getCheckFlag() == 1 && selectShippingBill.getStatus() != 0) {
|
|
|
+ if (shippingBill.getCheckFlag() == 2 && selectShippingBill.getStatus() != 0) {
|
|
|
throw new SecurityException("订单已开启审核,请勿重复提交");
|
|
|
}
|
|
|
//是否开启流程
|
|
|
@@ -319,7 +345,7 @@ public class ShippingBillServiceImpl extends ServiceImpl<ShippingBillMapper, Shi
|
|
|
|
|
|
auditProecessDTO.setProcessType("海运进口费用审批");
|
|
|
// 绑定审核类型
|
|
|
- auditProecessDTO.setCheckType(shippingBill.getBillType() + "-FY");
|
|
|
+ auditProecessDTO.setCheckType(selectShippingBill.getBillType() + "-FY");
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
@@ -330,9 +356,9 @@ public class ShippingBillServiceImpl extends ServiceImpl<ShippingBillMapper, Shi
|
|
|
if (pathsActs == null || pathsActs.getIsEnable() == 2) {
|
|
|
throw new SecurityException("当前租户未查询到审批流配置");
|
|
|
} else {
|
|
|
+ selectShippingBill.setFeeStatus("2");
|
|
|
|
|
|
//修改单据状态
|
|
|
- selectShippingBill.setStatus(1);
|
|
|
baseMapper.updateById(selectShippingBill);
|
|
|
|
|
|
if (CollectionUtils.isEmpty(auditPathsLevels)) {
|
|
|
@@ -365,10 +391,14 @@ public class ShippingBillServiceImpl extends ServiceImpl<ShippingBillMapper, Shi
|
|
|
auditProecessDTO.setPayAmount(payAmount);
|
|
|
auditProecessDTO.setReceivableAmount(receivableAmount);
|
|
|
//审批数据
|
|
|
- auditProecessDTO.setMorderNo(shippingBill.getShippingBillDetails().getContractNo());
|
|
|
+ LambdaQueryWrapper<ShippingBillDetails> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(ShippingBillDetails::getPid,selectShippingBill.getId());
|
|
|
+ ShippingBillDetails shippingBillDetails = shippingBillDetailsMapper.selectOne(lambdaQueryWrapper);
|
|
|
+ if (ObjectUtils.isNotNull(shippingBillDetails)){
|
|
|
+ auditProecessDTO.setMorderNo(shippingBillDetails.getContractNo());
|
|
|
+ }
|
|
|
auditProecessDTO.setOrderRemark(shippingBill.getRemarks());
|
|
|
auditProecessDTO.setCorpId(shippingBill.getCorpId());
|
|
|
- auditProecessDTO.setCheckType(shippingBill.getBillType());
|
|
|
auditProecessDTO.setPathsLevelsList(auditPathsLevels);
|
|
|
auditProecessDTO.setActId(1);
|
|
|
auditProecessDTO.setSrcBillId(shippingBill.getId());
|
|
|
@@ -392,9 +422,10 @@ public class ShippingBillServiceImpl extends ServiceImpl<ShippingBillMapper, Shi
|
|
|
throw new SecurityException("审批通过失败");
|
|
|
}
|
|
|
shippingBill.setStatus(3);
|
|
|
+ shippingBill.setFeeStatus("1");
|
|
|
baseMapper.updateById(shippingBill);
|
|
|
//入库生成账单
|
|
|
-// this.paymentApply(shippingBill, shippingBill.getBillType(), shippingBill.getBillType());
|
|
|
+ this.paymentApply(shippingBill, shippingBill.getBillType(), shippingBill.getBillType());
|
|
|
return R.success("操作成功");
|
|
|
}
|
|
|
|
|
|
@@ -416,8 +447,220 @@ public class ShippingBillServiceImpl extends ServiceImpl<ShippingBillMapper, Shi
|
|
|
throw new SecurityException("审批通过失败");
|
|
|
}
|
|
|
shippingBill.setStatus(0);
|
|
|
+ shippingBill.setFeeStatus("0");
|
|
|
baseMapper.updateById(shippingBill);
|
|
|
return R.success("操作成功");
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
|
|
|
+ public ShippingBill withdrawOcean(ShippingBill shippingBill) {
|
|
|
+ ShippingBill selectShippingBill = baseMapper.selectById(shippingBill.getId());
|
|
|
+ if (selectShippingBill == null) {
|
|
|
+ throw new SecurityException("撤销审核失败");
|
|
|
+ }
|
|
|
+ //获取账单信息
|
|
|
+ Acc acc = new Acc();
|
|
|
+ acc.setTradeType(selectShippingBill.getTradeType());
|
|
|
+ acc.setSrcType(11);
|
|
|
+ acc.setSrcParentId(selectShippingBill.getId());
|
|
|
+ if (shippingBill.getApprovalType().equals("2")) {
|
|
|
+ if (ObjectUtils.isNotNull(shippingBill.getShippingFeesList()) && shippingBill.getShippingFeesList().size() > 0) {
|
|
|
+ for (ShippingFees shippingFees : shippingBill.getShippingFeesList()) {
|
|
|
+ acc.setSrcFeesId(shippingFees.getId());
|
|
|
+ R<List<Acc>> r = financeClient.getAccListByCondition(acc);
|
|
|
+ if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
|
|
|
+ for (Acc acc_ : r.getData()) {
|
|
|
+ //判断账单是否已有结算 true 不允许撤销审核 false 删除账单并撤销审核
|
|
|
+ if (!acc_.getSettlementAmount().equals(new BigDecimal("0.00"))) {
|
|
|
+ throw new SecurityException("订单已结算,不允许撤销");
|
|
|
+ } else {
|
|
|
+ financeClient.remove(acc_.getId() + "");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ shippingFees.setSubmitPay(0);
|
|
|
+ shippingFeesMapper.updateById(shippingFees);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new SecurityException("撤销失败,请选择费用明细");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ R<List<Acc>> r = financeClient.getAccListByCondition(acc);
|
|
|
+ if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
|
|
|
+ for (Acc acc_ : r.getData()) {
|
|
|
+ //判断账单是否已有结算 true 不允许撤销审核 false 删除账单并撤销审核
|
|
|
+ if (!acc_.getSettlementAmount().equals(new BigDecimal("0.00"))) {
|
|
|
+ throw new SecurityException("订单已结算,不允许撤销");
|
|
|
+ } else {
|
|
|
+ financeClient.remove(acc_.getId() + "");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ selectShippingBill.setStatus(0);
|
|
|
+ selectShippingBill.setUpdateTime(new Date());
|
|
|
+ selectShippingBill.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ baseMapper.updateById(selectShippingBill);
|
|
|
+ //获取订单费用信息
|
|
|
+ LambdaQueryWrapper<ShippingFees> shippingFeesLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ shippingFeesLambdaQueryWrapper.eq(ShippingFees::getIsDeleted, 0)
|
|
|
+ .eq(ShippingFees::getPid, selectShippingBill.getId())
|
|
|
+ .eq(ShippingFees::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(ShippingFees::getIsCheck, 1)
|
|
|
+ .eq(ShippingFees::getSubmitPay, 1);
|
|
|
+ List<ShippingFees> shippingFeesList = shippingFeesMapper.selectList(shippingFeesLambdaQueryWrapper);
|
|
|
+ for (ShippingFees shippingFees : shippingFeesList) {
|
|
|
+ shippingFees.setSubmitPay(0);
|
|
|
+ shippingFeesMapper.updateById(shippingFees);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+// iCheckClient.deteleByBillId(selectTransport.getId());
|
|
|
+ return selectShippingBill;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ShippingBillDTO> selectShippingBillList(ShippingBillDTO shippingBill) {
|
|
|
+ return baseMapper.selectShippingBillList(shippingBill);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R detele(List<Long> toLongList) {
|
|
|
+ for (Long id : toLongList) {
|
|
|
+ //获取账单信息
|
|
|
+ Acc acc = new Acc();
|
|
|
+ acc.setTradeType("HY");
|
|
|
+ acc.setSrcType(11);
|
|
|
+ acc.setSrcParentId(id);
|
|
|
+ R<List<Acc>> r = financeClient.getAccListByCondition(acc);
|
|
|
+ if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
|
|
|
+ for (Acc acc_ : r.getData()) {
|
|
|
+ //判断账单是否已有结算 true 不允许撤销审核 false 删除账单并撤销审核
|
|
|
+ if (!acc_.getSettlementAmount().equals(new BigDecimal("0.00"))) {
|
|
|
+ throw new SecurityException("订单中费用已结算,不允许删除");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ baseMapper.deleteById(id);
|
|
|
+ }
|
|
|
+ return R.status(true);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 订单生成账单 并且推送财务消息
|
|
|
+ *
|
|
|
+ * @param billType 货款类型: 申请 收费 付费
|
|
|
+ * @param itemType 付款类型: 采购 销售 收货 发货
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
|
|
|
+ public void paymentApply(ShippingBill shippingBill, String billType, String itemType) {
|
|
|
+ Long pid = shippingBill.getId();
|
|
|
+
|
|
|
+ //账单数据
|
|
|
+ ApplyDTO applyDTO = new ApplyDTO();
|
|
|
+ applyDTO.setTradeType(shippingBill.getTradeType());
|
|
|
+ BigDecimal amount = BigDecimal.ZERO;//对账金额 销售订单生成的金额 销售金额-本次使用返利金额+费用明细
|
|
|
+ BigDecimal quantity = new BigDecimal("1");//对账数量 数量为 就是轮胎条数的和
|
|
|
+ BigDecimal price = BigDecimal.ZERO;//对账单价
|
|
|
+
|
|
|
+ //获取订单收款信息
|
|
|
+ LambdaQueryWrapper<ShippingFees> shippingFeesLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ shippingFeesLambdaQueryWrapper.eq(ShippingFees::getIsDeleted, 0)
|
|
|
+ .eq(ShippingFees::getPid, pid)
|
|
|
+ .eq(ShippingFees::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(ShippingFees::getSubmitPay, 0)
|
|
|
+ .eq(ShippingFees::getIsCheck, 2);
|
|
|
+ List<ShippingFees> shippingFeesList = shippingFeesMapper.selectList(shippingFeesLambdaQueryWrapper);
|
|
|
+ if (CollectionUtils.isNotEmpty(shippingFeesList)) {
|
|
|
+ List<Items> itemsList = new ArrayList<>();
|
|
|
+ for (ShippingFees shippingFees : shippingFeesList) {
|
|
|
+ Items items = new Items();
|
|
|
+ amount = shippingFees.getAmount();
|
|
|
+ //计算单价
|
|
|
+ if (quantity.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ price = amount.divide(quantity, 5, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ }
|
|
|
+ if (1 == shippingFees.getFeesType()) {
|
|
|
+ items.setSrcFeesType("收费");
|
|
|
+ } else {
|
|
|
+ items.setSrcFeesType("申请");
|
|
|
+ }
|
|
|
+ items.setSrcBoxBillType(shippingBill.getBillType());
|
|
|
+ items.setItemType(itemType);
|
|
|
+ items.setPrice(price);
|
|
|
+ //账单数据
|
|
|
+ items.setAmount(amount);
|
|
|
+ items.setQuantity(quantity);
|
|
|
+ items.setSrcOrderno(shippingBill.getSysNo());
|
|
|
+ items.setCorpId(shippingFees.getCorpId());
|
|
|
+ items.setSrcParentId(pid);
|
|
|
+ items.setCurrency(shippingFees.getCurrency());
|
|
|
+ items.setSrcType(11);
|
|
|
+ items.setTradeType(shippingBill.getTradeType());
|
|
|
+ items.setUnit(shippingFees.getUnit());
|
|
|
+ items.setSrcSysNo(shippingBill.getSysNo());
|
|
|
+ items.setRemarks(shippingFees.getRemarks());
|
|
|
+ items.setSrcBillNo(shippingBill.getShippingBillDetails().getMainBillNo());
|
|
|
+ items.setStatusJT(0);
|
|
|
+ items.setBillNo(shippingBill.getShippingBillDetails().getMainBillNo());
|
|
|
+ items.setStockTime(shippingBill.getPreparationDate());
|
|
|
+ items.setDepartureHarbor(shippingBill.getLoadingPortName());
|
|
|
+ items.setObjectiveHarbor(shippingBill.getDestinationName());
|
|
|
+ items.setShipName(shippingBill.getShippingBillDetails().getShipName());
|
|
|
+ items.setVoyageNumber(shippingBill.getShippingBillDetails().getVoyageNumber());
|
|
|
+ items.setSailDate(shippingBill.getShippingBillDetails().getSailDate());
|
|
|
+ //获取费用id
|
|
|
+ if (ObjectUtils.isNotNull(shippingFees.getItemId())) {
|
|
|
+ items.setCostType(shippingFees.getItemId().toString());
|
|
|
+ }
|
|
|
+ items.setSrcFeesId(shippingFees.getId());
|
|
|
+ itemsList.add(items);
|
|
|
+ applyDTO.setItemsList(itemsList);
|
|
|
+
|
|
|
+ //修改费用明细
|
|
|
+ shippingFees.setSubmitPay(1);
|
|
|
+ shippingFees.setIsCheck(1);
|
|
|
+ shippingFeesMapper.updateById(shippingFees);
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isNotEmpty(itemsList)) {
|
|
|
+ //生成账单
|
|
|
+ R paymentApply = financeClient.paymentApplyBoxTube(applyDTO);
|
|
|
+ if (!paymentApply.isSuccess()) {
|
|
|
+ throw new RuntimeException(paymentApply.getMsg());
|
|
|
+ }
|
|
|
+ //给角色为财务的人发送消息
|
|
|
+ R<String> clientDeptIds = sysClient.getRoleIds(SecureUtil.getTenantId(), "财务");
|
|
|
+ if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
|
|
|
+ R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(clientDeptIds.getData()));
|
|
|
+ if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
|
|
|
+ for (User datum : userList.getData()) {
|
|
|
+ //循环发送消息
|
|
|
+ Message sendMessage = new Message();
|
|
|
+ sendMessage.setParameter(String.valueOf(pid));
|
|
|
+ sendMessage.setUserName(AuthUtil.getUserName());
|
|
|
+ sendMessage.setUserId(AuthUtil.getUserId());
|
|
|
+ sendMessage.setToUserId(datum.getId());
|
|
|
+ sendMessage.setToUserName(datum.getName());
|
|
|
+ sendMessage.setMessageType(1);
|
|
|
+ sendMessage.setTenantId(AuthUtil.getTenantId());
|
|
|
+ sendMessage.setCreateUser(AuthUtil.getUserId());
|
|
|
+ sendMessage.setCreateTime(new Date());
|
|
|
+ sendMessage.setUrl(shippingBill.getUrl());
|
|
|
+ sendMessage.setPageLabel(shippingBill.getPageLabel());
|
|
|
+ sendMessage.setPageStatus(shippingBill.getPageStatus());
|
|
|
+ sendMessage.setMessageBody("您订单" + shippingBill.getSysNo() + "审核通过,请查看");
|
|
|
+ R save = messageClient.save(sendMessage);
|
|
|
+ if (!save.isSuccess()) {
|
|
|
+ throw new SecurityException("发送消息失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|