235 lines
8.6 KiB
Java
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());
|
|
}
|
|
}
|
|
}
|