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