材料站结算超期费用修改

This commit is contained in:
bonus 2025-10-14 21:41:16 +08:00
parent 20f399eb35
commit 3bd67c598b
4 changed files with 53 additions and 28 deletions

View File

@ -182,9 +182,10 @@ public class ClzSltAgreementInfoController extends BaseController {
List<MaterialSltAgreementInfo> oneOfList = clzSltAgreementInfoMapper.getLeaseList(sltAgreementInfo); List<MaterialSltAgreementInfo> oneOfList = clzSltAgreementInfoMapper.getLeaseList(sltAgreementInfo);
//设定班组实际出场时间 //设定班组实际出场时间
String date = null;
if(!oneOfList.isEmpty()){ if(!oneOfList.isEmpty()){
String date = "暂无" ;
//先判断是否在场 //先判断是否在场
String exitTime = clzSltAgreementInfoMapper.getTeamSjOutTime(oneOfList.get(0)); String exitTime = clzSltAgreementInfoMapper.getTeamSjOutTime(oneOfList.get(0));
if( exitTime!=null && !exitTime.isEmpty() ){ if( exitTime!=null && !exitTime.isEmpty() ){
@ -196,7 +197,10 @@ public class ClzSltAgreementInfoController extends BaseController {
if(date!=null && !date.isEmpty()){ if(date!=null && !date.isEmpty()){
oneOfList.get(0).setActualExitTime(date); oneOfList.get(0).setActualExitTime(date);
}else{
oneOfList.get(0).setActualExitTime("暂无");
} }
actualTimeAndNames.add(oneOfList.get(0).getUnitName() + "(" + oneOfList.get(0).getActualExitTime()+")"); actualTimeAndNames.add(oneOfList.get(0).getUnitName() + "(" + oneOfList.get(0).getActualExitTime()+")");
projectNames.add(oneOfList.get(0).getProjectName()); projectNames.add(oneOfList.get(0).getProjectName());
unitNames.add(oneOfList.get(0).getUnitName()); unitNames.add(oneOfList.get(0).getUnitName());
@ -216,7 +220,7 @@ public class ClzSltAgreementInfoController extends BaseController {
if (Objects.isNull(bean.getLeaseDays())) { if (Objects.isNull(bean.getLeaseDays())) {
bean.setLeaseDay(0L); bean.setLeaseDay(0L);
} }
bean.setActualExitTime(date);
BigDecimal leasePrice = bean.getLeasePrice(); BigDecimal leasePrice = bean.getLeasePrice();
BigDecimal num = bean.getNum(); BigDecimal num = bean.getNum();
// 根据班组退场时间计算租赁费用 // 根据班组退场时间计算租赁费用
@ -290,9 +294,9 @@ public class ClzSltAgreementInfoController extends BaseController {
List<MaterialSltAgreementInfo> overdueReturnedList = getOverdueReturnedMaterials(sltAgreementInfo); List<MaterialSltAgreementInfo> overdueReturnedList = getOverdueReturnedMaterials(sltAgreementInfo);
loseList.addAll(overdueReturnedList); loseList.addAll(overdueReturnedList);
//设定班组实际出场时间 //设定班组实际出场时间
String date = null;
if(!loseList.isEmpty()){ if(!loseList.isEmpty()){
String date = "暂无" ;
//先判断是否在场 //先判断是否在场
String exitTime = clzSltAgreementInfoMapper.getTeamSjOutTime(oneOfList.get(0)); String exitTime = clzSltAgreementInfoMapper.getTeamSjOutTime(oneOfList.get(0));
if( exitTime!=null && !exitTime.isEmpty() ){ if( exitTime!=null && !exitTime.isEmpty() ){
@ -303,6 +307,8 @@ public class ClzSltAgreementInfoController extends BaseController {
if(date!=null && !date.isEmpty()){ if(date!=null && !date.isEmpty()){
loseList.get(0).setActualExitTime(date); loseList.get(0).setActualExitTime(date);
}else{
loseList.get(0).setActualExitTime("暂无");
} }
actualTimeAndNames.add(loseList.get(0).getUnitName() + "(" + loseList.get(0).getActualExitTime()+")"); actualTimeAndNames.add(loseList.get(0).getUnitName() + "(" + loseList.get(0).getActualExitTime()+")");
projectNames.add(loseList.get(0).getProjectName()); projectNames.add(loseList.get(0).getProjectName());
@ -462,7 +468,7 @@ public class ClzSltAgreementInfoController extends BaseController {
} }
//设定班组实际出场时间 //设定班组实际出场时间
if(!listAll.isEmpty()){ if(!listAll.isEmpty()){
String date = "暂无" ; String date = null ;
//先判断是否在场 //先判断是否在场
String exitTime = clzSltAgreementInfoMapper.getTeamSjOutTime(listAll.get(0)); String exitTime = clzSltAgreementInfoMapper.getTeamSjOutTime(listAll.get(0));
if( exitTime!=null && !exitTime.isEmpty() ){ if( exitTime!=null && !exitTime.isEmpty() ){
@ -593,27 +599,19 @@ public class ClzSltAgreementInfoController extends BaseController {
} }
// 物资是否已退还根据endTime字段判断
boolean isReturned = bean.getEndTime() != null;
if (!isReturned) {
// 1.4 如果当前领用物资还未退还不收取任何租赁费用直接计作丢失收取物资原值 不在租赁费用中体现
return BigDecimal.ZERO;
}
// 物资已退还按照天数来计算费用 // 物资已退还按照天数来计算费用
Date materialReturnTime = bean.getEndTime(); Date materialReturnTime = bean.getEndTime();
if(materialReturnTime == null){
materialReturnTime = DateTime.now();
}
// 计算超期天数 // 计算超期天数
long overdueDays = calculateOverdueDays(materialReturnTime, exitTime); long overdueDays = calculateOverdueDays(materialReturnTime, exitTime);
if (overdueDays <= 0) { if (overdueDays <= 0) {
// 1.3 在班组退场之前归还的物资不收费 // 1.3 在班组退场之前归还的物资不收费
return BigDecimal.ZERO; return BigDecimal.ZERO;
} else if (overdueDays >= 16) {
// 1.2 超期15天以上也就是16天及以上计为丢失算作丢失的话直接收取原值所有租赁费用不收费了
// 注意丢失费用应该在getLoseList中处理这里不收费
return BigDecimal.ZERO;
} else { } else {
// 计算超期费用 // 计算超期费用
return calculateOverdueCost(bean, leasePrice, num, overdueDays); return calculateOverdueCost(bean, leasePrice, num, overdueDays);
@ -629,7 +627,7 @@ public class ClzSltAgreementInfoController extends BaseController {
if (overdueDays <= 7) { if (overdueDays <= 7) {
// 超期17天不收费 // 超期17天不收费
overdueCost = BigDecimal.ZERO; overdueCost = BigDecimal.ZERO;
} else if (overdueDays <= 15) { } else {
// 超期第8天第15天双倍计费 // 超期第8天第15天双倍计费
// 前7天不收费只计算第8天开始的双倍费用 // 前7天不收费只计算第8天开始的双倍费用
long doubleBillingDays = overdueDays - 7; long doubleBillingDays = overdueDays - 7;

View File

@ -156,6 +156,13 @@ public class MaterialSltAgreementInfo extends BaseEntity {
@ApiModelProperty(value = "租赁天数") @ApiModelProperty(value = "租赁天数")
private Long leaseDay; private Long leaseDay;
/**
* 超期天数
*/
@Excel(name = "超期天数")
@ApiModelProperty(value = "超期天数")
private Long overDay;
/** /**
* 租赁费用 * 租赁费用
*/ */

View File

@ -807,7 +807,33 @@ public class ClzSltAgreementInfoServiceImpl implements ClzSltAgreementInfoServic
if (Objects.isNull(bean.getLeaseDays())) { if (Objects.isNull(bean.getLeaseDays())) {
bean.setLeaseDay(0L); bean.setLeaseDay(0L);
} }
// 物资已退还按照天数来计算费用
Date materialReturnTime = bean.getEndTime();
if(materialReturnTime == null){
materialReturnTime = DateTime.now();
}
String teamExitTime = bean.getActualExitTime();
if (teamExitTime == null) {
teamExitTime = DateTime.now().toString("yyyy-MM-dd");
}
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date exitTime = null;
try {
exitTime = format.parse(teamExitTime);
}catch (Exception e){
e.printStackTrace();
}
// 计算超期天数
long overdueDays = calculateOverdueDays(materialReturnTime, exitTime);
if(overdueDays < 8 ){
bean.setOverDay(0L);
}else{
bean.setOverDay(overdueDays-7);
}
bean.setActualExitTime(date);
BigDecimal leasePrice = bean.getLeasePrice(); BigDecimal leasePrice = bean.getLeasePrice();
BigDecimal num = bean.getNum(); BigDecimal num = bean.getNum();
// 根据班组退场时间计算租赁费用 // 根据班组退场时间计算租赁费用
@ -840,27 +866,21 @@ public class ClzSltAgreementInfoServiceImpl implements ClzSltAgreementInfoServic
} }
// 物资是否已退还根据endTime字段判断
boolean isReturned = bean.getEndTime() != null;
if (!isReturned) {
// 1.4 如果当前领用物资还未退还不收取任何租赁费用直接计作丢失收取物资原值 不在租赁费用中体现
return BigDecimal.ZERO;
}
// 物资已退还按照天数来计算费用 // 物资已退还按照天数来计算费用
Date materialReturnTime = bean.getEndTime(); Date materialReturnTime = bean.getEndTime();
if(materialReturnTime == null){
materialReturnTime = DateTime.now();
}
// 计算超期天数 // 计算超期天数
long overdueDays = calculateOverdueDays(materialReturnTime, exitTime); long overdueDays = calculateOverdueDays(materialReturnTime, exitTime);
if (overdueDays <= 0) { if (overdueDays <= 0) {
// 1.3 在班组退场之前归还的物资不收费 // 1.3 在班组退场之前归还的物资不收费
return BigDecimal.ZERO; return BigDecimal.ZERO;
} else if (overdueDays >= 16) {
// 1.2 超期15天以上也就是16天及以上计为丢失算作丢失的话直接收取原值所有租赁费用不收费了
// 注意丢失费用应该在getLoseList中处理这里不收费
return BigDecimal.ZERO;
} else { } else {
// 计算超期费用 // 计算超期费用
return calculateOverdueCost(bean, leasePrice, num, overdueDays); return calculateOverdueCost(bean, leasePrice, num, overdueDays);
@ -876,7 +896,7 @@ public class ClzSltAgreementInfoServiceImpl implements ClzSltAgreementInfoServic
if (overdueDays <= 7) { if (overdueDays <= 7) {
// 超期17天不收费 // 超期17天不收费
overdueCost = BigDecimal.ZERO; overdueCost = BigDecimal.ZERO;
} else if (overdueDays <= 15) { } else {
// 超期第8天第15天双倍计费 // 超期第8天第15天双倍计费
// 前7天不收费只计算第8天开始的双倍费用 // 前7天不收费只计算第8天开始的双倍费用
long doubleBillingDays = overdueDays - 7; long doubleBillingDays = overdueDays - 7;

View File

@ -193,7 +193,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
LEFT JOIN bm_unit bui ON bui.unit_id = bai.unit_id LEFT JOIN bm_unit bui ON bui.unit_id = bai.unit_id
left join ma_type mt on sai.type_id = mt.type_id left join ma_type mt on sai.type_id = mt.type_id
left join ma_type mt1 on mt.parent_id = mt1.type_id left join ma_type mt1 on mt.parent_id = mt1.type_id
where sai.agreement_id = #{agreementId} and sai.end_time is null where sai.agreement_id = #{agreementId} and sai.end_time is null and sai.is_slt=1
) res ) res
GROUP BY res.typeId,res.startTime,res.endTime GROUP BY res.typeId,res.startTime,res.endTime
</select> </select>