From e23c8975e6bb0934cb5db46a94d0f83c9739d9ab Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Sun, 20 Mar 2022 16:33:17 +0800
Subject: [PATCH] 重构:套餐项目
---
zq-erp/src/main/java/com/matrix/system/hive/service/MoneyCardUseService.java | 3
zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java | 10
zq-erp/src/main/java/com/matrix/core/exception/GlobleExceptionResolver.java | 4
zq-erp/src/main/java/com/matrix/system/hive/validation/ProjUseGroup.java | 6
zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java | 277 ++++++++++------
zq-erp/src/main/java/com/matrix/system/hive/service/SysBeauticianStateService.java | 1
zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUseFlow.java | 2
zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java | 86 ++--
zq-erp/src/main/java/com/matrix/system/hive/dto/ProjUseOperationDto.java | 38 +
zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderItemDao.java | 2
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 93 +----
zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml | 5
zq-erp/src/main/resources/mybatis/mapper/hive/SysInstoreInfoDao.xml | 2
/dev/null | 66 ---
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java | 114 +++++-
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java | 83 ++--
zq-erp/src/main/java/com/matrix/system/hive/hievEnum/OrderOperationEnum.java | 65 +++
zq-erp/src/main/java/com/matrix/system/common/tools/ServiceUtil.java | 2
zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardOperationDto.java | 74 +++
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/orderXq-form.html | 6
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysInstoreInfoServiceImpl.java | 12
zq-erp/src/main/java/com/matrix/system/hive/validation/MoneyCardUseGroup.java | 12
zq-erp/src/main/java/com/matrix/system/common/validate/GroupValidateStatusCheckUtil.java | 30 +
23 files changed, 605 insertions(+), 388 deletions(-)
diff --git a/zq-erp/src/main/java/com/matrix/core/exception/GlobleExceptionResolver.java b/zq-erp/src/main/java/com/matrix/core/exception/GlobleExceptionResolver.java
index f8037ae..15592ad 100644
--- a/zq-erp/src/main/java/com/matrix/core/exception/GlobleExceptionResolver.java
+++ b/zq-erp/src/main/java/com/matrix/core/exception/GlobleExceptionResolver.java
@@ -53,7 +53,7 @@
if (ex instanceof GlobleException) {
// 如果是内部全局异常
- LogUtil.warn("#程序抛出全局异常#", ex);
+ LogUtil.error("#程序抛出全局异常#", ex);
GlobleException globleException = (GlobleException) ex;
attr.put("status", globleException.getErrorCode());
attr.put("info", globleException.getMessage());
@@ -61,7 +61,7 @@
} else {
// 非内部异常
- LogUtil.error("#程序抛出未捕获异常#", ex);
+ LogUtil.error("#程序抛出未捕获异常#");
attr.put("status", 999999);
attr.put("info", InternationaUtil.getMesssge(SystemErrorCode.SYSTEM_UNKNOW_ERROR));
// 发送异常信息到管理群
diff --git a/zq-erp/src/main/java/com/matrix/system/common/tools/ServiceUtil.java b/zq-erp/src/main/java/com/matrix/system/common/tools/ServiceUtil.java
index 654f4d8..4f589bf 100644
--- a/zq-erp/src/main/java/com/matrix/system/common/tools/ServiceUtil.java
+++ b/zq-erp/src/main/java/com/matrix/system/common/tools/ServiceUtil.java
@@ -87,6 +87,8 @@
public boolean updateCheckRepeatTowColumn(String tableName, String column1, Object value1, String column2,
Object value2, String idName, Object idValue) {
HashMap<String, Object> query = excuteTow(tableName, column1, value1, column2, value2);
+
+
return query != null && !query.get(idName).equals(idValue);
}
diff --git a/zq-erp/src/main/java/com/matrix/system/common/validate/GroupValidateStatusCheckUtil.java b/zq-erp/src/main/java/com/matrix/system/common/validate/GroupValidateStatusCheckUtil.java
new file mode 100644
index 0000000..ade5b7c
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/common/validate/GroupValidateStatusCheckUtil.java
@@ -0,0 +1,30 @@
+/**
+ * projectName: h3-warehouse
+ * fileName: GroupValidateStatusCheckUtil.java
+ * packageName: com.hydee.h3.warehouse.util
+ * date: 2020-05-22 10:48
+ * copyright(c) 2020 http://www.hydee.cn/ Inc. All rights reserved.
+ */
+package com.matrix.system.common.validate;
+
+import com.alibaba.fastjson.JSON;
+import com.matrix.core.exception.GlobleException;
+import com.matrix.core.tools.LogUtil;
+import org.slf4j.Logger;
+
+/**
+ * 参数校验工具
+ **/
+public class GroupValidateStatusCheckUtil {
+
+ public static void check(Object o, Class group) {
+
+ LogUtil.info("操作:{},参数:{}", "参数校验", JSON.toJSONString(o));
+
+ ParameterValidate.ValidResult acceptanceResult = ParameterValidate.validateBean(o, group);
+ if (acceptanceResult.hasErrors()) {
+ throw new GlobleException(acceptanceResult.getErrors());
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java b/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java
index fa7bb7d..d894cc4 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java
@@ -23,6 +23,7 @@
import com.matrix.system.constance.Dictionary;
import com.matrix.system.enums.OperationButtonEnum;
import com.matrix.system.enums.OperationFunctionEnum;
+import com.matrix.system.hive.action.util.QueryUtil;
import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.dao.*;
import com.matrix.system.hive.plugin.util.CollectionUtils;
@@ -218,6 +219,7 @@
if (!DataAuthUtil.hasAllShopAuth()) {
sysOrder.setShopId(getMe().getShopId());
}
+ QueryUtil.setQueryLimitCom(sysOrder);
return new AjaxResult(AjaxResult.STATUS_SUCCESS, orderService.findInPage(sysOrder, pageVo),
orderService.findTotal(sysOrder));
}
@@ -478,13 +480,7 @@
return new AjaxResult(AjaxResult.STATUS_FAIL, "订单不存在!");
}
- List<SysOrderItem> items = orderItemDao.selectByOrderId(id);
- for (SysOrderItem item : items) {
- List<SysProjServices> sysProjServices = sysProjServicesDao.selectProjServicesByOrderItemId(item.getId());
- if (CollUtil.isNotEmpty(sysProjServices)) {
- return new AjaxResult(AjaxResult.STATUS_FAIL, "订单存在进行中的服务单无法取消/删除");
- }
- }
+
orderService.cancelOrder(id);
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUseFlow.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUseFlow.java
index 55d7d89..0ae2601 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUseFlow.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUseFlow.java
@@ -17,6 +17,8 @@
public static final String USE_TYPE_ORDRE_TK = "订单退款";
+ public static final String USE_TYPE_GM = "购买充值卡";
+
public static final String USE_TYPE_CZ = "会员充值";
public static final String USE_TYPE_CARD_MODIFY = "会员卡调整";
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderItemDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderItemDao.java
index b8793dc..2c88504 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderItemDao.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderItemDao.java
@@ -66,4 +66,6 @@
List<ErpOrderDetailItemVo> selectErpOrderItemByOrderId(String orderId);
List<SysOrderItem> selectDgd();
+
+ String selectOrderStatusByItemId(Long orderItemId);
}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardOperationDto.java b/zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardOperationDto.java
index 6d0040d..9e5f5e0 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardOperationDto.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardOperationDto.java
@@ -12,6 +12,7 @@
import lombok.Data;
import javax.validation.constraints.NotNull;
+import java.util.List;
/**
* @version: V1.0
@@ -27,59 +28,112 @@
/**
* 储值卡id
*/
+ @NotNull(groups = {MoneyCardUseGroup.moneyCardUseOrderChange.class,
+ MoneyCardUseGroup.moneyCardUseCz.class,})
private Long carUseId;
/**
* 会员id
*/
- @NotNull(groups = Group.ADD.class)
+ @NotNull(groups = {
+ Group.ADD.class
+ })
private Long vipId;
/**
* 来源,购买,转让,赠送
*/
- @NotNull(groups = Group.ADD.class)
+ @NotNull(groups = {
+ Group.ADD.class})
private String source;
/**
* 订单明细id
*/
- @NotNull(groups = Group.ADD.class)
- @NotNull(groups = MoneyCardUseGroup.moneyCardUseTk.class)
+ @NotNull(groups = {MoneyCardUseGroup.moneyCardUseTk.class,
+ Group.ADD.class
+ })
private Long orderItemId;
/**
* 操作类型
*/
- @NotNull(groups = MoneyCardUseGroup.moneyCardUseTk.class)
+ @NotNull(groups = {MoneyCardUseGroup.moneyCardUseTk.class,
+ MoneyCardUseGroup.moneyCardUseOrderChange.class,
+ MoneyCardUseGroup.moneyCardUseCz.class,
+ Group.ADD.class
+
+ })
private String type;
/**
* 操作人
*/
- @NotNull(groups = MoneyCardUseGroup.moneyCardUseTk.class)
+ @NotNull(groups = {MoneyCardUseGroup.moneyCardUseTk.class,
+ MoneyCardUseGroup.moneyCardUseOrderChange.class,
+ MoneyCardUseGroup.moneyCardUseCz.class,
+ Group.ADD.class
+ })
private Long updateUser;
/**
* 订单id
*/
- @NotNull(groups = MoneyCardUseGroup.moneyCardUseTk.class)
+ @NotNull(groups = {MoneyCardUseGroup.moneyCardUseTk.class,
+ MoneyCardUseGroup.moneyCardUseOrderChange.class,
+ MoneyCardUseGroup.moneyCardUseCz.class,
+ Group.ADD.class
+ })
private Long orderId;
/**
* 订单编号
*/
- @NotNull(groups = MoneyCardUseGroup.moneyCardUseTk.class)
+ @NotNull(groups = {MoneyCardUseGroup.moneyCardUseTk.class,
+ MoneyCardUseGroup.moneyCardUseOrderChange.class,
+ MoneyCardUseGroup.moneyCardUseCz.class,
+ Group.ADD.class
+ })
private String orderNo;
+
/**
- * 充值卡的id
+ * 充值卡的商品
*/
- @NotNull(groups = Group.ADD.class)
+ @NotNull(groups = {
+ Group.ADD.class})
private Long goodsId;
+ /**
+ * 赠送金额扣减
+ */
+ @NotNull(groups = {
+ MoneyCardUseGroup.moneyCardUseCz.class,
+ MoneyCardUseGroup.moneyCardUseOrderChange.class
+ })
+ private Double giftMoney;
+ /**
+ * 本金扣减
+ */
+ @NotNull(groups = {MoneyCardUseGroup.moneyCardUseTk.class,
+ MoneyCardUseGroup.moneyCardUseCz.class,
+ MoneyCardUseGroup.moneyCardUseOrderChange.class
+ })
+ private Double realMoney;
+
+ /**
+ * 次数
+ */
+ @NotNull(groups = {MoneyCardUseGroup.moneyCardUseOrderChange.class})
+ private Integer count;
/**
* 备注
*/
private String remark;
+ /**
+ * 支付的商品id
+ */
+ @NotNull(groups = {MoneyCardUseGroup.moneyCardUseOrderChange.class})
+ private List<Long> goodsIds;
+
}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardPayDto.java b/zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardPayDto.java
deleted file mode 100644
index 7df89df..0000000
--- a/zq-erp/src/main/java/com/matrix/system/hive/dto/MoneyCardPayDto.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * projectName: zq-erp
- * fileName: MoneyCardChangeDto.java
- * packageName: com.matrix.system.hive.dto
- * date: 2022-03-11 10:24
- * copyright(c) 2022 http://www.hydee.cn/ Inc. All rights reserved.
- */
-package com.matrix.system.hive.dto;
-
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @version: V1.0
- * @author: JiangYouYao
- * @className: MoneyCardChangeDto
- * @packageName: com.matrix.system.hive.dto
- * @description: 储值卡余额支付DTO
- * @data: 2022-03-11 10:24
- **/
-@Data
-public class MoneyCardPayDto {
-
-
- /**
- * 储值卡id
- */
- private Long carUseId;
- /**
- * 订单id
- */
- private Long orderId;
- /**
- * 订单编号
- */
- private String orderNo;
- /**
- * 操作类型
- */
- private String type;
- /**
- * 赠送金额扣减
- */
- private Double giftMoney;
- /**
- * 本金扣减
- */
- private Double realMoney;
- /**
- * 扣减次数
- */
- private Integer count;
- /**
- * 操作人
- */
- private Long updateUser;
-
- /**
- * 支付的商品id
- */
- private List<Long> goodsIds;
-
-
-}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dto/ProjUseOperationDto.java b/zq-erp/src/main/java/com/matrix/system/hive/dto/ProjUseOperationDto.java
index ef6e04d..6b284ed 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/dto/ProjUseOperationDto.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dto/ProjUseOperationDto.java
@@ -1,5 +1,6 @@
package com.matrix.system.hive.dto;
+import com.matrix.system.hive.hievEnum.OrderOperationEnum;
import com.matrix.system.hive.validation.ProjUseGroup;
import lombok.Data;
@@ -14,25 +15,34 @@
/**
* 客户id
*/
- @NotNull(groups = {ProjUseGroup.addProject.class, ProjUseGroup.addTc.class })
+ @NotNull(groups = {ProjUseGroup.addProject.class,
+ ProjUseGroup.addTc.class})
private Long vipId;
/**
* 产品id
*/
- @NotNull(groups = {ProjUseGroup.addProject.class, ProjUseGroup.addTc.class, ProjUseGroup.projectTk.class})
+ @NotNull(groups = {ProjUseGroup.addProject.class,
+ ProjUseGroup.addTc.class,
+ ProjUseGroup.projectTk.class,
+ ProjUseGroup.taocanTk.class
+ })
private Long goodsId;
/**
* 添加次数
*/
- @NotNull(groups = {ProjUseGroup.addProject.class, ProjUseGroup.addTc.class, ProjUseGroup.projectTk.class})
+ @NotNull(groups = {ProjUseGroup.addProject.class,
+ ProjUseGroup.addTc.class,
+ ProjUseGroup.projectTk.class,
+ ProjUseGroup.taocanTk.class})
private Integer count;
/**
* 购买支付金额
*/
- @NotNull(groups = {ProjUseGroup.addProject.class, ProjUseGroup.addTc.class})
+ @NotNull(groups = {ProjUseGroup.addProject.class,
+ ProjUseGroup.addTc.class})
private Double payMoney;
/**
@@ -43,14 +53,24 @@
/**
* 订单明细id
*/
- @NotNull(groups = {ProjUseGroup.addProject.class, ProjUseGroup.addTc.class, ProjUseGroup.projectTk.class})
+ @NotNull(groups = {ProjUseGroup.addProject.class,
+ ProjUseGroup.addTc.class,
+ ProjUseGroup.projectTk.class,
+ ProjUseGroup.taocanTk.class})
private Long orderItemId;
/**
* 是否为赠送
*/
- @NotNull(groups = {ProjUseGroup.addProject.class, ProjUseGroup.addTc.class})
+ @NotNull(groups = {ProjUseGroup.addProject.class,
+ ProjUseGroup.addTc.class})
private boolean isFree;
+
+
+ /**
+ * 操作类型
+ */
+ private OrderOperationEnum orderOperationType;
/**
@@ -66,6 +86,12 @@
* -- 添加套餐下的项目必传
*/
private Long tcId;
+ /**
+ * 操作人id
+ */
+ @NotNull(groups = {ProjUseGroup.addProject.class,
+ ProjUseGroup.addTc.class})
+ private Long updateUserId;
}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/hievEnum/OrderOperationEnum.java b/zq-erp/src/main/java/com/matrix/system/hive/hievEnum/OrderOperationEnum.java
new file mode 100644
index 0000000..dfaf7c1
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/hievEnum/OrderOperationEnum.java
@@ -0,0 +1,65 @@
+package com.matrix.system.hive.hievEnum;
+
+import com.google.common.collect.Lists;
+import com.matrix.core.enums.EnumApiShowAble;
+import com.matrix.core.enums.EnumsShowVo;
+import com.matrix.core.exception.GlobleException;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 订单操作枚举
+ * @author jyy
+ */
+public enum OrderOperationEnum implements EnumApiShowAble {
+
+ SAVE(1, "订单保存"),
+ PAY(2, "订单付款"),
+ RETURN(3, "订单退款"),
+ CANCEL(4, "订单取消"),
+ BJ(5, "订单补交"),
+ ;
+
+ private Integer value;
+
+ private String displayName;
+
+ OrderOperationEnum(Integer value, String displayName) {
+ this.value = value;
+ this.displayName = displayName;
+ }
+
+ public static String getByValue(Integer value) {
+ for (int i = 0; i < values().length; i++) {
+ if (value.equals(values()[i].getValue())) {
+ return values()[i].displayName;
+ }
+ }
+ throw new GlobleException("无效枚举值");
+ }
+
+ @Override
+ public String getEnumCode() {
+ return "booleanEnum";
+ }
+
+ @Override
+ public List<EnumsShowVo> getEnumsShowVos() {
+ return Lists.newArrayList(values()).stream().map(item ->
+ EnumsShowVo.builder()
+ .displayName(item.getDisplayName())
+ .value(item.value)
+ .build()
+ ).collect(Collectors.toList());
+ }
+
+ public Integer getValue() {
+ return value;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/hievEnum/PayMethodEnum.java b/zq-erp/src/main/java/com/matrix/system/hive/hievEnum/PayMethodEnum.java
deleted file mode 100644
index a98aae4..0000000
--- a/zq-erp/src/main/java/com/matrix/system/hive/hievEnum/PayMethodEnum.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package com.matrix.system.hive.hievEnum;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 支付方式
- * @author jyy
- */
-public enum PayMethodEnum {
-
- CASH("现金", "现金"),
- WECHAT("微信", "微信"),
- ALIPAY("支付宝", "支付宝"),
- BANK_CARD("银行卡", "银行卡"),
- BANK_MT("美团", "美团"),
- VIP_CARD("会员卡", "会员卡");
-
- private String code;
- private String name;
-
- public String getCode() {
- return code;
- }
-
- public void setCode(String code) {
- this.code = code;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- PayMethodEnum(String code, String name) {
- this.code = code;
- this.name = name;
- }
-
- public static String getNameByCode(Integer code) {
- for (PayMethodEnum orderStatusEnum : PayMethodEnum.values()) {
- if (orderStatusEnum.getCode().equals(code)) {
- return orderStatusEnum.getName();
- }
- }
- return "";
- }
-
- public static List<Map<String, Object>> getSelectValue() {
- List<Map<String, Object>> resList = new ArrayList<>();
- for (PayMethodEnum orderStatusEnum : PayMethodEnum.values()) {
-
- Map<String, Object> orderStatus = new HashMap<>();
- orderStatus.put("code", orderStatusEnum.getCode());
- orderStatus.put("name", orderStatusEnum.getName());
- resList.add(orderStatus);
- }
- return resList;
- }
-
-}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/MoneyCardUseService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/MoneyCardUseService.java
index 2bea8f2..e607196 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/MoneyCardUseService.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/MoneyCardUseService.java
@@ -3,7 +3,6 @@
import com.matrix.core.pojo.PaginationVO;
import com.matrix.system.hive.bean.MoneyCardUse;
import com.matrix.system.hive.dto.MoneyCardOperationDto;
-import com.matrix.system.hive.dto.MoneyCardPayDto;
import com.matrix.system.hive.plugin.util.BaseServices;
import java.util.List;
@@ -17,7 +16,7 @@
/**
* 扣除储值卡余额
*/
- void changeMoneyCard(List<MoneyCardPayDto> moneyCardPayDtoList);
+ void changeMoneyCard(List<MoneyCardOperationDto> moneyCardOperationDtos);
/**
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/SysBeauticianStateService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/SysBeauticianStateService.java
index 5759276..4566825 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/SysBeauticianStateService.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/SysBeauticianStateService.java
@@ -74,6 +74,7 @@
public List<SysBeauticianState> findByTimeAndStaff(Long id, Date beginTime, Date endTime);
+ public List<SysBeauticianState> findBySerId(Long serviceId);
}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java
index 66890ed..cb1275f 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java
@@ -164,7 +164,7 @@
@Override
- public void addAchieveByServiceOrder(SysProjServices projServices) {
+ public void addAchieveByServiceOrder(SysProjServices projServices) {
List<AchieveNew> achieveNewList = new ArrayList<>();
List<SysBeauticianState> beauticianStateList = sysBeauticianStateDao.selectBySerIds(projServices.getId());
int size = beauticianStateList.size();
@@ -188,16 +188,16 @@
// 是否为赠送业绩
if (Dictionary.TAOCAN_SOURCE_ZS.equals(projUse.getSource())) {
- achieveNew.setFreeConsume(projUse.getPrice()*beauticianState.getCount());
+ achieveNew.setFreeConsume(projUse.getPrice() * beauticianState.getCount());
//计算提成
achieveNew.setProjPercentage(
- calculationProjPercentage(AchieveRuleItem.ACHIEVE_TYPE_ZS,achieveNew.getFreeConsume(),beauticianState.getProjId()));
+ calculationProjPercentage(AchieveRuleItem.ACHIEVE_TYPE_ZS, achieveNew.getFreeConsume(), beauticianState.getProjId()));
} else {
- achieveNew.setHisConsume(new BigDecimal(projUse.getPrice()*beauticianState.getCount()).setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue());
+ achieveNew.setHisConsume(new BigDecimal(projUse.getPrice() * beauticianState.getCount()).setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue());
//计算提成
achieveNew.setProjPercentage(
- calculationProjPercentage(AchieveRuleItem.ACHIEVE_TYPE_BJ,achieveNew.getHisConsume(),beauticianState.getProjId()));
+ calculationProjPercentage(AchieveRuleItem.ACHIEVE_TYPE_BJ, achieveNew.getHisConsume(), beauticianState.getProjId()));
}
achieveNew.setT2(projUse.getSource());
achieveNew.setDatatime(new Date());
@@ -211,14 +211,14 @@
if (flag) {
// if (!achieveId.equals(beauticianState.getStaffId())) {
- AchieveNew saleManAchieve = new AchieveNew();
- BeanUtils.copyProperties(achieveNew, saleManAchieve);
- saleManAchieve.setBeaultId(achieveId);
+ AchieveNew saleManAchieve = new AchieveNew();
+ BeanUtils.copyProperties(achieveNew, saleManAchieve);
+ saleManAchieve.setBeaultId(achieveId);
- saleAchieveNumOfPeople(saleManAchieve);
- //销售人员不计算项目提成
- saleManAchieve.setProjPercentage(0D);
- achieveNewList.add(saleManAchieve);
+ saleAchieveNumOfPeople(saleManAchieve);
+ //销售人员不计算项目提成
+ saleManAchieve.setProjPercentage(0D);
+ achieveNewList.add(saleManAchieve);
// }
}
@@ -260,34 +260,35 @@
AchieveRuleDao achieveRuleDao;
private Double calculationProjPercentage(int type, Double consume, Long goodsId) {
- ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(goodsId);
- if(shoppingGoods.getAchieveRuleId()!=null){
+ ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(goodsId);
+ if (shoppingGoods.getAchieveRuleId() != null) {
- AchieveRule achieveRule = achieveRuleDao.selectById(shoppingGoods.getAchieveRuleId());
- if(achieveRule!=null){
- List<AchieveRuleItem> achieveRuleItems = JSONUtil.toList(JSONUtil.parseArray(achieveRule.getRules()), AchieveRuleItem.class);
- double percentage=0D;
- for(AchieveRuleItem item:achieveRuleItems){
- if(item.getAchieveType()==type
- && (item.getLower() == consume
- || (item.getLower()< consume && consume < item.getUpper() ))){
+ AchieveRule achieveRule = achieveRuleDao.selectById(shoppingGoods.getAchieveRuleId());
+ if (achieveRule != null) {
+ List<AchieveRuleItem> achieveRuleItems = JSONUtil.toList(JSONUtil.parseArray(achieveRule.getRules()), AchieveRuleItem.class);
+ double percentage = 0D;
+ for (AchieveRuleItem item : achieveRuleItems) {
+ if (item.getAchieveType() == type
+ && (item.getLower() == consume
+ || (item.getLower() < consume && consume < item.getUpper()))) {
- if(AchieveRuleItem.ACHIEVE_TYPE_FIXED==item.getCalculationType()){
- percentage=item.getAchieve();
- }else{
- percentage= consume * (item.getAchieve()/100);
- }
- break;
- }
- }
- return percentage;
- }
- }
+ if (AchieveRuleItem.ACHIEVE_TYPE_FIXED == item.getCalculationType()) {
+ percentage = item.getAchieve();
+ } else {
+ percentage = consume * (item.getAchieve() / 100);
+ }
+ break;
+ }
+ }
+ return percentage;
+ }
+ }
return 0D;
}
/**
* 顾问人头业绩
+ *
* @param achieveNew
*/
private void saleAchieveNumOfPeople(AchieveNew achieveNew) {
@@ -301,7 +302,6 @@
}
/**
- *
* 合并订单与服务单人头逻辑,即每一个客户对美疗师/顾问来说,每一天同一个客户只算一个人头。
* 如若A给客户X下订单,并给客户X服务,对A来说只算一个人头
*/
@@ -333,10 +333,9 @@
if (orderItem != null && CollectionUtils.isNotEmpty(orderItem.getAchieveList())) {
for (AchieveNew achieveNew : orderItem.getAchieveList()) {
- if (achieveNew !=null && achieveNew.getGoodsCash()!=null) {
- buildAchieve(pageOrder, orderItem, achieveNew);
+ if (achieveNew != null && achieveNew.getGoodsCash() != null) {
+ buildAchieve(pageOrder, orderItem, achieveNew);
achieveNewList.add(achieveNew);
-
beautyIds.add(achieveNew.getBeaultId());
}
}
@@ -358,7 +357,7 @@
BusParameterSettingsDao busParameterSettingsDao;
private void buildAchieve(SysOrder pageOrder, SysOrderItem orderItem, AchieveNew achieveNew) {
- BusParameterSettings shopManageJjcpasConsume =null;
+ BusParameterSettings shopManageJjcpasConsume = null;
if (Dictionary.ORDER_STATU_TK.equals(pageOrder.getStatu())) {
achieveNew.setId(null);
achieveNew.setProjPercentage(0 - achieveNew.getProjPercentage());
@@ -366,7 +365,7 @@
}
achieveNew.setVipId(pageOrder.getVipId());
- if(achieveNew.getSaleId()==null){
+ if (achieveNew.getSaleId() == null) {
achieveNew.setSaleId(pageOrder.getStaffId());
}
@@ -376,11 +375,12 @@
} else {
achieveNew.setDatatime(new Date());
}
- if(Dictionary.SHOPPING_GOODS_TYPE_JJCP.equals(orderItem.getShoppingGoods().getGoodType())){
- if(shopManageJjcpasConsume==null){
+ ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(orderItem.getGoodsId());
+ if (Dictionary.SHOPPING_GOODS_TYPE_JJCP.equals(shoppingGoods.getGoodType())) {
+ if (shopManageJjcpasConsume == null) {
shopManageJjcpasConsume = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.SHOP_MANAGE_JJCPAS_CONSUME, pageOrder.getCompanyId());
}
- if(AppConstance.IS_Y.equals(shopManageJjcpasConsume.getParamValue())){
+ if (AppConstance.IS_Y.equals(shopManageJjcpasConsume.getParamValue())) {
achieveNew.setHisConsume(achieveNew.getGoodsCash());
}
@@ -440,7 +440,7 @@
Date endTime = calendar.getTime();
switch (type) {
// 本日
- case 1 :
+ case 1:
break;
// 昨日
case 2:
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java
index 0e0cf8b..193c1f5 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/MoneyCardUseServiceImpl.java
@@ -2,22 +2,25 @@
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.core.pojo.VerificationResult;
import com.matrix.core.tools.DateUtil;
import com.matrix.core.tools.LogUtil;
-import com.matrix.system.common.validate.ParameterValidate;
+import com.matrix.system.common.dao.SysUsersDao;
+import com.matrix.system.common.validate.GroupValidateStatusCheckUtil;
import com.matrix.system.common.validate.group.Group;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.dao.*;
import com.matrix.system.hive.dto.MoneyCardOperationDto;
-import com.matrix.system.hive.dto.MoneyCardPayDto;
import com.matrix.system.hive.plugin.util.MoneyUtil;
import com.matrix.system.hive.service.MoneyCardUseService;
import com.matrix.system.hive.service.ShoppingGoodsService;
+import com.matrix.system.hive.service.SysOrderService;
+import com.matrix.system.hive.validation.MoneyCardUseGroup;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -47,6 +50,9 @@
private SysOrderItemDao orderItemDao;
@Autowired
+ SysOrderService sysOrderService;
+
+ @Autowired
private SysVipLevelDao viplevelDao;
@Autowired
@@ -58,6 +64,9 @@
MoneyCardUseFlowDao moneyCardUseFlowDao;
@Autowired
+ SysUsersDao sysUsersDao;
+
+ @Autowired
private ShoppingGoodsService shoppingGoodsService;
@@ -65,31 +74,30 @@
@Transactional(rollbackFor = Exception.class)
public void addVipMoneyCard(List<MoneyCardOperationDto> moneyCardOperationDtos) {
moneyCardOperationDtos.forEach(dto -> {
+
//参数校验
- ParameterValidate.ValidResult baseIdResult = ParameterValidate.validateBean(dto, Group.ADD.class);
- if (baseIdResult.hasErrors()) {
- throw new GlobleException(baseIdResult.getErrors());
- }
- ShoppingGoods moneyCar = shoppingGoodsDao.selectById(dto.getGoodsId());
+ GroupValidateStatusCheckUtil.check(dto,Group.ADD.class);
+
+ ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(dto.getGoodsId());
MoneyCardUse moneyCardUse = new MoneyCardUse();
BeanUtil.copyProperties(dto, moneyCardUse);
- moneyCardUse.setVipId(dto.getVipId());
- moneyCardUse.setGiftMoney(moneyCar.getReferencePice());
- moneyCardUse.setRealMoney(moneyCar.getSealPice());
- moneyCardUse.setGoodsId(moneyCar.getId());
+ moneyCardUse.setGiftMoney(shoppingGoods.getReferencePice());
+ moneyCardUse.setRealMoney(shoppingGoods.getSealPice());
+ moneyCardUse.setGoodsId(shoppingGoods.getId());
moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX);
moneyCardUse.setIsVipCar(Dictionary.FLAG_NO_N);
+ moneyCardUse.setCardName(shoppingGoods.getName());
//余次处理
- if (moneyCar.getCarUseCount() == null || moneyCar.getCarUseCount() == 0) {
+ if (shoppingGoods.getCarUseCount() == null || shoppingGoods.getCarUseCount() == 0) {
moneyCardUse.setUseTotal(999999999);
moneyCardUse.setLastCount(999999999);
} else {
- moneyCardUse.setUseTotal(moneyCar.getCarUseCount());
- moneyCardUse.setLastCount(moneyCar.getCarUseCount());
+ moneyCardUse.setUseTotal(shoppingGoods.getCarUseCount());
+ moneyCardUse.setLastCount(shoppingGoods.getCarUseCount());
}
//失效时间处理
- Date invalidTime = shoppingGoodsService.calInvalidTime(moneyCar, 1, null);
+ Date invalidTime = shoppingGoodsService.calInvalidTime(shoppingGoods, 1, null);
moneyCardUse.setFailTime(invalidTime);
moneyCardUseDao.insert(moneyCardUse);
@@ -97,82 +105,154 @@
}
@Override
- public void deleteByOrderItemId(Long id) {
- MoneyCardUseFlow moneyCardUseFlow=new MoneyCardUseFlow();
- moneyCardUseFlow.setCarUseId(id);
- int i = moneyCardUseFlowDao.selectTotalRecord(moneyCardUseFlow);
- if(i>0){
- MoneyCardUse one = getOne(lambdaQuery().eq(MoneyCardUse::getOrderItemId,id));
- throw new GlobleException(one.getCardName()+"储值卡已经被启用无法删除");
- }else {
- moneyCardUseDao.deleteByOrderItemId(id);
- }
+ public void deleteByOrderItemId(Long orderItemId) {
+
+ List<MoneyCardUse> moneyCardUseList = getMoneyCardUseListByOrderItemId(orderItemId);
+ moneyCardUseList.forEach(moneyCardUse -> {
+ MoneyCardUseFlow moneyCardUseFlow=new MoneyCardUseFlow();
+ moneyCardUseFlow.setCarUseId(moneyCardUse.getId());
+ int i = moneyCardUseFlowDao.selectTotalRecord(moneyCardUseFlow);
+ if(i>0){
+ throw new GlobleException(moneyCardUse.getCardName()+"储值卡已经被启用无法删除");
+ }else {
+ LogUtil.info("根据订单明细id{},删除储值卡:{}", orderItemId,moneyCardUse.getCardName());
+ moneyCardUseDao.deleteById(moneyCardUse.getId());
+ }
+ });
+
+
}
@Override
public void moneyCardTk(List<MoneyCardOperationDto> moneyCardOperationDtos) {
- MoneyCardUseFlow moneyCardUseFlow=new MoneyCardUseFlow();
-
moneyCardOperationDtos.forEach(moneyCardOperationDto -> {
- List<MoneyCardUse> moneyCardUseList = list(lambdaQuery().eq(MoneyCardUse::getOrderItemId, moneyCardOperationDto.getOrderItemId()));
+ GroupValidateStatusCheckUtil.check(moneyCardOperationDto, MoneyCardUseGroup.moneyCardUseTk.class);
+
+ List<MoneyCardUse> moneyCardUseList = getMoneyCardUseListByOrderItemId(moneyCardOperationDto.getOrderItemId());
for (MoneyCardUse moneyCardUse : moneyCardUseList) {
-
- moneyCardUse.setStatus(Dictionary.TAOCAN_STATUS_TK);
+ //本金扣款
+ if (moneyCardUse.getRealMoney() + moneyCardOperationDto.getRealMoney() >= 0) {
+ double surplus = MoneyUtil.add(moneyCardUse.getRealMoney(), moneyCardOperationDto.getRealMoney());
+ moneyCardUse.setRealMoney(surplus);
+ } else {
+ throw new GlobleException(moneyCardUse.getCardName() + "余额不足");
+ }
+ //余额为0时充值卡变为无效
+ if (moneyCardUse.getRealMoney().equals(0D)) {
+ moneyCardUse.setIsOver(Dictionary.FLAG_YES_Y);
+ moneyCardUse.setStatus(Dictionary.TAOCAN_STATUS_TK);
+ }
+ moneyCardUse.setGiftMoney(0D);
moneyCardUseDao.update(moneyCardUse);
-
-
- //设置卡项使用流水
- moneyCardUseFlow.setCarUseId(moneyCardUse.getId());
- moneyCardUseFlow.setOrderNo(moneyCardOperationDto.getOrderNo());
- moneyCardUseFlow.setVipId(moneyCardUse.getVipId());
- moneyCardUseFlow.setTimes(moneyCardUse.getLastCount());
- moneyCardUseFlow.setType(moneyCardOperationDto.getType());
- moneyCardUseFlow.setCreateTime(new Date());
- moneyCardUseFlow.setOperationId(moneyCardOperationDto.getUpdateUser());
- moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney());
- moneyCardUseFlowDao.insert(moneyCardUseFlow);
+ saveMoneyCardUseFlow(moneyCardOperationDto,moneyCardUse);
}
});
+ }
+
+ /**
+ * 根据订单明细id查询会员卡
+ * @param orderItemId
+ * @return
+ */
+ private List<MoneyCardUse> getMoneyCardUseListByOrderItemId(Long orderItemId) {
+ LambdaQueryWrapper<MoneyCardUse> lambdaQueryChainWrapper = new LambdaQueryWrapper();
+ lambdaQueryChainWrapper.eq(MoneyCardUse::getOrderItemId, orderItemId);
+ List<MoneyCardUse> moneyCardUseList = list(lambdaQueryChainWrapper);
+ return moneyCardUseList;
+ }
+
+ /**
+ * 保存储值卡流水
+ * @param moneyCardOperationDto
+ * @param moneyCardUse
+ */
+ private void saveMoneyCardUseFlow(MoneyCardOperationDto moneyCardOperationDto,MoneyCardUse moneyCardUse){
+ MoneyCardUseFlow moneyCardUseFlow=new MoneyCardUseFlow();
+ moneyCardUseFlow.setCarUseId(moneyCardUse.getId());
+ moneyCardUseFlow.setOrderNo(moneyCardOperationDto.getOrderNo());
+ moneyCardUseFlow.setVipId(moneyCardUse.getVipId());
+ moneyCardUseFlow.setTimes(moneyCardUse.getLastCount());
+ moneyCardUseFlow.setType(moneyCardOperationDto.getType());
+ moneyCardUseFlow.setCreateTime(new Date());
+ moneyCardUseFlow.setOperationId(moneyCardOperationDto.getUpdateUser());
+ moneyCardUseFlow.setTotal(moneyCardUse.getRealMoney());
+ moneyCardUseFlow.setGiftMoney(moneyCardUse.getGiftMoney());
+ moneyCardUseFlow.setTotal(moneyCardOperationDto.getRealMoney());
+ moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney());
+ moneyCardUseFlow.setStaffName(sysUsersDao.selectById(moneyCardOperationDto.getUpdateUser()).getSuName());
-
+ moneyCardUseFlowDao.insert(moneyCardUseFlow);
}
@Override
@Transactional(rollbackFor = Exception.class)
- public void changeMoneyCard(List<MoneyCardPayDto> moneyCardPayDtoList) {
- moneyCardPayDtoList.forEach(moneyCardPayDto -> {
- if (MoneyCardUseFlow.USE_TYPE_CONSUMER.equals(moneyCardPayDto.getType())) {
- //扣减储值卡余额
- deductMoneyCard(moneyCardPayDto);
- } else if (MoneyCardUseFlow.USE_TYPE_ORDRE_CANCEL.equals(moneyCardPayDto.getType())) {
+ public void changeMoneyCard(List<MoneyCardOperationDto> moneyCardOperationDtoList) {
+ moneyCardOperationDtoList.forEach(moneyCardOperationDto -> {
+
+
+ if (MoneyCardUseFlow.USE_TYPE_CONSUMER.equals(moneyCardOperationDto.getType())) {
+ //储值卡支付订单 扣减储值卡余额
+ GroupValidateStatusCheckUtil.check(moneyCardOperationDto,MoneyCardUseGroup.moneyCardUseOrderChange.class);
+ moneyCardPayOrder(moneyCardOperationDto);
+ } else if (MoneyCardUseFlow.USE_TYPE_ORDRE_CANCEL.equals(moneyCardOperationDto.getType())) {
//回退储值卡余额
- returnMoneyCard(moneyCardPayDto);
+ GroupValidateStatusCheckUtil.check(moneyCardOperationDto,MoneyCardUseGroup.moneyCardUseOrderChange.class);
+ returnMoneyCard(moneyCardOperationDto);
+ } else if (MoneyCardUseFlow.USE_TYPE_CZ.equals(moneyCardOperationDto.getType())) {
+ //回退储值卡余额
+ GroupValidateStatusCheckUtil.check(moneyCardOperationDto,MoneyCardUseGroup.moneyCardUseCz.class);
+ moneyCardCz(moneyCardOperationDto);
}
});
}
/**
+ * 会员卡充值
+ * @param moneyCardOperationDto
+ */
+ private void moneyCardCz(MoneyCardOperationDto moneyCardOperationDto) {
+
+ LogUtil.info("会员卡充值 {}", JSON.toJSONString(moneyCardOperationDto));
+ MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(moneyCardOperationDto.getCarUseId());
+
+
+ if (Objects.nonNull(moneyCardOperationDto.getGiftMoney())) {
+ //jyytodo 余额余次的修改和新增在数据库层面做加减
+ moneyCardUse.setGiftMoney(moneyCardUse.getGiftMoney() + moneyCardOperationDto.getGiftMoney());
+ }
+ if (Objects.nonNull(moneyCardOperationDto.getRealMoney())) {
+ moneyCardUse.setRealMoney(moneyCardUse.getRealMoney() + moneyCardOperationDto.getRealMoney());
+ }
+ moneyCardUseDao.update(moneyCardUse);
+ //设置卡项使用流水
+ saveMoneyCardUseFlow(moneyCardOperationDto,moneyCardUse);
+
+
+
+ }
+
+ /**
* 回退储值卡余额
*
- * @param moneyCardPayDto
+ * @param moneyCardOperationDto
*/
- private void returnMoneyCard(MoneyCardPayDto moneyCardPayDto) {
- LogUtil.info("回退储值卡余额 {}", JSON.toJSONString(moneyCardPayDto));
- MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(moneyCardPayDto.getCarUseId());
+ private void returnMoneyCard(MoneyCardOperationDto moneyCardOperationDto) {
+ LogUtil.info("回退储值卡余额 {}", JSON.toJSONString(moneyCardOperationDto));
+ MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(moneyCardOperationDto.getCarUseId());
MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow();
- if (Objects.nonNull(moneyCardPayDto.getGiftMoney())) {
+ if (Objects.nonNull(moneyCardOperationDto.getGiftMoney())) {
//jyytodo 余额余次的修改和新增在数据库层面做加减
- moneyCardUse.setGiftMoney(moneyCardUse.getGiftMoney() + moneyCardPayDto.getGiftMoney());
+ moneyCardUse.setGiftMoney(moneyCardUse.getGiftMoney() + moneyCardOperationDto.getGiftMoney());
}
- if (Objects.nonNull(moneyCardPayDto.getRealMoney())) {
- moneyCardUse.setRealMoney(moneyCardUse.getRealMoney() + moneyCardPayDto.getRealMoney());
+ if (Objects.nonNull(moneyCardOperationDto.getRealMoney())) {
+ moneyCardUse.setRealMoney(moneyCardUse.getRealMoney() + moneyCardOperationDto.getRealMoney());
}
moneyCardUse.setIsOver(Dictionary.FLAG_YES_Y);
moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX);
@@ -180,48 +260,42 @@
//设置卡项使用流水
- moneyCardUseFlow.setCarUseId(moneyCardUse.getId());
- moneyCardUseFlow.setOrderNo(moneyCardPayDto.getOrderNo());
- moneyCardUseFlow.setVipId(moneyCardUse.getVipId());
- moneyCardUseFlow.setTimes(moneyCardUse.getLastCount());
- moneyCardUseFlow.setType(moneyCardPayDto.getType());
- moneyCardUseFlow.setCreateTime(new Date());
- moneyCardUseFlow.setOperationId(moneyCardPayDto.getUpdateUser());
- moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney());
- moneyCardUseFlowDao.insert(moneyCardUseFlow);
+ saveMoneyCardUseFlow(moneyCardOperationDto,moneyCardUse);
}
/**
- * 扣减储值余额
+ * 储值卡支付订单 扣减储值卡余额
*
- * @param moneyCardPayDto
+ * @param moneyCardOperationDto
*/
- private void deductMoneyCard(MoneyCardPayDto moneyCardPayDto) {
+ private void moneyCardPayOrder(MoneyCardOperationDto moneyCardOperationDto) {
// 判断商品是否在充值卡的限制购买
- VerificationResult verificationResult = checkIsBangding(moneyCardPayDto.getCarUseId(), moneyCardPayDto.getGoodsIds());
+ VerificationResult verificationResult = checkIsBangding(moneyCardOperationDto.getCarUseId(), moneyCardOperationDto.getGoodsIds());
if (!verificationResult.isJudgeResult()) {
throw new GlobleException(verificationResult.getMsg());
}
- LogUtil.info("扣减储值卡余额 {}", JSON.toJSONString(moneyCardPayDto));
- MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(moneyCardPayDto.getCarUseId());
- MoneyCardUseFlow moneyCardUseFlow = new MoneyCardUseFlow();
- if (Objects.nonNull(moneyCardPayDto.getGiftMoney()) && moneyCardPayDto.getGiftMoney() > 0) {
- if (moneyCardUse.getGiftMoney() >= moneyCardPayDto.getGiftMoney()) {
- double surplus = MoneyUtil.sub(moneyCardUse.getGiftMoney(), moneyCardPayDto.getGiftMoney());
- moneyCardUse.setGiftMoney(surplus);
- moneyCardUseFlow.setGiftMoney(0D - moneyCardPayDto.getGiftMoney());
- } else {
- throw new GlobleException(moneyCardUse.getCardName() + "余额不足");
- }
+
+ LogUtil.info("扣减储值卡余额 {}", JSON.toJSONString(moneyCardOperationDto));
+ MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(moneyCardOperationDto.getCarUseId());
+
+ //欠款检查
+ checkOrderStatu(moneyCardUse.getOrderItemId());
+
+ //赠送金额扣款
+ if (moneyCardUse.getGiftMoney() + moneyCardOperationDto.getGiftMoney() >= 0) {
+ double surplus = MoneyUtil.add(moneyCardUse.getGiftMoney(), moneyCardOperationDto.getGiftMoney());
+ moneyCardUse.setGiftMoney(surplus);
} else {
- if (moneyCardUse.getRealMoney() >= moneyCardPayDto.getRealMoney()) {
- double surplus = MoneyUtil.sub(moneyCardUse.getRealMoney(), moneyCardPayDto.getRealMoney());
- moneyCardUse.setRealMoney(surplus);
- moneyCardUseFlow.setTotal(0 - moneyCardPayDto.getRealMoney());
- } else {
- throw new GlobleException(moneyCardUse.getCardName() + "余额不足");
- }
+ throw new GlobleException(moneyCardUse.getCardName() + "余额不足");
}
+ //本金扣款
+ if (moneyCardUse.getRealMoney() + moneyCardOperationDto.getRealMoney() >= 0) {
+ double surplus = MoneyUtil.add(moneyCardUse.getRealMoney(), moneyCardOperationDto.getRealMoney());
+ moneyCardUse.setRealMoney(surplus);
+ } else {
+ throw new GlobleException(moneyCardUse.getCardName() + "余额不足");
+ }
+
if (moneyCardUse.getIsVipCar().equals(Dictionary.FLAG_NO_N)) {
//余额为0时充值卡变为无效
@@ -237,21 +311,11 @@
moneyCardUse.setFailTime(invalidTime);
}
- moneyCardUse.setLastCount(moneyCardUse.getLastCount() - moneyCardPayDto.getCount());
-
+ moneyCardUse.setLastCount(moneyCardUse.getLastCount() - moneyCardOperationDto.getCount());
// 更新充值卡信息
moneyCardUseDao.update(moneyCardUse);
-
//设置卡项使用流水
- moneyCardUseFlow.setCarUseId(moneyCardUse.getId());
- moneyCardUseFlow.setOrderNo(moneyCardPayDto.getOrderNo());
- moneyCardUseFlow.setVipId(moneyCardUse.getVipId());
- moneyCardUseFlow.setTimes(moneyCardUse.getLastCount());
- moneyCardUseFlow.setType(moneyCardPayDto.getType());
- moneyCardUseFlow.setCreateTime(new Date());
- moneyCardUseFlow.setOperationId(moneyCardPayDto.getUpdateUser());
- moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney());
- moneyCardUseFlowDao.insert(moneyCardUseFlow);
+ saveMoneyCardUseFlow(moneyCardOperationDto,moneyCardUse);
}
/**
@@ -271,7 +335,7 @@
// 不是默认储值卡判断卡是否可应用于所有产品
ShoppingGoods cardGoods = shoppingGoodsDao.selectById(moneyCardUse.getGoodsId());
if (cardGoods != null) {
- if (Dictionary.FLAG_YES.equals(cardGoods.getGoodType())) {
+ if (Dictionary.FLAG_YES.equals(cardGoods.getCarIsAll())) {
return VerificationResult.success();
}
}
@@ -429,6 +493,7 @@
@Transactional(rollbackFor = Exception.class)
public void transfer(MoneyCardUse moneyCardUse, Long vipId2, Double money) {
Long oldId = moneyCardUse.getId();
+
moneyCardUse = moneyCardUseDao.selectById(moneyCardUse.getId());
if (moneyCardUse.getVipId().equals(vipId2)) {
throw new GlobleException("转让人不能是该充值卡拥有者!");
@@ -514,10 +579,10 @@
/**
* 检测订单条目是否已付款完毕
*/
- public void checkOrderStatu(Long id) {
- SysOrderItem item = orderItemDao.selectById(id);
- if (!Dictionary.ORDER_STATU_YFK.equals(item.getStatus())) {
- throw new GlobleException("该商品还存在欠款!");
+ public void checkOrderStatu(Long orderItemId) {
+ SysOrder order = sysOrderService.findById(orderItemDao.selectById(orderItemId).getOrderId());
+ if (!Dictionary.ORDER_STATU_YFK.equals(order.getStatu())) {
+ throw new GlobleException("储值卡购买订单还存在欠款,在补交欠款后才能使用!");
}
}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysInstoreInfoServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysInstoreInfoServiceImpl.java
index 6ca75ad..95d1257 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysInstoreInfoServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysInstoreInfoServiceImpl.java
@@ -1,9 +1,11 @@
package com.matrix.system.hive.service.imp;
+import com.alibaba.fastjson.JSON;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.core.tools.DateUtil;
+import com.matrix.core.tools.LogUtil;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.constance.Dictionary;
@@ -50,11 +52,7 @@
sysInstoreInfo.setCheckStatus(Dictionary.CHECK_STATUS_DSH);
// 设置入库单编号
sysInstoreInfo.setInstoreId(DateUtil.getTimeMark());
-// SysShopInfo info = shopInfoDao.selectByShopName(Dictionary.SHOP_NAME_ZONGDIAN);
-// // 系统限制入库只能入库到总店,总店不存在则
-// if (info == null) {
-// throw new GlobleException("总店仓库不存在,请添加!");
-// }
+
// 插入
int i = sysInstoreInfoDao.insert(sysInstoreInfo);
// 设置总金额,并更新
@@ -180,6 +178,7 @@
@Override
@Transactional(rollbackFor = Exception.class)
public int check(SysInstoreInfo sysInstoreInfo) {
+ LogUtil.info("入库单审核:{}", JSON.toJSONString(sysInstoreInfo));
// 验证权限
SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
sysInstoreInfo.setAppmanId(user.getSuId());
@@ -187,9 +186,6 @@
sysInstoreInfo.setCompanyId(user.getCompanyId());
SysInstoreInfo checkInStore = sysInstoreInfoDao.selectById(sysInstoreInfo.getId());
-// if (!checkInStore.getAppmanId().equals(user.getSuId())) {
-// throw new GlobleException("无权审核该单据!");
-// }
if (!checkInStore.getCheckStatus().equals(Dictionary.CHECK_STATUS_DSH)) {
throw new GlobleException("该单据状态为" + checkInStore.getCheckStatus() + ",不可审核!");
}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java
index 2049a70..f2bde3f 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceHelper.java
@@ -12,6 +12,7 @@
import com.google.common.collect.Lists;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.exception.GlobleException;
+import com.matrix.core.tools.DateUtil;
import com.matrix.core.tools.LogUtil;
import com.matrix.core.tools.StringUtils;
import com.matrix.core.tools.WebUtil;
@@ -26,14 +27,11 @@
import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.dao.*;
import com.matrix.system.hive.dto.MoneyCardOperationDto;
-import com.matrix.system.hive.dto.MoneyCardPayDto;
import com.matrix.system.hive.dto.ProjUseOperationDto;
import com.matrix.system.hive.plugin.util.CollectionUtils;
import com.matrix.system.hive.plugin.util.MoneyUtil;
import com.matrix.system.hive.pojo.CzXkVo;
-import com.matrix.system.hive.service.CodeService;
-import com.matrix.system.hive.service.MoneyCardUseService;
-import com.matrix.system.hive.service.SysProjUseService;
+import com.matrix.system.hive.service.*;
import com.matrix.system.score.constant.ScoreSettingConstant;
import com.matrix.system.score.entity.ScoreVipDetail;
import com.matrix.system.score.service.ScoreVipDetailService;
@@ -42,6 +40,7 @@
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
+import javax.validation.constraints.NotEmpty;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
@@ -60,6 +59,12 @@
@Component
public class SysOrderServiceHelper {
+
+ @Autowired
+ SysInstoreInfoService sysInstoreInfoService;
+
+ @Autowired
+ private SysSupplierInfoDao sysSupplierInfoDao;
@Autowired
ScoreVipDetailService scoreVipDetailService;
@@ -173,11 +178,14 @@
Double zk = sysOrderItem.getZkPrice() / sysOrderItem.getPrice();
projUseOperationDto.setTcZk(zk);
}
+
+ SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
projUseOperationDto.setPayMoney(sysOrderItem.getZkPrice());
projUseOperationDto.setGoodsId(sysOrderItem.getGoodsId());
projUseOperationDto.setCount(sysOrderItem.getCount());
projUseOperationDto.setVipId(order.getVipId());
projUseOperationDto.setOrderItemId(sysOrderItem.getId());
+ projUseOperationDto.setUpdateUserId(sysUsers.getSuId());
projUseDtoList.add(projUseOperationDto);
}
sysProjUseService.addUserProjUse(projUseDtoList);
@@ -215,34 +223,36 @@
List<SysOrderFlow> flows = pageOrder.getFlows();
List<Long> goodsIds = pageOrder.getItems().stream().map(e -> e.getGoodsId()).collect(Collectors.toList());
- List<MoneyCardPayDto> moneyCardPayDtoList = Lists.newArrayList();
+ List<MoneyCardOperationDto> moneyCardOperationDtos = Lists.newArrayList();
flows.forEach(flow -> {
if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
if (flow.getCardId() != null) {
- MoneyCardPayDto dto = new MoneyCardPayDto();
+ MoneyCardOperationDto dto = new MoneyCardOperationDto();
dto.setOrderNo(pageOrder.getOrderNo());
dto.setOrderId(pageOrder.getId());
dto.setCount(1);
dto.setCarUseId(flow.getCardId());
dto.setType(MoneyCardUseFlow.USE_TYPE_CONSUMER);
if (SysOrderFlow.IS_GIFT_Y.equals(flow.getIsGift())) {
- dto.setGiftMoney(flow.getAmount().doubleValue());
+ dto.setGiftMoney(-flow.getAmount().doubleValue());
+ dto.setRealMoney(0D);
} else {
- dto.setRealMoney(flow.getAmount().doubleValue());
+ dto.setRealMoney(-flow.getAmount().doubleValue());
+ dto.setGiftMoney(0D);
}
dto.setUpdateUser(user.getSuId());
dto.setGoodsIds(goodsIds);
- moneyCardPayDtoList.add(dto);
+ moneyCardOperationDtos.add(dto);
} else {
throw new GlobleException("无效的储值卡支付方式");
}
}
});
- if (CollectionUtils.isNotEmpty(moneyCardPayDtoList)) {
- LogUtil.info("扣除储值卡余额{}", JSON.toJSONString(moneyCardPayDtoList));
- moneyCardUseService.changeMoneyCard(moneyCardPayDtoList);
+ if (CollectionUtils.isNotEmpty(moneyCardOperationDtos)) {
+ LogUtil.info("扣除储值卡余额{}", JSON.toJSONString(moneyCardOperationDtos));
+ moneyCardUseService.changeMoneyCard(moneyCardOperationDtos);
}
}
@@ -253,14 +263,14 @@
*/
public void returnMoneyCardPay(SysOrder order) {
SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
- List<MoneyCardPayDto> moneyCardPayDtoList = Lists.newArrayList();
+ List<MoneyCardOperationDto> moneyCardOperationDtos = Lists.newArrayList();
List<SysOrderFlow> flows = sysOrderFlowDao.selectByOrderId(order.getId());
// 非现金收款退回扣卡余额
for (SysOrderFlow flow : flows) {
if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
if (flow.getCardId() != null) {
- MoneyCardPayDto dto = new MoneyCardPayDto();
+ MoneyCardOperationDto dto = new MoneyCardOperationDto();
dto.setOrderNo(order.getOrderNo());
dto.setOrderId(order.getId());
dto.setCount(1);
@@ -272,16 +282,16 @@
dto.setRealMoney(flow.getAmount().doubleValue());
}
dto.setUpdateUser(user.getSuId());
- moneyCardPayDtoList.add(dto);
+ moneyCardOperationDtos.add(dto);
} else {
throw new GlobleException("无效的储值卡支付方式");
}
}
}
- if (CollectionUtils.isNotEmpty(moneyCardPayDtoList)) {
- LogUtil.info("退回储值卡余额{}", JSON.toJSONString(moneyCardPayDtoList));
- moneyCardUseService.changeMoneyCard(moneyCardPayDtoList);
+ if (CollectionUtils.isNotEmpty(moneyCardOperationDtos)) {
+ LogUtil.info("退回储值卡余额{}", JSON.toJSONString(moneyCardOperationDtos));
+ moneyCardUseService.changeMoneyCard(moneyCardOperationDtos);
}
}
@@ -293,6 +303,7 @@
public void addMoneyCardUse(SysOrder sourceOrder) {
+ SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
List<MoneyCardOperationDto> moneyCardOperationDtos = Lists.newArrayList();
List<SysOrderItem> orderItemList = sourceOrder.getItems();
for (SysOrderItem sysOrderItem : orderItemList) {
@@ -301,15 +312,20 @@
for (int i = 0; i < sysOrderItem.getCount(); i++) {
MoneyCardOperationDto moneyCardOperationDto = new MoneyCardOperationDto();
- moneyCardOperationDto.setVipId(sourceOrder.getVipId());
// 是否为赠送
if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_YES)) {
moneyCardOperationDto.setSource(Dictionary.TAOCAN_SOURCE_ZS);
} else {
moneyCardOperationDto.setSource(Dictionary.TAOCAN_SOURCE_GM);
}
+ moneyCardOperationDto.setType(MoneyCardUseFlow.USE_TYPE_GM);
moneyCardOperationDto.setOrderItemId(sysOrderItem.getId());
moneyCardOperationDto.setGoodsId(sysOrderItem.getGoodsId());
+ moneyCardOperationDto.setOrderId(sourceOrder.getId());
+ moneyCardOperationDto.setOrderNo(sourceOrder.getOrderNo());
+ moneyCardOperationDto.setVipId(sourceOrder.getVipId());
+ moneyCardOperationDto.setUpdateUser(user.getSuId());
+
moneyCardOperationDtos.add(moneyCardOperationDto);
}
}
@@ -743,6 +759,21 @@
sysOrder.setPayTime(now);
sysOrder.setOrderNo(codeService.getRefundOrderNo());
sysOrder.setZkTotal(-sysOrder.getZkTotal());
+
+ double cardPayTotal = 0D;
+ double cashPayTotal = 0D;
+ for (SysOrderFlow flow : sysOrder.getFlows()) {
+ // 若使用储值卡付款
+ if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
+ cardPayTotal += flow.getAmount().doubleValue();
+ } else {
+ cashPayTotal += flow.getAmount().doubleValue();
+ }
+ }
+ sysOrder.setCardPay(0-( sourceOrder.getCardPay() == null ? 0 : sourceOrder.getCardPay() + cardPayTotal));
+ sysOrder.setCashPay(0-(sourceOrder.getCashPay() == null ? 0 : sourceOrder.getCashPay() + cashPayTotal));
+
+
//新增订单
sysOrderDao.insert(sysOrder);
//插入明细
@@ -758,6 +789,7 @@
}
//插入新的订单明细
item.setCount(-item.getCount());
+ item.setZkPrice(-item.getZkPrice());
item.setOrderId(sysOrder.getId());
orderItemDao.insert(item);
}
@@ -765,4 +797,48 @@
return sysOrder;
}
+ /**
+ * 退款入库
+ */
+ public void refundInstore(@NotEmpty List<SysOrderItem> items) {
+ SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+ SysSupplierInfo supplierInfo = new SysSupplierInfo();
+ supplierInfo.setShopId(user.getShopId());
+ supplierInfo = sysSupplierInfoDao.selectByModel(supplierInfo).get(0);
+
+ Warehouse warehouse = warehouseDao.findShopWarehouse(user.getShopId()).get(0);
+ SysInstoreInfo instoreInfo = new SysInstoreInfo();
+ instoreInfo.setInstoreType(SysInstoreInfo.INSTORE_TYPE_RETURN);
+ instoreInfo.setInstoreDate(new Date());
+ instoreInfo.setSupplierId(supplierInfo.getId().toString());
+ instoreInfo.setStoreId(warehouse.getId());
+ instoreInfo.setShopId(user.getShopId());
+ instoreInfo.setCompanyId(user.getCompanyId());
+
+ Double total = 0.0;
+ List<SysInstoreDetail> instoreDetails = new ArrayList<>();
+ for (SysOrderItem item : items) {
+ ShoppingGoods goods = shoppingGoodsDao.selectById(item.getGoodsId());
+ SysInstoreDetail sysInstoreDetail = new SysInstoreDetail();
+ sysInstoreDetail.setAmount(item.getCount().doubleValue());
+ sysInstoreDetail.setPrice(item.getZkPrice());
+ sysInstoreDetail.setSkuId(goods.getId());
+
+ total = MoneyUtil.add(MoneyUtil.mul(Double.parseDouble(sysInstoreDetail.getAmount() + ""), sysInstoreDetail.getPrice()), total);
+ sysInstoreDetail.setInstoreId(instoreInfo.getId());
+ // 设置小计
+ sysInstoreDetail.setPriceTotal(MoneyUtil.mul(Double.parseDouble(sysInstoreDetail.getAmount() + ""), sysInstoreDetail.getPrice()));
+ instoreDetails.add(sysInstoreDetail);
+
+ }
+ instoreInfo.setInstoreDetails(instoreDetails);
+ instoreInfo.setSumall(total);
+
+ sysInstoreInfoService.add(instoreInfo);
+ //自动审核单据
+ sysInstoreInfoService.check(instoreInfo);
+ }
+
+
+
}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
index f6bb406..7489538 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
@@ -56,14 +56,8 @@
@Autowired
private SysOrderItemDao orderItemDao;
@Autowired
- private SysProjUseDao sysProjUseDao;
private SysProjUseService sysProjUseService;
-
- @Autowired
- private SysStoreInfoDao storeInfoDao;
- @Autowired
- private CodeService codeService;
@Autowired
SysVipInfoDao sysVipInfoDao;
@Autowired
@@ -103,26 +97,12 @@
@Autowired
private AchieveNewDao achieveNewDao;
- @Autowired
- private WarehouseDao warehouseDao;
@Autowired
private ShoppingGoodsService shoppingGoodsService;
@Autowired
private SysOrderFlowDao sysOrderFlowDao;
-
- @Autowired
- private SysSupplierInfoDao sysSupplierInfoDao;
-
- @Autowired
- private SysInstoreInfoDao sysInstoreInfoDao;
-
- @Autowired
- private SysInstoreDetailDao sysInstoreDetailDao;
-
- @Autowired
- private SysInstoreInfoService sysInstoreInfoService;
@Autowired
BusParameterSettingsDao parameterSettingsDao;
@@ -495,14 +475,17 @@
//新增会员卡金额
MoneyCardUse cardUser = moneyCardUseDao.selectVipCard(czVo.getVipId());
- MoneyCardPayDto moneyCardPayDto = new MoneyCardPayDto();
- moneyCardPayDto.setRealMoney(MoneyUtil.add(cardUser.getRealMoney(), czVo.getBjmoney()));
- moneyCardPayDto.setGiftMoney(MoneyUtil.add(cardUser.getGiftMoney(), czVo.getGiftMoney()));
- moneyCardPayDto.setCarUseId(cardUser.getId());
- moneyCardPayDto.setOrderId(order.getId());
- moneyCardPayDto.setOrderNo(order.getOrderNo());
- moneyCardPayDto.setType(MoneyCardUseFlow.USE_TYPE_CZ);
- moneyCardUseService.changeMoneyCard(Arrays.asList(moneyCardPayDto));
+ MoneyCardOperationDto moneyCardOperationDto = new MoneyCardOperationDto();
+ moneyCardOperationDto.setRealMoney(czVo.getBjmoney());
+ moneyCardOperationDto.setGiftMoney(czVo.getGiftMoney());
+ moneyCardOperationDto.setCarUseId(cardUser.getId());
+ moneyCardOperationDto.setOrderId(order.getId());
+ moneyCardOperationDto.setOrderNo(order.getOrderNo());
+ moneyCardOperationDto.setType(MoneyCardUseFlow.USE_TYPE_CZ);
+
+ SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+ moneyCardOperationDto.setUpdateUser(user.getSuId());
+ moneyCardUseService.changeMoneyCard(Arrays.asList(moneyCardOperationDto));
// 更新订单主表信息
payEndUpdateOrderInfo(order);
@@ -566,7 +549,6 @@
@Override
public void orderTk(SysOrder sysOrder) {
- SysOrder oldOrder = sysOrderDao.selectById(sysOrder.getOldOrderId());
//创建并保存退款订单
sysOrder = sysOrderServiceHelper.createTkOrder(sysOrder);
// 添加订单收款流水
@@ -574,6 +556,7 @@
//退款退套餐退项目
refundProjUse(sysOrder);
//删除积分
+ SysOrder oldOrder = sysOrderDao.selectById(sysOrder.getOldOrderId());
scoreVipDetailService.removeByBusinessId(oldOrder.getVipId(), oldOrder.getId());
// 设置业绩
@@ -616,17 +599,20 @@
|| Dictionary.SHOPPING_GOODS_TYPE_XM.equals(item.getType())) {
ProjUseOperationDto dto = new ProjUseOperationDto();
dto.setGoodsId(item.getGoodsId());
- dto.setCount(item.getCount());
+ dto.setCount(item.getRefundCount());
dto.setOrderItemId(item.getOldItemId());
+ dto.setUpdateUserId(user.getSuId());
projUseDtoList.add(dto);
- }else if (Dictionary.SHOPPING_GOODS_TYPE_CZK.equals(item.getType())) {
+ }else if (Dictionary.SHOPPING_GOODS_TYPE_CZK.equals(item.getType())) {
MoneyCardOperationDto moneyCardOperationDto = new MoneyCardOperationDto();
moneyCardOperationDto.setOrderId(sysOrder.getId());
+ moneyCardOperationDto.setOrderNo(sysOrder.getOrderNo());
moneyCardOperationDto.setOrderItemId(item.getOldItemId());
- moneyCardOperationDto.setType(MoneyCardUseFlow.USE_TYPE_ORDRE_CANCEL);
+ moneyCardOperationDto.setType(MoneyCardUseFlow.USE_TYPE_ORDRE_TK);
moneyCardOperationDto.setUpdateUser(user.getSuId());
moneyCardOperationDto.setOrderNo(sysOrder.getOrderNo());
+ moneyCardOperationDto.setRealMoney(item.getZkPrice());
moneyCardOperationDtos.add(moneyCardOperationDto);
}
}
@@ -636,7 +622,7 @@
// 家居产品退库存
if (CollectionUtils.isNotEmpty(returnGoodsList)) {
LogUtil.info("订单退款:退产品库存:{}", JSON.toJSONString(returnGoodsList));
- refundInstore(returnGoodsList);
+ sysOrderServiceHelper.refundInstore(returnGoodsList);
}
}
@@ -651,50 +637,9 @@
}
}
- /**
- * 退款入库
- */
- private void refundInstore(@NotEmpty List<SysOrderItem> items) {
- SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
- SysSupplierInfo supplierInfo = new SysSupplierInfo();
- supplierInfo.setShopId(user.getShopId());
- supplierInfo = sysSupplierInfoDao.selectByModel(supplierInfo).get(0);
- Warehouse warehouse = warehouseDao.findShopWarehouse(user.getShopId()).get(0);
- SysInstoreInfo instoreInfo = new SysInstoreInfo();
- instoreInfo.setInstoreType(SysInstoreInfo.INSTORE_TYPE_RETURN);
- instoreInfo.setInstoreDate(new Date());
- instoreInfo.setSupplierId(supplierInfo.getId().toString());
- instoreInfo.setStoreId(warehouse.getId());
- instoreInfo.setCheckStatus(Dictionary.CHECK_STATUS_DSH);
- // 设置入库单编号
- instoreInfo.setInstoreId(DateUtil.getTimeMark());
- instoreInfo.setShopId(user.getShopId());
- instoreInfo.setCompanyId(user.getCompanyId());
- sysInstoreInfoDao.insert(instoreInfo);
- Double total = 0.0;
- List<SysInstoreDetail> instoreDetails = new ArrayList<>();
- for (SysOrderItem item : items) {
- ShoppingGoods goods = shoppingGoodsDao.selectById(item.getGoodsId());
- SysInstoreDetail sysInstoreDetail = new SysInstoreDetail();
- sysInstoreDetail.setAmount(item.getCount().doubleValue());
- sysInstoreDetail.setPrice(item.getZkPrice());
- sysInstoreDetail.setSkuId(goods.getId());
- total = MoneyUtil.add(MoneyUtil.mul(Double.parseDouble(sysInstoreDetail.getAmount() + ""), sysInstoreDetail.getPrice()), total);
- sysInstoreDetail.setInstoreId(instoreInfo.getId());
- // 设置小计
- sysInstoreDetail.setPriceTotal(MoneyUtil.mul(Double.parseDouble(sysInstoreDetail.getAmount() + ""), sysInstoreDetail.getPrice()));
- instoreDetails.add(sysInstoreDetail);
-
- }
- instoreInfo.setSumall(total);
- sysInstoreInfoDao.update(instoreInfo);
- sysInstoreDetailDao.batchInsert(instoreDetails);
-
- sysInstoreInfoService.check(instoreInfo);
- }
@Override
public BigDecimal findVipArrearsByVipId(Long vipId) {
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java
index d5d7b6a..e9416e8 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java
@@ -10,11 +10,13 @@
import com.matrix.system.app.mapper.SysProjUseMapper;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.dao.BusParameterSettingsDao;
-import com.matrix.system.common.validate.ParameterValidate;
+import com.matrix.system.common.dao.SysUsersDao;
+import com.matrix.system.common.validate.GroupValidateStatusCheckUtil;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.dao.*;
import com.matrix.system.hive.dto.ProjUseOperationDto;
+import com.matrix.system.hive.hievEnum.OrderOperationEnum;
import com.matrix.system.hive.plugin.util.MoneyUtil;
import com.matrix.system.hive.service.ShoppingGoodsService;
import com.matrix.system.hive.service.SysBeauticianStateService;
@@ -67,6 +69,9 @@
@Autowired
BusParameterSettingsDao busParameterSettingsDao;
+
+ @Autowired
+ SysUsersDao sysUsersDao;
@Override
public int add(SysProjUse sysProjUse) {
@@ -356,11 +361,9 @@
if (Dictionary.TAOCAN_SOURCE_QY.equals(projuse.getSource())) {
return;
}
- if (projuse.getPlatformFlag().contains(Dictionary.SHOPPING_GOODS_SALE_PLATFORM_XX)) {
- SysOrderItem orderItem = orderItemDao.selectById(projuse.getOrderItemId());
- if (!Dictionary.ORDER_STATU_YFK.equals(orderItem.getStatus())) {
- throw new GlobleException("该商品存在欠款!");
- }
+ String orderStatus = orderItemDao.selectOrderStatusByItemId(projuse.getOrderItemId());
+ if (!Dictionary.ORDER_STATU_YFK.equals(orderStatus)) {
+ throw new GlobleException(projuse.getProjName()+"的购买订单存在欠款!");
}
}
@@ -615,12 +618,8 @@
projUseDtoList.forEach(projUseOperationDto -> {
-
//校验参数
- ParameterValidate.ValidResult baseIdResult = ParameterValidate.validateBean(projUseOperationDto, ProjUseGroup.projectTk.class);
- if (baseIdResult.hasErrors()) {
- throw new GlobleException(baseIdResult.getErrors());
- }
+ GroupValidateStatusCheckUtil.check(projUseOperationDto, ProjUseGroup.projectTk.class);
ShoppingGoods shoppingGoods = shoppingGoodsMap.get(projUseOperationDto.getGoodsId());
if (Dictionary.SHOPPING_GOODS_TYPE_XM.equals(shoppingGoods.getGoodType())) {
@@ -644,32 +643,29 @@
private void taocanTk(ProjUseOperationDto projUseOperationDto) {
List<SysProjUse> projUseList = sysProjUseDao.selectByOrderItemId(projUseOperationDto.getOrderItemId());
+
List<SysProjUse> tcList = projUseList.stream().filter(item -> Objects.isNull(item.getTaocanId()) && item.getStatus().equals(Dictionary.TAOCAN_STATUS_YX) ).collect(Collectors.toList());
if (tcList.size() < projUseOperationDto.getCount()) {
throw new GlobleException("套餐余次不足");
}
- for (int i = 0; i < tcList.size(); i++) {
+ projUseOperationDto.setOrderOperationType(OrderOperationEnum.RETURN);
+ for (int i = 0; i < projUseOperationDto.getCount(); i++) {
SysProjUse sysProjUse = tcList.get(i);
- setInvalid(sysProjUse);
+ setTaocanTk(sysProjUse,projUseOperationDto);
//设置套餐下的项目无效
- projUseList.stream().filter(item->item.getTaocanId().equals(sysProjUse.getId())).collect(Collectors.toList())
- .forEach(item->setInvalid(item));
+ projUseList.stream().filter(item->Objects.equals(sysProjUse.getId(),item.getTaocanId())).collect(Collectors.toList())
+ .forEach(item-> setTaocanTk(item,projUseOperationDto));
}
}
- private void setInvalid(SysProjUse sysProjUse) {
- SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+ private void setTaocanTk(SysProjUse sysProjUse, ProjUseOperationDto projUseOperationDto) {
sysProjUse.setIsOver(Dictionary.FLAG_YES_Y);
- sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX);
+ sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_TK);
sysProjUse.setSurplusCount(0);
sysProjUseDao.update(sysProjUse);
- SysProjUseFlow sysProjUseFlow = SysProjUseMapper.INSTANCE.projUseToFlow(sysProjUse);
- sysProjUseFlow.setOptionType("退款修改");
- sysProjUseFlow.setUpdateBy(user.getSuName());
- sysProjUseFlow.setCreateBy(user.getSuName());
- sysProjUseDao.insertFlow(sysProjUseFlow);
+ saveProjUseFlow(projUseOperationDto,sysProjUse);
}
/**
@@ -678,7 +674,6 @@
*/
private void doProjectTk(ProjUseOperationDto projUseOperationDto) {
- SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
List<SysProjUse> projUseList = sysProjUseDao.selectByOrderItemId(projUseOperationDto.getOrderItemId());
if(projUseList.size()==1){
SysProjUse sysProjUse = projUseList.get(0);
@@ -687,19 +682,30 @@
throw new GlobleException("项目余次不足");
} else if (sub == 0) {
sysProjUse.setIsOver(Dictionary.FLAG_YES_Y);
- sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX);
+ sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_TK);
}
sysProjUse.setSurplusCount(sub);
sysProjUseDao.update(sysProjUse);
- SysProjUseFlow sysProjUseFlow = SysProjUseMapper.INSTANCE.projUseToFlow(sysProjUse);
- sysProjUseFlow.setOptionType("退款修改");
-
- sysProjUseFlow.setUpdateBy(user.getSuName());
- sysProjUseFlow.setCreateBy(user.getSuName());
- sysProjUseDao.insertFlow(sysProjUseFlow);
+ projUseOperationDto.setOrderOperationType(OrderOperationEnum.RETURN);
+ //保存操作流水
+ saveProjUseFlow(projUseOperationDto,sysProjUse);
}else{
throw new GlobleException("查询项目余次异常");
}
+ }
+
+ /**
+ * 保存项目操作流水
+ * @param projUseOperationDto
+ * @param sysProjUse
+ */
+ private void saveProjUseFlow(ProjUseOperationDto projUseOperationDto, SysProjUse sysProjUse) {
+ SysProjUseFlow sysProjUseFlow = SysProjUseMapper.INSTANCE.projUseToFlow(sysProjUse);
+ sysProjUseFlow.setOptionType(projUseOperationDto.getOrderOperationType().getDisplayName());
+ SysUsers user = sysUsersDao.selectById(projUseOperationDto.getUpdateUserId());
+ sysProjUseFlow.setUpdateBy(user.getSuName());
+ sysProjUseFlow.setCreateBy(user.getSuName());
+ sysProjUseDao.insertFlow(sysProjUseFlow);
}
/**
@@ -719,6 +725,7 @@
Map<Long, ShoppingGoods> shoppingGoodsMap = shoppingGoodsList.stream().collect(Collectors.toMap(ShoppingGoods::getId, Function.identity()));
for (ProjUseOperationDto projUseOperationDto : projUseDtoList) {
+
ShoppingGoods shoppingGoods = shoppingGoodsMap.get(projUseOperationDto.getGoodsId());
if (Dictionary.SHOPPING_GOODS_TYPE_XM.equals(shoppingGoods.getGoodType())) {
createProjectUse(projUseOperationDto, shoppingGoods);
@@ -735,19 +742,15 @@
private void createTaocanProjUse(ProjUseOperationDto projUseOperationDto, ShoppingGoods shoppingGoods) {
- ParameterValidate.ValidResult baseIdResult = ParameterValidate.validateBean(projUseOperationDto, ProjUseGroup.addTc.class);
- if (baseIdResult.hasErrors()) {
- throw new GlobleException(baseIdResult.getErrors());
- }
+
+ GroupValidateStatusCheckUtil.check(projUseOperationDto,ProjUseGroup.addTc.class);
//新建套餐
SysProjUse taocanProjUse = new SysProjUse();
ShoppingGoods taocanShoppingGoods = shoppingGoods;
-
Long projId = shoppingGoods.getId();
-
taocanProjUse.setProjId(projId);
taocanProjUse.setIsOver(Dictionary.DELETED_N);
@@ -784,6 +787,7 @@
projUseDto.setOrderItemId(projUseOperationDto.getOrderItemId());
projUseDto.setVipId(projUseOperationDto.getVipId());
projUseDto.setTcId(taocanProjUse.getId());
+ projUseDto.setUpdateUserId(projUseOperationDto.getUpdateUserId());
SysProjUse tempUse = createProjectUse(projUseDto, assemble.getShoppingGoods());
sumBanance += tempUse.getBalance();
surplusCount += tempUse.getSurplusCount();
@@ -804,10 +808,7 @@
private SysProjUse createProjectUse(ProjUseOperationDto projUseOperationDto, ShoppingGoods shoppingGoods) {
- ParameterValidate.ValidResult baseIdResult = ParameterValidate.validateBean(projUseOperationDto, ProjUseGroup.addProject.class);
- if (baseIdResult.hasErrors()) {
- throw new GlobleException(baseIdResult.getErrors());
- }
+ GroupValidateStatusCheckUtil.check(projUseOperationDto,ProjUseGroup.addProject.class);
SysProjUse puse = new SysProjUse();
puse.setIsOver(Dictionary.DELETED_N);
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/validation/MoneyCardUseGroup.java b/zq-erp/src/main/java/com/matrix/system/hive/validation/MoneyCardUseGroup.java
index bb8b3b0..7bfcbc7 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/validation/MoneyCardUseGroup.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/validation/MoneyCardUseGroup.java
@@ -9,4 +9,16 @@
interface moneyCardUseTk {
}
+ /**
+ * 充值
+ */
+ interface moneyCardUseCz {
+ }
+
+ /**
+ * 订单修改金额
+ */
+ interface moneyCardUseOrderChange {
+ }
+
}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/validation/ProjUseGroup.java b/zq-erp/src/main/java/com/matrix/system/hive/validation/ProjUseGroup.java
index 6f3cf37..c3b90ed 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/validation/ProjUseGroup.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/validation/ProjUseGroup.java
@@ -21,4 +21,10 @@
interface projectTk {
}
+ /**
+ * 套餐退款
+ */
+ interface taocanTk {
+ }
+
}
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysInstoreInfoDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysInstoreInfoDao.xml
index 1c2d8c7..51b0065 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysInstoreInfoDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/SysInstoreInfoDao.xml
@@ -34,7 +34,6 @@
<insert id="insert" parameterType="SysInstoreInfo"
useGeneratedKeys="true" keyProperty="id">
INSERT INTO sys_instore_info (
- ID,
INSTORE_DATE,
INSTORE_TYPE,
AMMOUNT_ALL,
@@ -52,7 +51,6 @@
company_id
)
VALUES (
- #{id},
#{instoreDate},
#{instoreType},
#{ammountAll},
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml
index 81ed5fc..93cdba5 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml
@@ -565,5 +565,10 @@
left join sys_order b on a.ORDER_ID=b.id
where a.type='家居产品' and DATE_FORMAT(a.create_time,'%Y-%m')='2021-04' and b.company_id=17 and b.STATU='已付款';
</select>
+ <select id="selectOrderStatusByItemId" resultType="java.lang.String">
+ select b.statu from sys_order_item a
+ left join sys_order b on a.ORDER_ID=b.id
+ where a.id=#{orderItemId}
+ </select>
</mapper>
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/orderXq-form.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/orderXq-form.html
index 2e3cc8b..f496dba 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/orderXq-form.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/orderXq-form.html
@@ -212,8 +212,10 @@
label="单价">
</el-table-column>
<el-table-column
- prop="count"
label="可退数量">
+ <template slot-scope="scope">
+ {{scope.row.count- scope.row.refundCount}}
+ </template>
</el-table-column>
<el-table-column label="退款单价">
<template slot-scope="scope">
@@ -683,7 +685,7 @@
}
}
- item.achaeveList = achieveList;
+ item.achieveList = achieveList;
}
if (item.returnStore) {
item.isReturnStore = 'Y';
--
Gitblit v1.9.1