package com.malk.shanghaishiwei.controller; import com.alibaba.fastjson.JSON; import com.malk.Util.UtilFile; import com.malk.Util.UtilHttp; import com.malk.Util.UtilMap; import com.malk.Util.UtilServlet; import com.malk.server.common.FilePath; import com.malk.server.common.McException; import com.malk.server.common.McR; import com.malk.shanghaishiwei.service.HTClient; import com.malk.shanghaishiwei.service.HTService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.io.File; import java.util.Map; /** * 错误抛出与拦截详见CatchException */ @Slf4j @RestController @RequestMapping("/shanghaishiwei") public class SHHWController { @Autowired private HTClient htClient; @Autowired private HTService htService; @PostMapping("h3yun-http") McR http(@RequestBody Map data, @RequestParam("code") String code) { log.info("氚云http请求, code = {}, body = {}", code, JSON.toJSONString(data)); switch (code) { case "approve": { String fileNames = htService.approveContract(data); return McR.success(UtilMap.map("fileNames", fileNames)); } // 对象响应【氚云自定义字段,需要通过[]直接取值才有效,序列化后返回前端,仅会保留结构】 case "types": return McR.success(UtilMap.map("types", JSON.toJSONString(htClient.listContractType()))); case "delete": htService.deleteContract(data); break; case "file": { // prd: 后补盖章附件 String fileNames = htService.addAttachments(data, null); return McR.success(UtilMap.map("fileNames", fileNames)); } default: McException.exceptionAccess("code 不合法"); break; } return McR.success(); } ////// test ////// /** * 采购合同类型 */ @PostMapping("listContractType") McR listContractType() { return McR.success(htClient.listContractType()); } /** * 添加采购合同 */ @PostMapping("addPurchaseContact") McR test(@RequestBody Map data) { McException.assertParamException_Null(UtilServlet.isNull(data, "origionContractCode")); return McR.success(htClient.addPurchaseContact(data)); } /** * 删除采购合同 */ @PostMapping("deletePurchaseContract") McR test2(@RequestBody Map data) { McException.assertParamException_Null(UtilServlet.isNull(data, "origionContractCode")); return McR.success(htClient.deletePurchaseContract(data.get("origionContractCode"))); } /** * 添加采购合同条款 */ @PostMapping("addTermsContract") McR addTermsContract(@RequestBody Map data) { McException.assertParamException_Null(UtilServlet.isNull(data, "origionContractCode")); return McR.success(htClient.addTermsContract(data)); } /** * 删除采购合同条款 */ @PostMapping("deleteTermsContract") McR deleteTermsContract(@RequestBody Map data) { McException.assertParamException_Null(UtilServlet.isNull(data, "origionContractCode", "datetime", "agreementType")); return McR.success(htClient.deleteTermsContract(data.get("origionContractCode"), data.get("datetime"), UtilMap.getInt(data, "agreementType"))); } @Autowired private FilePath filePath; /** * 添加采购合同附件 */ @PostMapping("addAttachmentContract") McR addAttachmentContract(@RequestBody Map data) { McException.assertParamException_Null(UtilServlet.isNull(data, "origionContractCode, attachmentUrl")); // 拼接与氚云记录 [删除] String urlFile = data.get("attachmentUrl").toString(); // String fileType = urlFile.substring(urlFile.lastIndexOf(".")).toLowerCase(); // String fileName = data.get("origionContractCode") + fileType; String fileType = "xlsx"; String fileName = "cc.xlsx"; File file = UtilFile.mkdirIfNot(fileName, filePath.getPath().getFile()); UtilHttp.doDownload(urlFile, file); data.put("fileType", fileType); data.put("fileName", fileName); data.put("contractType", 1); // 采购合同 // data.put("Scanning", UtilFile.fileConvertToByteArray(new File("/Users/malk/Desktop/api.pdf"))); data.put("Scanning", UtilFile.fileConvertToByteArray(file)); return McR.success(htClient.addAttachmentContract(data)); } /** * 删除采购合同附件 */ @PostMapping("deleteAttachmentContract") McR deleteAttachmentContract(@RequestBody Map data) { McException.assertParamException_Null(UtilServlet.isNull(data, "origionContractCode")); String fileType = "pdf"; String fileName = "origionContractCode.pdf"; return McR.success(htClient.deleteAttachmentContract(data.get("origionContractCode"), fileType, fileName)); } }