月度费用审核开发

This commit is contained in:
bonus 2025-03-21 14:55:07 +08:00
parent 00d19721a4
commit 0abb17dbde
7 changed files with 347 additions and 2 deletions

View File

@ -980,10 +980,23 @@ public class DateTimeHelper {
} }
public static String getCurrentMonthCalEndDay(int day) { public static String getCurrentMonthCalEndDay(int day) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
// 获取当前日期
LocalDate currentDate = LocalDate.now();
// 检查 day 是否超过当前月份的最大天数
int currentMonthMaxDay = currentDate.lengthOfMonth();
int adjustedDay = Math.min(day, currentMonthMaxDay);
// 设置日期为当前月份的 adjustedDay
LocalDate resultDate = currentDate.withDayOfMonth(adjustedDay);
// 返回前一天
LocalDate previousDay = resultDate.minusDays(1);
// 格式化并返回
return previousDay.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
/*SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance(); Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 0); c.add(Calendar.MONTH, 0);
c.set(Calendar.DAY_OF_MONTH, day); c.set(Calendar.DAY_OF_MONTH, day);
return format.format(c.getTime()); return format.format(c.getTime());*/
} }
} }

View File

@ -0,0 +1,69 @@
package com.bonus.sgzb.material.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.bonus.sgzb.base.api.domain.SltAgreementApply;
import com.bonus.sgzb.base.api.domain.SltAgreementInfo;
import com.bonus.sgzb.base.api.domain.SltInfoVo;
import com.bonus.sgzb.common.core.utils.poi.ExcelUtil;
import com.bonus.sgzb.common.core.web.controller.BaseController;
import com.bonus.sgzb.common.core.web.domain.AjaxResult;
import com.bonus.sgzb.common.core.web.page.TableDataInfo;
import com.bonus.sgzb.common.log.annotation.Log;
import com.bonus.sgzb.common.log.enums.BusinessType;
import com.bonus.sgzb.common.security.annotation.RequiresPermissions;
import com.bonus.sgzb.material.domain.*;
import com.bonus.sgzb.material.service.SltAgreementInfoService;
import com.bonus.sgzb.material.service.SltMonthInfoService;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
/**
* @author c liu
* @date 2024/2/22
*/
@RestController
@RequestMapping("/sltMonthInfo")
public class SltMonthInfoController extends BaseController {
@Resource
private SltMonthInfoService sltMonthInfoService;
/**
* 根据条件获取协议结算列表
*/
@RequiresPermissions("cost:settlement:list")
@ApiOperation(value = "根据条件获取协议结算列表")
@GetMapping("/getSltMonthInfo")
public TableDataInfo getSltMonthInfo(SltMonthInfo bean) {
startPage();
List<SltMonthInfo> list = sltMonthInfoService.getSltMonthInfo(bean);
return getDataTable(list);
}
/**
* 调整天数
*/
@ApiOperation(value = "审核月度费用")
@PostMapping("/auditSlt")
@RequiresPermissions("cost:settlement:edit")
public AjaxResult auditSlt(@RequestBody SltMonthInfo slt) {
int bean = sltMonthInfoService.auditSlt(slt);
if (bean == 0) {
return AjaxResult.error("审核失败");
}
return AjaxResult.success("审核成功");
}
}

View File

@ -0,0 +1,104 @@
package com.bonus.sgzb.material.domain;
import com.bonus.sgzb.common.core.annotation.Excel;
import com.bonus.sgzb.common.core.web.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* @author lsun
*/
@Data
public class SltMonthInfo extends BaseEntity {
private static final long serialVersionUID = 1L;
private String ids;
/**
* 协议ID
*/
@ApiModelProperty(value = "ID")
private Long id;
/**
* 协议ID
*/
@ApiModelProperty(value = "协议ID")
private Long agreementId;
/**
* 协议编号
*/
@Excel(name = "协议编号")
@ApiModelProperty(value = "协议编号")
private String agreementCode;
/**
* 合同
*/
@Excel(name = "合同编号")
@ApiModelProperty(value = "合同")
private String contractCode;
/**
* 往来单位id
*/
@ApiModelProperty(value = "往来单位id")
private Long unitId;
/**
* 往来单位
*/
@Excel(name = "往来单位")
@ApiModelProperty(value = "往来单位")
private String unitName;
/**
* 工程标段ID
*/
@ApiModelProperty(value = "工程标段ID")
private Long projectId;
/**
* 工程标段
*/
@Excel(name = "工程名称")
@ApiModelProperty(value = "工程标段")
private String projectName;
/**
* 租赁费用
*/
@Excel(name = "租赁费用")
@ApiModelProperty(value = "租赁费用")
private BigDecimal leaseMoney;
/**
* 租赁费用月份
*/
@Excel(name = "费用月份")
@ApiModelProperty(value = "费用月份")
private String month;
/**
* 租赁费用月份
*/
@Excel(name = "状态")
@ApiModelProperty(value = "状态")
private String status;
/**
* 费用承担方
*/
@Excel(name = "费用承担方")
@ApiModelProperty(value = "费用承担方")
private String bearPart;
/**
* 导出选中列表
*/
@ApiModelProperty(value = "导出选中列表")
private List<Long> dataCondition;
}

View File

@ -0,0 +1,26 @@
package com.bonus.sgzb.material.mapper;
import com.bonus.sgzb.base.api.domain.ApplyRelation;
import com.bonus.sgzb.base.api.domain.SltAgreementApply;
import com.bonus.sgzb.base.api.domain.SltAgreementInfo;
import com.bonus.sgzb.base.api.domain.SltAgreementRelation;
import com.bonus.sgzb.material.domain.AgreementInfo;
import com.bonus.sgzb.material.domain.SltMonthInfo;
import com.bonus.sgzb.material.domain.TmTask;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
* @author c liu
* @date 2024/2/22
*/
@Mapper
public interface SltMonthInfoMapper {
List<SltMonthInfo> getSltMonthInfo(SltMonthInfo bean);
int auditSlt(SltMonthInfo slt);
}

View File

@ -0,0 +1,21 @@
package com.bonus.sgzb.material.service;
import com.bonus.sgzb.base.api.domain.SltAgreementApply;
import com.bonus.sgzb.base.api.domain.SltAgreementInfo;
import com.bonus.sgzb.base.api.domain.SltInfoVo;
import com.bonus.sgzb.common.core.web.domain.AjaxResult;
import com.bonus.sgzb.material.domain.AgreementInfo;
import com.bonus.sgzb.material.domain.SltMonthInfo;
import java.util.List;
/**
* @author c liu
* @date 2024/2/22
*/
public interface SltMonthInfoService {
List<SltMonthInfo> getSltMonthInfo(SltMonthInfo bean);
int auditSlt(SltMonthInfo slt);
}

View File

@ -0,0 +1,49 @@
package com.bonus.sgzb.material.service.impl;
import com.bonus.sgzb.base.api.domain.*;
import com.bonus.sgzb.common.core.utils.DateTimeHelper;
import com.bonus.sgzb.common.core.utils.DateUtils;
import com.bonus.sgzb.common.core.web.domain.AjaxResult;
import com.bonus.sgzb.material.domain.AgreementInfo;
import com.bonus.sgzb.material.domain.SltMonthInfo;
import com.bonus.sgzb.material.domain.TmTask;
import com.bonus.sgzb.material.mapper.CalMonthlyMapper;
import com.bonus.sgzb.material.mapper.SltAgreementInfoMapper;
import com.bonus.sgzb.material.mapper.SltMonthInfoMapper;
import com.bonus.sgzb.material.service.SltAgreementInfoService;
import com.bonus.sgzb.material.service.SltMonthInfoService;
import com.bonus.sgzb.material.vo.GlobalContants;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* @author c liu
* @date 2024/2/22
*/
@Service
public class SltMonthInfoServiceImpl implements SltMonthInfoService {
@Resource
private SltMonthInfoMapper sltMonthInfoInfoMapper;
@Override
public List<SltMonthInfo> getSltMonthInfo(SltMonthInfo bean) {
return sltMonthInfoInfoMapper.getSltMonthInfo(bean);
}
@Override
public int auditSlt(SltMonthInfo slt) {
return sltMonthInfoInfoMapper.auditSlt(slt);
}
}

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bonus.sgzb.material.mapper.SltMonthInfoMapper">
<resultMap type="com.bonus.sgzb.material.domain.SltMonthInfo" id="BmAgreementInfoResult">
<result property="agreementId" column="agreement_id"/>
<result property="agreementCode" column="agreement_code"/>
<result property="unitId" column="unit_id"/>
<result property="unitName" column="unit_name"/>
<result property="projectId" column="project_id"/>
<result property="createBy" column="create_by"/>
<result property="contractCode" column="contract_code"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="remark" column="remark"/>
<result property="leaseMoney" column="costs"/>
</resultMap>
<select id="getSltMonthInfo" resultType="com.bonus.sgzb.material.domain.SltMonthInfo">
SELECT
pmc.id,
bai.agreement_code as agreementCode,
bui.unit_name as unitName,
bp.lot_name as projectName,
pmc.`month` ,
pmc.costs as leaseMoney,
pmc.status,
pmc.cost_bearing_party as bearPart
FROM
project_month_costs pmc
LEFT JOIN bm_agreement_info bai on pmc.agreement_id = bai.agreement_id
LEFT JOIN bm_project_lot bp ON bp.lot_id = bai.project_id
LEFT JOIN bm_unit_info bui ON bui.unit_id = bai.unit_id
WHERE pmc.`month` =#{month}
<if test="unitId != null and unitId != ''">
and bai.unit_id = #{unitId}
</if>
<if test="projectId != null and projectId != ''">
and bai.project_id = #{projectId}
</if>
<if test="agreementCode != null and agreementCode != ''">
and bai.agreement_code = #{agreementCode}
</if>
</select>
<update id="auditSlt" >
<if test="dataCondition != null and dataCondition.size() > 0">
UPDATE project_month_costs
SET status = 1
WHERE id IN
<foreach collection="dataCondition" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</update>
</mapper>