From 0893fd52576e75d073902c29b11ec94ad2dba2ab Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 11 Dec 2020 18:05:51 +0800
Subject: [PATCH] modify add order and servier order invalid time
---
zq-erp/src/main/java/com/matrix/system/hive/dao/SysBeauticianStateDao.java | 4 ++
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjServicesServiceImpl.java | 18 ++++++++
zq-erp/src/main/resources/mybatis/mapper/hive/SysBeauticianStateDao.xml | 19 ++++++++-
zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java | 21 +++++++++-
zq-erp/src/main/java/com/matrix/system/hive/service/ShoppingGoodsService.java | 2
zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml | 3 +
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 16 ++++---
7 files changed, 68 insertions(+), 15 deletions(-)
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysBeauticianStateDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysBeauticianStateDao.java
index c701b27..6a318c6 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/dao/SysBeauticianStateDao.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dao/SysBeauticianStateDao.java
@@ -2,6 +2,7 @@
import com.matrix.core.pojo.PaginationVO;
import com.matrix.system.hive.bean.SysBeauticianState;
+import com.matrix.system.hive.bean.SysProjUse;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
@@ -73,5 +74,8 @@
public int summaryItemDetailTotal(Map<String,Object> obj);
+ List<SysBeauticianState> selectByProjUse(@Param("list") List<SysProjUse> list, @Param("state") String state);
+
+ List<SysBeauticianState> selectBeauticianStateByPuseIdAndNoStatus(@Param("puseId") Long puseId, @Param("state") String state);
}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/ShoppingGoodsService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/ShoppingGoodsService.java
index 116c7e7..16c6ad5 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/ShoppingGoodsService.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/ShoppingGoodsService.java
@@ -100,5 +100,5 @@
public ShoppingGoods findByCode(String goodsCode);
- Date calInvalidTime(ShoppingGoods shoppingGoods, Integer type);
+ Date calInvalidTime(ShoppingGoods shoppingGoods, Integer type, Date buyDate);
}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java
index 1966a30..bcc6590 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java
@@ -428,16 +428,31 @@
*
* @param shoppingGoods
* @param type 1 - 购买时 2 - 消耗时
+ * @param buyDate 购买日期, 当计算消耗日期时,不能为空
* @return
*/
@Override
- public Date calInvalidTime(ShoppingGoods shoppingGoods, @NotNull Integer type) {
+ public Date calInvalidTime(ShoppingGoods shoppingGoods, @NotNull Integer type, Date buyDate) {
if (StringUtils.isBlank(shoppingGoods.getBuyValid()) && StringUtils.isBlank(shoppingGoods.getUseValid()) && shoppingGoods.getInvalidTime() == null) {
return null;
}
+
+ if (type == 2 && buyDate == null) {
+ throw new GlobleException("购买日期不能为空");
+ }
+
Date target = null;
- Date buyValidDate = DateUtil.calDate(shoppingGoods.getBuyDateNum(), shoppingGoods.getBuyDateUnit());
- Date useValidDate = DateUtil.calDate(shoppingGoods.getUseDateNum(), shoppingGoods.getUseDateUnit());
+ Date buyValidDate = null;
+ if (type == 1) {
+ buyValidDate = DateUtil.calDate(shoppingGoods.getBuyDateNum(), shoppingGoods.getBuyDateUnit());
+ } else {
+ buyValidDate = buyDate;
+ }
+
+ Date useValidDate = DateUtil.stringToDate("9999-12-31", DateUtil.DATE_FORMAT_DD);
+ if (type == 2) {
+ useValidDate = DateUtil.calDate(shoppingGoods.getUseDateNum(), shoppingGoods.getUseDateUnit());
+ }
if (buyValidDate.after(useValidDate)) {
target = useValidDate;
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 f9d3d2e..2981768 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
@@ -22,6 +22,7 @@
import com.matrix.system.hive.pojo.ShoppingCarItemsVo;
import com.matrix.system.hive.service.AchieveNewService;
import com.matrix.system.hive.service.CodeService;
+import com.matrix.system.hive.service.ShoppingGoodsService;
import com.matrix.system.hive.service.SysOrderService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -80,6 +81,9 @@
@Autowired
private WarehouseDao warehouseDao;
+
+ @Autowired
+ private ShoppingGoodsService shoppingGoodsService;
@Override
public int add(SysOrder sysOrder) {
@@ -1051,10 +1055,9 @@
} else {
taocanProjUse.setSource(Dictionary.TAOCAN_SOURCE_ZS);
}
- // TODO 设置失效时间
- Calendar cal = Calendar.getInstance();
- cal.set(2200, 1, 1);
- taocanProjUse.setFailTime(cal.getTime());
+ // 失效时间
+ Date invalidTime = shoppingGoodsService.calInvalidTime(taocanShoppingGoods, 1, null);
+ taocanProjUse.setFailTime(invalidTime);
sysProjUseDao.insert(taocanProjUse);
//计划次数
int surplusCount=0;
@@ -1104,9 +1107,8 @@
puse.setSource(Dictionary.TAOCAN_SOURCE_ZS);
}
// 设置失效时间
- Calendar cal = Calendar.getInstance();
- cal.set(2300, 1, 1);
- puse.setFailTime(cal.getTime());
+ Date invalidTime = shoppingGoodsService.calInvalidTime(sysOrderItem.getShoppingGoods(), 1, null);
+ puse.setFailTime(invalidTime);
sysProjUseDao.insert(puse);
}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjServicesServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjServicesServiceImpl.java
index ada929f..ba5d616 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjServicesServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjServicesServiceImpl.java
@@ -97,6 +97,8 @@
private SysOrderService sysOrderService;
@Autowired
WarehouseDao warehouseDao;
+ @Resource
+ private ShoppingGoodsService shoppingGoodsService;
/**
* 新增服务单 jyy
@@ -118,7 +120,6 @@
sysProjServices.setServiceNo(codeService.getServiceOrderCode());
Double hkPrice = 0.0;
int i = sysProjServicesDao.insert(sysProjServices);
-
// 计算项目总时长
int totalTime = 0;
//处理订单明细
@@ -144,6 +145,14 @@
//本次消费金额
Double bcxfje = MoneyUtil.mul(sysProjUse.getPrice(), Double.valueOf(sysBeauticianState.getCount()));
upProjUse.setBalance(MoneyUtil.sub(sysProjUse.getBalance(), bcxfje));
+
+ // 判断是否第一次使用该项目, 若是则根据商品消耗有效期更新到期时间
+ List<SysBeauticianState> sysBeauticianStates = beauticianStateDao.selectBeauticianStateByPuseIdAndNoStatus(sysBeauticianState.getPuseId(), Dictionary.SERVICE_STATU_YYQX);
+ if (CollectionUtils.isEmpty(sysBeauticianStates)) {
+ Date useInvalidTime = shoppingGoodsService.calInvalidTime(sysProjInfo, 2, sysProjUse.getFailTime());
+ upProjUse.setFailTime(useInvalidTime);
+ }
+
//更新余次信息
sysProjUseDao.updateSurplusCount(upProjUse);
//如果项目是套餐 中项目则判断套餐是否失效
@@ -167,6 +176,13 @@
taocan.setSurplusCount(tcSurplusCount);
}
}
+
+ // 根据套餐内所有项目查询该套餐是否第一次使用,若第一次使用则更新该套餐有效期
+ List<SysBeauticianState> taocanHas = beauticianStateDao.selectByProjUse(taocanProjUses, Dictionary.SERVICE_STATU_YYQX);
+ if (CollectionUtils.isEmpty(taocanHas)) {
+ Date useInvalidTime = shoppingGoodsService.calInvalidTime(sysProjInfo, 2, sysProjUse.getFailTime());
+ taocan.setFailTime(useInvalidTime);
+ }
sysProjUseDao.updateSurplusCount(taocan);
}
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysBeauticianStateDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysBeauticianStateDao.xml
index 14241e6..53956bf 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysBeauticianStateDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/SysBeauticianStateDao.xml
@@ -355,9 +355,9 @@
SERVICES_ID,
EXC_TIME,
extract,
- a.puse_id,
- a.count,
- a.proj_id
+ puse_id,
+ count,
+ proj_id
</sql>
<sql id="from">
from sys_beautician_state
@@ -614,4 +614,17 @@
group by c.id,f.id) t
</select>
+ <select id="selectByProjUse" resultMap="SysBeauticianStateMap">
+ select * from sys_beautician_state
+ where state!=#{state} puse_id in
+ <foreach collection="list" index="index" item="item" open="("
+ separator="," close=")">
+ #{item.id}
+ </foreach>
+ </select>
+
+ <select id="selectBeauticianStateByPuseIdAndNoStatus" resultMap="SysBeauticianStateMap">
+ select * from sys_beautician_state
+ where puse_id=#{puseId} ans state!=#{state}
+ </select>
</mapper>
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml
index 3914259..8dd31a1 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml
@@ -179,6 +179,9 @@
<if test="deductionNum != null ">
deductionNum = #{deductionNum},
</if>
+ <if test="failTime != null ">
+ fail_time = #{failTime},
+ </if>
</set>
WHERE ID = #{id}
--
Gitblit v1.9.1