diff --git a/ABAP_AS_WITH_POOL.jcoDestination b/ABAP_AS_WITH_POOL.jcoDestination index 08d3283..3de8c5c 100644 --- a/ABAP_AS_WITH_POOL.jcoDestination +++ b/ABAP_AS_WITH_POOL.jcoDestination @@ -1,9 +1,13 @@ #for tests only ! <<<<<<< HEAD +#Wed Jun 19 10:12:57 CST 2024 +======= +<<<<<<< HEAD #Wed Jun 19 09:11:03 CST 2024 ======= #Mon Jun 17 15:48:27 CST 2024 >>>>>>> 1efe171bc013909adaa8e3300a0b9ce6c2e24d85 +>>>>>>> d63db1c95090eda2578290808925b20b3608a764 jco.destination.pool_capacity=10 jco.client.lang=ZH jco.client.ashost=172.19.0.125 @@ -12,8 +16,12 @@ jco.client.user=RFC jco.client.sysnr=00 jco.destination.peak_limit=10 <<<<<<< HEAD +jco.client.passwd=dbTq!8PGYoMxt}M?DFv(:oQQUwH:qM9KKr$k^CHW9U;kE9uK +======= +<<<<<<< HEAD jco.client.passwd=g}=[!8cY+]^Y:h6_:E9``X=J#eA[=IM/|(0EB`M)]I1i?/qD ======= jco.client.passwd=654321 >>>>>>> 1efe171bc013909adaa8e3300a0b9ce6c2e24d85 +>>>>>>> d63db1c95090eda2578290808925b20b3608a764 jco.client.client=800 diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index 4edb9ec..dd07567 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -145,6 +145,11 @@ cxf-rt-transports-http-jetty 3.4.3 + + org.springframework + spring-test + 5.2.12.RELEASE + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/redBook/RedBookController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/redBook/RedBookController.java index 7f2e38d..e94836d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/redBook/RedBookController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/redBook/RedBookController.java @@ -28,13 +28,17 @@ import com.ruoyi.web.utils.IdUtils; import com.ruoyi.web.utils.ListSplitUtil; import com.ruoyi.web.utils.rbExcel.excelUtil; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.io.FileUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mock.web.MockMultipartFile; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.annotation.PostConstruct; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import java.io.*; import java.math.BigDecimal; import java.util.*; import java.util.concurrent.ExecutionException; @@ -260,52 +264,79 @@ public class RedBookController extends BaseController @DataSource(DataSourceType.MASTER) @Log(title = "生成询价单", businessType = BusinessType.INSERT) @PostMapping("/madeXjQuot") - public void madeXjQuot(HttpServletResponse response, @RequestBody OAQuot quot) + public AjaxResult madeXjQuot(HttpServletResponse response, @RequestBody OAQuot quot) throws Exception { - Quot xjquot = new Quot(); - xjquot.setQuotId(UUID.fastUUID().toString()); - String quotCode = redBookService.getCode("BJD"); - xjquot.setQuotCode(quotCode); - xjquot.setQuotApprovalStatus("0"); - xjquot.setQuotSalesmanCode(getUsername()); - xjquot.setQuotSalesmanBm(getLoginUser().getUser().getSapUserBm()); - xjquot.setQuotSalesmanName(getLoginUser().getUser().getNickName()); - xjquot.setQuotSalesmanDeptId(getLoginUser().getUser().getDept().getDeptId()+""); - xjquot.setQuotSalesmanDeptName(getLoginUser().getUser().getDept().getDeptName()); - xjquot.setCreateBy(getUsername()); - iQuotService.insertQuot(xjquot); + File excelFile = null; + try{ + xjquot.setQuotId(UUID.fastUUID().toString()); + String quotCode = redBookService.getCode("BJD"); + xjquot.setQuotCode(quotCode); + xjquot.setQuotApprovalStatus("0"); + xjquot.setQuotSalesmanCode(getUsername()); + xjquot.setQuotSalesmanBm(getLoginUser().getUser().getSapUserBm()); + xjquot.setQuotSalesmanName(getLoginUser().getUser().getNickName()); + xjquot.setQuotSalesmanDeptId(getLoginUser().getUser().getDept().getDeptId()+""); + xjquot.setQuotSalesmanDeptName(getLoginUser().getUser().getDept().getDeptName()); + xjquot.setCreateBy(getUsername()); + iQuotService.insertQuot(xjquot); - /** 上传清单附件 **/ - /* String relation_id = xjquot.getQuotId(); - if(!StringUtils.isEmpty(relation_id)){ - if (!file.isEmpty()) - { - QuotFile quotFile= new QuotFile(); - quotFile.setFileId(UUID.fastUUID().toString()); + List list = quot.getSelectedResultData(); - String url = FileUploadUtils.uploadMinio(file,"quot-manage", "quot/"+relation_id); - int index = url.lastIndexOf("/")+1; - String fileName = url.substring(index);//获取文件名 + excelFile = new File("xjQuotFile/"+xjquot.getQuotCode()+".xls"); + File file = excelUtil.exportXjQuotExcel(response,excelFile,xjquot,list); + MultipartFile multipartFile = convert(file); - int index2 = url.indexOf("/quot/"); - String fileBucketName = url.substring(index2);//获取文件对应文件服务器中地址-供后面删除功能用 + /** 上传清单附件 **/ + String relation_id = xjquot.getQuotId(); + if(!StringUtils.isEmpty(relation_id)){ + if (!multipartFile.isEmpty()) + { + QuotFile quotFile= new QuotFile(); + quotFile.setFileId(UUID.fastUUID().toString()); + String url = FileUploadUtils.uploadMinio(multipartFile,"quot-manage", "quot/"+relation_id); + int index = url.lastIndexOf("/")+1; + String fileName = url.substring(index);//获取文件名 - quotFile.setFileName(fileName); - quotFile.setFileBucketName(fileBucketName); - quotFile.setFileUrl(url); - quotFile.setFileSize(file.getSize()); - quotFile.setFileTime(DateUtils.getTime()); - quotFile.setFileType("quotXjFile"); - quotFile.setRelationId(relation_id); - quotFileService.insertQuotFile(quotFile); + int index2 = url.indexOf("/quot/"); + String fileBucketName = url.substring(index2);//获取文件对应文件服务器中地址-供后面删除功能用 + + quotFile.setFileName(fileName); + quotFile.setFileBucketName(fileBucketName); + quotFile.setFileUrl(url); + quotFile.setFileSize(multipartFile.getSize()); + quotFile.setFileTime(DateUtils.getTime()); + quotFile.setFileType("quotXjFile"); + quotFile.setRelationId(relation_id); + quotFileService.insertQuotFile(quotFile); + }else{ + return error("系统异常,生成清单附件为空!"); + } + }else{ + return error("系统异常,询价单号为空!"); } - }else{ - return error("系统异常,询价单号为空!"); - }*/ + }catch(Exception e){ + return error("系统异常"); + } + /** 上传清单附件 **/ - // return success(xjquot); + FileUtils.delete(excelFile); + return success(xjquot); } + + /** + * File转MultipartFile + * @param file + * @return + * @throws IOException + */ + public static MultipartFile convert(File file) throws IOException { + FileInputStream input = new FileInputStream(file); + MultipartFile multipartFile = new MockMultipartFile("file", + file.getName(), "application/vnd.ms-excel;charset=UTF-8", input); + return multipartFile; + } + /** * 报价单提交 * @param quot diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/utils/rbExcel/excelUtil.java b/ruoyi-admin/src/main/java/com/ruoyi/web/utils/rbExcel/excelUtil.java index 55b421b..8dc64ed 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/utils/rbExcel/excelUtil.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/utils/rbExcel/excelUtil.java @@ -9,26 +9,20 @@ import com.ruoyi.redBook.domain.OAQuotProduct; import com.ruoyi.web.utils.IdUtils; import jxl.HeaderFooter; import jxl.Workbook; +import jxl.format.*; import jxl.format.Alignment; import jxl.format.Border; import jxl.format.BorderLineStyle; +import jxl.format.Colour; import jxl.format.VerticalAlignment; import jxl.write.Number; import jxl.write.*; import jxl.write.biff.RowsExceededException; import org.apache.commons.io.FileUtils; import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; -import org.springframework.core.io.support.PathMatchingResourcePatternResolver; -import org.springframework.core.io.support.ResourcePatternResolver; - import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; +import java.io.*; import java.math.BigDecimal; -import java.net.URL; import java.util.Date; import java.util.Iterator; import java.util.List; @@ -665,4 +659,89 @@ public class excelUtil { } } + + + /** + * 生成询价单-清单附件 + * @param response + * @param quot + * @param list + */ + public static File exportXjQuotExcel(HttpServletResponse response,File excelFile, Quot quot, List list){ + try { + WritableWorkbook wwb = Workbook.createWorkbook(excelFile); + + // 新建一张表 + WritableSheet wsheet = wwb.createSheet("报价单", 0); + Label label = new Label(0, 0, ""); + int i= 0; + //产品信息 + WritableFont wf_merge = new WritableFont(WritableFont.ARIAL,11,WritableFont.BOLD,false, UnderlineStyle.NO_UNDERLINE, Colour.WHITE); + WritableCellFormat wff_merge = new WritableCellFormat(wf_merge); + wff_merge.setAlignment(Alignment.CENTRE); + wff_merge.setBackground(jxl.format.Colour.GREY_50_PERCENT); // 设置单元格的背景颜色 + + wsheet.setRowView(i,400); + label = new Label(0, i, "产品型号",wff_merge); + + wsheet.addCell(label); + label = new Label(1, i, "规格",wff_merge); + wsheet.addCell(label); + label = new Label(2, i, "电压",wff_merge); + wsheet.addCell(label); + label = new Label(3, i, "单位",wff_merge); + wsheet.addCell(label); + label = new Label(4, i, "数量",wff_merge); + wsheet.addCell(label); + + // 列宽 + wsheet.setColumnView(0, 18); + wsheet.setColumnView(1, 18); + wsheet.setColumnView(2, 18); + wsheet.setColumnView(3, 18); + wsheet.setColumnView(4, 18); + + i++; + //数据 + WritableCellFormat cellFormat=new WritableCellFormat(); + cellFormat.setAlignment(Alignment.LEFT); + + int j=1; + + for(Iterator it = list.iterator(); it.hasNext();) + { + OAQuotProduct s = it.next(); + wsheet.setRowView(i,400); + label = new Label(0, i, s.getName_1(),wff_merge); + label.setCellFormat(cellFormat); + wsheet.addCell(label); + label = new Label(1, i, s.getSpec(),wff_merge); + label.setCellFormat(cellFormat); + wsheet.addCell(label); + label = new Label(2,i, s.getVoltage(),wff_merge); + label.setCellFormat(cellFormat); + wsheet.addCell(label); + label = new Label(3,i, s.getStu(),wff_merge); + label.setCellFormat(cellFormat); + wsheet.addCell(label); + label = new Label(4,i, String.valueOf(s.getCount()),wff_merge); + label.setCellFormat(cellFormat); + wsheet.addCell(label); + i++; + j++; + } + wwb.write(); + wwb.close(); + + } catch (RowsExceededException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (WriteException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return excelFile; + } } diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index b810335..758b175 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -88,7 +88,7 @@ spring: # 密码 password: # 连接超时时间 - timeout: 30s + timeout: 60s lettuce: pool: # 连接池中的最小空闲连接 @@ -96,7 +96,7 @@ spring: # 连接池中的最大空闲连接 max-idle: 100 # 连接池的最大数据库连接数 - max-active: 300 + max-active: 500 # #连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: -1ms # 关闭超时时间 diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedissonConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedissonConfig.java index 6869ee4..9c1b582 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedissonConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedissonConfig.java @@ -43,6 +43,7 @@ public class RedissonConfig { // 可以用"rediss://"来启用SSL连接 String address = "redis://" + host + ":" + port; singleServerConfig.setAddress(address); + config.useSingleServer().setPingConnectionInterval(0); // 防止出现 redis 连接不上的问题 // 设置 数据库编号 singleServerConfig.setDatabase(database); /* diff --git a/ruoyi-ui/src/api/redBook/redBook.js b/ruoyi-ui/src/api/redBook/redBook.js index 9726e89..bac7bdb 100644 --- a/ruoyi-ui/src/api/redBook/redBook.js +++ b/ruoyi-ui/src/api/redBook/redBook.js @@ -108,7 +108,7 @@ export function saveQuot(data) { data: data }) } -//生成报价单 +//生成询价单 export function madeXjQuot(data) { return request({ url: '/redBook/redBook/madeXjQuot', diff --git a/ruoyi-ui/src/views/redBook/productSelect.vue b/ruoyi-ui/src/views/redBook/productSelect.vue index c92935c..52f16b6 100644 --- a/ruoyi-ui/src/views/redBook/productSelect.vue +++ b/ruoyi-ui/src/views/redBook/productSelect.vue @@ -8,7 +8,7 @@ 搜索 - + 生成询价单 生成报价单 保存 清空信息 @@ -784,27 +784,7 @@ handleMadeXjQuotClick() { this.form.selectedResultData = this.selectedResultData; madeXjQuot(this.form).then(response => { - //this.$modal.msgSuccess("生成询价单成功,单号:"+response.data.quotCode); - // 处理返回的文件流 - const content = response; - const blob = new Blob([content]); - const fileName = "RB_BJD_"+this.getTodayCourse()+".xls"; - if ("download" in document.createElement("a")) { - // 非IE下载 - const elink = document.createElement("a"); - elink.download = fileName; - elink.style.display = "none"; - elink.href = URL.createObjectURL(blob); - document.body.appendChild(elink); - elink.click(); - URL.revokeObjectURL(elink.href); // 释放URL 对象 - document.body.removeChild(elink); - }else { - // IE10+下载 - navigator.msSaveBlob(blob, fileName); - } - - + this.$modal.msgSuccess("生成询价单成功,单号:"+response.data.quotCode); }); }, diff --git a/ruoyi-ui/src/views/statisticsQuot/statisticsQuot/index.vue b/ruoyi-ui/src/views/statisticsQuot/statisticsQuot/index.vue index 6b651bb..8289cd3 100644 --- a/ruoyi-ui/src/views/statisticsQuot/statisticsQuot/index.vue +++ b/ruoyi-ui/src/views/statisticsQuot/statisticsQuot/index.vue @@ -84,11 +84,6 @@ - - -