|
@@ -12,9 +12,7 @@ import com.caimei365.order.model.dto.ReceiptDto;
|
|
import com.caimei365.order.model.enums.OrderStatus;
|
|
import com.caimei365.order.model.enums.OrderStatus;
|
|
import com.caimei365.order.model.enums.ReceiptStatus;
|
|
import com.caimei365.order.model.enums.ReceiptStatus;
|
|
import com.caimei365.order.model.enums.ReceiptType;
|
|
import com.caimei365.order.model.enums.ReceiptType;
|
|
-import com.caimei365.order.model.po.BalanceRecordPo;
|
|
|
|
-import com.caimei365.order.model.po.OrderReceiptRelationPo;
|
|
|
|
-import com.caimei365.order.model.po.ReceiptPo;
|
|
|
|
|
|
+import com.caimei365.order.model.po.*;
|
|
import com.caimei365.order.model.vo.*;
|
|
import com.caimei365.order.model.vo.*;
|
|
import com.caimei365.order.service.ReceiptService;
|
|
import com.caimei365.order.service.ReceiptService;
|
|
import com.caimei365.order.utils.DateUtils;
|
|
import com.caimei365.order.utils.DateUtils;
|
|
@@ -901,6 +899,9 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
return ResponseJson.error("无权限操作!", null);
|
|
return ResponseJson.error("无权限操作!", null);
|
|
}
|
|
}
|
|
ReceiptVo receipt = receiptMapper.getReceiptDetail(receiptAssociateDto.getId());
|
|
ReceiptVo receipt = receiptMapper.getReceiptDetail(receiptAssociateDto.getId());
|
|
|
|
+ if (null == receipt) {
|
|
|
|
+ return ResponseJson.error("收款数据异常!", null);
|
|
|
|
+ }
|
|
// 删除之前与这个收款所有的关系
|
|
// 删除之前与这个收款所有的关系
|
|
receiptMapper.deleteReceiptRelation(receipt.getId());
|
|
receiptMapper.deleteReceiptRelation(receipt.getId());
|
|
// ReceiptVo -- copy to --> ReceiptPo
|
|
// ReceiptVo -- copy to --> ReceiptPo
|
|
@@ -1069,14 +1070,14 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
receiptPo.setConfirmUserPermissionId(receiptUser.getId());
|
|
receiptPo.setConfirmUserPermissionId(receiptUser.getId());
|
|
receiptPo.setConfirmDate(time);
|
|
receiptPo.setConfirmDate(time);
|
|
receiptMapper.updateReceipt(receiptPo);
|
|
receiptMapper.updateReceipt(receiptPo);
|
|
- // 关联成功推送模板消息给审核人员
|
|
|
|
|
|
+ // 关联成功推送模板消息给审核人员(3财务)
|
|
List<String> openidList = receiptMapper.getOpenidListByUserType(3);
|
|
List<String> openidList = receiptMapper.getOpenidListByUserType(3);
|
|
openidList.removeIf(Objects::isNull);
|
|
openidList.removeIf(Objects::isNull);
|
|
double associateAmount = receiptMapper.countAssociateAmountById(receipt.getId());
|
|
double associateAmount = receiptMapper.countAssociateAmountById(receipt.getId());
|
|
String associateTitle = "收款和订单已确认关联,请及时审核!";
|
|
String associateTitle = "收款和订单已确认关联,请及时审核!";
|
|
String associateDate = receipt.getReceiptDate();
|
|
String associateDate = receipt.getReceiptDate();
|
|
String associateType = receiptMapper.getReceiptTypeStrById(receipt.getPayType());
|
|
String associateType = receiptMapper.getReceiptTypeStrById(receipt.getPayType());
|
|
-
|
|
|
|
|
|
+ String remarkText = "收款类型:" + associateType + ",确认时间:"+receipt.getConfirmDate();
|
|
|
|
|
|
//todo 跳转到详情页
|
|
//todo 跳转到详情页
|
|
// 跳转链接 crm旧链接:/api/user/receivables/toReceivablesPage.rpc?pageName=listToDesc&id=receipt.getId()
|
|
// 跳转链接 crm旧链接:/api/user/receivables/toReceivablesPage.rpc?pageName=listToDesc&id=receipt.getId()
|
|
@@ -1084,8 +1085,8 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
|
|
|
|
String redirectUrl = "";
|
|
String redirectUrl = "";
|
|
for (String openid : openidList) {
|
|
for (String openid : openidList) {
|
|
- // sendTemplateMsg(openid, 标题, 金额, 收款类型, 收款日期, 跳转链接)
|
|
|
|
- weChatService.sendTemplateMsg(openid, associateTitle, associateAmount, associateType, associateDate, redirectUrl);
|
|
|
|
|
|
+ // sendTemplateMsg(openid, 标题, 金额, 收款日期, 备注, 跳转链接)
|
|
|
|
+ weChatService.sendTemplateMsg(openid, associateTitle, associateAmount, associateDate, remarkText, redirectUrl);
|
|
}
|
|
}
|
|
return ResponseJson.success("关联收款信息成功!", null);
|
|
return ResponseJson.success("关联收款信息成功!", null);
|
|
}
|
|
}
|
|
@@ -1106,19 +1107,80 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
if (null == receiptUser) {
|
|
if (null == receiptUser) {
|
|
return ResponseJson.error("无权限操作!", null);
|
|
return ResponseJson.error("无权限操作!", null);
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- return null;
|
|
|
|
|
|
+ ReceiptVo receipt = receiptMapper.getReceiptDetail(receiptAssociateDto.getId());
|
|
|
|
+ if (null == receipt) {
|
|
|
|
+ return ResponseJson.error("收款数据异常!", null);
|
|
|
|
+ }
|
|
|
|
+ // 只有在待确认 和撤销的状态下才能关联 子订单 不然就是状态出错了
|
|
|
|
+ if (5 != receipt.getReceiptStatus() && 1 != receipt.getReceiptStatus()) {
|
|
|
|
+ return ResponseJson.error("收款记录状态异常!", null);
|
|
|
|
+ }
|
|
|
|
+ ShopOrderVo shopOrder = receiptMapper.getShopOrderById(receiptAssociateDto.getShopOrderId());
|
|
|
|
+ // 总退款金额
|
|
|
|
+ Double refundAmount = receiptMapper.getRefundShopAmount(receiptAssociateDto.getShopOrderId());
|
|
|
|
+ // 确认本次收款金额大于已付金额与已退金额的差值,不能关联
|
|
|
|
+ if (MathUtil.compare(shopOrder.getPayedShopAmount(), MathUtil.add(refundAmount, receipt.getReceiptAmount())) < 0) {
|
|
|
|
+ return ResponseJson.error("确认本次收款金额大于已付金额与已退金额的差值,不能关联!", null);
|
|
|
|
+ }
|
|
|
|
+ //删除之前与这个收款的关联
|
|
|
|
+ receiptMapper.deleteReceiptRelation(receipt.getId());
|
|
|
|
+ // ReceiptVo -- copy to --> ReceiptPo
|
|
|
|
+ String time = DateUtils.getDateTime();
|
|
|
|
+ ReceiptPo receiptPo = new ReceiptPo();
|
|
|
|
+ BeanUtils.copyProperties(receipt, receiptPo);
|
|
|
|
+ receiptPo.setUpdateDate(time);
|
|
|
|
+ receiptPo.setReceiptType(5);
|
|
|
|
+ receiptPo.setReceiptStatus(2);
|
|
|
|
+ receiptPo.setConfirmDate(time);
|
|
|
|
+ receiptPo.setConfirmUserPermissionId(receiptUser.getId());
|
|
|
|
+ receiptMapper.updateReceipt(receiptPo);
|
|
|
|
+ // 保存 收款项和订单关系
|
|
|
|
+ OrderReceiptRelationPo relation = new OrderReceiptRelationPo();
|
|
|
|
+ relation.setOrderId(receiptAssociateDto.getShopOrderId());
|
|
|
|
+ relation.setReceiptId(receipt.getId());
|
|
|
|
+ relation.setRelationType(1);
|
|
|
|
+ relation.setAssociateAmount(receipt.getReceiptAmount());
|
|
|
|
+ relation.setDelFlag(0);
|
|
|
|
+ baseMapper.insertOrderReceiptRelation(relation);
|
|
|
|
+ /*
|
|
|
|
+ * 保存供应商退款
|
|
|
|
+ */
|
|
|
|
+ RefundShopPo refundShop = new RefundShopPo();
|
|
|
|
+ refundShop.setOperator(receiptUser.getId());
|
|
|
|
+ refundShop.setOperateTime(receipt.getConfirmDate());
|
|
|
|
+ refundShop.setRefundWay(4);
|
|
|
|
+ refundShop.setShopId(shopOrder.getShopId());
|
|
|
|
+ refundShop.setRefundAmount(receipt.getReceiptAmount());
|
|
|
|
+ refundShop.setRefundBalanceAmount(0d);
|
|
|
|
+ refundShop.setRemark(receipt.getSmsContent());
|
|
|
|
+ /*
|
|
|
|
+ 退款:1建设银行7297, 2中信银行0897, 3中信银行7172, 4广发银行0115, 5广发银行5461, 6虚拟银行0000
|
|
|
|
+ 付款:1建设银行7297、2广发银行0115、3中信银行7172、4中信银行0897、5中信银行0897-财付通、6中信银行0897-支付宝、7线上-支付宝、8线上-微信支付、9线上-快钱支付、10口头返佣、11广发银行5461、12PC-B2B网银、13PC-微信支付、14PC-支付宝、15小程序-微信支付、16余额抵扣、17PC-B2C网银
|
|
|
|
+ */
|
|
|
|
+ if (1 == receipt.getPayType()) {
|
|
|
|
+ refundShop.setRefundType(1);
|
|
|
|
+ } else if (4 == receipt.getPayType() || 5 == receipt.getPayType() || 6 == receipt.getPayType()) {
|
|
|
|
+ refundShop.setRefundType(2);
|
|
|
|
+ } else if (3 == receipt.getPayType()) {
|
|
|
|
+ refundShop.setRefundType(3);
|
|
|
|
+ } else if (2 == receipt.getPayType()) {
|
|
|
|
+ refundShop.setRefundType(4);
|
|
|
|
+ } else if (11 == receipt.getPayType()) {
|
|
|
|
+ refundShop.setRefundType(5);
|
|
|
|
+ } else {
|
|
|
|
+ refundShop.setRefundType(6);
|
|
|
|
+ }
|
|
|
|
+ receiptMapper.insertRefundShop(receiptPo);
|
|
|
|
+ //保存供应商退款记录
|
|
|
|
+ RefundShopRecordPo refundShopRecord = new RefundShopRecordPo();
|
|
|
|
+ refundShopRecord.setRefundShopId(refundShop.getId());
|
|
|
|
+ refundShopRecord.setShopId(refundShop.getShopId());
|
|
|
|
+ refundShopRecord.setShopOrderId(shopOrder.getShopOrderId());
|
|
|
|
+ refundShopRecord.setShopOrderNo(shopOrder.getShopOrderNo());
|
|
|
|
+ refundShopRecord.setRefundAmount(receipt.getReceiptAmount());
|
|
|
|
+ refundShopRecord.setRefundTime(receipt.getConfirmDate());
|
|
|
|
+ receiptMapper.insertRefundShopRecord(refundShopRecord);
|
|
|
|
+ return ResponseJson.success("关联供应商退款成功!", null);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -1130,6 +1192,7 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
* rebateRemarks:关联返佣备注
|
|
* rebateRemarks:关联返佣备注
|
|
* }
|
|
* }
|
|
*/
|
|
*/
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
@Override
|
|
@Override
|
|
public ResponseJson<ReceiptPo> receiptAssociateRebate(ReceiptAssociateDto receiptAssociateDto, HttpHeaders headers) {
|
|
public ResponseJson<ReceiptPo> receiptAssociateRebate(ReceiptAssociateDto receiptAssociateDto, HttpHeaders headers) {
|
|
// 检查收款用户权限: 5收款关联返佣
|
|
// 检查收款用户权限: 5收款关联返佣
|
|
@@ -1137,17 +1200,81 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
if (null == receiptUser) {
|
|
if (null == receiptUser) {
|
|
return ResponseJson.error("无权限操作!", null);
|
|
return ResponseJson.error("无权限操作!", null);
|
|
}
|
|
}
|
|
|
|
+ String[] shopOrderIdArr = receiptAssociateDto.getShopOrderIds().split(",");
|
|
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- return null;
|
|
|
|
|
|
+ List<Integer> shopIdList = receiptMapper.getShopIdList(shopOrderIdArr);
|
|
|
|
+ if (shopIdList.size() > 1) {
|
|
|
|
+ return ResponseJson.error("子订单不属于相同的供应商!", null);
|
|
|
|
+ }
|
|
|
|
+ ReceiptVo receipt = receiptMapper.getReceiptDetail(receiptAssociateDto.getId());
|
|
|
|
+ if (null == receipt) {
|
|
|
|
+ return ResponseJson.error("收款数据异常!", null);
|
|
|
|
+ }
|
|
|
|
+ // 只有在待确认 和撤销的状态下才能关联 子订单 不然就是状态出错了
|
|
|
|
+ if (5 != receipt.getReceiptStatus() && 1 != receipt.getReceiptStatus()) {
|
|
|
|
+ return ResponseJson.error("收款记录状态异常!", null);
|
|
|
|
+ }
|
|
|
|
+ //删除之前与这个收款的关联
|
|
|
|
+ receiptMapper.deleteReceiptRelation(receipt.getId());
|
|
|
|
+ // ReceiptVo -- copy to --> ReceiptPo
|
|
|
|
+ String time = DateUtils.getDateTime();
|
|
|
|
+ ReceiptPo receiptPo = new ReceiptPo();
|
|
|
|
+ BeanUtils.copyProperties(receipt, receiptPo);
|
|
|
|
+ receiptPo.setUpdateDate(time);
|
|
|
|
+ receiptPo.setReceiptType(3);
|
|
|
|
+ receiptPo.setReceiptStatus(2);
|
|
|
|
+ receiptPo.setConfirmDate(time);
|
|
|
|
+ receiptPo.setConfirmUserPermissionId(receiptUser.getId());
|
|
|
|
+ if (StringUtils.isNotBlank(receiptAssociateDto.getRebateRemarks())) {
|
|
|
|
+ receiptPo.setRebateRemarks(receiptAssociateDto.getRebateRemarks());
|
|
|
|
+ }
|
|
|
|
+ receiptMapper.updateReceipt(receiptPo);
|
|
|
|
+ for (String shopOrderId : shopOrderIdArr) {
|
|
|
|
+ // 保存 收款项和订单关系
|
|
|
|
+ OrderReceiptRelationPo relation = new OrderReceiptRelationPo();
|
|
|
|
+ relation.setOrderId(Integer.valueOf(shopOrderId));
|
|
|
|
+ relation.setReceiptId(receipt.getId());
|
|
|
|
+ relation.setRelationType(1);
|
|
|
|
+ relation.setAssociateAmount(0d);
|
|
|
|
+ baseMapper.insertOrderReceiptRelation(relation);
|
|
|
|
+ //查询这个子订单的主订单下面的所有子订单ID 结果里面包含了 shopOrderId自己的 也就是这个这订单的兄弟子订单
|
|
|
|
+ List<Integer> shopOrderIdList = receiptMapper.getSubShopOrderList(shopOrderId);
|
|
|
|
+ //因为最起码已经有一个子订单进行了返佣操作 所以主订单最起码是部分收款付款
|
|
|
|
+ //如果子订单全部进行了 返佣操作 那么就是全部收付款了
|
|
|
|
+ boolean flag = true;
|
|
|
|
+ // 查询已经返佣了的子订单
|
|
|
|
+ List<Integer> shopOrderIdRebate = receiptMapper.getSubShopOrderRebate(shopOrderIdList);
|
|
|
|
+ for (Integer soId : shopOrderIdList) {
|
|
|
|
+ if (!shopOrderIdRebate.contains(soId)) {
|
|
|
|
+ //只要有一个子订单没有进行过返佣
|
|
|
|
+ //那么这个主订单就是部分的收付款
|
|
|
|
+ flag = false;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ receiptMapper.updateShopOrdePayStatus(shopOrderId, 3);
|
|
|
|
+ // 订单信息
|
|
|
|
+ OrderVo order = orderCommonMapper.getOrderByShopOrderId(Integer.parseInt(shopOrderId));
|
|
|
|
+ if (flag) {
|
|
|
|
+ //子订单全部收到款了
|
|
|
|
+ order.setReceiptStatus(3);
|
|
|
|
+ order.setPayStatus(3);
|
|
|
|
+ if (order.getStatus().toString().length() == 2) {
|
|
|
|
+ order.setStatus(Integer.valueOf("3" + order.getStatus().toString().substring(1, 2)));
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ //子订单的款还没有收全
|
|
|
|
+ order.setReceiptStatus(2);
|
|
|
|
+ order.setPayStatus(2);
|
|
|
|
+ if (order.getStatus().toString().length() == 2) {
|
|
|
|
+ order.setStatus(Integer.valueOf("2" + order.getStatus().toString().substring(1, 2)));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ order.setUpdateDate(time);
|
|
|
|
+ // 更新订单状态
|
|
|
|
+ receiptMapper.updateOrderStatus(order);
|
|
|
|
+ }
|
|
|
|
+ return ResponseJson.success("关联返佣款成功!", null);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|