|
|
@@ -4,6 +4,7 @@ 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;
|
|
|
@@ -15,20 +16,29 @@ 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.constant.LandConstant;
|
|
|
import org.springblade.client.entity.CommonFile;
|
|
|
+import org.springblade.client.entity.Message;
|
|
|
import org.springblade.client.feign.ICommonFileClient;
|
|
|
+import org.springblade.client.feign.IMessageClient;
|
|
|
import org.springblade.client.feign.ISerialClient;
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
+import org.springblade.core.secure.utils.SecureUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
import org.springblade.core.tool.utils.ObjectUtil;
|
|
|
-import org.springblade.purchase.sales.entity.Biding;
|
|
|
+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.MathContext;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
@@ -52,6 +62,12 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
|
|
|
|
|
|
private final ICheckClient iCheckClient;//审批
|
|
|
private final ICommonFileClient commonFileClient;//附件
|
|
|
+ private final IFinanceClient financeClient;//财务
|
|
|
+ private final ISysClient sysClient;
|
|
|
+
|
|
|
+ private IUserClient userClient;//获取用户信息
|
|
|
+
|
|
|
+ private final IMessageClient messageClient;//消息
|
|
|
|
|
|
/**
|
|
|
* 获得报关详情
|
|
|
@@ -363,11 +379,7 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
|
|
|
*/
|
|
|
@Override
|
|
|
public R passCheck(Long id) {
|
|
|
- LambdaQueryWrapper<DeclareCustoms> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- lambdaQueryWrapper.eq(DeclareCustoms::getId, id);
|
|
|
- lambdaQueryWrapper.eq(DeclareCustoms::getTenantId, AuthUtil.getTenantId());
|
|
|
- lambdaQueryWrapper.eq(DeclareCustoms::getIsDeleted, 0);
|
|
|
- DeclareCustoms declareCustoms = baseMapper.selectOne(lambdaQueryWrapper);
|
|
|
+ DeclareCustoms declareCustoms = baseMapper.selectById(id);
|
|
|
if (declareCustoms == null){
|
|
|
throw new SecurityException("审批通过失败");
|
|
|
}
|
|
|
@@ -376,7 +388,7 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
|
|
|
}
|
|
|
|
|
|
//生成账单
|
|
|
-
|
|
|
+ this.paymentApply(declareCustoms, declareCustoms.getImportExportSigns(), declareCustoms.getImportExportSigns());
|
|
|
declareCustoms.setStatus(3);
|
|
|
declareCustoms.setAuditStatus("审批通过");
|
|
|
baseMapper.updateById(declareCustoms);
|
|
|
@@ -389,11 +401,7 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
|
|
|
*/
|
|
|
@Override
|
|
|
public R underReview(Long id) {
|
|
|
- LambdaQueryWrapper<DeclareCustoms> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- lambdaQueryWrapper.eq(DeclareCustoms::getId, id);
|
|
|
- lambdaQueryWrapper.eq(DeclareCustoms::getTenantId, AuthUtil.getTenantId());
|
|
|
- lambdaQueryWrapper.eq(DeclareCustoms::getIsDeleted, 0);
|
|
|
- DeclareCustoms declareCustoms = baseMapper.selectOne(lambdaQueryWrapper);
|
|
|
+ DeclareCustoms declareCustoms = baseMapper.selectById(id);
|
|
|
if (declareCustoms == null){
|
|
|
throw new SecurityException("审批通过失败");
|
|
|
}
|
|
|
@@ -410,11 +418,7 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
|
|
|
*/
|
|
|
@Override
|
|
|
public R passCancel(Long id) {
|
|
|
- LambdaQueryWrapper<DeclareCustoms> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- lambdaQueryWrapper.eq(DeclareCustoms::getId, id);
|
|
|
- lambdaQueryWrapper.eq(DeclareCustoms::getTenantId, AuthUtil.getTenantId());
|
|
|
- lambdaQueryWrapper.eq(DeclareCustoms::getIsDeleted, 0);
|
|
|
- DeclareCustoms declareCustoms = baseMapper.selectOne(lambdaQueryWrapper);
|
|
|
+ DeclareCustoms declareCustoms = baseMapper.selectById(id);
|
|
|
if (declareCustoms == null){
|
|
|
throw new SecurityException("审批驳回失败,未找到单据");
|
|
|
}
|
|
|
@@ -436,11 +440,7 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
|
|
|
public DeclareCustoms revoke(DeclareCustoms declareCustoms){
|
|
|
- LambdaQueryWrapper<DeclareCustoms> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- lambdaQueryWrapper.eq(DeclareCustoms::getId, declareCustoms.getId());
|
|
|
- lambdaQueryWrapper.eq(DeclareCustoms::getTenantId, AuthUtil.getTenantId());
|
|
|
- lambdaQueryWrapper.eq(DeclareCustoms::getIsDeleted, 0);
|
|
|
- DeclareCustoms customs = baseMapper.selectOne(lambdaQueryWrapper);
|
|
|
+ DeclareCustoms customs = baseMapper.selectById(declareCustoms.getId());
|
|
|
if (ObjectUtil.isEmpty(customs)){
|
|
|
throw new SecurityException("撤销失败,未找到单据");
|
|
|
}
|
|
|
@@ -452,8 +452,27 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
|
|
|
throw new SecurityException("撤销失败,订单未提交审核");
|
|
|
}
|
|
|
|
|
|
- //撤销
|
|
|
- iCheckClient.deteleByBillId(declareCustoms.getId());
|
|
|
+ //获取账单信息
|
|
|
+ Acc acc = new Acc();
|
|
|
+ acc.setSrcParentId(customs.getId());
|
|
|
+ if ("BGJK".equals(customs.getImportExportSigns())) {
|
|
|
+ acc.setBillType("申请");
|
|
|
+ } else {
|
|
|
+ acc.setBillType("收费");
|
|
|
+ }
|
|
|
+ acc.setTradeType("JGBG");
|
|
|
+ acc.setSrcType(8);
|
|
|
+ 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() + "");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
//修改单据状态
|
|
|
customs.setStatus(0);
|
|
|
@@ -462,8 +481,125 @@ public class DeclareCustomsServiceImpl extends ServiceImpl<DeclareCustomsMapper,
|
|
|
customs.setUpdateTime(new Date());
|
|
|
baseMapper.updateById(customs);
|
|
|
|
|
|
+ //获取订单费用信息
|
|
|
+ LambdaQueryWrapper<DeclareCustomsFees> feesLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ feesLambdaQueryWrapper.eq(DeclareCustomsFees::getIsDeleted, 0);
|
|
|
+ feesLambdaQueryWrapper.eq(DeclareCustomsFees::getPid, customs.getId());
|
|
|
+ feesLambdaQueryWrapper.eq(DeclareCustomsFees::getTenantId, AuthUtil.getTenantId());
|
|
|
+ feesLambdaQueryWrapper.eq(DeclareCustomsFees::getSubmitPay, 1);
|
|
|
+ List<DeclareCustomsFees> feesList = feesMapper.selectList(feesLambdaQueryWrapper);
|
|
|
+ for (DeclareCustomsFees declareCustomsFees : feesList) {
|
|
|
+ declareCustomsFees.setSubmitPay(0);
|
|
|
+ feesMapper.updateById(declareCustomsFees);
|
|
|
+ }
|
|
|
+
|
|
|
+ //撤销
|
|
|
+ iCheckClient.deteleByBillId(declareCustoms.getId());
|
|
|
return customs;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 订单生成账单 并且推送财务消息
|
|
|
+ *
|
|
|
+ * @param billType 货款类型: 申请 收费 付费
|
|
|
+ * @param itemType 付款类型: 采购 销售 收货 发货
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
|
|
|
+ public void paymentApply(DeclareCustoms declareCustoms, String billType, String itemType) {
|
|
|
+ Long pid = declareCustoms.getId();
|
|
|
+
|
|
|
+ //账单数据
|
|
|
+ ApplyDTO applyDTO = new ApplyDTO();
|
|
|
+ if ("BGJK".equals(billType)) {
|
|
|
+ applyDTO.setBillType("申请");
|
|
|
+ } else {
|
|
|
+ applyDTO.setBillType("收费");
|
|
|
+ }
|
|
|
+ applyDTO.setTradeType("JGBG");
|
|
|
+ applyDTO.setBelongCompany(declareCustoms.getConsumptionUnitName());
|
|
|
+
|
|
|
+ //获取订单费用信息
|
|
|
+ LambdaQueryWrapper<DeclareCustomsFees> feesLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ feesLambdaQueryWrapper.eq(DeclareCustomsFees::getIsDeleted, 0);
|
|
|
+ feesLambdaQueryWrapper.eq(DeclareCustomsFees::getPid, pid);
|
|
|
+ feesLambdaQueryWrapper.eq(DeclareCustomsFees::getTenantId, AuthUtil.getTenantId());
|
|
|
+ feesLambdaQueryWrapper.eq(DeclareCustomsFees::getSubmitPay, 0);
|
|
|
+ List<DeclareCustomsFees> feesList = feesMapper.selectList(feesLambdaQueryWrapper);
|
|
|
+ if (CollectionUtils.isNotEmpty(feesList)) {
|
|
|
+ //账单明细
|
|
|
+ List<Items> itemsList = new ArrayList<>();
|
|
|
+ for (DeclareCustomsFees declareCustomsFees : feesList) {
|
|
|
+ Items items = new Items();
|
|
|
+
|
|
|
+ if (1 == declareCustomsFees.getFeesType()) {
|
|
|
+ items.setSrcFeesType("收费");
|
|
|
+ } else {
|
|
|
+ items.setSrcFeesType("付费");
|
|
|
+ }
|
|
|
+ items.setItemType(itemType);
|
|
|
+ items.setPrice(declareCustomsFees.getPrice());
|
|
|
+ //账单数据
|
|
|
+ items.setAmount(declareCustomsFees.getAmount());//金额
|
|
|
+ items.setQuantity(declareCustomsFees.getQuantity());//数量
|
|
|
+ items.setSrcOrderno(declareCustoms.getSysNo());//来源订单号
|
|
|
+ items.setCorpId(declareCustomsFees.getCorpId());//客户id
|
|
|
+ items.setSrcParentId(pid);//来源主表id
|
|
|
+ items.setCurrency(declareCustomsFees.getCurrency());//币别
|
|
|
+ items.setSrcType(8);//结算标识
|
|
|
+ items.setTradeType("JGBG");//系统类别
|
|
|
+ items.setUnit(declareCustomsFees.getUnit());//计价单位
|
|
|
+ items.setRemarks(declareCustomsFees.getRemark());//备注
|
|
|
+ items.setSrcBillNo(declareCustoms.getContractAgreementNo());//合同号
|
|
|
+ items.setBillNo(declareCustoms.getDeliveryNumbers());//提单号
|
|
|
+ items.setStockTime(declareCustoms.getDeclareDate());//业务日期
|
|
|
+ //获取费用id
|
|
|
+ if (ObjectUtils.isNotNull(declareCustomsFees.getItemId())) {
|
|
|
+ items.setCostType(declareCustomsFees.getItemId().toString());
|
|
|
+ items.setSrcFeesId(declareCustomsFees.getId());
|
|
|
+ }
|
|
|
+ itemsList.add(items);
|
|
|
+ applyDTO.setItemsList(itemsList);
|
|
|
+ }
|
|
|
+ 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(declareCustoms.getUrl());
|
|
|
+ sendMessage.setPageLabel(declareCustoms.getPageLabel());
|
|
|
+ sendMessage.setPageStatus(declareCustoms.getPageStatus());
|
|
|
+ sendMessage.setMessageBody("您订单" + declareCustoms.getSysNo() + "审核通过,请查看");
|
|
|
+ R save = messageClient.save(sendMessage);
|
|
|
+ if (!save.isSuccess()) {
|
|
|
+ throw new SecurityException("发送消息失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //修改费用明细
|
|
|
+ feesMapper.submitPay(declareCustoms.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|