From 660fba5b40303dd661afcc2e2bd54a18d4f53c5c Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 09 Dec 2020 19:14:44 +0800
Subject: [PATCH] add invalid time function
---
zq-erp/src/main/java/com/matrix/core/tools/DateUtil.java | 100 +++++++++++++------
zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java | 102 ++++++++++++++++++++
zq-erp/src/main/java/com/matrix/system/hive/service/imp/ShoppingGoodsServiceImpl.java | 25 ++++
zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml | 19 +++
zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html | 40 +++++++
5 files changed, 248 insertions(+), 38 deletions(-)
diff --git a/zq-erp/src/main/java/com/matrix/core/tools/DateUtil.java b/zq-erp/src/main/java/com/matrix/core/tools/DateUtil.java
index bb10294..4fdaef7 100644
--- a/zq-erp/src/main/java/com/matrix/core/tools/DateUtil.java
+++ b/zq-erp/src/main/java/com/matrix/core/tools/DateUtil.java
@@ -5,6 +5,7 @@
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
@@ -12,7 +13,7 @@
/**
* 日期格式化,转换工具类
- *
+ *
* @author Ron
* @createTime 2014.08.30
*/
@@ -90,7 +91,7 @@
/**
* 返回年份
- *
+ *
* @param date
* 日期
* @return 返回年份
@@ -137,7 +138,7 @@
}
/**
* 返回月份
- *
+ *
* @param date
* 日期
* @return 返回月份
@@ -149,14 +150,14 @@
c.setTime(date);
return c.get(Calendar.MONTH) + 1;
} catch (Exception e) {
-
+
}
return 0;
}
/**
* 日期转字符串
- *
+ *
* @param date
* @param format
* @return
@@ -172,7 +173,7 @@
/**
* 字符串转日期
- *
+ *
* @param dateStr
* @param format
* @return
@@ -183,7 +184,7 @@
try {
return fmt.parse(dateStr);
} catch (ParseException e) {
-
+
}
return null;
}
@@ -199,7 +200,7 @@
/**
* 判断给定的日期是一周中的第几天,注意:按照中国的习惯,周日是第七天
- *
+ *
* @param date
* @return
*/
@@ -225,7 +226,7 @@
/**
* 指定时间的下一天
- *
+ *
* @param date
* @return
*/
@@ -241,7 +242,7 @@
cal.add(Calendar.DATE, 1);
return cal.getTime();
} catch (Exception e) {
-
+
}
return null;
@@ -249,7 +250,7 @@
/**
* 指定时间的前一天
- *
+ *
* @param date
* @return
*/
@@ -265,7 +266,7 @@
cal.add(Calendar.DATE, -1);
return cal.getTime();
} catch (Exception e) {
-
+
}
return null;
@@ -273,7 +274,7 @@
/**
* 指定时间的下N天
- *
+ *
* @param date
* @return
*/
@@ -289,7 +290,7 @@
cal.add(Calendar.DATE, nDay);
return cal.getTime();
} catch (Exception e) {
-
+
}
return null;
@@ -297,7 +298,7 @@
/**
* 指定时间的前N天
- *
+ *
* @param date
* @return
*/
@@ -313,7 +314,7 @@
cal.add(Calendar.DATE, -nDay);
return cal.getTime();
} catch (Exception e) {
-
+
}
return null;
@@ -321,7 +322,7 @@
/**
* 获取一天的起始时间
- *
+ *
* @param date
* @return
*/
@@ -338,7 +339,7 @@
try {
return fmt.parse(dateStr);
} catch (ParseException e) {
-
+
}
return date;
@@ -346,7 +347,7 @@
/**
* 获取一天的结束时间
- *
+ *
* @param date
* @return
*/
@@ -363,7 +364,7 @@
try {
return fmt.parse(dateStr);
} catch (ParseException e) {
-
+
}
return date;
@@ -371,7 +372,7 @@
/**
* currentDat是否在referenceDate日期之前
- *
+ *
* @param referenceDate
* @param currentDat
* @return
@@ -389,7 +390,7 @@
/**
* currentDat是否在referenceDate日期之后
- *
+ *
* @param referenceDate
* @param currentDat
* @return
@@ -436,7 +437,7 @@
}
/**
* 判断currentDate是否在startDate和endDate之间,不包括startDate和endDate
- *
+ *
* @param startDate
* @param endDate
* @param currentDate
@@ -454,11 +455,11 @@
return false;
}
-
+
/**
* 获取startDate到endDate之间的星期day(中文星期)不包括startDate和endDate
- *
+ *
* @param startDate
* @param endDate
* @param day
@@ -483,11 +484,11 @@
return listDate;
}
-
+
/**
* date转换成Timestamp
- *
+ *
* @param date
* @param format
* @return
@@ -507,7 +508,7 @@
/**
* 获取早中晚
- *
+ *
* @param time
* @return
*/
@@ -530,7 +531,7 @@
/**
* 获取早中晚的开始时间
- *
+ *
* @param date
* @param time
* @return
@@ -554,7 +555,7 @@
/**
* 获取早中晚的结束时间
- *
+ *
* @param date
* @param time
* @return
@@ -578,7 +579,7 @@
/**
* 得到几天前的时间
- *
+ *
* @param d
* @param day
* @return
@@ -592,7 +593,7 @@
/**
* 得到几天后的时间
- *
+ *
* @param d
* @param day
* @return
@@ -606,7 +607,7 @@
/**
* 将日期类型格式化成字符串
- *
+ *
* @param date
* @return 格式化后日期字符串
* @throws ParseException
@@ -622,7 +623,7 @@
/**
* 获取时间戳
- *
+ *
* @return
*/
public static String getTimeMark() {
@@ -694,4 +695,35 @@
}
return um;
}
+
+ /**
+ * 根据单位计算目标日期
+ *
+ * @param num 距离
+ * @param unit 日期单位 Y/M/D
+ * @return
+ */
+ public static Date calDate(Integer num, String unit) {
+ Calendar calendar = Calendar.getInstance();
+ Date targetDate = null;
+ switch (unit) {
+ case "Y":
+ calendar.add(Calendar.YEAR, num);
+ targetDate = calendar.getTime();
+ break;
+ case "M":
+ calendar.add(Calendar.MONTH, num);
+ targetDate = calendar.getTime();
+ break;
+ case "D":
+ calendar.add(Calendar.DAY_OF_MONTH, num);
+ targetDate = calendar.getTime();
+ break;
+ default:
+ targetDate = new Date();
+
+ }
+
+ return targetDate;
+ }
}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java
index e75be3b..32be44f 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java
@@ -2,6 +2,7 @@
import com.matrix.core.anotations.Extend;
import com.matrix.core.tools.DateUtil;
+import com.matrix.core.tools.StringUtils;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
@@ -393,7 +394,108 @@
*/
private Integer isDel;
+ /**
+ * 购买有效期
+ */
+ private String buyValid;
+ /**
+ * 购买有效期单位 - 扩展字段用于参数接收 y/m/d
+ */
+ private String buyDateUnit;
+
+ /**
+ * 购买有效期时长
+ */
+ private Integer buyDateNum;
+
+ /**
+ * 消耗有效期
+ */
+ private String useValid;
+
+ /**
+ * 消耗有效期单位 - 扩展字段用于参数接收 y/m/d
+ */
+ private String useDateUnit;
+
+ /**
+ * 消耗有效期时长
+ */
+ private Integer useDateNum;
+
+ /**
+ * 失效时间
+ */
+ private Date invalidTime;
+
+ public Integer getBuyDateNum() {
+ return buyDateNum;
+ }
+
+ public void setBuyDateNum(Integer buyDateNum) {
+ this.buyDateNum = buyDateNum;
+ }
+
+ public Integer getUseDateNum() {
+ return useDateNum;
+ }
+
+ public void setUseDateNum(Integer useDateNum) {
+ this.useDateNum = useDateNum;
+ }
+
+ public String getBuyValid() {
+ return buyValid;
+ }
+
+ public void setBuyValid(String buyValid) {
+ if (StringUtils.isNotBlank(buyValid)) {
+ if (buyValid.contains("Y") || buyValid.contains("M") || buyValid.contains("D")) {
+ this.buyDateUnit = buyValid.substring(buyValid.length() - 1);
+ this.buyDateNum = Integer.parseInt(buyValid.substring(0, buyValid.length() - 1));
+ }
+ }
+ this.buyValid = buyValid;
+ }
+
+ public String getBuyDateUnit() {
+ return buyDateUnit;
+ }
+
+ public void setBuyDateUnit(String buyDateUnit) {
+ this.buyDateUnit = buyDateUnit;
+ }
+
+ public String getUseValid() {
+ return useValid;
+ }
+
+ public void setUseValid(String useValid) {
+ if (StringUtils.isNotBlank(useValid)) {
+ if (useValid.contains("Y") || useValid.contains("M") || useValid.contains("D")) {
+ this.useDateUnit = useValid.substring(useValid.length() - 1);
+ this.useDateNum = Integer.parseInt(useValid.substring(0, useValid.length() - 1));
+ }
+ }
+ this.useValid = useValid;
+ }
+
+ public String getUseDateUnit() {
+ return useDateUnit;
+ }
+
+ public void setUseDateUnit(String useDateUnit) {
+ this.useDateUnit = useDateUnit;
+ }
+
+ public Date getInvalidTime() {
+ return invalidTime;
+ }
+
+ public void setInvalidTime(Date invalidTime) {
+ this.invalidTime = invalidTime;
+ }
public Integer getIsDel() {
return isDel;
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 fc8b5d5..dc8cba5 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
@@ -3,6 +3,7 @@
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.StringUtils;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.common.bean.SysUsers;
@@ -26,6 +27,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.awt.event.WindowStateListener;
+import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -88,6 +90,9 @@
shoppingGoods.setCreateTime(new Date());
setPublicAttr(shoppingGoods);
+
+ setShoppingGoodsInvalidTime(shoppingGoods);
+
if (shoppingGoods.getReferencePice() == null) {
//赠送金额
shoppingGoods.setReferencePice(0D);
@@ -116,6 +121,24 @@
return i;
+ }
+
+ private void setShoppingGoodsInvalidTime(ShoppingGoods shoppingGoods) {
+ // 若未设置购买有效期和消耗有效期,则默认永久有效
+ if (shoppingGoods.getBuyDateNum() == null && shoppingGoods.getUseDateNum() == null) {
+ shoppingGoods.setInvalidTime(DateUtil.stringToDate("9999-12-31", DateUtil.DATE_FORMAT_DD));
+ } else {
+ // 计算失效日期,判断购买有效期和消耗有效期哪个先失效,则为失效日期
+ Date buyValidDate = DateUtil.calDate(shoppingGoods.getBuyDateNum(), shoppingGoods.getBuyDateUnit());
+ Date useValidDate = DateUtil.calDate(shoppingGoods.getUseDateNum(), shoppingGoods.getUseDateUnit());
+ if (buyValidDate.after(useValidDate)) {
+ shoppingGoods.setInvalidTime(useValidDate);
+ } else {
+ shoppingGoods.setInvalidTime(buyValidDate);
+ }
+ shoppingGoods.setBuyValid(shoppingGoods.getBuyDateNum() + shoppingGoods.getBuyDateUnit());
+ shoppingGoods.setUseValid(shoppingGoods.getUseDateNum() + shoppingGoods.getUseDateUnit());
+ }
}
private void setGoodsAssembles(ShoppingGoods shoppingGoods) {
@@ -190,7 +213,7 @@
}
}
-
+ setShoppingGoodsInvalidTime(shoppingGoods);
return shoppingGoodsDao.update(shoppingGoods);
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml
index 09060f2..fac724e 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml
@@ -290,7 +290,10 @@
use_shop,
headquarters,
is_del,
- zjm
+ zjm,
+ buy_valid,
+ use_valid,
+ invalid_time
)
VALUES (
#{id},
@@ -346,7 +349,10 @@
#{useShop},
#{headquarters},
#{isDel},
- #{zjm}
+ #{zjm},
+ #{buyValid},
+ #{useValid},
+ #{invalidTime}
)
</insert>
@@ -519,6 +525,15 @@
<if test="isDel != null and isDel !='' ">
is_del = #{isDel},
</if>
+ <if test="invalidTime != null">
+ invalid_time = #{invalidTime},
+ </if>
+ <if test="buyValid != null and buyValid !='' ">
+ buy_valid = #{buyValid},
+ </if>
+ <if test="useValid != null and useValid !='' ">
+ use_valid = #{useValid},
+ </if>
</set>
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html b/zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html
index a4a4c29..1052739 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html
@@ -892,6 +892,44 @@
</el-date-picker>
</el-form-item>
</el-col>
+ <el-col :offset="2" :span="5">
+ <el-form-item label="购买有效期">
+ <el-col :span="6">
+ <el-form-item label="">
+ <el-input v-model="form.buyDateNum"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item lable="">
+ <el-select v-model="form.buyDateUnit" placeholder="请选择">
+ <el-option
+ v-for="item in dateList"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-form-item>
+ </el-col>
+ <el-col :offset="1" :span="5">
+ <el-form-item label="消耗有效期">
+ <el-col :span="6">
+ <el-input v-model="form.useDateNum"></el-input>
+ </el-col>
+ <el-col :span="12">
+ <el-select v-model="form.useDateUnit" placeholder="请选择">
+ <el-option
+ v-for="item in dateList"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ </el-col>
+ </el-form-item>
+ </el-col>
</el-row>
<el-row v-if="shopInfo.shopType==1">
<el-col :span="10">
@@ -944,7 +982,7 @@
var app = new Vue({
el: '#app',
data: {
-
+ dateList : [{value : 'Y', label : '年'}, {value : 'M', label : '月'}, { value : 'D' , label : '日' }],
selectTreeParam: {
holder: '请选择商品类型',
treeData: [],
--
Gitblit v1.9.1