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; } } 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; 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); 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> 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: [],