1、新增农场合约天数字段,激活方式字段改名,由_Mode改为_Way。

2、调通农场合约的新增、修改和天数计算。
3、引入junit-jupiter-5.7.2,编写天数计算的测试用例。
This commit is contained in:
jlt
2022-04-04 00:59:51 +08:00
parent c42bd7f22b
commit d0b70c1c40
8 changed files with 180 additions and 70 deletions

View File

@ -32,6 +32,11 @@
<artifactId>gson</artifactId>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -77,6 +77,7 @@ public class FarmerContractController extends BaseController
@PostMapping
public AjaxResult add(@RequestBody FarmerContract farmerContract)
{
farmerContract.setCreateBy(getUsername());
return toAjax(farmerContractService.insertFarmerContract(farmerContract));
}
@ -88,6 +89,7 @@ public class FarmerContractController extends BaseController
@PutMapping
public AjaxResult edit(@RequestBody FarmerContract farmerContract)
{
farmerContract.setUpdateBy(getUsername());
return toAjax(farmerContractService.updateFarmerContract(farmerContract));
}

View File

@ -1,7 +1,16 @@
package com.jlt.csa.domain;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Period;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Date;
import java.util.TimeZone;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@ -37,8 +46,8 @@ public class FarmerContract extends BaseEntity
@Excel(name = "合约账户金额")
private BigDecimal balance;
/** 合约重量 */
@Excel(name = "合约重量")
/** 合约斤数 */
@Excel(name = "合约斤数")
private BigDecimal weight;
/** 合约拱棚年限 */
@ -47,15 +56,15 @@ public class FarmerContract extends BaseEntity
/** 激活方式 */
@Excel(name = "激活方式")
private String activateMode;
private String activateWay;
/** 加入凭据号码 */
@Excel(name = "加入凭据号码")
private String joinCredentialNo;
/** 加入日期 */
/** 生效日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "加入日期", width = 30, dateFormat = "yyyy-MM-dd")
@Excel(name = "生效日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date joinDate;
/** 到期日期 */
@ -63,6 +72,10 @@ public class FarmerContract extends BaseEntity
@Excel(name = "到期日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date dueDate;
/** 合约天数 */
@Excel(name = "合约天数")
private Long days;
/** 状态0正常 1停用 */
@Excel(name = "状态", readConverterExp = "0=正常,1=停用")
private String status;
@ -70,6 +83,29 @@ public class FarmerContract extends BaseEntity
/** 删除标志0代表存在 2代表删除 */
private String delFlag;
/**
* 根据生效日期、到期天数计算天数,包含起止日,即两者相加+1
* @return
*/
public Long countDays() {
if (joinDate == null) {
throw new RuntimeException("缺少生效日期!");
}
if (dueDate == null) {
throw new RuntimeException("缺少终止日期!");
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate startDate = LocalDate.parse(simpleDateFormat.format(joinDate), dateTimeFormatter);
LocalDate endDate = LocalDate.parse(simpleDateFormat.format(dueDate), dateTimeFormatter);
this.days = ChronoUnit.DAYS.between(startDate, endDate) + 1;
return this.days;
}
public void setContractId(Long contractId)
{
this.contractId = contractId;
@ -133,14 +169,14 @@ public class FarmerContract extends BaseEntity
{
return archedYears;
}
public void setActivateMode(String activateMode)
public void setActivateWay(String activateWay)
{
this.activateMode = activateMode;
this.activateWay = activateWay;
}
public String getActivateMode()
public String getActivateWay()
{
return activateMode;
return activateWay;
}
public void setJoinCredentialNo(String joinCredentialNo)
{
@ -174,7 +210,15 @@ public class FarmerContract extends BaseEntity
this.status = status;
}
public String getStatus()
public Long getDays() {
return days;
}
public void setDays(Long days) {
this.days = days;
}
public String getStatus()
{
return status;
}
@ -198,7 +242,7 @@ public class FarmerContract extends BaseEntity
.append("balance", getBalance())
.append("weight", getWeight())
.append("archedYears", getArchedYears())
.append("activateMode", getActivateMode())
.append("activateMode", getActivateWay())
.append("joinCredentialNo", getJoinCredentialNo())
.append("joinDate", getJoinDate())
.append("dueDate", getDueDate())

View File

@ -53,6 +53,7 @@ public class FarmerContractServiceImpl implements IFarmerContractService
@Override
public int insertFarmerContract(FarmerContract farmerContract)
{
farmerContract.countDays();
farmerContract.setCreateTime(DateUtils.getNowDate());
return farmerContractMapper.insertFarmerContract(farmerContract);
}
@ -66,6 +67,7 @@ public class FarmerContractServiceImpl implements IFarmerContractService
@Override
public int updateFarmerContract(FarmerContract farmerContract)
{
farmerContract.countDays();
farmerContract.setUpdateTime(DateUtils.getNowDate());
return farmerContractMapper.updateFarmerContract(farmerContract);
}

View File

@ -12,10 +12,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="balance" column="balance" />
<result property="weight" column="weight" />
<result property="archedYears" column="arched_years" />
<result property="activateMode" column="activate_mode" />
<result property="activateWay" column="activate_way" />
<result property="joinCredentialNo" column="join_credential_no" />
<result property="joinDate" column="join_date" />
<result property="dueDate" column="due_date" />
<result property="days" column="days" />
<result property="status" column="status" />
<result property="delFlag" column="del_flag" />
<result property="createBy" column="create_by" />
@ -26,7 +27,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectFarmerContractVo">
select contract_id, farmer_id, member_name, coins, balance, weight, arched_years, activate_mode, join_credential_no, join_date, due_date, status, del_flag, create_by, create_time, update_by, update_time, remark from csa_farmer_contract
select contract_id, farmer_id, member_name, coins, balance, weight, arched_years, activate_way, join_credential_no, join_date, due_date, days, status, del_flag, create_by, create_time, update_by, update_time, remark from csa_farmer_contract
</sql>
<select id="selectFarmerContractList" parameterType="FarmerContract" resultMap="FarmerContractResult">
@ -53,10 +54,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="balance != null">balance,</if>
<if test="weight != null">weight,</if>
<if test="archedYears != null">arched_years,</if>
<if test="activateMode != null and activateMode != ''">activate_mode,</if>
<if test="activateWay != null and activateWay != ''">activate_way,</if>
<if test="joinCredentialNo != null and joinCredentialNo != ''">join_credential_no,</if>
<if test="joinDate != null">join_date,</if>
<if test="dueDate != null">due_date,</if>
<if test="days != null">days,</if>
<if test="status != null">status,</if>
<if test="delFlag != null">del_flag,</if>
<if test="createBy != null">create_by,</if>
@ -72,10 +74,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="balance != null">#{balance},</if>
<if test="weight != null">#{weight},</if>
<if test="archedYears != null">#{archedYears},</if>
<if test="activateMode != null and activateMode != ''">#{activateMode},</if>
<if test="activateWay != null and activateWay != ''">#{activateWay},</if>
<if test="joinCredentialNo != null and joinCredentialNo != ''">#{joinCredentialNo},</if>
<if test="joinDate != null">#{joinDate},</if>
<if test="dueDate != null">#{dueDate},</if>
<if test="days != null">#{days},</if>
<if test="status != null">#{status},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="createBy != null">#{createBy},</if>
@ -95,10 +98,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="balance != null">balance = #{balance},</if>
<if test="weight != null">weight = #{weight},</if>
<if test="archedYears != null">arched_years = #{archedYears},</if>
<if test="activateMode != null and activateMode != ''">activate_mode = #{activateMode},</if>
<if test="activateWay != null and activateWay != ''">activate_way = #{activateWay},</if>
<if test="joinCredentialNo != null and joinCredentialNo != ''">join_credential_no = #{joinCredentialNo},</if>
<if test="joinDate != null">join_date = #{joinDate},</if>
<if test="dueDate != null">due_date = #{dueDate},</if>
<if test="days != null">days = #{days},</if>
<if test="status != null">status = #{status},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="createBy != null">create_by = #{createBy},</if>

View File

@ -0,0 +1,27 @@
package com.jlt.csa.domain;
import org.junit.jupiter.api.Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
/**
* 农场合约测试类
*/
public class FarmContractTests {
/**
* 计算农场合约根据生效日期、终止日期(含)计算天数的方法
* @throws ParseException
*/
@Test
public void testCountDays() throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
FarmerContract c = new FarmerContract();
c.setJoinDate(simpleDateFormat.parse("2021-03-01"));
c.setDueDate(simpleDateFormat.parse("2022-03-01"));
Long days = c.countDays();
System.out.println("Days: " + days);
assert 366 == c.countDays();
}
}