You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
339 lines
14 KiB
339 lines
14 KiB
package jnpf.controller; |
|
|
|
import cn.hutool.core.collection.CollectionUtil; |
|
import cn.hutool.core.date.DateUtil; |
|
import cn.hutool.core.util.StrUtil; |
|
import cn.xuyanwu.spring.file.storage.FileInfo; |
|
import io.swagger.v3.oas.annotations.Operation; |
|
import io.swagger.v3.oas.annotations.tags.Tag; |
|
import jnpf.base.ActionResult; |
|
import jnpf.base.UserInfo; |
|
import jnpf.base.vo.DownloadVO; |
|
import jnpf.base.vo.PageListVO; |
|
import jnpf.base.vo.PaginationVO; |
|
import jnpf.constant.FileTypeConstant; |
|
import jnpf.controller.util.SwapUtil; |
|
import jnpf.entity.BiddingProjectSubscribeEntity; |
|
import jnpf.exception.DataException; |
|
import jnpf.file.FileApi; |
|
import jnpf.file.FileUploadApi; |
|
import jnpf.model.bidding_project_subscribe.*; |
|
import jnpf.model.dto.BiddingProjectDto; |
|
import jnpf.permission.entity.UserEntity; |
|
import jnpf.service.BiddingProjectSubscribeService; |
|
import jnpf.util.*; |
|
import lombok.AllArgsConstructor; |
|
import lombok.extern.slf4j.Slf4j; |
|
import org.springframework.transaction.annotation.Transactional; |
|
import org.springframework.web.bind.annotation.*; |
|
import org.springframework.web.multipart.MultipartFile; |
|
|
|
import javax.validation.Valid; |
|
import java.io.IOException; |
|
import java.time.LocalDateTime; |
|
import java.util.ArrayList; |
|
import java.util.Date; |
|
import java.util.List; |
|
import java.util.Map; |
|
|
|
/** |
|
* bidding_project_subscribe |
|
* |
|
* @版本: V3.5 |
|
* @版权: 引迈信息技术有限公司(https://www.jnpfsoft.com) |
|
* @作者: JNPF开发平台组 |
|
* @日期: 2024-06-11 |
|
*/ |
|
@Slf4j |
|
@RestController |
|
@Tag(name = "bidding_project_subscribe", description = "example") |
|
@RequestMapping("/Bidding_project_subscribe") |
|
@AllArgsConstructor |
|
public class BiddingProjectSubscribeController { |
|
|
|
private final SwapUtil generaterSwapUtil; |
|
private final FileApi fileApi; |
|
private final FileUploadApi fileUploadApi; |
|
|
|
|
|
private final UserProvider userProvider; |
|
|
|
|
|
private final BiddingProjectSubscribeService biddingProjectSubscribeService; |
|
|
|
|
|
/** |
|
* 列表 |
|
* |
|
* @param biddingProjectSubscribePagination |
|
* @return |
|
*/ |
|
@Operation(summary = "获取列表") |
|
@PostMapping("/getList") |
|
public ActionResult list(@RequestBody BiddingProjectSubscribePagination biddingProjectSubscribePagination) throws IOException { |
|
List<BiddingProjectSubscribeEntity> list = biddingProjectSubscribeService.getList(biddingProjectSubscribePagination); |
|
List<Map<String, Object>> realList = new ArrayList<>(); |
|
// // 方式一:使用fastjson |
|
// SerializeConfig config = new SerializeConfig(); |
|
// config.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase; |
|
for (BiddingProjectSubscribeEntity entity : list) { |
|
|
|
|
|
Map<String, Object> bidding_project_subscribeMap = JsonUtil.entityToMap(entity); |
|
|
|
// Map<String, Object> bidding_project_subscribeMap= JSON.parseObject(text,Map.class); |
|
bidding_project_subscribeMap.put("id", bidding_project_subscribeMap.get("id")); |
|
//副表数据 |
|
//子表数据 |
|
realList.add(bidding_project_subscribeMap); |
|
} |
|
//数据转换 |
|
realList = generaterSwapUtil.swapDataList(realList, BiddingProjectSubscribeConstant.getFormData(), BiddingProjectSubscribeConstant.getColumnData(), biddingProjectSubscribePagination.getModuleId(), false); |
|
|
|
// // 创建ObjectMapper实例 |
|
// ObjectMapper objectMapper = new ObjectMapper(); |
|
// |
|
// // 配置ObjectMapper将驼峰转换为下划线 |
|
// objectMapper.setPropertyNamingStrategy(Pro pertyNamingStrategies.SNAKE_CASE); |
|
// |
|
// // 禁用默认的换行输出 |
|
// objectMapper.configure(SerializationFeature.INDENT_OUTPUT, false); |
|
// for (Map<String, Object> map : realList) { |
|
// String json = objectMapper.writeValueAsString(map); |
|
// System.out.println(json); |
|
// } |
|
//返回对象 |
|
PageListVO vo = new PageListVO(); |
|
vo.setList(realList); |
|
PaginationVO page = JsonUtil.getJsonToBean(biddingProjectSubscribePagination, PaginationVO.class); |
|
vo.setPagination(page); |
|
return ActionResult.success(vo); |
|
} |
|
|
|
/** |
|
* 创建 |
|
* |
|
* @param bidding_project_subscribeForm |
|
* @return |
|
*/ |
|
@PostMapping() |
|
@Transactional |
|
@Operation(summary = "创建") |
|
public ActionResult create(@RequestBody @Valid BiddingProjectSubscribeForm bidding_project_subscribeForm) throws DataException { |
|
String b = biddingProjectSubscribeService.checkForm(bidding_project_subscribeForm, 0); |
|
if (StringUtil.isNotEmpty(b)) { |
|
return ActionResult.fail(b); |
|
} |
|
String oldBidOpeningTime = bidding_project_subscribeForm.getBidOpeningTime(); |
|
String mainId = RandomUtil.uuId(); |
|
UserInfo userInfo = userProvider.get(); |
|
UserEntity userEntity = generaterSwapUtil.getUser(userInfo.getUserId()); |
|
bidding_project_subscribeForm = JsonUtil.getJsonToBean( |
|
SwapUtil.swapDatetime(BiddingProjectSubscribeConstant.getFormData(), bidding_project_subscribeForm), BiddingProjectSubscribeForm.class); |
|
BiddingProjectSubscribeEntity entity = JsonUtil.getJsonToBean(bidding_project_subscribeForm, BiddingProjectSubscribeEntity.class); |
|
entity.setPlanSubmissionTime(new Date()); |
|
if (bidding_project_subscribeForm.getManagementStyle().equals("2")) { |
|
entity.setResultReportingTime(new Date()); |
|
entity.setIsApproval(true); |
|
} |
|
entity.setFlowtaskid(mainId); |
|
if (StrUtil.isNotBlank(oldBidOpeningTime)) { |
|
entity.setBidOpeningTime(new Date(Long.parseLong(oldBidOpeningTime))); |
|
} |
|
entity.setCreateTime(LocalDateTime.now()); |
|
entity.setUpdateTime(LocalDateTime.now()); |
|
checkProjectAmount(entity); |
|
biddingProjectSubscribeService.saveOrUpdate(entity); |
|
if (StringUtil.equals(bidding_project_subscribeForm.getSaveType(), "1")) { |
|
//修改流程 查询领导 新增子单数据 记录流程 |
|
biddingProjectSubscribeService.updateFlow(userEntity, entity, true); |
|
} else { |
|
biddingProjectSubscribeService.temporaryStorage(userEntity, entity); |
|
} |
|
return ActionResult.success("创建成功"); |
|
} |
|
|
|
private void checkProjectAmount(BiddingProjectSubscribeEntity entity) { |
|
if (null==entity.getWinningBidderInfo())return; |
|
if (StrUtil.isBlank(entity.getWinningBidderType()))return; |
|
switch (entity.getWinningBidderType()){ |
|
case "1": |
|
entity.setProjectAmount(entity.getWinningBidderInfo().stream() |
|
.map(BiddingProjectDto.WinningBidderParam::getAmount) |
|
.mapToDouble(Double::parseDouble) |
|
.sum()); |
|
break; |
|
case "2": |
|
Double top = entity.getWinningBidderInfo().stream() |
|
.map(BiddingProjectDto.WinningBidderParam::getAmount) |
|
.mapToDouble(Double::parseDouble) |
|
.sum(); |
|
for (BiddingProjectDto.WinningBidderParam winningBidderParam : entity.getWinningBidderInfo()) { |
|
if (CollectionUtil.isEmpty(winningBidderParam.getChildren()))continue; |
|
top+=winningBidderParam.getChildren().stream() |
|
.map(BiddingProjectDto.BaseWinningBidderParam::getAmount) |
|
.mapToDouble(Double::parseDouble) |
|
.sum(); |
|
} |
|
entity.setProjectAmount(top); |
|
break; |
|
default: |
|
return; |
|
} |
|
} |
|
|
|
|
|
@Operation(summary = "审核") |
|
@PostMapping("/auditing") |
|
public ActionResult auditing(@RequestBody BiddingProjectDto.AuditingParam param) throws IOException { |
|
biddingProjectSubscribeService.auditing(param); |
|
return ActionResult.success("审核成功"); |
|
} |
|
|
|
@Operation(summary = "归档") |
|
@PostMapping("/archivist") |
|
public ActionResult archivist(@RequestBody BiddingProjectDto.ArchivistParam param) throws IOException { |
|
biddingProjectSubscribeService.archivist(param); |
|
return ActionResult.success("归档完成"); |
|
} |
|
|
|
|
|
@Operation(summary = "获取当前人层级层级") |
|
@GetMapping("/obtainHierarchy") |
|
public ActionResult obtainHierarchy() throws IOException { |
|
String hierarchy = biddingProjectSubscribeService.obtainHierarchy(); |
|
return ActionResult.success(hierarchy); |
|
} |
|
|
|
@Operation(summary = "获取招标填报人员层级") |
|
@GetMapping("/obtainHierarchyOfCreate") |
|
public ActionResult obtainHierarchyOfCreate(@RequestParam String id) throws IOException { |
|
String hierarchy = biddingProjectSubscribeService.obtainHierarchyOfCreate(id); |
|
return ActionResult.success(hierarchy); |
|
} |
|
|
|
@Operation(summary = "终止项目") |
|
@PostMapping("/termination") |
|
public ActionResult termination(@RequestParam String id) throws IOException { |
|
biddingProjectSubscribeService.termination(id); |
|
return ActionResult.success("操作成功"); |
|
} |
|
|
|
@Operation(summary = "获取全部文件") |
|
@GetMapping("/getAllFileInfo") |
|
public ActionResult getAllFileInfo(@RequestParam String id) throws IOException { |
|
return ActionResult.success(biddingProjectSubscribeService.getAllFileInfo(id)); |
|
} |
|
|
|
/** |
|
* 编辑 |
|
* |
|
* @param id |
|
* @param bidding_project_subscribeForm |
|
* @return |
|
*/ |
|
@PutMapping("/{id}") |
|
@Transactional |
|
@Operation(summary = "更新") |
|
public ActionResult update(@PathVariable("id") String id, @RequestBody @Valid BiddingProjectSubscribeForm bidding_project_subscribeForm) throws DataException { |
|
String b = biddingProjectSubscribeService.checkForm(bidding_project_subscribeForm, 1); |
|
if (StringUtil.isNotEmpty(b)) { |
|
return ActionResult.fail(b); |
|
} |
|
String oldBidOpeningTime = bidding_project_subscribeForm.getBidOpeningTime(); |
|
UserInfo userInfo = userProvider.get(); |
|
BiddingProjectSubscribeEntity entity = biddingProjectSubscribeService.getInfo(id); |
|
if (entity != null) { |
|
bidding_project_subscribeForm = JsonUtil.getJsonToBean( |
|
generaterSwapUtil.swapDatetime(BiddingProjectSubscribeConstant.getFormData(), bidding_project_subscribeForm), BiddingProjectSubscribeForm.class); |
|
BiddingProjectSubscribeEntity subentity = JsonUtil.getJsonToBean(bidding_project_subscribeForm, BiddingProjectSubscribeEntity.class); |
|
if (StrUtil.isNotBlank(oldBidOpeningTime)) { |
|
entity.setBidOpeningTime(new Date(Long.parseLong(oldBidOpeningTime))); |
|
} |
|
subentity.setUpdateTime(LocalDateTime.now()); |
|
subentity.setCreateTime(entity.getCreateTime()); |
|
checkProjectAmount(subentity); |
|
// subentity.setWinningBidderInfo(entity.getWinningBidderInfo()); |
|
// subentity.setWinningBidderType(entity.getWinningBidderType()); |
|
boolean b1 = biddingProjectSubscribeService.updateById(subentity); |
|
if (!b1) { |
|
return ActionResult.fail("当前表单原数据已被调整,请重新进入该页面编辑并提交数据"); |
|
} |
|
biddingProjectSubscribeService.updateFlowByUser(entity); |
|
return ActionResult.success("更新成功"); |
|
} else { |
|
return ActionResult.fail("更新失败,数据不存在"); |
|
} |
|
} |
|
|
|
/** |
|
* 删除 |
|
* |
|
* @param id |
|
* @return |
|
*/ |
|
@Operation(summary = "删除") |
|
@DeleteMapping("/{id}") |
|
@Transactional |
|
public ActionResult delete(@PathVariable("id") String id) { |
|
BiddingProjectSubscribeEntity entity = biddingProjectSubscribeService.getInfo(id); |
|
if (entity != null) { |
|
//主表数据删除 |
|
biddingProjectSubscribeService.delete(entity); |
|
|
|
} |
|
return ActionResult.success("删除成功"); |
|
} |
|
|
|
/** |
|
* 获取详情(编辑页) |
|
* 编辑页面使用-不转换数据 |
|
* |
|
* @param id |
|
* @return |
|
*/ |
|
@Operation(summary = "信息") |
|
@GetMapping("/{id}") |
|
public ActionResult info(@PathVariable("id") String id) { |
|
BiddingProjectSubscribeEntity entity = biddingProjectSubscribeService.getInfo(id); |
|
if (entity == null) { |
|
return ActionResult.fail("表单数据不存在!"); |
|
} |
|
Map<String, Object> bidding_project_subscribeMap = JsonUtil.entityToMap(entity); |
|
bidding_project_subscribeMap.put("id", bidding_project_subscribeMap.get("id")); |
|
//副表数据 |
|
//子表数据 |
|
bidding_project_subscribeMap = generaterSwapUtil.swapDataForm(bidding_project_subscribeMap, BiddingProjectSubscribeConstant.getFormData(), BiddingProjectSubscribeConstant.TABLEFIELDKEY, BiddingProjectSubscribeConstant.TABLERENAMES); |
|
return ActionResult.success(bidding_project_subscribeMap); |
|
} |
|
|
|
/** |
|
* @param type 1-备案表 2-审批 3-结果 |
|
* @return |
|
*/ |
|
@Operation(summary = "下载文件") |
|
@GetMapping("/download/{id}/{type}") |
|
public ActionResult download(@PathVariable("id") String id, @PathVariable("type") String type) { |
|
DownloadVO vo = DownloadVO.builder().build(); |
|
MultipartFile multipartFile = biddingProjectSubscribeService.download(id, type); |
|
String temporaryFilePath = fileApi.getPath(FileTypeConstant.TEMPORARY); |
|
FileInfo fileInfo = fileUploadApi.uploadFile(multipartFile, temporaryFilePath, multipartFile.getOriginalFilename()); |
|
vo.setName(fileInfo.getFilename()); |
|
vo.setUrl(UploaderUtil.uploaderFile(fileInfo.getFilename() + "#" + "Temporary") + "&name=" + multipartFile.getOriginalFilename()); |
|
return ActionResult.success(vo); |
|
} |
|
|
|
@Operation(summary = "下载文件") |
|
@PostMapping("/download/{id}/{type}") |
|
public ActionResult download2(@PathVariable("id") String id, @PathVariable("type") String type,@RequestBody BiddingProjectSubscribeForm form) { |
|
DownloadVO vo = DownloadVO.builder().build(); |
|
BiddingProjectSubscribeEntity entity = JsonUtil.getJsonToBean(form, BiddingProjectSubscribeEntity.class); |
|
MultipartFile multipartFile = biddingProjectSubscribeService.download(id, type,entity); |
|
String temporaryFilePath = fileApi.getPath(FileTypeConstant.TEMPORARY); |
|
FileInfo fileInfo = fileUploadApi.uploadFile(multipartFile, temporaryFilePath, multipartFile.getOriginalFilename()); |
|
vo.setName(fileInfo.getFilename()); |
|
vo.setUrl(UploaderUtil.uploaderFile(fileInfo.getFilename() + "#" + "Temporary") + "&name=" + multipartFile.getOriginalFilename()); |
|
return ActionResult.success(vo); |
|
} |
|
|
|
}
|
|
|