'123'
This commit is contained in:
parent
52f2ef90c2
commit
5f61c68107
|
@ -0,0 +1,11 @@
|
||||||
|
#for tests only !
|
||||||
|
#Wed Jun 12 17:04:18 CST 2024
|
||||||
|
jco.destination.pool_capacity=10
|
||||||
|
jco.client.lang=ZH
|
||||||
|
jco.client.ashost=172.19.0.120
|
||||||
|
jco.client.saprouter=
|
||||||
|
jco.client.user=RFC
|
||||||
|
jco.client.sysnr=00
|
||||||
|
jco.destination.peak_limit=10
|
||||||
|
jco.client.passwd=gR+@VS{@vcSt}PE/DW_]@6@mm8UiFKt|ELFuvqDg@R+lSEZZ
|
||||||
|
jco.client.client=300
|
|
@ -3,11 +3,15 @@ package com.ruoyi.web.controller.priceVerification;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import com.ruoyi.common.constant.WebsocketConst;
|
||||||
|
import com.ruoyi.common.core.domain.model.LoginUser;
|
||||||
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import com.ruoyi.quot.domain.Quot;
|
import com.ruoyi.quot.domain.Quot;
|
||||||
import com.ruoyi.quot.service.IQuotService;
|
import com.ruoyi.quot.service.IQuotService;
|
||||||
|
import com.ruoyi.system.service.ISysNoticeService;
|
||||||
import com.ruoyi.technicalConfirm.domain.QuotJsqr;
|
import com.ruoyi.technicalConfirm.domain.QuotJsqr;
|
||||||
|
import com.ruoyi.web.utils.SendNotice.NoticeUtil;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
@ -43,6 +47,9 @@ public class QuotHjController extends BaseController
|
||||||
@Autowired
|
@Autowired
|
||||||
private IQuotService quotService;
|
private IQuotService quotService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISysNoticeService noticeService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询报价单-核价单列表
|
* 查询报价单-核价单列表
|
||||||
*/
|
*/
|
||||||
|
@ -128,9 +135,22 @@ public class QuotHjController extends BaseController
|
||||||
quot.setQuotHjApprovalStatus("2");//报价单-核价单 状态设置为 已协助
|
quot.setQuotHjApprovalStatus("2");//报价单-核价单 状态设置为 已协助
|
||||||
quotService.updateQuot(quot);
|
quotService.updateQuot(quot);
|
||||||
|
|
||||||
|
sendNoticeToQuot(quotHj);// 发送给提醒
|
||||||
return success();
|
return success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送信息-核价协助提交报价组
|
||||||
|
* @param quotHj
|
||||||
|
*/
|
||||||
|
private void sendNoticeToQuot(QuotHj quotHj){
|
||||||
|
//推送消息
|
||||||
|
LoginUser loginUser = getLoginUser();//当前登陆者
|
||||||
|
//获取发送人-报价组
|
||||||
|
List<String> userIds = noticeService.getSendEmp(WebsocketConst.MSG_SEND_QUOT_BJZ);
|
||||||
|
NoticeUtil.sendNoticesBusiness(loginUser,"有报价单已完成核价协助","单号:"+quotHj.getQuotCode(),userIds);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 报价单-核价单 驳回
|
* 报价单-核价单 驳回
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -2,13 +2,16 @@ package com.ruoyi.web.controller.quot;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.ruoyi.common.constant.WebsocketConst;
|
import com.ruoyi.common.constant.WebsocketConst;
|
||||||
|
import com.ruoyi.common.core.domain.entity.SysRole;
|
||||||
import com.ruoyi.common.core.domain.model.LoginUser;
|
import com.ruoyi.common.core.domain.model.LoginUser;
|
||||||
import com.ruoyi.common.core.redis.RedisCache;
|
import com.ruoyi.common.core.redis.RedisCache;
|
||||||
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
|
import com.ruoyi.common.utils.SecurityUtils;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import com.ruoyi.common.utils.file.FileUploadUtils;
|
import com.ruoyi.common.utils.file.FileUploadUtils;
|
||||||
import com.ruoyi.common.utils.file.MinioUtil;
|
import com.ruoyi.common.utils.file.MinioUtil;
|
||||||
|
@ -177,7 +180,9 @@ public class QuotController extends BaseController
|
||||||
public AjaxResult add(@RequestBody Quot quot)
|
public AjaxResult add(@RequestBody Quot quot)
|
||||||
{
|
{
|
||||||
quot.setQuotId(UUID.fastUUID().toString());
|
quot.setQuotId(UUID.fastUUID().toString());
|
||||||
quot.setQuotCode(IdUtils.createNo("BJD_",0));
|
//quot.setQuotCode(IdUtils.createNo("BJD_",0));
|
||||||
|
String quotCode = quotService.getCode("BJD");
|
||||||
|
quot.setQuotCode(quotCode);
|
||||||
quot.setCreateBy(getUsername());
|
quot.setCreateBy(getUsername());
|
||||||
quot.setQuotSalesmanCode(getUsername());
|
quot.setQuotSalesmanCode(getUsername());
|
||||||
quot.setUpdateBy(getUsername());
|
quot.setUpdateBy(getUsername());
|
||||||
|
@ -296,11 +301,22 @@ public class QuotController extends BaseController
|
||||||
@PostMapping("/commitQuot")
|
@PostMapping("/commitQuot")
|
||||||
public AjaxResult commitQuot(@RequestBody Quot quot)
|
public AjaxResult commitQuot(@RequestBody Quot quot)
|
||||||
{
|
{
|
||||||
// 每天限制提交200条
|
// 获取用户角色 --判断是否是核价组角色
|
||||||
String quotCommitCount = configService.selectConfigByKey("quot.commit.count");
|
Boolean hjRoleFlag = false;
|
||||||
String count = quotService.selectQuotListCount();
|
List<SysRole> roles = SecurityUtils.getLoginUser().getUser().getRoles();
|
||||||
if(Integer.valueOf(count)>=Integer.valueOf(quotCommitCount)){
|
for(SysRole sysRole:roles){
|
||||||
return error("当前报价量已达极限,无法继续提供报价单");
|
String roleKey = sysRole.getRoleKey();
|
||||||
|
if("PRICE_VERIFICATION".equals(roleKey)){
|
||||||
|
hjRoleFlag = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!hjRoleFlag){
|
||||||
|
// 每天限制提交200条
|
||||||
|
String quotCommitCount = configService.selectConfigByKey("quot.commit.count");
|
||||||
|
String count = quotService.selectQuotListCount();
|
||||||
|
if(Integer.valueOf(count)>=Integer.valueOf(quotCommitCount)){
|
||||||
|
return error("当前报价量已达极限,无法继续提供报价单");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String quot_id = quot.getQuotId();
|
String quot_id = quot.getQuotId();
|
||||||
|
@ -310,14 +326,21 @@ public class QuotController extends BaseController
|
||||||
quot.setQuotInquiryDate(DateUtils.getNowDate());//报价单 询价日期设置为 当前日期
|
quot.setQuotInquiryDate(DateUtils.getNowDate());//报价单 询价日期设置为 当前日期
|
||||||
|
|
||||||
// 校验 是否已有重复报价单(客户+项目名)
|
// 校验 是否已有重复报价单(客户+项目名)
|
||||||
Boolean flag = quotService.checkExistQuot(getUsername(),quot.getQuotCustomerBm(),quot.getQuotProject());
|
Boolean flag = false;
|
||||||
|
if(!hjRoleFlag){
|
||||||
|
flag = quotService.checkExistQuot(getUsername(),quot.getQuotCustomerBm(),quot.getQuotProject());
|
||||||
|
}else{
|
||||||
|
flag = quotService.checkExistQuot(quot.getQuotSalesmanCode(),quot.getQuotCustomerBm(),quot.getQuotProject());
|
||||||
|
}
|
||||||
if(flag){
|
if(flag){
|
||||||
return error("存在相同客户且项目名称一致的报价单,无法提交");
|
return error("存在相同客户且项目名称一致的报价单,无法提交");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(StringUtils.isEmpty(quot_id)){
|
if(StringUtils.isEmpty(quot_id)){
|
||||||
quot.setQuotId(UUID.fastUUID().toString());
|
quot.setQuotId(UUID.fastUUID().toString());
|
||||||
quot.setQuotCode(IdUtils.createNo("BJD_",0));
|
//quot.setQuotCode(IdUtils.createNo("BJD_",0));
|
||||||
|
String quotCode = quotService.getCode("BJD");
|
||||||
|
quot.setQuotCode(quotCode);
|
||||||
quot.setCreateBy(getUsername());
|
quot.setCreateBy(getUsername());
|
||||||
quot.setQuotSalesmanCode(getUsername());
|
quot.setQuotSalesmanCode(getUsername());
|
||||||
quotService.insertQuot(quot);
|
quotService.insertQuot(quot);
|
||||||
|
@ -363,7 +386,9 @@ public class QuotController extends BaseController
|
||||||
QuotJsqr quotJsqr = new QuotJsqr();
|
QuotJsqr quotJsqr = new QuotJsqr();
|
||||||
String quotJsqrId = UUID.fastUUID().toString();
|
String quotJsqrId = UUID.fastUUID().toString();
|
||||||
quotJsqr.setQuotJsqrId(quotJsqrId);
|
quotJsqr.setQuotJsqrId(quotJsqrId);
|
||||||
quotJsqr.setQuotJsqrCode(IdUtils.createNo("BJD_JSQR_",0));
|
//quotJsqr.setQuotJsqrCode(IdUtils.createNo("BJD_JSQR_",0));
|
||||||
|
String quotJsqrCode = quotService.getCode("JSQR");
|
||||||
|
quotJsqr.setQuotJsqrCode(quotJsqrCode);
|
||||||
|
|
||||||
//特缆、低压、中压、其他 协助状态设置
|
//特缆、低压、中压、其他 协助状态设置
|
||||||
if(quotJsxzGroup.indexOf("TL")!=-1){
|
if(quotJsxzGroup.indexOf("TL")!=-1){
|
||||||
|
@ -428,7 +453,10 @@ public class QuotController extends BaseController
|
||||||
QuotHj quotHj = new QuotHj();
|
QuotHj quotHj = new QuotHj();
|
||||||
String quotHjId = UUID.fastUUID().toString();
|
String quotHjId = UUID.fastUUID().toString();
|
||||||
quotHj.setQuotHjId(quotHjId);
|
quotHj.setQuotHjId(quotHjId);
|
||||||
quotHj.setQuotHjCode(IdUtils.createNo("BJD_HJ_",0));
|
//quotHj.setQuotHjCode(IdUtils.createNo("BJD_HJ_",0));
|
||||||
|
String quotHjCode = quotService.getCode("HJD");
|
||||||
|
quotHj.setQuotHjCode(quotHjCode);
|
||||||
|
|
||||||
quotHj.setQuotHjPricingType("10");//核价类型 设置为 报价核价
|
quotHj.setQuotHjPricingType("10");//核价类型 设置为 报价核价
|
||||||
|
|
||||||
quotHj.setCreateBy(getUsername());
|
quotHj.setCreateBy(getUsername());
|
||||||
|
@ -452,89 +480,108 @@ public class QuotController extends BaseController
|
||||||
@PostMapping("/commitJswQuot")
|
@PostMapping("/commitJswQuot")
|
||||||
public AjaxResult commitJswQuot(@RequestBody Quot quot)
|
public AjaxResult commitJswQuot(@RequestBody Quot quot)
|
||||||
{
|
{
|
||||||
// 对接金思维接口
|
String quotJswApprovalStatus = quot.getQuotJswApprovalStatus();
|
||||||
//==============================账户认证==================================
|
if("2".equals(quotJswApprovalStatus)){//重新调点
|
||||||
QuotJswUser quotJswUser = new QuotJswUser("JNBJPT","1q2w3e","S","");
|
String quotJswCode = quot.getQuotJswCode();
|
||||||
String quotJswUserJson = JSON.toJSONString(quotJswUser);
|
String returnTdJson = "{\"bjdid\":"+quotJswCode+"}";
|
||||||
|
Map<String,String> res = HttpUtils.sendPostJson("http://price.jncable.com.cn:7778/GTHINKING/AjaxService/U20231485_N_XLXSBJ/100860101.ashx/DispatchBJD",returnTdJson,"");
|
||||||
|
String returnTdResultJson = res.get("res");
|
||||||
|
QuotJswUserResult quotJswUserResult = JSON.parseObject(returnTdResultJson, QuotJswUserResult.class);
|
||||||
|
if(!quotJswUserResult.getSuccess()){
|
||||||
|
return error(quotJswUserResult.getErrorMessage());
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
// ==============================对接金思维接口==============================
|
||||||
|
//==============================账户认证==================================
|
||||||
|
QuotJswUser quotJswUser = new QuotJswUser("JNBJPT","1q2w3e","S","");
|
||||||
|
String quotJswUserJson = JSON.toJSONString(quotJswUser);
|
||||||
|
Map<String,String> res = HttpUtils.sendPostJson("http://price.jncable.com.cn:7778/GTHINKING/AjaxService/N_MISPRO/100208057.ashx/Login",quotJswUserJson,"");
|
||||||
|
String cookie = res.get("cookie");
|
||||||
|
System.out.println("cookie======"+cookie);
|
||||||
|
String QuotJswUserResultJson = res.get("res");
|
||||||
|
QuotJswUserResult quotJswUserResult = JSON.parseObject(QuotJswUserResultJson, QuotJswUserResult.class);
|
||||||
|
if(!quotJswUserResult.getSuccess()){
|
||||||
|
return error(quotJswUserResult.getErrorMessage());
|
||||||
|
}
|
||||||
|
|
||||||
String QuotJswUserResultJson = HttpUtils.sendPostJson("http://price.jncable.com.cn:7778/GTHINKING/AjaxService/N_MISPRO/100208057.ashx/Login",quotJswUserJson);
|
//==============================报价单信息对接==================================
|
||||||
QuotJswUserResult quotJswUserResult = JSON.parseObject(QuotJswUserResultJson, QuotJswUserResult.class);
|
QuotJswInfo quotJswInfo = new QuotJswInfo();
|
||||||
if(!quotJswUserResult.getSuccess()){
|
quotJswInfo.setQuotCode(quot.getQuotCode());
|
||||||
return error(quotJswUserResult.getErrorMessage());
|
quotJswInfo.setXsy(quot.getQuotSalesmanName());
|
||||||
|
quotJswInfo.setXsyid(quot.getQuotSalesmanCode());
|
||||||
|
quotJswInfo.setKh(quot.getQuotCustomerName());
|
||||||
|
quotJswInfo.setKhid(quot.getQuotCustomerBm());
|
||||||
|
quotJswInfo.setBz(quot.getQuotQuotationRequire());
|
||||||
|
|
||||||
|
List<QuotJswMaterial> quotJswMaterials = new ArrayList<>();
|
||||||
|
QuotJswMaterial quotJswMaterial = null;
|
||||||
|
for(QuotMaterial m:quot.getQuotMaterialList()){
|
||||||
|
quotJswMaterial = new QuotJswMaterial();
|
||||||
|
quotJswMaterial.setMatXingh(m.getMatXingh());
|
||||||
|
quotJswMaterial.setMatGuig(m.getMatGuig());
|
||||||
|
quotJswMaterial.setMatDiany(m.getMatDiany());
|
||||||
|
quotJswMaterial.setMatStandard(m.getMatStandard());
|
||||||
|
quotJswMaterial.setMatSl(m.getMatSl());
|
||||||
|
quotJswMaterial.setMatDanw(m.getMatDanw());
|
||||||
|
quotJswMaterial.setMatRemark(m.getMatRemark());
|
||||||
|
quotJswMaterials.add(quotJswMaterial);
|
||||||
|
}
|
||||||
|
quotJswInfo.setQuotMaterial(quotJswMaterials);
|
||||||
|
|
||||||
|
QuotJsw quotJsw = new QuotJsw();
|
||||||
|
quotJsw.setRecBJDInfo(quotJswInfo);
|
||||||
|
|
||||||
|
String quotJson = JSON.toJSONString(quotJsw);
|
||||||
|
//调用金思维接口上传报价单信息
|
||||||
|
Map<String,String> res2 = HttpUtils.sendPostJson("http://price.jncable.com.cn:7778/GTHINKING/AjaxService/U20231485_N_XLXSBJ/100860101.ashx/RecBJDfromJN",quotJson,cookie);
|
||||||
|
String QuotJswResultJson = res2.get("res");
|
||||||
|
QuotJswResult quotJswResultObject = JSON.parseObject(QuotJswResultJson, QuotJswResult.class);
|
||||||
|
if(!quotJswResultObject.getSuccess()){
|
||||||
|
return error(quotJswResultObject.getErrorMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================附件对接==================================
|
||||||
|
List<QuotFile> files = new ArrayList<>();
|
||||||
|
|
||||||
|
QuotFile quotFile = new QuotFile();
|
||||||
|
quotFile.setRelationId(quot.getQuotId());// 报价单ID
|
||||||
|
quotFile.setFileType("quotXjFile");// 附件类型-询价清单附件
|
||||||
|
List<QuotFile> quotXjFiles = quotFileService.selectQuotFileList(quotFile);
|
||||||
|
if(quotXjFiles!=null&"XjFiles.size()>0){
|
||||||
|
files.addAll(quotXjFiles);
|
||||||
|
}
|
||||||
|
|
||||||
|
quotFile = new QuotFile();
|
||||||
|
quotFile.setRelationId(quot.getQuotId());// 报价单ID
|
||||||
|
quotFile.setFileType("quotJsgfFile");// 附件类型-技术附件
|
||||||
|
List<QuotFile> quotJsgfFiles = quotFileService.selectQuotFileList(quotFile);
|
||||||
|
if(quotJsgfFiles!=null&"JsgfFiles.size()>0){
|
||||||
|
files.addAll(quotJsgfFiles);
|
||||||
|
}
|
||||||
|
|
||||||
|
QuotJswFiles quotJswFiles = null;
|
||||||
|
QuotJswFile quotJswFile = new QuotJswFile();
|
||||||
|
quotJswFile.setBjdid(quotJswResultObject.getKey());
|
||||||
|
List<QuotJswFiles> quotJswFileList = new ArrayList<QuotJswFiles>();
|
||||||
|
for(QuotFile qf:files){
|
||||||
|
quotJswFiles = new QuotJswFiles();
|
||||||
|
quotJswFiles.setFileName(qf.getFileName());
|
||||||
|
quotJswFiles.setFileData(Base64.fileBase64(qf.getFileUrl()));
|
||||||
|
quotJswFileList.add(quotJswFiles);
|
||||||
|
}
|
||||||
|
quotJswFile.setFjdata(quotJswFileList);
|
||||||
|
String fileJson = JSON.toJSONString(quotJswFile);
|
||||||
|
//调用金思维接口上传附件
|
||||||
|
if(files!=null&&files.size()>0){
|
||||||
|
Map<String,String> res3 = HttpUtils.sendPostJson("http://price.jncable.com.cn:7778/GTHINKING/AjaxService/U20231485_N_XLXSBJ/100860101.ashx/UploadFile",fileJson,cookie);
|
||||||
|
String QuotJswResultFileJson = res3.get("res");
|
||||||
|
QuotJswResult quotJswResult = JSON.parseObject(QuotJswResultFileJson, QuotJswResult.class);
|
||||||
|
if(!quotJswResult.getSuccess()){
|
||||||
|
return error(quotJswResult.getErrorMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//==============================报价单信息对接==================================
|
|
||||||
QuotJswInfo quotJswInfo = new QuotJswInfo();
|
|
||||||
quotJswInfo.setQuotCode(quot.getQuotCode());
|
|
||||||
quotJswInfo.setXsy(quot.getQuotSalesmanName());
|
|
||||||
quotJswInfo.setXsyid(quot.getQuotSalesmanCode());
|
|
||||||
quotJswInfo.setKh(quot.getQuotCustomerName());
|
|
||||||
quotJswInfo.setKhid(quot.getQuotCustomerBm());
|
|
||||||
quotJswInfo.setBz(quot.getQuotQuotationRequire());
|
|
||||||
|
|
||||||
List<QuotJswMaterial> quotJswMaterials = new ArrayList<>();
|
|
||||||
QuotJswMaterial quotJswMaterial = null;
|
|
||||||
for(QuotMaterial m:quot.getQuotMaterialList()){
|
|
||||||
quotJswMaterial = new QuotJswMaterial();
|
|
||||||
quotJswMaterial.setMatXingh(m.getMatXingh());
|
|
||||||
quotJswMaterial.setMatGuig(m.getMatGuig());
|
|
||||||
quotJswMaterial.setMatDiany(m.getMatDiany());
|
|
||||||
quotJswMaterial.setMatStandard(m.getMatStandard());
|
|
||||||
quotJswMaterial.setMatSl(m.getMatSl());
|
|
||||||
quotJswMaterial.setMatDanw(m.getMatDanw());
|
|
||||||
quotJswMaterial.setMatRemark(m.getMatRemark());
|
|
||||||
quotJswMaterials.add(quotJswMaterial);
|
|
||||||
}
|
|
||||||
quotJswInfo.setQuotMaterial(quotJswMaterials);
|
|
||||||
|
|
||||||
QuotJsw quotJsw = new QuotJsw();
|
|
||||||
quotJsw.setRecBJDInfo(quotJswInfo);
|
|
||||||
|
|
||||||
String quotJson = JSON.toJSONString(quotJsw);
|
|
||||||
//调用金思维接口上传报价单信息
|
|
||||||
String QuotJswResultJson = HttpUtils.sendPostJson("http://price.jncable.com.cn:7778/GTHINKING/AjaxService/U20231485_N_XLXSBJ/100860101.ashx/RecBJDfromJN",quotJson);
|
|
||||||
QuotJswResult quotJswResultObject = JSON.parseObject(QuotJswResultJson, QuotJswResult.class);
|
|
||||||
if(!quotJswResultObject.getSuccess()){
|
|
||||||
return error(quotJswResultObject.getErrorMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================附件对接==================================
|
|
||||||
List<QuotFile> files = new ArrayList<>();
|
|
||||||
|
|
||||||
QuotFile quotFile = new QuotFile();
|
|
||||||
quotFile.setRelationId(quot.getQuotId());// 报价单ID
|
|
||||||
quotFile.setFileType("quotXjFile");// 附件类型-询价清单附件
|
|
||||||
List<QuotFile> quotXjFiles = quotFileService.selectQuotFileList(quotFile);
|
|
||||||
if(quotXjFiles!=null&"XjFiles.size()>0){
|
|
||||||
files.addAll(quotXjFiles);
|
|
||||||
}
|
|
||||||
|
|
||||||
quotFile = new QuotFile();
|
|
||||||
quotFile.setRelationId(quot.getQuotId());// 报价单ID
|
|
||||||
quotFile.setFileType("quotJsgfFile");// 附件类型-技术附件
|
|
||||||
List<QuotFile> quotJsgfFiles = quotFileService.selectQuotFileList(quotFile);
|
|
||||||
if(quotJsgfFiles!=null&"JsgfFiles.size()>0){
|
|
||||||
files.addAll(quotJsgfFiles);
|
|
||||||
}
|
|
||||||
|
|
||||||
QuotJswFiles quotJswFiles = null;
|
|
||||||
QuotJswFile quotJswFile = new QuotJswFile();
|
|
||||||
quotJswFile.setBjdid(quot.getQuotCode());
|
|
||||||
for(QuotFile qf:files){
|
|
||||||
quotJswFiles = new QuotJswFiles();
|
|
||||||
quotJswFiles.setFileName(qf.getFileName());
|
|
||||||
quotJswFiles.setFileData(Base64.fileBase64(qf.getFileUrl()));
|
|
||||||
quotJswFile.getFjdata().add(quotJswFiles);
|
|
||||||
}
|
|
||||||
String fileJson = JSON.toJSONString(quotJswFile);
|
|
||||||
//调用金思维接口上传附件
|
|
||||||
String QuotJswResultFileJson = HttpUtils.sendPostJson("http://price.jncable.com.cn:7778/GTHINKING/AjaxService/U20231485_N_XLXSBJ/100860101.ashx/UploadFile",fileJson);
|
|
||||||
QuotJswResult quotJswResult = JSON.parseObject(QuotJswResultFileJson, QuotJswResult.class);
|
|
||||||
if(!quotJswResult.getSuccess()){
|
|
||||||
return error(quotJswResult.getErrorMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
quot.setQuotJswApprovalStatus("1");// 更新金思维提交状态为 协助中
|
quot.setQuotJswApprovalStatus("1");// 更新金思维提交状态为 协助中
|
||||||
quotService.updateQuot(quot);
|
quotService.updateQuot(quot);
|
||||||
return success();
|
return success();
|
||||||
|
|
|
@ -2,14 +2,18 @@ package com.ruoyi.web.controller.technicalConfirm;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import com.ruoyi.common.constant.WebsocketConst;
|
||||||
|
import com.ruoyi.common.core.domain.model.LoginUser;
|
||||||
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||||
import com.ruoyi.quot.domain.Quot;
|
import com.ruoyi.quot.domain.Quot;
|
||||||
import com.ruoyi.quot.service.IQuotService;
|
import com.ruoyi.quot.service.IQuotService;
|
||||||
|
import com.ruoyi.system.service.ISysNoticeService;
|
||||||
import com.ruoyi.technicalConfirm.domain.QuotJsqr;
|
import com.ruoyi.technicalConfirm.domain.QuotJsqr;
|
||||||
import com.ruoyi.technicalConfirm.domain.QuotJsqrXzDetail;
|
import com.ruoyi.technicalConfirm.domain.QuotJsqrXzDetail;
|
||||||
import com.ruoyi.technicalConfirm.service.IQuotJsqrService;
|
import com.ruoyi.technicalConfirm.service.IQuotJsqrService;
|
||||||
|
import com.ruoyi.web.utils.SendNotice.NoticeUtil;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
@ -44,6 +48,9 @@ public class QuotJsqrController extends BaseController
|
||||||
@Autowired
|
@Autowired
|
||||||
private IQuotService quotService;
|
private IQuotService quotService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISysNoticeService noticeService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询报价单-技术确认单列表
|
* 查询报价单-技术确认单列表
|
||||||
*/
|
*/
|
||||||
|
@ -387,7 +394,21 @@ public class QuotJsqrController extends BaseController
|
||||||
return error("其他(防火、轨道、架空)协助还未完成");
|
return error("其他(防火、轨道、架空)协助还未完成");
|
||||||
}
|
}
|
||||||
quot.setQuotJsxzApprovalStatus("2");//报价单-技术协助状态 设置为 已协助
|
quot.setQuotJsxzApprovalStatus("2");//报价单-技术协助状态 设置为 已协助
|
||||||
|
|
||||||
|
sendNoticeToQuot(quotJsqr);// 发送给提醒
|
||||||
}
|
}
|
||||||
return success(quotService.updateQuot(quot));
|
return success(quotService.updateQuot(quot));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送信息-技术协助提交报价组
|
||||||
|
* @param quotJsqr
|
||||||
|
*/
|
||||||
|
private void sendNoticeToQuot(QuotJsqr quotJsqr){
|
||||||
|
//推送消息
|
||||||
|
LoginUser loginUser = getLoginUser();//当前登陆者
|
||||||
|
//获取发送人-报价组
|
||||||
|
List<String> userIds = noticeService.getSendEmp(WebsocketConst.MSG_SEND_QUOT_BJZ);
|
||||||
|
NoticeUtil.sendNoticesBusiness(loginUser,"有报价单已完成技术协助","单号:"+quotJsqr.getQuotCode(),userIds);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,18 +5,21 @@ import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.net.ConnectException;
|
import java.net.*;
|
||||||
import java.net.SocketTimeoutException;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.net.URLConnection;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.security.cert.X509Certificate;
|
import java.security.cert.X509Certificate;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import javax.net.ssl.HostnameVerifier;
|
import javax.net.ssl.HostnameVerifier;
|
||||||
import javax.net.ssl.HttpsURLConnection;
|
import javax.net.ssl.HttpsURLConnection;
|
||||||
import javax.net.ssl.SSLContext;
|
import javax.net.ssl.SSLContext;
|
||||||
import javax.net.ssl.SSLSession;
|
import javax.net.ssl.SSLSession;
|
||||||
import javax.net.ssl.TrustManager;
|
import javax.net.ssl.TrustManager;
|
||||||
import javax.net.ssl.X509TrustManager;
|
import javax.net.ssl.X509TrustManager;
|
||||||
|
|
||||||
|
import org.apache.commons.collections.map.HashedMap;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import com.ruoyi.common.constant.Constants;
|
import com.ruoyi.common.constant.Constants;
|
||||||
|
@ -196,8 +199,11 @@ public class HttpUtils
|
||||||
* @param param 请求参数,请求参数应该是 json字符串 的形式。
|
* @param param 请求参数,请求参数应该是 json字符串 的形式。
|
||||||
* @return 所代表远程资源的响应结果
|
* @return 所代表远程资源的响应结果
|
||||||
*/
|
*/
|
||||||
public static String sendPostJson(String url, String param)
|
public static Map<String,String> sendPostJson(String url, String param,String cookie)
|
||||||
{
|
{
|
||||||
|
Map<String,String> map = new HashMap<String,String>();
|
||||||
|
String tempCookie = "";
|
||||||
|
|
||||||
PrintWriter out = null;
|
PrintWriter out = null;
|
||||||
BufferedReader in = null;
|
BufferedReader in = null;
|
||||||
StringBuilder result = new StringBuilder();
|
StringBuilder result = new StringBuilder();
|
||||||
|
@ -213,6 +219,10 @@ public class HttpUtils
|
||||||
conn.setRequestProperty("Accept-Charset", "utf-8");
|
conn.setRequestProperty("Accept-Charset", "utf-8");
|
||||||
conn.setRequestProperty("contentType", "application/json");
|
conn.setRequestProperty("contentType", "application/json");
|
||||||
conn.setRequestProperty("Content-Type", "application/json");
|
conn.setRequestProperty("Content-Type", "application/json");
|
||||||
|
// 设置Cookie头部
|
||||||
|
if(StringUtils.isNotEmpty(cookie)){
|
||||||
|
conn.setRequestProperty("Cookies", "cookie="+cookie);
|
||||||
|
}
|
||||||
conn.setDoOutput(true);
|
conn.setDoOutput(true);
|
||||||
conn.setDoInput(true);
|
conn.setDoInput(true);
|
||||||
out = new PrintWriter(conn.getOutputStream());
|
out = new PrintWriter(conn.getOutputStream());
|
||||||
|
@ -224,6 +234,11 @@ public class HttpUtils
|
||||||
{
|
{
|
||||||
result.append(line);
|
result.append(line);
|
||||||
}
|
}
|
||||||
|
if(StringUtils.isEmpty(cookie)){
|
||||||
|
List<String> cookies = conn.getHeaderFields().get("Set-Cookie");
|
||||||
|
tempCookie = cookies.stream().collect(Collectors.joining("; "));
|
||||||
|
}
|
||||||
|
|
||||||
log.info("recv - {}", result);
|
log.info("recv - {}", result);
|
||||||
}
|
}
|
||||||
catch (ConnectException e)
|
catch (ConnectException e)
|
||||||
|
@ -260,7 +275,9 @@ public class HttpUtils
|
||||||
log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
|
log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result.toString();
|
map.put("cookie",tempCookie);
|
||||||
|
map.put("res",result.toString());
|
||||||
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String sendSSLPost(String url, String param)
|
public static String sendSSLPost(String url, String param)
|
||||||
|
|
|
@ -141,4 +141,10 @@ public interface QuotMapper
|
||||||
* @param subList
|
* @param subList
|
||||||
*/
|
*/
|
||||||
void batchSysOaQuotMaterial(List<QuotMaterial> subList);
|
void batchSysOaQuotMaterial(List<QuotMaterial> subList);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取单据编号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
String getCode(String type);
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,4 +118,10 @@ public interface IQuotService
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
SysOaQuot selectOAUserByUserName(String loginid);
|
SysOaQuot selectOAUserByUserName(String loginid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取单据编号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
String getCode(String type);
|
||||||
}
|
}
|
||||||
|
|
|
@ -260,4 +260,13 @@ public class QuotServiceImpl implements IQuotService
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取单据编号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getCode(String type) {
|
||||||
|
return quotMapper.getCode(type);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,6 +66,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<!-- 数据范围过滤 -->
|
<!-- 数据范围过滤 -->
|
||||||
<!--${params.dataScope}-->
|
<!--${params.dataScope}-->
|
||||||
</where>
|
</where>
|
||||||
|
order by a.update_time desc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectQuotHjByQuotHjId" parameterType="String" resultMap="QuotHjResult">
|
<select id="selectQuotHjByQuotHjId" parameterType="String" resultMap="QuotHjResult">
|
||||||
|
|
|
@ -492,4 +492,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
where a.quot_hj_id = #{quotHjId}
|
where a.quot_hj_id = #{quotHjId}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getCode" resultType="String" statementType="CALLABLE">
|
||||||
|
{call GetSerialNo(#{type,mode=IN,jdbcType=VARCHAR})}
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
@ -452,12 +452,12 @@
|
||||||
<el-input v-model="scope.row.matRemark" placeholder="备注" :disabled="form.quotApprovalStatus != '0' && form.quotApprovalStatus != null"/>
|
<el-input v-model="scope.row.matRemark" placeholder="备注" :disabled="form.quotApprovalStatus != '0' && form.quotApprovalStatus != null"/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="料价" prop="matMatprice" v-if="checkRole(['QUOT_MAT_PRICE_DIFF'])" width="130">
|
<el-table-column label="料单价" prop="matMatprice" v-if="checkRole(['QUOT_MAT_PRICE_DIFF'])" width="130">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-input v-model="scope.row.matMatprice" :disabled="true"/>
|
<el-input v-model="scope.row.matMatprice" :disabled="true"/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="红本价" prop="matPrice" v-if="checkRole(['QUOT','QUOT_MAT_PRICE_DIFF'])" width="130">
|
<el-table-column label="红本单价" prop="matPrice" v-if="checkRole(['QUOT','QUOT_MAT_PRICE_DIFF'])" width="130">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-input v-model="scope.row.matPrice" :disabled="true"/>
|
<el-input v-model="scope.row.matPrice" :disabled="true"/>
|
||||||
</template>
|
</template>
|
||||||
|
@ -467,17 +467,17 @@
|
||||||
<el-input v-model="scope.row.matQuotTp" :disabled="true"/>
|
<el-input v-model="scope.row.matQuotTp" :disabled="true"/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="报价" prop="matQuotPrice" v-if="checkRole(['QUOT','QUOT_MAT_PRICE_DIFF'])" width="130">
|
<el-table-column label="报价单价" prop="matQuotPrice" v-if="checkRole(['QUOT','QUOT_MAT_PRICE_DIFF'])" width="130">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-input v-model="scope.row.matQuotPrice" :disabled="true"/>
|
<el-input v-model="scope.row.matQuotPrice" :disabled="true"/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="报价金额" prop="matQuotAllPrice" v-if="checkRole(['QUOT','QUOT_MAT_PRICE_DIFF'])" width="130">
|
<el-table-column label="报价小计" prop="matQuotAllPrice" v-if="checkRole(['QUOT','QUOT_MAT_PRICE_DIFF'])" width="130">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-input v-model="scope.row.matQuotAllPrice" :disabled="true"/>
|
<el-input v-model="scope.row.matQuotAllPrice" :disabled="true"/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="料价价差率" prop="matMatpriceDiff" v-if="checkRole(['QUOT_MAT_PRICE_DIFF'])" width="130">
|
<el-table-column label="毛利率" prop="matMatpriceDiff" v-if="checkRole(['QUOT_MAT_PRICE_DIFF'])" width="130">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-input v-model="scope.row.matMatpriceDiff" :disabled="true"/>
|
<el-input v-model="scope.row.matMatpriceDiff" :disabled="true"/>
|
||||||
</template>
|
</template>
|
||||||
|
|
Loading…
Reference in New Issue