Contract-Manage/ruoyi-system/src/main/java/com/ruoyi/contract/controller/ConPurchaseController.java
2025-12-22 13:34:44 +08:00

235 lines
8.6 KiB
Java

package com.ruoyi.contract.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.contract.domain.bo.ConPurchaseBo;
import com.ruoyi.contract.domain.bo.ConPurchaseMediaBo;
import com.ruoyi.contract.domain.bo.ConPurchasePaymentBo;
import com.ruoyi.contract.domain.bo.conpurchase.ConPurchaseBoCopy;
import com.ruoyi.contract.domain.bo.conpurchase.ConPurchaseBoExtend;
import com.ruoyi.contract.domain.vo.ConPurchaseImportVO;
import com.ruoyi.contract.domain.vo.ConPurchaseVo;
import com.ruoyi.contract.service.IConPurchaseService;
import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 采购合同信息
*
* @author ruoyi
* @date 2024-06-07
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/system/purchase")
public class ConPurchaseController extends BaseController {
private final IConPurchaseService iConPurchaseService;
private static final Logger logger = LoggerFactory.getLogger(ConPurchaseController.class);
/**
* 查询采购合同信息列表
*/
// @SaCheckPermission("system:purchase:list")
@GetMapping("/list")
public TableDataInfo<ConPurchaseVo> list(ConPurchaseBoExtend bo, PageQuery pageQuery) {
return iConPurchaseService.queryPageList(bo, pageQuery);
}
/**
* 汇总采购合同相关字段信息
*/
// @SaCheckPermission("system:purchaseMedia:list")
@PostMapping("/costSummarizing")
public Map<String, Object> costSummarizing(@RequestBody ConPurchaseBoExtend bo) {
return iConPurchaseService.statistics(bo);
}
/**
* 导出采购合同信息列表
*/
// @SaCheckPermission("system:purchase:export")
@Log(title = "采购合同信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ConPurchaseBo bo, HttpServletResponse response) {
List<ConPurchaseVo> list = iConPurchaseService.queryList(bo);
ExcelUtil.exportExcel(list, "采购合同信息", ConPurchaseVo.class, response);
}
/**
* 动态列表导出采购合同信息列表
*/
// @SaCheckPermission("contract:other:export")
@Log(title = "采购合同信息", businessType = BusinessType.EXPORT)
@PostMapping("/dynamicExport")
public void dynamicExport(@RequestBody Map<String, String> map, HttpServletResponse response) {
String fieldName = map.get("fieldName");
String mediaFieldName = "";
if (StringUtils.isNotBlank(fieldName)) {
mediaFieldName = map.get("mediaFieldName");
if (StringUtils.isNotBlank(mediaFieldName)){
mediaFieldName = mediaFieldName.replace("cityName","cityId").
replace("mediaName","mediaId");
}
if (StringUtils.isNotBlank(fieldName)){
fieldName = fieldName.replace("mediaDeptName","mediaDeptId");
}
}else {
throw new ServiceException("主表字段属性不可不填写");
}
String ids = map.get("ids");
if (StringUtils.isNotBlank(ids)){
String[] split = ids.split(",");
List<String> collect = new ArrayList<>(Arrays.asList(split))
.stream()
.filter(ObjectUtil::isNotNull)
.collect(Collectors.toList());
ids = String.join(",", collect);
}
iConPurchaseService.dynamicexportUpgrade(fieldName, mediaFieldName, ids, response);
}
/**
* 获取采购合同信息详细信息
*
* @param id 主键
*/
// @SaCheckPermission("system:purchase:query")
@GetMapping("/{id}")
public R<ConPurchaseVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(iConPurchaseService.queryById(id));
}
/**
* 新增采购合同信息
*/
// @SaCheckPermission("system:purchase:add")
@Log(title = "采购合同信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/add")
public R<Void> add(@Validated(AddGroup.class) @RequestBody ConPurchaseBoCopy boCopy) {
ConPurchaseBo bo = BeanUtil.toBean(boCopy, ConPurchaseBo.class);
if (CollUtil.isNotEmpty(boCopy.getPurchasePaymentBoList())){
//收款
List<ConPurchasePaymentBo> conPurchasePaymentBoList = boCopy.getPurchasePaymentBoList().stream().map(item -> {
ConPurchasePaymentBo conPurchasePaymentBo = BeanUtil.toBean(item, ConPurchasePaymentBo.class);
return conPurchasePaymentBo;
}).collect(Collectors.toList());
bo.setPurchasePaymentBoList(conPurchasePaymentBoList);
}
if (CollUtil.isNotEmpty(boCopy.getPurchaseMediaBoList())){
List<ConPurchaseMediaBo> collect = boCopy.getPurchaseMediaBoList().stream().map(item -> {
ConPurchaseMediaBo conSaleMediaBo = BeanUtil.toBean(item, ConPurchaseMediaBo.class);
return conSaleMediaBo;
}).collect(Collectors.toList());
bo.setPurchaseMediaBoList(collect);
}
return toAjax(iConPurchaseService.insertByBo(bo));
}
/**
* 修改采购合同信息
*/
// @SaCheckPermission("system:purchase:edit")
@Log(title = "采购合同信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/edit")
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ConPurchaseBo bo) throws IllegalAccessException {
return toAjax(iConPurchaseService.updateByBo(bo));
}
/**
* 废除采购合同信息
*/
// @SaCheckPermission("contract:sale:edit")
@Log(title = "采购合同废除", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@GetMapping("/updatePurchaseAblish/{id}")
public R<Void> editAbolish(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return toAjax(iConPurchaseService.updatePurchaseAblish(id));
}
/**
* 恢复采购合同信息
*/
// @SaCheckPermission("contract:sale:edit")
@Log(title = "采购合同恢复", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@GetMapping("/updatePurchaseRenew/{id}")
public R<Void> editRenew(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return toAjax(iConPurchaseService.updatePurchaseRenew(id));
}
/**
* 删除采购合同信息
*
* @param ids 主键串
*/
// @SaCheckPermission("system:purchase:remove")
@Log(title = "采购合同信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(iConPurchaseService.deleteWithValidByIds(Arrays.asList(ids), true));
}
/**
* 更新统计数据
*/
@GetMapping("/updateAllStatic")
public R<Void> updateAllStatic() {
return toAjax(iConPurchaseService.updatePurchaseDaysOverdue());
}
/**
* 采购合同导入
* @param file
* @return
*/
@Log(title = "采购合同", businessType = BusinessType.IMPORT)
@PostMapping("/importData")
public R<List<ConPurchaseImportVO>> importData(MultipartFile file) {
try {
return iConPurchaseService.importPurchase(file);
} catch (Exception e) {
logger.error("采购合同导入异常,异常信息:{}",e.getMessage(),e);
return R.fail(e.getMessage());
}
}
}