Browse Source

feat(inspection): 新增费用管理系统功能

- 创建费用管理相关实体类(SrmFeeHeaderEntity、SrmFeeDetailEntity、SrmInspectRequestFeeEntity)
- 实现费用管理控制器(SrmFeeController),提供完整的CRUD操作接口
- 开发费用管理服务层(SrmFeeService及其实现类),包含业务逻辑处理
- 设计费用明细与申请单关联的数据结构和批量操作功能
- 集成MyBatis-Plus进行数据库操作,支持分页查询和事务处理
- 实现费用单号自动生成机制和总金额自动计算更新功能
master
qiankanghui 3 weeks ago
parent
commit
5fb77c1d6a
  1. 197
      src/main/java/com/xujie/modules/inspection/controller/SrmFeeController.java
  2. 17
      src/main/java/com/xujie/modules/inspection/data/AddRequestFeeVO.java
  3. 40
      src/main/java/com/xujie/modules/inspection/entity/SrmFeeDetailEntity.java
  4. 41
      src/main/java/com/xujie/modules/inspection/entity/SrmFeeHeaderEntity.java
  5. 25
      src/main/java/com/xujie/modules/inspection/entity/SrmInspectRequestFeeEntity.java
  6. 98
      src/main/java/com/xujie/modules/inspection/mapper/SrmFeeMapper.java
  7. 78
      src/main/java/com/xujie/modules/inspection/service/SrmFeeService.java
  8. 204
      src/main/java/com/xujie/modules/inspection/service/impl/SrmFeeServiceImpl.java
  9. 213
      src/main/resources/mapper/inspection/SrmFeeMapper.xml

197
src/main/java/com/xujie/modules/inspection/controller/SrmFeeController.java

@ -0,0 +1,197 @@
package com.xujie.modules.inspection.controller;
import com.xujie.common.utils.PageUtils;
import com.xujie.common.utils.R;
import com.xujie.modules.inspection.data.AddRequestFeeVO;
import com.xujie.modules.inspection.entity.SrmFeeDetailEntity;
import com.xujie.modules.inspection.entity.SrmFeeHeaderEntity;
import com.xujie.modules.inspection.entity.SrmInspectRequestFeeEntity;
import com.xujie.modules.inspection.service.SrmFeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* 费用管理Controller
*/
@RestController
@RequestMapping("/inspection/fee")
public class SrmFeeController {
@Autowired
private SrmFeeService srmFeeService;
/**
* 分页查询费用主记录列表
*/
@PostMapping("/searchFeeHeaderList")
@ResponseBody
public R searchFeeHeaderList(@RequestBody SrmFeeHeaderEntity data) {
PageUtils page = srmFeeService.searchFeeHeaderList(data);
return R.ok().put("page", page);
}
/**
* 根据费用单号查询主记录
*/
@PostMapping("/getFeeHeaderByNo")
@ResponseBody
public R getFeeHeaderByNo(@RequestBody SrmFeeHeaderEntity header) {
SrmFeeHeaderEntity result =
srmFeeService.getFeeHeaderByNo(
header.getSite(),
header.getFeeNo()
);
return R.ok().put("header", result);
}
/**
* 创建费用主记录
*/
@PostMapping("/createFeeHeader")
@ResponseBody
public R createFeeHeader(@RequestBody SrmFeeHeaderEntity header) {
srmFeeService.createFeeHeader(header);
return R.ok();
}
/**
* 更新费用主记录
*/
@PostMapping("/updateFeeHeader")
@ResponseBody
public R updateFeeHeader(@RequestBody SrmFeeHeaderEntity header) {
srmFeeService.updateFeeHeader(header);
return R.ok();
}
/**
* 删除费用记录
*/
@PostMapping("/deleteFeeRecord")
@ResponseBody
public R deleteFeeRecord(@RequestBody SrmFeeHeaderEntity header) {
srmFeeService.deleteFeeRecord(
header.getSite(),
header.getFeeNo()
);
return R.ok();
}
/**
* 查询费用明细列表
*/
@PostMapping("/getFeeDetailList")
@ResponseBody
public R getFeeDetailList(@RequestBody SrmFeeDetailEntity detail) {
List<SrmFeeDetailEntity> details =
srmFeeService.getFeeDetailList(
detail.getSite(),
detail.getFeeNo()
);
return R.ok().put("details", details);
}
/**
* 根据表单查询费用明细
*/
@PostMapping("/getFeeDetailByRequestNo")
@ResponseBody
public R getFeeDetailByRequestNo(@RequestBody SrmFeeDetailEntity detail) {
List<SrmFeeDetailEntity> details = srmFeeService.getFeeDetailByRequestNo(
detail.getSite(),
detail.getFeeNo(),
detail.getRequestNo()
);
return R.ok().put("details", details);
}
/**
* 添加费用明细
*/
@PostMapping("/addFeeDetail")
@ResponseBody
public R addFeeDetail(@RequestBody SrmFeeDetailEntity detail) {
srmFeeService.addFeeDetail(
detail,
detail.getCreateBy()
);
return R.ok();
}
/**
* 更新费用明细
*/
@PostMapping("/updateFeeDetail")
@ResponseBody
public R updateFeeDetail(@RequestBody SrmFeeDetailEntity detail) {
srmFeeService.updateFeeDetail(
detail,
detail.getUpdateBy()
);
return R.ok();
}
/**
* 删除费用明细
*/
@PostMapping("/deleteFeeDetail")
@ResponseBody
public R deleteFeeDetail(@RequestBody SrmFeeDetailEntity detail) {
srmFeeService.deleteFeeDetail(
detail.getSite(),
detail.getFeeNo(),
detail.getItemNo()
);
return R.ok();
}
/**
* 查询关联申请单列表
*/
@PostMapping("/getRequestFeeList")
@ResponseBody
public R getRequestFeeList(@RequestBody SrmInspectRequestFeeEntity entity) {
List<SrmInspectRequestFeeEntity> requestFees = srmFeeService.getRequestFeeList(entity.getSite(), entity.getFeeNo());
return R.ok().put("requestFees", requestFees);
}
/**
* 添加关联申请单批量
*/
@PostMapping("/addRequestFees")
@ResponseBody
public R addRequestFees(@RequestBody AddRequestFeeVO vo) {
srmFeeService.addRequestFees(
vo.getSite(),
vo.getFeeNo(),
vo.getRequestNos(),
vo.getCurrentUser()
);
return R.ok();
}
/**
* 删除关联申请单
*/
@PostMapping("/deleteRequestFee")
@ResponseBody
public R deleteRequestFee(@RequestBody SrmInspectRequestFeeEntity entity) {
srmFeeService.deleteRequestFee(
entity.getSite(),
entity.getFeeNo(),
entity.getRequestNo()
);
return R.ok();
}
}

17
src/main/java/com/xujie/modules/inspection/data/AddRequestFeeVO.java

@ -0,0 +1,17 @@
package com.xujie.modules.inspection.data;
import lombok.Data;
import java.util.List;
@Data
public class AddRequestFeeVO {
private String site;
private String feeNo;
private String currentUser;
private List<String> requestNos;
}

40
src/main/java/com/xujie/modules/inspection/entity/SrmFeeDetailEntity.java

@ -0,0 +1,40 @@
package com.xujie.modules.inspection.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
@Data
@TableName("srm_fee_detail")
public class SrmFeeDetailEntity {
private String site;
private String feeNo;
private Integer itemNo;
private String feeType;
private BigDecimal amount;
private String remark;
private String createBy;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createDate;
private String updateBy;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date updateDate;
private String requestNo;
}

41
src/main/java/com/xujie/modules/inspection/entity/SrmFeeHeaderEntity.java

@ -0,0 +1,41 @@
package com.xujie.modules.inspection.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xujie.common.utils.QueryPage;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
@Data
@TableName("srm_fee_header")
public class SrmFeeHeaderEntity extends QueryPage {
private String site;
private String feeNo;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date feeDate;
private BigDecimal totalAmount;
private String createdBy;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createdDate;
private String updateBy;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date updateDate;
private String applyUser;
private String remark;
}

25
src/main/java/com/xujie/modules/inspection/entity/SrmInspectRequestFeeEntity.java

@ -0,0 +1,25 @@
package com.xujie.modules.inspection.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
@TableName("srm_inspect_request_fee")
public class SrmInspectRequestFeeEntity {
private String site;
private String feeNo;
private String requestNo;
private String createBy;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createDate;
}

98
src/main/java/com/xujie/modules/inspection/mapper/SrmFeeMapper.java

@ -0,0 +1,98 @@
package com.xujie.modules.inspection.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xujie.modules.inspection.entity.SrmFeeDetailEntity;
import com.xujie.modules.inspection.entity.SrmFeeHeaderEntity;
import com.xujie.modules.inspection.entity.SrmInspectRequestFeeEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 费用管理Mapper
*/
@Mapper
public interface SrmFeeMapper extends BaseMapper<SrmFeeHeaderEntity> {
/**
* 分页查询费用主记录列表
*/
IPage<SrmFeeHeaderEntity> searchFeeHeaderList(Page<SrmFeeHeaderEntity> page, @Param("query") SrmFeeHeaderEntity data);
/**
* 根据费用单号查询主记录
*/
SrmFeeHeaderEntity getFeeHeaderByNo(@Param("site") String site, @Param("feeNo") String feeNo);
/**
* 插入费用主记录
*/
void insertFeeHeader(SrmFeeHeaderEntity header);
/**
* 更新费用主记录
*/
void updateFeeHeader(SrmFeeHeaderEntity header);
/**
* 删除费用主记录
*/
void deleteFeeHeader(@Param("site") String site, @Param("feeNo") String feeNo);
/**
* 查询费用明细列表
*/
List<SrmFeeDetailEntity> getFeeDetailList(@Param("site") String site, @Param("feeNo") String feeNo);
/**
* 插入费用明细单条
*/
void insertFeeDetail(SrmFeeDetailEntity detail);
/**
* 批量插入费用明细
*/
void batchInsertFeeDetail(@Param("list") List<SrmFeeDetailEntity> list);
/**
* 更新费用明细
*/
void updateFeeDetail(SrmFeeDetailEntity detail);
/**
* 删除费用明细
*/
void deleteFeeDetail(@Param("site") String site, @Param("feeNo") String feeNo);
/**
* 删除指定行的费用明细
*/
void deleteFeeDetailByItemNo(@Param("site") String site, @Param("feeNo") String feeNo, @Param("itemNo") Integer itemNo);
/**
* 查询关联的申请单列表
*/
List<SrmInspectRequestFeeEntity> getRequestFeeList(@Param("site") String site, @Param("feeNo") String feeNo);
/**
* 删除费用与申请单关联
*/
void deleteRequestFee(@Param("site") String site, @Param("feeNo") String feeNo);
/**
* 删除指定的费用与申请单关联
*/
void deleteRequestFeeByRequestNo(@Param("site") String site, @Param("feeNo") String feeNo, @Param("requestNo") String requestNo);
/**
* 获取下一个费用单号
*/
String getNextFeeNo(@Param("site") String site);
void batchInsertRequestFee(@Param("list") List<SrmInspectRequestFeeEntity> list);
List<SrmFeeDetailEntity> getFeeDetailByRequestNo(@Param("site") String site,@Param("feeNo") String feeNo, @Param("requestNo") String requestNo);
}

78
src/main/java/com/xujie/modules/inspection/service/SrmFeeService.java

@ -0,0 +1,78 @@
package com.xujie.modules.inspection.service;
import com.xujie.common.utils.PageUtils;
import com.xujie.modules.inspection.entity.SrmFeeDetailEntity;
import com.xujie.modules.inspection.entity.SrmFeeHeaderEntity;
import com.xujie.modules.inspection.entity.SrmInspectRequestFeeEntity;
import java.util.List;
/**
* 费用管理Service
*/
public interface SrmFeeService {
/**
* 分页查询费用主记录列表
*/
PageUtils searchFeeHeaderList(SrmFeeHeaderEntity data);
/**
* 根据费用单号查询主记录
*/
SrmFeeHeaderEntity getFeeHeaderByNo(String site, String feeNo);
/**
* 创建费用主记录
*/
void createFeeHeader(SrmFeeHeaderEntity header);
/**
* 更新费用主记录
*/
void updateFeeHeader(SrmFeeHeaderEntity header);
/**
* 删除费用记录包括明细和关联申请单
*/
void deleteFeeRecord(String site, String feeNo);
/**
* 查询费用明细列表
*/
List<SrmFeeDetailEntity> getFeeDetailList(String site, String feeNo);
/**
* 添加费用明细单条
*/
void addFeeDetail(SrmFeeDetailEntity detail, String currentUser);
/**
* 更新费用明细
*/
void updateFeeDetail(SrmFeeDetailEntity detail, String currentUser);
/**
* 删除费用明细
*/
void deleteFeeDetail(String site, String feeNo, Integer itemNo);
/**
* 查询关联的申请单列表
*/
List<SrmInspectRequestFeeEntity> getRequestFeeList(String site, String feeNo);
/**
* 删除关联申请单
*/
void deleteRequestFee(String site, String feeNo, String requestNo);
/**
* 生成费用单号
*/
String generateFeeNo(String site);
void addRequestFees(String site, String feeNo, List<String> requestNos, String currentUser);
List<SrmFeeDetailEntity> getFeeDetailByRequestNo(String site, String feeNo, String requestNo);
}

204
src/main/java/com/xujie/modules/inspection/service/impl/SrmFeeServiceImpl.java

@ -0,0 +1,204 @@
package com.xujie.modules.inspection.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xujie.common.utils.PageUtils;
import com.xujie.modules.inspection.entity.SrmFeeDetailEntity;
import com.xujie.modules.inspection.entity.SrmFeeHeaderEntity;
import com.xujie.modules.inspection.entity.SrmInspectRequestFeeEntity;
import com.xujie.modules.inspection.mapper.SrmFeeMapper;
import com.xujie.modules.inspection.service.SrmFeeService;
import com.xujie.modules.srm.mapper.SrmSupplierMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* 费用管理Service实现类
*/
@Service
public class SrmFeeServiceImpl implements SrmFeeService {
@Autowired
private SrmFeeMapper srmFeeMapper;
@Autowired
private SrmSupplierMapper srmSupplierMapper;
@Override
public PageUtils searchFeeHeaderList(SrmFeeHeaderEntity data) {
IPage<SrmFeeHeaderEntity> page = srmFeeMapper.searchFeeHeaderList(
new Page<>(data.getPage(), data.getLimit()), data);
return new PageUtils(page);
}
@Override
public SrmFeeHeaderEntity getFeeHeaderByNo(String site, String feeNo) {
return srmFeeMapper.getFeeHeaderByNo(site, feeNo);
}
@Override
@Transactional
public void createFeeHeader(SrmFeeHeaderEntity header) {
// 生成费用单号
if (header.getFeeNo() == null || header.getFeeNo().isEmpty()) {
header.setFeeNo(generateFeeNo(header.getSite()));
}
// 设置默认值
if (header.getTotalAmount() == null) {
header.setTotalAmount(BigDecimal.ZERO);
}
srmFeeMapper.insertFeeHeader(header);
}
@Override
@Transactional
public void updateFeeHeader(SrmFeeHeaderEntity header) {
srmFeeMapper.updateFeeHeader(header);
}
@Override
@Transactional
public void deleteFeeRecord(String site, String feeNo) {
// 删除明细
srmFeeMapper.deleteFeeDetail(site, feeNo);
// 删除关联申请单
srmFeeMapper.deleteRequestFee(site, feeNo);
// 删除主记录
srmFeeMapper.deleteFeeHeader(site, feeNo);
}
@Override
public List<SrmFeeDetailEntity> getFeeDetailList(String site, String feeNo) {
return srmFeeMapper.getFeeDetailList(site, feeNo);
}
@Override
@Transactional
public void addFeeDetail(SrmFeeDetailEntity detail, String currentUser) {
// 获取当前最大行号
List<SrmFeeDetailEntity> existingDetails = srmFeeMapper.getFeeDetailList(detail.getSite(), detail.getFeeNo());
int maxItemNo = existingDetails.stream()
.mapToInt(SrmFeeDetailEntity::getItemNo)
.max()
.orElse(0);
// 设置新明细的属性
detail.setItemNo(maxItemNo + 1);
detail.setCreateBy(currentUser);
detail.setUpdateBy(currentUser);
// 插入明细
srmFeeMapper.insertFeeDetail(detail);
// 更新主表总金额
updateTotalAmount(detail.getSite(), detail.getFeeNo());
}
@Override
@Transactional
public void updateFeeDetail(SrmFeeDetailEntity detail, String currentUser) {
detail.setUpdateBy(currentUser);
srmFeeMapper.updateFeeDetail(detail);
// 更新主表总金额
updateTotalAmount(detail.getSite(), detail.getFeeNo());
}
@Override
@Transactional
public void deleteFeeDetail(String site, String feeNo, Integer itemNo) {
srmFeeMapper.deleteFeeDetailByItemNo(site, feeNo, itemNo);
// 重新排序行号
resortItemNos(site, feeNo);
// 更新主表总金额
updateTotalAmount(site, feeNo);
}
@Override
public List<SrmInspectRequestFeeEntity> getRequestFeeList(String site, String feeNo) {
return srmFeeMapper.getRequestFeeList(site, feeNo);
}
@Override
@Transactional
public void addRequestFees(String site, String feeNo, List<String> requestNos, String currentUser) {
if (requestNos == null || requestNos.isEmpty()) {
return;
}
List<SrmInspectRequestFeeEntity> list = requestNos.stream().map(requestNo -> {
SrmInspectRequestFeeEntity entity = new SrmInspectRequestFeeEntity();
entity.setSite(site);
entity.setFeeNo(feeNo);
entity.setRequestNo(requestNo);
entity.setCreateBy(currentUser);
return entity;
}).collect(Collectors.toList());
srmFeeMapper.batchInsertRequestFee(list);
}
@Override
public List<SrmFeeDetailEntity> getFeeDetailByRequestNo(String site, String feeNo, String requestNo) {
return srmFeeMapper.getFeeDetailByRequestNo(site, feeNo, requestNo);
}
@Override
@Transactional
public void deleteRequestFee(String site, String feeNo, String requestNo) {
srmFeeMapper.deleteRequestFeeByRequestNo(site, feeNo, requestNo);
}
/**
* 生成费用单号 - 模仿任务单编号生成方式
*/
@Override
public String generateFeeNo(String site) {
srmSupplierMapper.updateTransNo(site, "FEE");
String transNo = srmSupplierMapper.getTransNo(site, "FEE");
return transNo;
}
/**
* 更新主表总金额
*/
private void updateTotalAmount(String site, String feeNo) {
List<SrmFeeDetailEntity> details = srmFeeMapper.getFeeDetailList(site, feeNo);
BigDecimal totalAmount = details.stream()
.map(SrmFeeDetailEntity::getAmount)
.filter(amount -> amount != null)
.reduce(BigDecimal.ZERO, BigDecimal::add);
// 使用MyBatis-Plus的UpdateWrapper只更新total_amount字段避免其他字段被覆盖为null
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper<SrmFeeHeaderEntity> updateWrapper =
new com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper<>();
updateWrapper.eq("site", site)
.eq("fee_no", feeNo)
.set("total_amount", totalAmount)
.set("update_date", new Date());
srmFeeMapper.update(null, updateWrapper);
}
/**
* 重新排序行号
*/
private void resortItemNos(String site, String feeNo) {
List<SrmFeeDetailEntity> details = srmFeeMapper.getFeeDetailList(site, feeNo);
int itemNo = 1;
for (SrmFeeDetailEntity detail : details) {
detail.setItemNo(itemNo++);
srmFeeMapper.updateFeeDetail(detail);
}
}
}

213
src/main/resources/mapper/inspection/SrmFeeMapper.xml

@ -0,0 +1,213 @@
<?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.xujie.modules.inspection.mapper.SrmFeeMapper">
<!-- 费用主记录ResultMap -->
<resultMap id="feeHeaderMap" type="com.xujie.modules.inspection.entity.SrmFeeHeaderEntity">
<result property="site" column="site"/>
<result property="feeNo" column="fee_no"/>
<result property="feeDate" column="fee_date"/>
<result property="totalAmount" column="total_amount"/>
<result property="createdBy" column="created_by"/>
<result property="createdDate" column="created_date"/>
<result property="updateBy" column="update_by"/>
<result property="updateDate" column="update_date"/>
<result property="applyUser" column="apply_user"/>
<result property="remark" column="remark"/>
</resultMap>
<!-- 费用明细ResultMap -->
<resultMap id="feeDetailMap" type="com.xujie.modules.inspection.entity.SrmFeeDetailEntity">
<result property="site" column="site"/>
<result property="feeNo" column="fee_no"/>
<result property="itemNo" column="item_no"/>
<result property="feeType" column="fee_type"/>
<result property="amount" column="amount"/>
<result property="remark" column="remark"/>
<result property="createBy" column="create_by"/>
<result property="createDate" column="create_date"/>
<result property="updateBy" column="update_by"/>
<result property="updateDate" column="update_date"/>
</resultMap>
<!-- 费用与申请单关联ResultMap -->
<resultMap id="requestFeeMap" type="com.xujie.modules.inspection.entity.SrmInspectRequestFeeEntity">
<result property="site" column="site"/>
<result property="feeNo" column="fee_no"/>
<result property="requestNo" column="request_no"/>
<result property="createBy" column="create_by"/>
<result property="createDate" column="create_date"/>
</resultMap>
<!-- 分页查询费用主记录列表 -->
<select id="searchFeeHeaderList" resultMap="feeHeaderMap">
SELECT site, fee_no, fee_date, total_amount, created_by, created_date,
update_by, update_date, apply_user, remark
FROM srm_fee_header
WHERE site = #{query.site}
<if test="query.feeNo != null and query.feeNo != ''">
AND fee_no LIKE '%' + #{query.feeNo} + '%'
</if>
<if test="query.applyUser != null and query.applyUser != ''">
AND apply_user LIKE '%' + #{query.applyUser} + '%'
</if>
<if test="query.feeDate != null">
AND fee_date &gt;= #{query.feeDate}
</if>
ORDER BY created_date DESC
</select>
<!-- 根据费用单号查询主记录 -->
<select id="getFeeHeaderByNo" resultMap="feeHeaderMap">
SELECT site, fee_no, fee_date, total_amount, created_by, created_date,
update_by, update_date, apply_user, remark
FROM srm_fee_header
WHERE site = #{site} AND fee_no = #{feeNo}
</select>
<!-- 插入费用主记录 -->
<insert id="insertFeeHeader">
INSERT INTO srm_fee_header (
site, fee_no, fee_date, total_amount, created_by, created_date,
update_by, update_date, apply_user, remark
) VALUES (
#{site}, #{feeNo}, #{feeDate}, #{totalAmount}, #{createdBy}, GETDATE(),
#{updateBy}, GETDATE(), #{applyUser}, #{remark}
)
</insert>
<!-- 更新费用主记录 -->
<update id="updateFeeHeader">
UPDATE srm_fee_header
SET fee_date = #{feeDate},
total_amount = #{totalAmount},
update_by = #{updateBy},
update_date = GETDATE(),
apply_user = #{applyUser},
remark = #{remark}
WHERE site = #{site} AND fee_no = #{feeNo}
</update>
<!-- 删除费用主记录 -->
<delete id="deleteFeeHeader">
DELETE FROM srm_fee_header
WHERE site = #{site} AND fee_no = #{feeNo}
</delete>
<!-- 查询费用明细列表 -->
<select id="getFeeDetailList" resultMap="feeDetailMap">
SELECT site, fee_no, item_no, fee_type, amount, remark,
create_by, create_date, update_by, update_date
FROM srm_fee_detail
WHERE site = #{site} AND fee_no = #{feeNo}
ORDER BY item_no
</select>
<!-- 插入费用明细(单条) -->
<insert id="insertFeeDetail">
INSERT INTO srm_fee_detail (
site, fee_no, item_no, fee_type, amount, remark,
create_by, create_date, update_by, update_date
) VALUES (
#{site}, #{feeNo}, #{itemNo}, #{feeType}, #{amount}, #{remark},
#{createBy}, GETDATE(), #{updateBy}, GETDATE()
)
</insert>
<!-- 批量插入费用明细 -->
<insert id="batchInsertFeeDetail">
INSERT INTO srm_fee_detail (
site, fee_no, item_no, fee_type, amount, remark,
create_by, create_date, update_by, update_date
) VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.site}, #{item.feeNo}, #{item.itemNo}, #{item.feeType},
#{item.amount}, #{item.remark}, #{item.createBy}, GETDATE(),
#{item.updateBy}, GETDATE()
)
</foreach>
</insert>
<!-- 更新费用明细 -->
<update id="updateFeeDetail">
UPDATE srm_fee_detail
SET fee_type = #{feeType},
amount = #{amount},
remark = #{remark},
update_by = #{updateBy},
update_date = GETDATE()
WHERE site = #{site} AND fee_no = #{feeNo} AND item_no = #{itemNo}
</update>
<!-- 删除费用明细 -->
<delete id="deleteFeeDetail">
DELETE FROM srm_fee_detail
WHERE site = #{site} AND fee_no = #{feeNo}
</delete>
<!-- 删除指定行的费用明细 -->
<delete id="deleteFeeDetailByItemNo">
DELETE FROM srm_fee_detail
WHERE site = #{site} AND fee_no = #{feeNo} AND item_no = #{itemNo}
</delete>
<!-- 查询关联的申请单列表 -->
<select id="getRequestFeeList" resultMap="requestFeeMap">
SELECT site, fee_no, request_no, create_by, create_date
FROM srm_inspect_request_fee
WHERE site = #{site} AND fee_no = #{feeNo}
ORDER BY create_date
</select>
<insert id="batchInsertRequestFee">
INSERT INTO srm_inspect_request_fee
(
site,
fee_no,
request_no,
create_by,
create_date
)
VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.site},
#{item.feeNo},
#{item.requestNo},
#{item.createBy},
GETDATE()
)
</foreach>
</insert>
<!-- 删除费用与申请单关联 -->
<delete id="deleteRequestFee">
DELETE FROM srm_inspect_request_fee
WHERE site = #{site} AND fee_no = #{feeNo}
</delete>
<!-- 删除指定的费用与申请单关联 -->
<delete id="deleteRequestFeeByRequestNo">
DELETE FROM srm_inspect_request_fee
WHERE site = #{site} AND fee_no = #{feeNo} AND request_no = #{requestNo}
</delete>
<!-- 获取下一个费用单号 -->
<select id="getNextFeeNo" resultType="java.lang.String">
SELECT ISNULL(MAX(fee_no), 'FEE000000')
FROM srm_fee_header
WHERE site = #{site}
</select>
<select id="getFeeDetailByRequestNo" resultMap="feeDetailMap">
SELECT r.site, r.fee_no, r.item_no, r.fee_type, r.amount, r.remark,
r.create_by, r.create_date, r.update_by, r.update_date
FROM srm_inspect_request_fee f
LEFT JOIN srm_fee_detail r ON f.fee_no = r.fee_no AND f.site = r.site
WHERE f.request_no = #{requestNo}
AND f.site = #{site}
</select>
</mapper>
Loading…
Cancel
Save