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