feat(contract): 完善合同模版管理功能
- 移除示例模块依赖配置,优化项目结构 - 调整Admin模块控制器依赖顺序,修正模块引用错误 - 更新开发环境数据库配置,调整连接信息及资源路径 - 新增合同模版及打印模版实体、Mapper接口和Service接口 - 实现合同模版管理服务,包括列表查询、详情、创建、编辑、删除功能 - 新增合同模版控制器,提供REST接口支持前端访问 - 实现合同模版表单验证,包含唯一性和必填字段校验 - 支持合同打印模版子表数据的增删改操作 - 增加分页、排序及复杂条件查询支持,兼容PC与APP端数据过滤 - 完善合同模版数据转换和返回,支持多端数据交换和展示
This commit is contained in:
@@ -0,0 +1,269 @@
|
||||
package com.yunzhupaas.cm.controller;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import com.yunzhupaas.base.ActionResult;
|
||||
import com.yunzhupaas.base.UserInfo;
|
||||
import com.yunzhupaas.exception.DataException;
|
||||
import com.yunzhupaas.permission.entity.UserEntity;
|
||||
import com.yunzhupaas.constant.MsgCode;
|
||||
import com.yunzhupaas.cm.service.*;
|
||||
import com.yunzhupaas.cm.entity.*;
|
||||
import com.yunzhupaas.util.*;
|
||||
import com.yunzhupaas.cm.model.contracttemp.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import com.yunzhupaas.flowable.entity.TaskEntity;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.*;
|
||||
import com.yunzhupaas.model.ExcelModel;
|
||||
import com.yunzhupaas.excel.ExcelExportStyler;
|
||||
import com.yunzhupaas.excel.ExcelHelper;
|
||||
import com.yunzhupaas.annotation.YunzhupaasField;
|
||||
import com.yunzhupaas.base.vo.PageListVO;
|
||||
import com.yunzhupaas.base.vo.PaginationVO;
|
||||
import com.yunzhupaas.base.vo.DownloadVO;
|
||||
import com.yunzhupaas.config.ConfigValueUtil;
|
||||
import com.yunzhupaas.base.entity.ProvinceEntity;
|
||||
import java.io.IOException;
|
||||
import java.util.stream.Collectors;
|
||||
import com.yunzhupaas.flowable.entity.TaskEntity;
|
||||
import com.yunzhupaas.exception.WorkFlowException;
|
||||
import com.yunzhupaas.model.visualJson.UploaderTemplateModel;
|
||||
import com.yunzhupaas.base.util.FormExecelUtils;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* 合同模版管理
|
||||
* @版本: V5.2.7
|
||||
* @版权: Copyright @ 2025 深圳市乐程软件有限公司版权所有
|
||||
* @作者: 深圳市乐程软件有限公司
|
||||
* @日期: 2026-05-21
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@Tag(name = "合同模版管理", description = "合同模版管理")
|
||||
@RequestMapping("/api/cm/ContractTemp")
|
||||
public class ContractTempController {
|
||||
|
||||
@Autowired
|
||||
private GeneraterSwapUtil generaterSwapUtil;
|
||||
|
||||
@Autowired
|
||||
private UserProvider userProvider;
|
||||
|
||||
@Autowired
|
||||
private ContractTempService contractTempService;
|
||||
|
||||
@Autowired
|
||||
private ContractPrintingTempService contractPrintingTempService;
|
||||
|
||||
/**
|
||||
* 列表
|
||||
*
|
||||
* @param contractTempPagination
|
||||
* @return
|
||||
*/
|
||||
@Operation(summary = "获取列表")
|
||||
@PostMapping("/getList")
|
||||
public ActionResult list(@RequestBody ContractTempPagination contractTempPagination) throws Exception {
|
||||
List<ContractTempEntity> list = contractTempService.getList(contractTempPagination);
|
||||
List<Map<String, Object>> realList = new ArrayList<>();
|
||||
for (ContractTempEntity entity : list) {
|
||||
Map<String, Object> contractTempMap = JsonUtil.entityToMap(entity);
|
||||
contractTempMap.put("id", contractTempMap.get("contract_temp_id"));
|
||||
// 副表数据
|
||||
// 子表数据
|
||||
List<ContractPrintingTempEntity> contractPrintingTempList = entity.getContractPrintingTemp();
|
||||
contractTempMap.put("tablePrintingTemp",
|
||||
JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(contractPrintingTempList)));
|
||||
contractTempMap.put("contractPrintingTempList",
|
||||
JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(contractPrintingTempList)));
|
||||
realList.add(contractTempMap);
|
||||
}
|
||||
// 数据转换
|
||||
boolean isPc = "pc".equals(ServletUtil.getHeader("yunzhupaas-origin"));
|
||||
realList = generaterSwapUtil.swapDataList(realList, ContractTempConstant.getFormData(),
|
||||
ContractTempConstant.getColumnData(), contractTempPagination.getModuleId(), isPc ? false : false);
|
||||
|
||||
// 返回对象
|
||||
PageListVO vo = new PageListVO();
|
||||
vo.setList(realList);
|
||||
PaginationVO page = JsonUtil.getJsonToBean(contractTempPagination, PaginationVO.class);
|
||||
vo.setPagination(page);
|
||||
return ActionResult.success(vo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建
|
||||
*
|
||||
* @param contractTempForm
|
||||
* @return
|
||||
*/
|
||||
@PostMapping()
|
||||
@Operation(summary = "创建")
|
||||
public ActionResult create(@RequestBody @Valid ContractTempForm contractTempForm) {
|
||||
String b = contractTempService.checkForm(contractTempForm, 0);
|
||||
if (StringUtil.isNotEmpty(b)) {
|
||||
return ActionResult.fail(b);
|
||||
}
|
||||
try {
|
||||
contractTempService.saveOrUpdate(contractTempForm, null, true);
|
||||
} catch (Exception e) {
|
||||
log.error("【合同模版创建接口异常】参数:{}", contractTempForm, e);
|
||||
return ActionResult.fail(MsgCode.FA028.get());
|
||||
}
|
||||
return ActionResult.success(MsgCode.SU001.get());
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Operation(summary = "删除")
|
||||
@DeleteMapping("/{id}")
|
||||
@Transactional
|
||||
public ActionResult delete(@PathVariable("id") String id,
|
||||
@RequestParam(name = "forceDel", defaultValue = "false") boolean forceDel) throws Exception {
|
||||
ContractTempEntity entity = contractTempService.getInfo(id);
|
||||
if (entity != null) {
|
||||
// 主表数据删除
|
||||
contractTempService.delete(entity);
|
||||
QueryWrapper<ContractPrintingTempEntity> queryWrapperContractPrintingTemp = new QueryWrapper<>();
|
||||
queryWrapperContractPrintingTemp.lambda().eq(ContractPrintingTempEntity::getContractTempId,
|
||||
entity.getContractTempCode());
|
||||
// 子表数据删除
|
||||
contractPrintingTempService.remove(queryWrapperContractPrintingTemp);
|
||||
}
|
||||
return ActionResult.success(MsgCode.SU003.get());
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param obj
|
||||
* @return
|
||||
*/
|
||||
@DeleteMapping("/batchRemove")
|
||||
@Transactional
|
||||
@Operation(summary = "批量删除")
|
||||
public ActionResult batchRemove(@RequestBody Object obj) {
|
||||
Map<String, Object> objectMap = JsonUtil.entityToMap(obj);
|
||||
List<String> idList = JsonUtil.getJsonToList(objectMap.get("ids"), String.class);
|
||||
String errInfo = "";
|
||||
List<String> successList = new ArrayList<>();
|
||||
for (String allId : idList) {
|
||||
try {
|
||||
this.delete(allId, false);
|
||||
successList.add(allId);
|
||||
} catch (Exception e) {
|
||||
errInfo = e.getMessage();
|
||||
}
|
||||
}
|
||||
if (successList.size() == 0 && StringUtil.isNotEmpty(errInfo)) {
|
||||
return ActionResult.fail(errInfo);
|
||||
}
|
||||
return ActionResult.success(MsgCode.SU003.get());
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param id
|
||||
* @param contractTempForm
|
||||
* @return
|
||||
*/
|
||||
@PutMapping("/{id}")
|
||||
@Operation(summary = "更新")
|
||||
public ActionResult update(@PathVariable("id") String id, @RequestBody @Valid ContractTempForm contractTempForm,
|
||||
@RequestParam(value = "isImport", required = false) boolean isImport) {
|
||||
ContractTempEntity entity = contractTempService.getInfo(id);
|
||||
if (entity != null) {
|
||||
contractTempForm.setContractTempId(String.valueOf(entity.getContractTempId()));
|
||||
|
||||
if (!isImport) {
|
||||
String b = contractTempService.checkForm(contractTempForm, 1);
|
||||
if (StringUtil.isNotEmpty(b)) {
|
||||
return ActionResult.fail(b);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
contractTempService.saveOrUpdate(contractTempForm, id, false);
|
||||
} catch (DataException e1) {
|
||||
return ActionResult.fail(e1.getMessage());
|
||||
} catch (Exception e) {
|
||||
log.error("【合同模版编辑接口异常】参数:{}", contractTempForm, e);
|
||||
return ActionResult.fail(MsgCode.FA029.get());
|
||||
}
|
||||
return ActionResult.success(MsgCode.SU004.get());
|
||||
} else {
|
||||
return ActionResult.fail(MsgCode.FA002.get());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 表单信息(详情页)
|
||||
* 详情页面使用-转换数据
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Operation(summary = "表单信息(详情页)")
|
||||
@GetMapping("/detail/{id}")
|
||||
public ActionResult detailInfo(@PathVariable("id") String id) {
|
||||
ContractTempEntity entity = contractTempService.getInfo(id);
|
||||
if (entity == null) {
|
||||
return ActionResult.fail(MsgCode.FA001.get());
|
||||
}
|
||||
Map<String, Object> contractTempMap = JsonUtil.entityToMap(entity);
|
||||
contractTempMap.put("id", contractTempMap.get("contract_temp_id"));
|
||||
// 副表数据
|
||||
// 子表数据
|
||||
List<ContractPrintingTempEntity> contractPrintingTempList = entity.getContractPrintingTemp();
|
||||
contractTempMap.put("tablePrintingTemp",
|
||||
JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(contractPrintingTempList)));
|
||||
contractTempMap.put("contractPrintingTempList",
|
||||
JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(contractPrintingTempList)));
|
||||
boolean isPc = "pc".equals(ServletUtil.getHeader("yunzhupaas-origin"));
|
||||
contractTempMap = generaterSwapUtil.swapDataDetail(contractTempMap, ContractTempConstant.getFormData(),
|
||||
"826534292984170373", isPc ? false : false);
|
||||
// 子表数据
|
||||
contractTempMap.put("contractPrintingTempList", contractTempMap.get("tablePrintingTemp"));
|
||||
return ActionResult.success(contractTempMap);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取详情(编辑页)
|
||||
* 编辑页面使用-不转换数据
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Operation(summary = "信息")
|
||||
@GetMapping("/{id}")
|
||||
public ActionResult info(@PathVariable("id") String id) {
|
||||
ContractTempEntity entity = contractTempService.getInfo(id);
|
||||
if (entity == null) {
|
||||
return ActionResult.fail(MsgCode.FA001.get());
|
||||
}
|
||||
Map<String, Object> contractTempMap = JsonUtil.entityToMap(entity);
|
||||
contractTempMap.put("id", contractTempMap.get("contract_temp_id"));
|
||||
// 副表数据
|
||||
// 子表数据
|
||||
List<ContractPrintingTempEntity> contractPrintingTempList = entity.getContractPrintingTemp();
|
||||
contractTempMap.put("tablePrintingTemp",
|
||||
JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(contractPrintingTempList)));
|
||||
contractTempMap.put("contractPrintingTempList",
|
||||
JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(contractPrintingTempList)));
|
||||
contractTempMap = generaterSwapUtil.swapDataForm(contractTempMap, ContractTempConstant.getFormData(),
|
||||
ContractTempConstant.TABLEFIELDKEY, ContractTempConstant.TABLERENAMES);
|
||||
return ActionResult.success(contractTempMap);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user