From 214c60a713552df3bfdd7f03b6ff0210902afad7 Mon Sep 17 00:00:00 2001 From: xd <844539747@qq.com> Date: Fri, 31 May 2024 16:37:12 +0800 Subject: [PATCH] '123' --- ABAP_AS_WITH_POOL.jcoDestination | 4 +- logon/jnlogo_CKX20240531091305985620.png | Bin 0 -> 15292 bytes logon/wc_TSR20240531091306068374.png | Bin 0 -> 7278 bytes .../web/controller/quot/QuotController.java | 4 +- .../controller/redBook/RedBookController.java | 77 +++++++++++++++- .../web/controller/tool/quot/quotModel.java | 1 + .../ruoyi/redBook/domain/OAQuotProduct.java | 7 +- .../redBook/domain/OAQuotProductTemplate.java | 52 +++++++++++ .../ruoyi/redBook/mapper/OARedBookMapper.java | 9 ++ .../redBook/service/IRedBookService.java | 18 +++- .../service/impl/AsyncRbTaskService.java | 22 +++++ .../service/impl/RedBookServiceImpl.java | 43 +++++++-- .../main/resources/mapper/quot/QuotMapper.xml | 1 + .../mapper/redBook/OARedBookMapper.xml | 14 ++- ruoyi-ui/src/utils/request.js | 2 +- ruoyi-ui/src/views/quot/quot/index.vue | 15 ++- ruoyi-ui/src/views/redBook/productSelect.vue | 87 +++++++++++++++++- 17 files changed, 329 insertions(+), 27 deletions(-) create mode 100644 logon/jnlogo_CKX20240531091305985620.png create mode 100644 logon/wc_TSR20240531091306068374.png create mode 100644 ruoyi-system/src/main/java/com/ruoyi/redBook/domain/OAQuotProductTemplate.java diff --git a/ABAP_AS_WITH_POOL.jcoDestination b/ABAP_AS_WITH_POOL.jcoDestination index ee158ac..d913671 100644 --- a/ABAP_AS_WITH_POOL.jcoDestination +++ b/ABAP_AS_WITH_POOL.jcoDestination @@ -1,5 +1,5 @@ #for tests only ! -#Wed May 29 13:58:29 CST 2024 +#Fri May 31 09:03:02 CST 2024 jco.destination.pool_capacity=10 jco.client.lang=ZH jco.client.ashost=172.19.0.120 @@ -7,5 +7,5 @@ jco.client.saprouter= jco.client.user=RFC jco.client.sysnr=00 jco.destination.peak_limit=10 -jco.client.passwd=654321 +jco.client.passwd=dK4Y;AwNNY+M!AP8*j!bqsNgHiN+no{qJ7swP{yqQ,;.~I8T jco.client.client=300 diff --git a/logon/jnlogo_CKX20240531091305985620.png b/logon/jnlogo_CKX20240531091305985620.png new file mode 100644 index 0000000000000000000000000000000000000000..4b005d0594c1561378af0a11bb131c99a59b55c8 GIT binary patch literal 15292 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 O0000F4)G)VE_?#10*in|7P*Wzx4Qi}EV-~Hz< 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 WNAS6i=Kp?#2+Hyra util = new ExcelUtil(QuotMaterial.class); - List userList = util.importExcel(file.getInputStream()); - return success(userList); + List materialList = util.importExcel(file.getInputStream()); + return success(materialList); } /** 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 0921dee..3c36f5b 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 @@ -11,12 +11,11 @@ import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.DataSourceType; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.uuid.UUID; import com.ruoyi.customer.domain.Customer; -import com.ruoyi.redBook.domain.OAQuotProduct; -import com.ruoyi.redBook.domain.Product; -import com.ruoyi.redBook.domain.OAQuot; -import com.ruoyi.redBook.domain.RbVersionDateResult; +import com.ruoyi.quot.domain.QuotMaterial; +import com.ruoyi.redBook.domain.*; import com.ruoyi.redBook.service.IRedBookService; import com.ruoyi.redBook.service.impl.AsyncRbTaskService; import com.ruoyi.web.utils.IdUtils; @@ -25,6 +24,7 @@ import com.ruoyi.web.utils.rbExcel.excelUtil; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.PostConstruct; import javax.annotation.Resource; @@ -269,6 +269,75 @@ public class RedBookController extends BaseController excelUtil.exportExcel(response,quot,list); } + /** + * 导出产品明细模板 + * @param response + */ + @PostMapping("/importTemplate") + public void importTemplate(HttpServletResponse response) + { + ExcelUtil util = new ExcelUtil(OAQuotProductTemplate.class); + util.importTemplateExcel(response, "产品数据"); + } + + /** + * 导入产品明细 + * @param file + * @param updateSupport + * @return + * @throws Exception + */ + @PostMapping("/importData") + public AjaxResult importData(String rbUid, MultipartFile file, boolean updateSupport) throws Exception + { + ExcelUtil util = new ExcelUtil(OAQuotProductTemplate.class); + List tempList = util.importExcel(file.getInputStream()); + + if(tempList.size()==0){ + return error("导入文件无产品明细数据"); + }else if(tempList.size()>200){ + return error("最多导入200条"); + } + + int index = 1; + for(OAQuotProductTemplate temp:tempList){ + temp.setIndex(index); + temp.setRbUid(rbUid); + index++; + } + + System.out.println("开始时间:" + DateUtils.getTime()); + List> list = ListSplitUtil.averageList(tempList,10); + List OAQuotProducts = new ArrayList<>(); + + //定义一个存所有线程回调函数的list + List>> futureList=new ArrayList<>(); + int num = 1; + for(List lt:list){ + futureList.add(asyncRbTaskService.executeAsyncTask2("线程"+num+"【"+lt.size()+"条】",lt)); + num++; + } + //判断进程是否全部结束** + while (true){ + //回调信息空了就结束** + if (futureList.isEmpty()){ + break; + } + for (int i = 0; i < futureList.size(); i++) { + if (futureList.get(i).isDone()){ + OAQuotProducts.addAll(futureList.get(i).get()); + //判断线程结束,输出回调信息,并将该回调清除 + futureList.remove(i); + }else { + continue; + } + } + } + System.out.println("结束时间:" + DateUtils.getTime()); + Collections.sort(OAQuotProducts); + return success(OAQuotProducts); + } + /** * 获取调价日期 * @param oAQuot diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/quot/quotModel.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/quot/quotModel.java index cf48eef..efdb07c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/quot/quotModel.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/quot/quotModel.java @@ -21,6 +21,7 @@ public class quotModel { @ApiModelProperty("整单料价价差率") private String quotMatpriceDiff;//整单料价价差率 + @ApiModelProperty("产品明细") private List quotMaterial;//明细 public String getQuotJswCode() { diff --git a/ruoyi-system/src/main/java/com/ruoyi/redBook/domain/OAQuotProduct.java b/ruoyi-system/src/main/java/com/ruoyi/redBook/domain/OAQuotProduct.java index bcf48f0..a32a8a6 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/redBook/domain/OAQuotProduct.java +++ b/ruoyi-system/src/main/java/com/ruoyi/redBook/domain/OAQuotProduct.java @@ -2,7 +2,7 @@ package com.ruoyi.redBook.domain; import java.math.BigDecimal; -public class OAQuotProduct { +public class OAQuotProduct implements Comparable{ private Integer index;//序号 private String uid_0;//版本uid private String name_0;//产品型号 @@ -95,4 +95,9 @@ public class OAQuotProduct { public BigDecimal getPer2() { return per2; } public void setPer2(BigDecimal per2) { this.per2 = per2; } + + @Override + public int compareTo(OAQuotProduct p) { + return this.getIndex() - p.getIndex(); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/redBook/domain/OAQuotProductTemplate.java b/ruoyi-system/src/main/java/com/ruoyi/redBook/domain/OAQuotProductTemplate.java new file mode 100644 index 0000000..2a3e286 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/redBook/domain/OAQuotProductTemplate.java @@ -0,0 +1,52 @@ +package com.ruoyi.redBook.domain; + +import com.ruoyi.common.annotation.Excel; + +import java.math.BigDecimal; + +public class OAQuotProductTemplate { + private Integer index; + + private String rbUid; + + @Excel(name = "型号") + private String name_1;//型号 + + @Excel(name = "规格") + private String spec;//规格 + + @Excel(name = "数量") + private BigDecimal count;//数量 + + public Integer getIndex() { return index; } + + public void setIndex(Integer index) { this.index = index; } + + public String getRbUid() { return rbUid; } + + public void setRbUid(String rbUid) { this.rbUid = rbUid; } + + public String getName_1() { + return name_1; + } + + public void setName_1(String name_1) { + this.name_1 = name_1; + } + + public String getSpec() { + return spec; + } + + public void setSpec(String spec) { + this.spec = spec; + } + + public BigDecimal getCount() { + return count; + } + + public void setCount(BigDecimal count) { + this.count = count; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/redBook/mapper/OARedBookMapper.java b/ruoyi-system/src/main/java/com/ruoyi/redBook/mapper/OARedBookMapper.java index 8484f7b..157af00 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/redBook/mapper/OARedBookMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/redBook/mapper/OARedBookMapper.java @@ -116,6 +116,15 @@ public interface OARedBookMapper */ String getFixDatePrice(@Param("name_0") String name_0,@Param("spec") String spec,@Param("voltage") String voltage, @Param("uid_0") String uid_0); + /** + * 导入明细批量获取红本价格 + * @param name_0 + * @param spec + * @param rbUid + * @return + */ + OAQuotProduct getFixDatePrice2(@Param("name_1") String name_1, @Param("spec") String spec, @Param("uid_0") String rbUid); + /** * 查询已生成的报价单列表 * @param oaQuot diff --git a/ruoyi-system/src/main/java/com/ruoyi/redBook/service/IRedBookService.java b/ruoyi-system/src/main/java/com/ruoyi/redBook/service/IRedBookService.java index 2bc1cf5..7a4ecfb 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/redBook/service/IRedBookService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/redBook/service/IRedBookService.java @@ -4,10 +4,7 @@ import com.ruoyi.common.annotation.DataSource; import com.ruoyi.common.enums.DataSourceType; import com.ruoyi.customer.domain.Customer; import com.ruoyi.quote.domain.CalculateRBParamDto; -import com.ruoyi.redBook.domain.OAQuot; -import com.ruoyi.redBook.domain.OAQuotProduct; -import com.ruoyi.redBook.domain.Product; -import com.ruoyi.redBook.domain.RbVersionDateResult; +import com.ruoyi.redBook.domain.*; import java.util.List; @@ -136,5 +133,18 @@ public interface IRedBookService */ String rb_price_version(); + /** + * 选择调价版本批量获取红本价格 + * @param list + * @return + */ List setRedBookPrice(List list); + + /** + * 导入明细批量获取红本价格 + * @param list + * @return + */ + List setRedBookPrice2(List list); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/redBook/service/impl/AsyncRbTaskService.java b/ruoyi-system/src/main/java/com/ruoyi/redBook/service/impl/AsyncRbTaskService.java index 5b16427..ce1df69 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/redBook/service/impl/AsyncRbTaskService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/redBook/service/impl/AsyncRbTaskService.java @@ -1,6 +1,8 @@ package com.ruoyi.redBook.service.impl; +import com.ruoyi.common.utils.DateUtils; import com.ruoyi.redBook.domain.OAQuotProduct; +import com.ruoyi.redBook.domain.OAQuotProductTemplate; import com.ruoyi.redBook.service.IRedBookService; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.AsyncResult; @@ -16,11 +18,31 @@ public class AsyncRbTaskService { @Resource private IRedBookService iRedBookService; + /** + * 选择调价版本批量获取红本价格 + * @param threadname + * @param list + * @return + */ @Async public Future> executeAsyncTask(String threadname, List list) { System.out.println(threadname); List OAQuotProducts = iRedBookService.setRedBookPrice(list); return new AsyncResult<>( OAQuotProducts); } + + /** + * 导入明细批量获取红本价格 + * @param threadname + * @param list + * @return + */ + @Async + public Future> executeAsyncTask2(String threadname, List list) { + System.out.println(threadname+"开始时间:" + DateUtils.getTime()); + List OAQuotProducts = iRedBookService.setRedBookPrice2(list); + System.out.println(threadname+"结束时间:" + DateUtils.getTime()); + return new AsyncResult<>( OAQuotProducts); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/redBook/service/impl/RedBookServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/redBook/service/impl/RedBookServiceImpl.java index b4d6c03..3017694 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/redBook/service/impl/RedBookServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/redBook/service/impl/RedBookServiceImpl.java @@ -9,10 +9,7 @@ import com.ruoyi.common.utils.uuid.UUID; import com.ruoyi.customer.domain.Bank; import com.ruoyi.customer.domain.Customer; import com.ruoyi.material.domain.CMaterialCost; -import com.ruoyi.redBook.domain.OAQuot; -import com.ruoyi.redBook.domain.OAQuotProduct; -import com.ruoyi.redBook.domain.Product; -import com.ruoyi.redBook.domain.RbVersionDateResult; +import com.ruoyi.redBook.domain.*; import com.ruoyi.redBook.mapper.OARedBookMapper; import com.ruoyi.redBook.service.IRedBookService; import org.springframework.beans.factory.annotation.Autowired; @@ -159,7 +156,7 @@ public class RedBookServiceImpl implements IRedBookService } if (list.size() > 0) { - int batchSize = 200; // 每批次插入的数据量 + int batchSize = 100; // 每批次插入的数据量 for (int i = 0; i < list.size(); i += batchSize) { int toIndex = Math.min(i + batchSize, list.size()); List subList = list.subList(i, toIndex); @@ -199,8 +196,13 @@ public class RedBookServiceImpl implements IRedBookService return oaRedBookMapper.getFixDatePrice(name_0,spec,voltage,uid_0); } + /** + * 选择调价版本批量获取红本价格 + * @param list + * @return + */ @Override - @DataSource(DataSourceType.OAREDBOOK) + @DataSource(DataSourceType.REDBOOK) public List setRedBookPrice(List list) { for(OAQuotProduct oAQuotProduct : list){ String price = oaRedBookMapper.getFixDatePrice(oAQuotProduct.getName_0(),oAQuotProduct.getSpec(),oAQuotProduct.getVoltage(),oAQuotProduct.getUid_0()); @@ -209,6 +211,35 @@ public class RedBookServiceImpl implements IRedBookService return list; } + /** + * 导入明细批量获取红本价格 + * @param list + * @return + */ + @Override + @DataSource(DataSourceType.REDBOOK) + public List setRedBookPrice2(List list) { + List OAQuotProducts = new ArrayList<>(); + OAQuotProduct oAQuotProduct = new OAQuotProduct(); + for(OAQuotProductTemplate oAQuotProductTemplate : list){ + OAQuotProduct rbProduct = oaRedBookMapper.getFixDatePrice2(oAQuotProductTemplate.getName_1(),oAQuotProductTemplate.getSpec(),oAQuotProductTemplate.getRbUid()); + if(rbProduct!=null){ + oAQuotProduct = new OAQuotProduct(); + oAQuotProduct.setIndex(oAQuotProductTemplate.getIndex()); + oAQuotProduct.setUid_0(rbProduct.getUid_0()); + oAQuotProduct.setName_0(rbProduct.getName_0()); + oAQuotProduct.setName_1(oAQuotProductTemplate.getName_1()); + oAQuotProduct.setSpec(oAQuotProductTemplate.getSpec()); + oAQuotProduct.setVoltage(rbProduct.getVoltage()); + oAQuotProduct.setStu(rbProduct.getStu()); + oAQuotProduct.setPrice(rbProduct.getPrice()); + oAQuotProduct.setCount(oAQuotProductTemplate.getCount()); + OAQuotProducts.add(oAQuotProduct); + } + } + return OAQuotProducts; + } + /** * 查询已生成的报价单列表 diff --git a/ruoyi-system/src/main/resources/mapper/quot/QuotMapper.xml b/ruoyi-system/src/main/resources/mapper/quot/QuotMapper.xml index b387982..a5eb0fb 100644 --- a/ruoyi-system/src/main/resources/mapper/quot/QuotMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/quot/QuotMapper.xml @@ -119,6 +119,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and quot_code like concat('%', #{quotCode}, '%') and quot_customer_name like concat('%', #{quotCustomerName}, '%') and quot_project like concat('%', #{quotProject}, '%') + and quot_print = #{quotPrint} and quot_approval_status = #{quotApprovalStatus} ${params.dataScope} diff --git a/ruoyi-system/src/main/resources/mapper/redBook/OARedBookMapper.xml b/ruoyi-system/src/main/resources/mapper/redBook/OARedBookMapper.xml index 982f02b..e0fe44b 100644 --- a/ruoyi-system/src/main/resources/mapper/redBook/OARedBookMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/redBook/OARedBookMapper.xml @@ -169,8 +169,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select top 1 红本价格 from rb_product_price A inner join [rb_productVersion] B on A.version_uid_0=B.uid_0 where A.[namevoltage] = #{name_0} and A.规格 = #{spec} - and A.电压等级 = #{voltage} and B.uid_0 = #{uid_0} - and (B.sta_0=1 or sta_0=0) order by B.uid_0 desc + and A.电压等级 = #{voltage} and B.uid_0 = #{uid_0} + and (B.sta_0=1 or sta_0=0) + + + diff --git a/ruoyi-ui/src/utils/request.js b/ruoyi-ui/src/utils/request.js index dd715cb..cb8fec4 100644 --- a/ruoyi-ui/src/utils/request.js +++ b/ruoyi-ui/src/utils/request.js @@ -18,7 +18,7 @@ const service = axios.create({ // axios中请求配置有baseURL选项,表示请求URL公共部分 baseURL: process.env.VUE_APP_BASE_API, // 超时 - timeout: 60000 + timeout: 300000 }) // request拦截器 diff --git a/ruoyi-ui/src/views/quot/quot/index.vue b/ruoyi-ui/src/views/quot/quot/index.vue index 30f48a3..8d771f1 100644 --- a/ruoyi-ui/src/views/quot/quot/index.vue +++ b/ruoyi-ui/src/views/quot/quot/index.vue @@ -25,6 +25,16 @@ @keyup.enter.native="handleQuery" /> + + + + + - + @@ -1388,7 +1398,7 @@ export default { 'jsqrDialog': jsqrDialog, 'hjDialog': hjDialog }, - dicts: ['quot_approval_status','quot_jsxz_group','quot_jsxz_chapter','quot_jsxz_approval_status','quot_jsxz_standard','quot_hj_approval_status'], + dicts: ['quot_print', 'quot_approval_status','quot_jsxz_group','quot_jsxz_chapter','quot_jsxz_approval_status','quot_jsxz_standard','quot_hj_approval_status'], data() { return { //选项卡默认 @@ -1426,7 +1436,6 @@ export default { url: process.env.VUE_APP_BASE_API + "/quot/quot/importData" }, - // 报价单-询价附件列表数据 quotXjFileList: [], // 报价单-反馈附件列表数据 diff --git a/ruoyi-ui/src/views/redBook/productSelect.vue b/ruoyi-ui/src/views/redBook/productSelect.vue index 17ab39e..3f76769 100644 --- a/ruoyi-ui/src/views/redBook/productSelect.vue +++ b/ruoyi-ui/src/views/redBook/productSelect.vue @@ -10,7 +10,9 @@ 刷新 生成报价单 - 保存 + 保存 + 导入 + @@ -197,6 +199,34 @@ + + + + + +
将文件拖到此处,或点击上传
+
+ 仅允许导入xls、xlsx格式文件。 + 下载模板 +
+
+ +