Browse Source
feat(inspection): 新增费用管理系统功能
feat(inspection): 新增费用管理系统功能
- 创建费用管理相关实体类(SrmFeeHeaderEntity、SrmFeeDetailEntity、SrmInspectRequestFeeEntity) - 实现费用管理控制器(SrmFeeController),提供完整的CRUD操作接口 - 开发费用管理服务层(SrmFeeService及其实现类),包含业务逻辑处理 - 设计费用明细与申请单关联的数据结构和批量操作功能 - 集成MyBatis-Plus进行数据库操作,支持分页查询和事务处理 - 实现费用单号自动生成机制和总金额自动计算更新功能master
9 changed files with 913 additions and 0 deletions
-
197src/main/java/com/xujie/modules/inspection/controller/SrmFeeController.java
-
17src/main/java/com/xujie/modules/inspection/data/AddRequestFeeVO.java
-
40src/main/java/com/xujie/modules/inspection/entity/SrmFeeDetailEntity.java
-
41src/main/java/com/xujie/modules/inspection/entity/SrmFeeHeaderEntity.java
-
25src/main/java/com/xujie/modules/inspection/entity/SrmInspectRequestFeeEntity.java
-
98src/main/java/com/xujie/modules/inspection/mapper/SrmFeeMapper.java
-
78src/main/java/com/xujie/modules/inspection/service/SrmFeeService.java
-
204src/main/java/com/xujie/modules/inspection/service/impl/SrmFeeServiceImpl.java
-
213src/main/resources/mapper/inspection/SrmFeeMapper.xml
@ -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(); |
|||
} |
|||
} |
|||
@ -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; |
|||
} |
|||
@ -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; |
|||
} |
|||
@ -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; |
|||
} |
|||
@ -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; |
|||
} |
|||
@ -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); |
|||
} |
|||
@ -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); |
|||
} |
|||
@ -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); |
|||
} |
|||
} |
|||
} |
|||
@ -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 >= #{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> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue