领料减免帐开发
This commit is contained in:
parent
1cf2bf7fb9
commit
cf7d80ad44
|
|
@ -349,4 +349,22 @@ public class TmTask implements Serializable {
|
||||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
|
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
|
||||||
private Date outTime;
|
private Date outTime;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "修改前时间")
|
||||||
|
private Date preTime;
|
||||||
|
private BigDecimal leaseFee;
|
||||||
|
private int costType;
|
||||||
|
private long days;
|
||||||
|
|
||||||
|
public void setLeaseFee(BigDecimal leaseFee) {
|
||||||
|
this.leaseFee = leaseFee;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCostType(int i) {
|
||||||
|
this.costType = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDays(long day) {
|
||||||
|
this.days = day;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -62,4 +62,5 @@ public interface LeaseApplyDetailsMapper {
|
||||||
|
|
||||||
List<com.bonus.sgzb.material.domain.LeaseApplyDetails> getLeaseApplyDetailsTypeCount(BackApplyInfo bean);
|
List<com.bonus.sgzb.material.domain.LeaseApplyDetails> getLeaseApplyDetailsTypeCount(BackApplyInfo bean);
|
||||||
|
|
||||||
}
|
void insertSltFee(TmTask tmTask);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -121,4 +121,6 @@ public interface LeaseOutDetailsMapper {
|
||||||
List<TmTask> getSlt(TmTask bean);
|
List<TmTask> getSlt(TmTask bean);
|
||||||
|
|
||||||
int updateOutTimeSlt(TmTask bean);
|
int updateOutTimeSlt(TmTask bean);
|
||||||
|
|
||||||
|
List<TmTask> getSltFeeList(TmTask bean);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,9 @@ import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpSession;
|
import javax.servlet.http.HttpSession;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.YearMonth;
|
||||||
|
import java.time.ZoneId;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -245,6 +248,9 @@ public class LeaseOutDetailsServiceImpl implements LeaseOutDetailsService {
|
||||||
return AjaxResult.error("出库时间修改失败");
|
return AjaxResult.error("出库时间修改失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//冲减帐
|
||||||
|
int l = updateTimeAccount( bean);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("出库时间修改成功", e.getMessage());
|
log.error("出库时间修改成功", e.getMessage());
|
||||||
throw new RuntimeException("出库时间修改成功");
|
throw new RuntimeException("出库时间修改成功");
|
||||||
|
|
@ -252,6 +258,112 @@ public class LeaseOutDetailsServiceImpl implements LeaseOutDetailsService {
|
||||||
return AjaxResult.success("出库时间修改成功");
|
return AjaxResult.success("出库时间修改成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int updateTimeAccount(TmTask bean) {
|
||||||
|
|
||||||
|
// isNeed =0 不冲减 1加 2减
|
||||||
|
int isNeed = 0;
|
||||||
|
//1是否需要冲减
|
||||||
|
isNeed = judgeTime(bean);
|
||||||
|
//2 加费用
|
||||||
|
if(isNeed == 1){
|
||||||
|
addMonthFee(bean);
|
||||||
|
}
|
||||||
|
//3 减费用
|
||||||
|
if(isNeed == 2){
|
||||||
|
subMonthFee(bean);
|
||||||
|
}
|
||||||
|
return isNeed ;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void subMonthFee(TmTask bean) {
|
||||||
|
List<TmTask> list = leaseOutDetailsMapper.getSltFeeList(bean);
|
||||||
|
for (TmTask tmTask : list) {
|
||||||
|
//比之前减了几天,计算减少的租赁费用
|
||||||
|
String typeId = tmTask.getTypeId();
|
||||||
|
Integer outNum = tmTask.getOutNum();
|
||||||
|
BigDecimal leasePrice = tmTask.getLeasePrice();
|
||||||
|
Integer agreementId = tmTask.getAgreementId();
|
||||||
|
Date StartTime = bean.getPreTime();
|
||||||
|
Date endTime = bean.getOutTime();
|
||||||
|
long day = DateUtil.betweenDay(StartTime, endTime, true);
|
||||||
|
BigDecimal leaseFee = leasePrice.multiply(new BigDecimal(day)).multiply(new BigDecimal(outNum));
|
||||||
|
TmTask fee = new TmTask();
|
||||||
|
fee.setTypeId(typeId);
|
||||||
|
fee.setLeaseFee(leaseFee);
|
||||||
|
fee.setStartTime(StartTime+"");
|
||||||
|
fee.setEndTime(endTime+"");
|
||||||
|
fee.setDays(day);
|
||||||
|
fee.setCostType(2);
|
||||||
|
fee.setAgreementId(agreementId);
|
||||||
|
//4存入临时表
|
||||||
|
leaseApplyDetailsMapper.insertSltFee(tmTask);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addMonthFee(TmTask bean) {
|
||||||
|
List<TmTask> list = leaseOutDetailsMapper.getSltFeeList(bean);
|
||||||
|
for (TmTask tmTask : list) {
|
||||||
|
//比之前多了几天,计算增加的租赁费用
|
||||||
|
String typeId = tmTask.getTypeId();
|
||||||
|
Integer outNum = tmTask.getOutNum();
|
||||||
|
BigDecimal leasePrice = tmTask.getLeasePrice();
|
||||||
|
Integer agreementId = tmTask.getAgreementId();
|
||||||
|
Date StartTime = bean.getOutTime();
|
||||||
|
Date endTime = bean.getPreTime();
|
||||||
|
long day = DateUtil.betweenDay(StartTime, endTime, true);
|
||||||
|
BigDecimal leaseFee = leasePrice.multiply(new BigDecimal(day)).multiply(new BigDecimal(outNum));
|
||||||
|
TmTask fee = new TmTask();
|
||||||
|
fee.setTypeId(typeId);
|
||||||
|
fee.setLeaseFee(leaseFee);
|
||||||
|
fee.setStartTime(StartTime+"");
|
||||||
|
fee.setEndTime(endTime+"");
|
||||||
|
fee.setCostType(1);
|
||||||
|
fee.setDays(day);
|
||||||
|
fee.setAgreementId(agreementId);
|
||||||
|
//4存入临时表
|
||||||
|
leaseApplyDetailsMapper.insertSltFee(tmTask);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private int judgeTime(TmTask bean) {
|
||||||
|
int isNeed = 0;
|
||||||
|
|
||||||
|
Date preTime = bean.getPreTime();
|
||||||
|
Date outTime = bean.getOutTime();
|
||||||
|
//判断修改前和修改后的时间是否在本月区间(上个月21号-到当月20号),若果在则isNeed=0,否则,修改后的时间在当月之前则isNeed=1,修改时间在时间之后则isNeed=2
|
||||||
|
isNeed = checkTimeInCycle(preTime, outTime);
|
||||||
|
|
||||||
|
return isNeed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int checkTimeInCycle(Date preTime, Date outTime) {
|
||||||
|
// 转换为LocalDate
|
||||||
|
LocalDate preDate = preTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
||||||
|
LocalDate outDate = outTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
||||||
|
|
||||||
|
// 获取当前周期范围(上月21日-当月20日)
|
||||||
|
LocalDate currentDate = LocalDate.now();
|
||||||
|
YearMonth lastMonth = YearMonth.from(currentDate).minusMonths(1);
|
||||||
|
LocalDate cycleStart = lastMonth.atDay(21);
|
||||||
|
LocalDate cycleEnd = currentDate.withDayOfMonth(20);
|
||||||
|
|
||||||
|
// 判断逻辑
|
||||||
|
if (isInCycle(preDate, cycleStart, cycleEnd) &&
|
||||||
|
isInCycle(outDate, cycleStart, cycleEnd)) {
|
||||||
|
return 0; // 都在周期内
|
||||||
|
} else if (outDate.isBefore(cycleStart)) {
|
||||||
|
return 1; // 修改时间早于周期
|
||||||
|
} else if (outDate.isAfter(cycleEnd)) {
|
||||||
|
return 2; // 修改时间晚于周期
|
||||||
|
} else {
|
||||||
|
return 0; // 仅修改时间在周期内
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isInCycle(LocalDate date, LocalDate start, LocalDate end) {
|
||||||
|
return !date.isBefore(start) && !date.isAfter(end);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -632,4 +632,9 @@
|
||||||
where tta.agreement_id = #{agreementId} and lad.`status` = '2'
|
where tta.agreement_id = #{agreementId} and lad.`status` = '2'
|
||||||
group by lad.type_id
|
group by lad.type_id
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<insert id="insertSltFee">
|
||||||
|
insert into project_temp_cost (agreement_id,type_id, lease_num, start_time,end_time, day, price, lease_money, cost_type, mark_time)
|
||||||
|
values (#{agreementId}, #{typeId}, #{outNum}, #{startTime}, #{endTime}, #{day}, #{leasePrice}, #{leaseFee}, #{costType}, now())
|
||||||
|
</insert>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
|
|
@ -567,4 +567,20 @@
|
||||||
WHERE
|
WHERE
|
||||||
lease_id = #{id}
|
lease_id = #{id}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<select id="getSltFeeList" resultType="com.bonus.sgzb.app.domain.TmTask">
|
||||||
|
SELECT
|
||||||
|
id AS id,
|
||||||
|
agreement_id AS agreementId,
|
||||||
|
type_id AS typeId,
|
||||||
|
num as outNum,
|
||||||
|
lease_price AS leasePrice
|
||||||
|
FROM
|
||||||
|
slt_agreement_info
|
||||||
|
WHERE
|
||||||
|
lease_id = #{id}
|
||||||
|
<if test="typeId != null and typeId != ''">
|
||||||
|
AND type_id = #{typeId}
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue