diff --git a/ABAP_AS_WITH_POOL.jcoDestination b/ABAP_AS_WITH_POOL.jcoDestination index 89d383a..08d3283 100644 --- a/ABAP_AS_WITH_POOL.jcoDestination +++ b/ABAP_AS_WITH_POOL.jcoDestination @@ -1,5 +1,9 @@ #for tests only ! +<<<<<<< HEAD #Wed Jun 19 09:11:03 CST 2024 +======= +#Mon Jun 17 15:48:27 CST 2024 +>>>>>>> 1efe171bc013909adaa8e3300a0b9ce6c2e24d85 jco.destination.pool_capacity=10 jco.client.lang=ZH jco.client.ashost=172.19.0.125 @@ -7,5 +11,9 @@ jco.client.saprouter= jco.client.user=RFC jco.client.sysnr=00 jco.destination.peak_limit=10 +<<<<<<< HEAD jco.client.passwd=g}=[!8cY+]^Y:h6_:E9``X=J#eA[=IM/|(0EB`M)]I1i?/qD +======= +jco.client.passwd=654321 +>>>>>>> 1efe171bc013909adaa8e3300a0b9ce6c2e24d85 jco.client.client=800 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/customer/CustomerController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/customer/CustomerController.java index f4ab2a1..beeaeed 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/customer/CustomerController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/customer/CustomerController.java @@ -206,11 +206,11 @@ public class CustomerController extends BaseController customer.setCusCode(cusCode); customer.setCreateBy(getUsername()); customerService.insertCustomer(customer); - sendNotice(customer);//发送消息至数据组 + //sendNotice(customer);//发送消息至数据组 return success(); }else{ customerService.updateCustomer(customer); - sendNotice(customer);//发送消息至数据组 + //sendNotice(customer);//发送消息至数据组 return success(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/priceVerification/QuotHjController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/priceVerification/QuotHjController.java index 5d87a0f..bb3b3af 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/priceVerification/QuotHjController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/priceVerification/QuotHjController.java @@ -135,7 +135,7 @@ public class QuotHjController extends BaseController quot.setQuotHjApprovalStatus("2");//报价单-核价单 状态设置为 已协助 quotService.updateQuot(quot); - sendNoticeToQuot(quotHj);// 发送给提醒 + //sendNoticeToQuot(quotHj);// 发送给提醒 return success(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/quot/QuotController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/quot/QuotController.java index 7416cd0..ba11e8d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/quot/QuotController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/quot/QuotController.java @@ -1,5 +1,6 @@ package com.ruoyi.web.controller.quot; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -143,20 +144,50 @@ public class QuotController extends BaseController public AjaxResult getReturnUpdateInfo(@PathVariable("quotId") String quotId) { Quot quot = quotService.selectQuotByQuotId(quotId); - if("2".equals(quot.getQuotApprovalStatus())){ + if("2".equals(quot.getQuotApprovalStatus()) || "3".equals(quot.getQuotApprovalStatus())){ quot.setQuotApprovalStatus("1");// 提交状态设置为 协助中 quotService.updateQuot(quot); }else if("0".equals(quot.getQuotApprovalStatus())){ return error("该报价单当前状态为【待提交】状态,无法修改"); }else if("1".equals(quot.getQuotApprovalStatus())){ return error("该报价单当前状态为【协助中】状态,无法修改"); - }else if("3".equals(quot.getQuotApprovalStatus())){ - return error("该报价单当前状态为【已驳回】状态,无法修改"); } return success(quot); } + /** + * 获取报价详细信息-整单通过 + */ + @PreAuthorize("@ss.hasPermi('quot:quot:allPass')") + @GetMapping(value = "/allPass/{quotId}") + @Log(title = "报价单-手动更新状态为通过", businessType = BusinessType.UPDATE) + public AjaxResult getAllPassInfo(@PathVariable("quotId") String quotId) + { + Quot quot = new Quot(); + quot.setQuotId(quotId); + quot.setQuotApprovalStatus("2");// 提交状态设置为 通过 + quot.setQuotQuotationDate(DateUtils.getNowDate());//报价单-报价日期设置为 当前日期 + quot.setQuotCheckUserName(getUsername()); + quotService.updateQuotAllPassInfo(quot); + return success(quot); + } + + /** + * 获取报价详细信息-整单驳回 + */ + @PreAuthorize("@ss.hasPermi('quot:quot:allReject')") + @PostMapping(value = "/allReject") + @Log(title = "报价单-手动更新状态为驳回", businessType = BusinessType.UPDATE) + public AjaxResult getAllRejectInfo(@RequestBody Quot quot) + { + quot.setQuotApprovalStatus("3");// 提交状态设置为 驳回 + quot.setQuotQuotationDate(DateUtils.getNowDate());//报价单-报价日期设置为 当前日期 + quot.setQuotCheckUserName(getUsername()); + quotService.updateQuot(quot); + return success(quot); + } + /** * 导出产品明细模板 * @param response @@ -393,7 +424,7 @@ public class QuotController extends BaseController } //quot.setQuotSalesmanCode(getUsername()); quotService.insertQuot(quot); - sendNoticeToBjz(quot); + //sendNoticeToBjz(quot); return success(); }else{ if(hjRoleFlag){ @@ -402,7 +433,7 @@ public class QuotController extends BaseController quot.setUpdateBy(getUsername()); } quotService.updateQuot(quot); - sendNoticeToBjz(quot); + //sendNoticeToBjz(quot); return success(); } } @@ -478,7 +509,7 @@ public class QuotController extends BaseController quot.setQuotJsxzApprovalStatus("1");//报价单-技术确认单 状态设置为 协助中 quotService.updateQuot(quot); - sendNoticeToJsxz(quotJsqr); + //sendNoticeToJsxz(quotJsqr); } return success(); } @@ -522,7 +553,7 @@ public class QuotController extends BaseController quot.setUpdateBy(getUsername()); quotService.updateQuot(quot); - sendNoticeToHjxz(quotHj); + //sendNoticeToHjxz(quotHj); return success(); } @@ -738,6 +769,24 @@ public class QuotController extends BaseController return error("OA审批流程还未完成"); } + //下点超5.2 提醒 + BigDecimal tpxd = BigDecimal.ZERO; + List materials = quot.getQuotMaterialList(); + if(materials!=null&&materials.size()>0){ + for(QuotMaterial quotMaterial:materials){ + BigDecimal matQuotTp = quotMaterial.getMatQuotTp(); + if(BigDecimal.ZERO.compareTo(matQuotTp)<0){ + tpxd = matQuotTp; + break; + } + } + } + + String matQuotTp = configService.selectConfigByKey("quot.allow.matQuotTp"); + if(tpxd.compareTo(new BigDecimal(matQuotTp))>0 && "0".equals(quot_oa_approval_status)){ + return error("特批下点数超"+matQuotTp+"个点,请走OA审批流程"); + } + quot.setQuotQuotationDate(DateUtils.getNowDate());//报价单-报价日期设置为 当前日期 quot.setQuotApprovalStatus("2"); quot.setQuotCheckUserName(getUsername()); @@ -782,4 +831,15 @@ public class QuotController extends BaseController quotService.updateQuot(quot); return success(); } + + /** + * 统计有效报价单模块-获取报价单数据 + */ + @PreAuthorize("@ss.hasPermi('quot:quot:listStatisticsQuotQuot')") + @GetMapping("/listStatisticsQuotQuot") + public TableDataInfo listStatisticsQuotQuot(Quot quot) + { + List list = quotService.selectStatisticsQuotList(quot); + return getDataTable(list); + } } 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 aca60b3..7f2e38d 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 @@ -12,11 +12,15 @@ 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.file.FileUploadUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.uuid.UUID; import com.ruoyi.customer.domain.Customer; import com.ruoyi.quot.domain.Quot; +import com.ruoyi.quot.domain.QuotFile; import com.ruoyi.quot.domain.QuotMaterial; +import com.ruoyi.quot.service.IQuotFileService; +import com.ruoyi.quot.service.IQuotService; import com.ruoyi.redBook.domain.*; import com.ruoyi.redBook.service.IRedBookService; import com.ruoyi.redBook.service.impl.AsyncRbTaskService; @@ -55,6 +59,13 @@ public class RedBookController extends BaseController @Resource private AsyncRbTaskService asyncRbTaskService; + @Resource + private IQuotService iQuotService; + + @Autowired + private IQuotFileService quotFileService; + + /** * 获取目录 * @param product @@ -240,6 +251,61 @@ public class RedBookController extends BaseController } return success(quot); } + + /** + * 生成询价单 + * @param quot + * @return + */ + @DataSource(DataSourceType.MASTER) + @Log(title = "生成询价单", businessType = BusinessType.INSERT) + @PostMapping("/madeXjQuot") + public void madeXjQuot(HttpServletResponse response, @RequestBody OAQuot quot) + { + + 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); + + /** 上传清单附件 **/ + /* String relation_id = xjquot.getQuotId(); + if(!StringUtils.isEmpty(relation_id)){ + if (!file.isEmpty()) + { + QuotFile quotFile= new QuotFile(); + quotFile.setFileId(UUID.fastUUID().toString()); + + String url = FileUploadUtils.uploadMinio(file,"quot-manage", "quot/"+relation_id); + int index = url.lastIndexOf("/")+1; + String fileName = url.substring(index);//获取文件名 + + int index2 = url.indexOf("/quot/"); + String fileBucketName = url.substring(index2);//获取文件对应文件服务器中地址-供后面删除功能用 + + 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); + } + }else{ + return error("系统异常,询价单号为空!"); + }*/ + /** 上传清单附件 **/ + // return success(xjquot); + } /** * 报价单提交 * @param quot @@ -275,7 +341,7 @@ public class RedBookController extends BaseController } /** - * 导出产品明细模板 + * 导出产品明细模板-型号、规格、电压、数量 * @param response */ @PostMapping("/importTemplate") @@ -286,7 +352,7 @@ public class RedBookController extends BaseController } /** - * 导入产品明细 + * 导入产品明细-型号、规格、电压、数量 * @param file * @param updateSupport * @return @@ -332,7 +398,9 @@ public class RedBookController extends BaseController } System.out.println("开始时间:" + DateUtils.getTime()); - List> list = ListSplitUtil.averageList(tempList,10); + //List> list = ListSplitUtil.averageList(tempList,10); + List> list = ListSplitUtil.partList(tempList,20); + List OAQuotProducts = new ArrayList<>(); //定义一个存所有线程回调函数的list @@ -363,6 +431,85 @@ public class RedBookController extends BaseController return success(OAQuotProducts); } + /** + * 导出产品明细模板-品名型号 + * @param response + */ + @PostMapping("/importTemplate2") + public void importTemplate2(HttpServletResponse response) + { + ExcelUtil util = new ExcelUtil(OAQuotProductTemplate2.class); + util.importTemplateExcel(response, "产品数据"); + } + + /** + * 导入产品明细-品名型号 + * @param file + * @param updateSupport + * @return + * @throws Exception + */ + @PostMapping("/importData2") + public AjaxResult importData2(String rbUid, MultipartFile file, boolean updateSupport) throws Exception + { + ExcelUtil util = new ExcelUtil(OAQuotProductTemplate2.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(OAQuotProductTemplate2 temp:tempList){ + temp.setIndex(index); + temp.setRbUid(rbUid); + + String name_0 = temp.getName_0(); + if(StringUtils.isNotBlank(name_0)){ + name_0 = name_0.trim(); + name_0 = name_0.replace(" "," "); + name_0 = name_0.toUpperCase(); + temp.setName_0(name_0); + } + index++; + } + + System.out.println("开始时间:" + DateUtils.getTime()); + //List> list = ListSplitUtil.averageList(tempList,10); + List> list = ListSplitUtil.partList(tempList,20); + + List OAQuotProducts = new ArrayList<>(); + + //定义一个存所有线程回调函数的list + List>> futureList=new ArrayList<>(); + int num = 1; + for(List lt:list){ + futureList.add(asyncRbTaskService.executeAsyncTask3("线程"+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/technicalConfirm/QuotJsqrController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/technicalConfirm/QuotJsqrController.java index cc7da7f..308ddb6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/technicalConfirm/QuotJsqrController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/technicalConfirm/QuotJsqrController.java @@ -395,7 +395,7 @@ public class QuotJsqrController extends BaseController } quot.setQuotJsxzApprovalStatus("2");//报价单-技术协助状态 设置为 已协助 - sendNoticeToQuot(quotJsqr);// 发送给提醒 + //sendNoticeToQuot(quotJsqr);// 发送给提醒 } return success(quotService.updateQuot(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 ba4001e..55b421b 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 @@ -359,8 +359,8 @@ public class excelUtil { response.setContentType("application/vnd.ms-excel"); BigDecimal totalmoney = BigDecimal.ZERO; - File jnlogo_file = new File("logon/"+quot.getQuotCode()+".png"); - File wc_file = new File("logon/"+quot.getQuotCode()+".png"); + File jnlogo_file = new File("logon/"+IdUtils.createNo("jnlogo_",3)+".png"); + File wc_file = new File("logon/"+IdUtils.createNo("wc_",3)+".png"); try { OutputStream os = response.getOutputStream(); WritableWorkbook wwb = Workbook.createWorkbook(os); diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 9844aea..b810335 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -31,7 +31,7 @@ server: uri-encoding: UTF-8 # 连接数满后的排队数,默认为100 accept-count: 1000 - connection-timeout: 120s + connection-timeout: 600s threads: # tomcat最大线程数,默认为200 max: 800 @@ -110,7 +110,7 @@ token: # 令牌密钥 secret: abcdefghijklmnopqrstuvwxyz # 令牌有效期(默认30分钟) - expireTime: 30 + expireTime: 60 # MyBatis配置 mybatis: diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java index 425ff51..179acc3 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java @@ -217,8 +217,8 @@ public class HttpUtils conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); conn.setRequestProperty("Accept-Charset", "utf-8"); - conn.setRequestProperty("contentType", "application/json"); - conn.setRequestProperty("Content-Type", "application/json"); + conn.setRequestProperty("contentType", "application/json; charset=utf-8"); + conn.setRequestProperty("Content-Type", "application/json; charset=utf-8"); // 设置Cookie头部 if(StringUtils.isNotEmpty(cookie)){ String cookies[] = cookie.split("; "); diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/websocket/WebSocketServer.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/websocket/WebSocketServer.java index 759ffca..3d7172d 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/websocket/WebSocketServer.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/websocket/WebSocketServer.java @@ -13,7 +13,7 @@ import org.springframework.stereotype.Component; /** * websocket 消息处理 - * + * * @author ruoyi */ @Component @@ -28,7 +28,7 @@ public class WebSocketServer /** * 默认最多允许同时在线人数100 */ - public static int socketMaxOnlineCount = 100; + public static int socketMaxOnlineCount = 10000; private static final Semaphore SOCKET_SEMAPHORE = new Semaphore(socketMaxOnlineCount); diff --git a/ruoyi-system/src/main/java/com/ruoyi/quot/domain/Quot.java b/ruoyi-system/src/main/java/com/ruoyi/quot/domain/Quot.java index d6b3daa..c14c84c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/quot/domain/Quot.java +++ b/ruoyi-system/src/main/java/com/ruoyi/quot/domain/Quot.java @@ -96,8 +96,10 @@ public class Quot extends BaseEntity /** 是否打印 */ private String quotPrint; - /** 打印人 */ + /** 打印人账号 */ private String quotPrintUserName; + /** 打印人 */ + private String quotPrintUserNickName; /** 总价 */ private String quotTotalPrice; @@ -309,6 +311,9 @@ public class Quot extends BaseEntity public String getQuotPrintUserName() { return quotPrintUserName; } public void setQuotPrintUserName(String quotPrintUserName) { this.quotPrintUserName = quotPrintUserName; } + public String getQuotPrintUserNickName() { return quotPrintUserNickName; } + + public void setQuotPrintUserNickName(String quotPrintUserNickName) { this.quotPrintUserNickName = quotPrintUserNickName; } public void setQuotQuantity(String quotQuantity) { this.quotQuantity = quotQuantity; diff --git a/ruoyi-system/src/main/java/com/ruoyi/quot/mapper/QuotMapper.java b/ruoyi-system/src/main/java/com/ruoyi/quot/mapper/QuotMapper.java index 7014cd7..db66ce5 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/quot/mapper/QuotMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/quot/mapper/QuotMapper.java @@ -147,4 +147,12 @@ public interface QuotMapper * @return */ String getCode(String type); + + + /** + * 统计有效报价单模块-获取报价单数据 + * @param quot + * @return + */ + List selectStatisticsQuotList(Quot quot); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/quot/service/IQuotService.java b/ruoyi-system/src/main/java/com/ruoyi/quot/service/IQuotService.java index 361594c..5a24511 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/quot/service/IQuotService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/quot/service/IQuotService.java @@ -124,4 +124,18 @@ public interface IQuotService * @return */ String getCode(String type); + + /** + * 报价单-手动更新状态为通过 + * @param quot + */ + void updateQuotAllPassInfo(Quot quot); + + + /** + * 统计有效报价单模块-获取报价单数据 + * @param quot + * @return + */ + List selectStatisticsQuotList(Quot quot); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/quot/service/impl/QuotServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/quot/service/impl/QuotServiceImpl.java index 59e1f61..279cd87 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/quot/service/impl/QuotServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/quot/service/impl/QuotServiceImpl.java @@ -269,4 +269,24 @@ public class QuotServiceImpl implements IQuotService public String getCode(String type) { return quotMapper.getCode(type); } + + /** + * 报价单-手动更新状态为通过 + * @param quot + */ + @Override + public void updateQuotAllPassInfo(Quot quot) { + quotMapper.updateQuot(quot); + } + + + /** + * 统计有效报价单模块-获取报价单数据 + * @param quot + * @return + */ + @Override + public List selectStatisticsQuotList(Quot quot) { + return quotMapper.selectStatisticsQuotList(quot); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/redBook/domain/OAQuotProductTemplate2.java b/ruoyi-system/src/main/java/com/ruoyi/redBook/domain/OAQuotProductTemplate2.java new file mode 100644 index 0000000..48a53e6 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/redBook/domain/OAQuotProductTemplate2.java @@ -0,0 +1,41 @@ +package com.ruoyi.redBook.domain; + +import com.ruoyi.common.annotation.Excel; + +import java.math.BigDecimal; + +public class OAQuotProductTemplate2 { + private Integer index; + + private String rbUid; + + @Excel(name = "品名型号") + private String name_0;//品名型号 + + @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_0() { + return name_0; + } + + public void setName_0(String name_0) { + this.name_0 = name_0; + } + + 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 1449355..bfc8fc7 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 @@ -117,14 +117,22 @@ 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 name_1 * @param spec * @param rbUid * @return */ OAQuotProduct getFixDatePrice2(@Param("name_1") String name_1, @Param("spec") String spec, @Param("voltage") String voltage, @Param("uid_0") String rbUid); + /** + * 导入明细批量获取红本价格-品名型号 + * @param name_0 + * @param rbUid + * @return + */ + OAQuotProduct getFixDatePrice3(@Param("name_0") String name_0, @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 158e2d1..7717479 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 @@ -141,12 +141,20 @@ public interface IRedBookService List setRedBookPrice(List list); /** - * 导入明细批量获取红本价格 + * 导入明细批量获取红本价格-型号、规格、电压、数量 * @param list * @return */ List setRedBookPrice2(List list); + /** + * 导入明细批量获取红本价格-品名型号 + * @param list + * @return + */ + List setRedBookPrice3(List list); + + /** * 获取单据编号 * @param type 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 ce1df69..2b5a24e 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 @@ -3,6 +3,7 @@ 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.domain.OAQuotProductTemplate2; import com.ruoyi.redBook.service.IRedBookService; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.AsyncResult; @@ -32,7 +33,7 @@ public class AsyncRbTaskService { } /** - * 导入明细批量获取红本价格 + * 导入明细批量获取红本价格-型号、规格、电压、数量 * @param threadname * @param list * @return @@ -44,5 +45,19 @@ public class AsyncRbTaskService { System.out.println(threadname+"结束时间:" + DateUtils.getTime()); return new AsyncResult<>( OAQuotProducts); } + + /** + * 导入明细批量获取红本价格-品名型号 + * @param threadname + * @param list + * @return + */ + @Async + public Future> executeAsyncTask3(String threadname, List list) { + System.out.println(threadname+"开始时间:" + DateUtils.getTime()); + List OAQuotProducts = iRedBookService.setRedBookPrice3(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 af048fd..033d71e 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 @@ -208,12 +208,17 @@ public class RedBookServiceImpl implements IRedBookService for(OAQuotProduct oAQuotProduct : list){ String price = oaRedBookMapper.getFixDatePrice(oAQuotProduct.getName_0(),oAQuotProduct.getSpec(),oAQuotProduct.getVoltage(),oAQuotProduct.getUid_0()); oAQuotProduct.setPrice(price); + if(StringUtils.isEmpty(price)){ + oAQuotProduct.setName_1(""); + oAQuotProduct.setVoltage(""); + oAQuotProduct.setStu(""); + } } return list; } /** - * 导入明细批量获取红本价格 + * 导入明细批量获取红本价格-型号、规格、电压、数量 * @param list * @return */ @@ -224,19 +229,44 @@ public class RedBookServiceImpl implements IRedBookService OAQuotProduct oAQuotProduct = new OAQuotProduct(); for(OAQuotProductTemplate oAQuotProductTemplate : list){ OAQuotProduct rbProduct = oaRedBookMapper.getFixDatePrice2(oAQuotProductTemplate.getName_1(),oAQuotProductTemplate.getSpec(),oAQuotProductTemplate.getVoltage(),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); - } + oAQuotProduct = new OAQuotProduct(); + oAQuotProduct.setIndex(oAQuotProductTemplate.getIndex()); + oAQuotProduct.setUid_0(oAQuotProductTemplate.getRbUid()); + oAQuotProduct.setName_0(rbProduct!=null?rbProduct.getName_0():""); + oAQuotProduct.setName_1(oAQuotProductTemplate.getName_1()); + oAQuotProduct.setSpec(oAQuotProductTemplate.getSpec()); + oAQuotProduct.setVoltage(rbProduct!=null?rbProduct.getVoltage():""); + oAQuotProduct.setStu(rbProduct!=null?rbProduct.getStu():""); + oAQuotProduct.setPrice(rbProduct!=null?rbProduct.getPrice():""); + oAQuotProduct.setCount(oAQuotProductTemplate.getCount()); + OAQuotProducts.add(oAQuotProduct); + } + return OAQuotProducts; + } + + /** + * 导入明细批量获取红本价格-品名型号 + * @param list + * @return + */ + @Override + @DataSource(DataSourceType.OAREDBOOK) + public List setRedBookPrice3(List list) { + List OAQuotProducts = new ArrayList<>(); + OAQuotProduct oAQuotProduct = new OAQuotProduct(); + for(OAQuotProductTemplate2 oAQuotProductTemplate : list){ + OAQuotProduct rbProduct = oaRedBookMapper.getFixDatePrice3(oAQuotProductTemplate.getName_0(),oAQuotProductTemplate.getRbUid()); + oAQuotProduct = new OAQuotProduct(); + oAQuotProduct.setIndex(oAQuotProductTemplate.getIndex()); + oAQuotProduct.setUid_0(oAQuotProductTemplate.getRbUid()); + oAQuotProduct.setName_0(oAQuotProductTemplate.getName_0()); + oAQuotProduct.setName_1(rbProduct!=null?rbProduct.getName_1():""); + oAQuotProduct.setSpec(rbProduct!=null?rbProduct.getSpec():""); + oAQuotProduct.setVoltage(rbProduct!=null?rbProduct.getVoltage():"品名不规范"); + oAQuotProduct.setStu(rbProduct!=null?rbProduct.getStu():""); + oAQuotProduct.setPrice(rbProduct!=null?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 a2aa128..7ba2bb2 100644 --- a/ruoyi-system/src/main/resources/mapper/quot/QuotMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/quot/QuotMapper.xml @@ -35,6 +35,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -111,7 +113,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.quot_phone, a.quot_inquiry_date, a.quot_project, a.quot_quotation_date, a.quot_quotation_from, a.quot_quotation_require, a.quot_feedback_explanation, a.quot_quantity, a.quot_total_price, a.quot_check_user_name, u2.nick_name quot_check_user_nickname, a.quot_approval_status,a.quot_materials_count, - a.quot_lv_price,a.quot_tong_price,a.quot_matprice_diff,a.quot_print,u3.nick_name quot_print_user_name, + a.quot_lv_price,a.quot_tong_price,a.quot_matprice_diff,a.quot_print,a.quot_print_user_name,u3.nick_name quot_print_user_nickName, a.create_by, a.create_time, a.update_by, a.update_time, u.nick_name create_name, a.quot_jsxz_standard,a.quot_jsxz_approval_status,a.quot_jsxz_chapter, @@ -144,7 +146,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ${params.dataScope} - order by a.quot_code desc + order by a.quot_inquiry_date desc {call GetSerialNo(#{type,mode=IN,jdbcType=VARCHAR})} + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/redBook/OARedBookMapper.xml b/ruoyi-system/src/main/resources/mapper/redBook/OARedBookMapper.xml index 9efe560..34aea3f 100644 --- a/ruoyi-system/src/main/resources/mapper/redBook/OARedBookMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/redBook/OARedBookMapper.xml @@ -183,6 +183,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and (B.sta_0=1 or sta_0=0) + + LEFT JOIN sys_user u on u.user_name=a.create_by LEFT JOIN sys_dept d on u.dept_id = d.dept_id diff --git a/ruoyi-ui/src/api/quot/quot.js b/ruoyi-ui/src/api/quot/quot.js index d7ee554..e09e114 100644 --- a/ruoyi-ui/src/api/quot/quot.js +++ b/ruoyi-ui/src/api/quot/quot.js @@ -39,6 +39,23 @@ export function getReturnUpdateQuot(quotId) { }) } +// 查询报价详细-整单通过 +export function getAllPass(quotId) { + return request({ + url: '/quot/quot/allPass/' + quotId, + method: 'get' + }) +} + +// 查询报价详细-整单驳回 +export function getAllReject(query) { + return request({ + url: '/quot/quot/allReject', + method: 'post', + data: query + }) +} + // 新增报价 export function addQuot(data) { return request({ @@ -161,3 +178,12 @@ export function rejectQuot(data) { +//统计有效报价单模块-获取报价单数据 +export function listStatisticsQuotQuot(query) { + return request({ + url: '/quot/quot/listStatisticsQuotQuot', + method: 'get', + params: query + }) +} + diff --git a/ruoyi-ui/src/api/redBook/redBook.js b/ruoyi-ui/src/api/redBook/redBook.js index 45d1727..9726e89 100644 --- a/ruoyi-ui/src/api/redBook/redBook.js +++ b/ruoyi-ui/src/api/redBook/redBook.js @@ -108,6 +108,14 @@ export function saveQuot(data) { data: data }) } +//生成报价单 +export function madeXjQuot(data) { + return request({ + url: '/redBook/redBook/madeXjQuot', + method: 'post', + data: data + }) +} //提交报价单 export function commitQuot(data) { return request({ diff --git a/ruoyi-ui/src/assets/styles/variables.scss b/ruoyi-ui/src/assets/styles/variables.scss index 34484d4..3539b26 100644 --- a/ruoyi-ui/src/assets/styles/variables.scss +++ b/ruoyi-ui/src/assets/styles/variables.scss @@ -36,7 +36,7 @@ $base-sub-menu-background:#000c17; $base-sub-menu-hover:#001528; */ -$base-sidebar-width: 200px; +$base-sidebar-width: 210px; // the :export directive is the magic sauce for webpack // https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass diff --git a/ruoyi-ui/src/directive/dialog/dragDialog.js b/ruoyi-ui/src/directive/dialog/dragDialog.js index 37d24ae..aef2197 100644 --- a/ruoyi-ui/src/directive/dialog/dragDialog.js +++ b/ruoyi-ui/src/directive/dialog/dragDialog.js @@ -107,7 +107,7 @@ export default { dialogHeaderEl.onmousedown = null; if (!hasSetBodyHight) { let footerHeight = dragDom.querySelector('.el-dialog__footer') && dragDom.querySelector('.el-dialog__footer').offsetHeight; - dragDom.querySelector('.el-dialog__body').style.height = 'calc(100% - ' + (dialogHeaderEl.offsetHeight + footerHeight) + 'px)'; + dragDom.querySelector('.el-dialog__body').style.height = 'calc(100% - 110px)'; dragDom.querySelector('.el-dialog__body').style.maxHeight = dragDom.style.height hasSetBodyHight = true; } diff --git a/ruoyi-ui/src/layout/components/Navbar.vue b/ruoyi-ui/src/layout/components/Navbar.vue index 2ff1a43..0a35a9a 100644 --- a/ruoyi-ui/src/layout/components/Navbar.vue +++ b/ruoyi-ui/src/layout/components/Navbar.vue @@ -19,7 +19,7 @@ --> - + diff --git a/ruoyi-ui/src/layout/components/NavbarNotice.vue b/ruoyi-ui/src/layout/components/NavbarNotice.vue index 90d0bd5..1afa5b9 100644 --- a/ruoyi-ui/src/layout/components/NavbarNotice.vue +++ b/ruoyi-ui/src/layout/components/NavbarNotice.vue @@ -147,7 +147,7 @@ }, mounted() { // 初始化WebSocket - this.initWebSocket(); + //this.initWebSocket(); }, created(){ this.getList(); diff --git a/ruoyi-ui/src/utils/request.js b/ruoyi-ui/src/utils/request.js index cb8fec4..d040d39 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: 300000 + timeout: 720000 }) // request拦截器 diff --git a/ruoyi-ui/src/views/quot/quot/index.vue b/ruoyi-ui/src/views/quot/quot/index.vue index 1f98d66..8e906d1 100644 --- a/ruoyi-ui/src/views/quot/quot/index.vue +++ b/ruoyi-ui/src/views/quot/quot/index.vue @@ -1,10 +1,10 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + @@ -208,17 +230,17 @@
- + - + - + @@ -234,7 +256,7 @@ 报价信息 - + @@ -340,8 +362,8 @@ - - + + @@ -367,14 +389,14 @@ - + - + @@ -384,19 +406,26 @@ 清单附件(先保存再上传且必须是EXCEL文件)
- - 上传文件 - + + + + 上传文件 + + + + 清单附件模版下载 + +
@@ -432,7 +461,7 @@ :show-file-list="false" :limit="1" v-if="this.form.quotApprovalStatus == '0'"> - 上传文件 + 上传文件
@@ -458,14 +487,17 @@ 产品信息 - + + + + 导入 导出 @@ -509,22 +541,22 @@
- + - + - + - + @@ -549,7 +581,7 @@ :show-file-list="false" :limit="1" v-if="this.form.quotApprovalStatus == '1'"> - 上传文件 + 上传文件 @@ -571,12 +603,11 @@ -
技术协助 - + @@ -600,7 +631,7 @@ - + @@ -914,7 +945,7 @@ 提交核价审核 - 生成报价单 + 生成报价单 提交金思维 @@ -999,7 +1030,7 @@ diff --git a/ruoyi-ui/src/views/technicalConfirm/technicalConfirm/jsxzInfo.vue b/ruoyi-ui/src/views/technicalConfirm/technicalConfirm/jsxzInfo.vue index 2d5a7e3..43918c2 100644 --- a/ruoyi-ui/src/views/technicalConfirm/technicalConfirm/jsxzInfo.vue +++ b/ruoyi-ui/src/views/technicalConfirm/technicalConfirm/jsxzInfo.vue @@ -79,6 +79,30 @@ + + 清单附件 + + + + + + + + + + + + + + + 技术规范要求(技术附件) @@ -101,6 +125,7 @@ +
特缆协助
@@ -799,6 +824,7 @@ isSelfProp: true, // 报价单-技术确认单-技术规范附件列表数据 quotJsgfFileList: [], + quotXjFileList: [], //报价单-技术确认单-反馈附件上传地址 uploadUrl: process.env.VUE_APP_BASE_API + "/quot/quot/quotFile", //报价单-技术确认单-反馈附件请求头 @@ -922,6 +948,7 @@ }; this.quotJsgfFileList = []; + this.quotXjFileList = []; this.quotJsqrFileList = []; this.showTl = false; @@ -963,6 +990,7 @@ } this.getQuotJsgfFileList(); + this.getQuotXjFileList(); this.quotJsqrTlRemarkDisSet();//技术协助-特缆审核意见/组长确认意见 编辑状态设置 this.quotJsqrDyRemarkDisSet();//技术协助-低压审核意见/组长确认意见 编辑状态设置 this.quotJsqrZyRemarkDisSet();//技术协助-中压审核意见/组长确认意见 编辑状态设置 @@ -987,6 +1015,13 @@ this.quotJsgfFileList = response.rows; }); }, + //获取报价单-清单附件列表 + getQuotXjFileList(){ + const param = {relationId:this.form.quotId,fileType:'quotXjFile'} + quotFileList(param).then(response => { + this.quotXjFileList = response.rows; + }); + }, //操作人、审核人、组长 确认事件 doOperate(quotJsxzGroup,type,state){