package platform.modules.government.service; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.PascalNameFilter; import com.xiaoleilu.hutool.crypto.SecureUtil; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import platform.common.base.service.BaseService; import platform.common.util.HttpClientUtil; import platform.modules.build.entity.Company; import platform.modules.build.service.CompanyService; import platform.modules.company.entity.CompanyBrdinvestment; import platform.modules.company.entity.CompanyPolicy; import platform.modules.company.service.CompanyBrdinvestmentService; import platform.modules.government.dao.PolicyExaminationDao; import platform.modules.government.dto.CompanyInfoDto; import platform.modules.government.dto.CompanyPolicyDto; import platform.modules.government.dto.PolicyResultDto; import platform.modules.sys.entity.DiagnosticReport; import platform.modules.sys.entity.DiagnosticUserGroup; import platform.modules.sys.service.DiagnosticReportService; import platform.modules.sys.service.DiagnosticUserGroupService; //import sun.tools.tree.DoubleExpression; import tk.mybatis.mapper.entity.Example; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Map; @Service public class PolicyExaminationService extends BaseService{ @Autowired private PolicyExaminationDao policyExaminationDao; @Autowired private CompanyBrdinvestmentService companyBrdinvestmentServince; @Autowired private CompanyService companyService; @Autowired public HttpClientUtil httpClientUtil; @Autowired private DiagnosticReportService diagnosticReportService; @Autowired private DiagnosticUserGroupService diagnosticUserGroupService; /** * 根据公司id找数据 * @param company_id * @return */ public CompanyPolicy findByCid(Integer company_id) { Example example = new Example(CompanyPolicy.class); Example.Criteria criteria = example.createCriteria(); criteria.andEqualTo("del_flag", 0); criteria.andEqualTo("cid", company_id); List contents = this.selectByExample(example); if (contents != null && contents.size() > 0){ return contents.get(0); } return new CompanyPolicy(); } /** * 保存诊断数据 * @param companyPolicy */ public void savePolicyData(CompanyPolicy companyPolicy) { CompanyPolicy policy = findByCid(companyPolicy.getCid()); if (policy.getId() != null){ updateSelective(companyPolicy); } else { //保存企业信息 insertAndGetId(companyPolicy); } //保存近三年经营数据 if (companyPolicy.getCompanyBrdinvestments() != null){ List brdinvestments = companyPolicy.getCompanyBrdinvestments(); for (CompanyBrdinvestment brdinvestment : brdinvestments){ brdinvestment.setCid(companyPolicy.getCid()); if (brdinvestment.getId() != null){ companyBrdinvestmentServince.updateSelective(brdinvestment); } else { companyBrdinvestmentServince.insertAndGetId(brdinvestment); } } } } /** * 更新企业诊断信息 * @param companyPolicy */ public String companyUpdateApi(CompanyPolicy companyPolicy) { String result = ""; String url = "http://snd.ideatob.com/mp/api/?apikey=snd_apis&at=11"; Company company = companyService.findById(companyPolicy.getCid()); if (company != null){ //将企业id加密作为passwd凭证 String passwd = SecureUtil.md5().digestHex(company.getId().toString()); // String passwd = "e10adc3949ba59abbe56e057f20f883e"; url += "&uid="+company.getId()+"&passwd="+ passwd; // url += "&uid=47653&passwd="+ SecureUtil.md5().digestHex(company.getId().toString()); } CloseableHttpClient httpClient = HttpClientBuilder.create().build(); HttpPost httpPost = new HttpPost(url); //请求头 httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded"); //json转application/x-www-form-url格式 String formData = ""; JSONObject jsonObj = JSON.parseObject(postEntity(companyPolicy)); for (Map.Entry entry : jsonObj.entrySet()) { formData += entry.getKey()+"="+entry.getValue()+"&"; } System.out.println(formData.substring(0,formData.length()-1)); //请求实体(json/xml适用) StringEntity entity = new StringEntity(formData.substring(0,formData.length()-1), "GBK"); entity.setContentType("application/x-www-form-urlencoded"); httpPost.setEntity(entity); try { HttpResponse httpResponse = httpClient.execute(httpPost); int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode == HttpStatus.SC_OK) { HttpEntity resEntity = httpResponse.getEntity(); result = EntityUtils.toString(resEntity); //用json将中文解码 JSONObject jo = JSONObject.parseObject(result); System.out.println(jo); if (jo.getBooleanValue("result")) { return jo.toString(); } else { return jo.getString("list"); } } } catch (Exception e) { e.printStackTrace(); } return result; } /** * 获取诊断结果 * @param companyId */ public String policyResultApi(Integer companyId) { String result = ""; String url = "http://snd.ideatob.com/mp/api/?apikey=snd_apis&at=12"; Company company = companyService.findById(companyId); if (company != null){ String passwd = SecureUtil.md5().digestHex(company.getId().toString()); // String passwd = "e10adc3949ba59abbe56e057f20f883e"; url += "&uid=" + companyId + "&passwd=" + passwd; result = httpClientUtil.sendHttpGet(url); } return result; } /** * 获取推荐项目申报 * @param companyId */ public String recommendProjectApi(Integer companyId) { String result = ""; String url = "http://snd.ideatob.com/mp/api/?apikey=snd_apis&at=13"; // Company company = companyService.findById(companyId); if (companyId != null){ String passwd = SecureUtil.md5().digestHex(companyId.toString()); // String passwd = "e10adc3949ba59abbe56e057f20f883e"; url += "&uid=" + companyId + "&passwd=" + passwd; result = httpClientUtil.sendHttpGet(url); } return result; } /** * 获取项目申报详情 * @param bno * @return */ public String projectDetailApi(Integer bno) { String result = ""; String url = "http://snd.ideatob.com/mp/api/?apikey=snd_apis&at=7"; if (bno != null){ url += "&bno="+bno; result = httpClientUtil.sendHttpGet(url); } return result; } /** * 获取单个项目自检测 * @param companyId * @param bno */ public String projectSelftestApi(Integer companyId, Integer bno) { String result = ""; String url = "http://snd.ideatob.com/mp/api/?apikey=snd_apis&at=15"; Company company = companyService.findById(companyId); if (company != null){ String passwd = SecureUtil.md5().digestHex(company.getId().toString()); // String passwd = "e10adc3949ba59abbe56e057f20f883e"; url += "&uid=" + companyId + "&passwd=" + passwd + "&bno="+bno; result = httpClientUtil.sendHttpGet(url); } return result; } /** * * @return * */ public String postEntity(CompanyPolicy companyPolicy){ //公司基本信息 Company company = companyService.findById(companyPolicy.getCid()); CompanyInfoDto infoDto = new CompanyInfoDto(); // infoDto.setLname(company.getLegal_representative()); //法人 infoDto.setLname(company.getCompany_name()); //公司称呼 infoDto.setBname(company.getCompany_name()); infoDto.setLkey(company.getCompany_name()); infoDto.setZw(company.getLr_position()); //法人职务 infoDto.setIntro("诊断"); //简介 infoDto.setFw(companyPolicy.getTechregion()); //服务领域 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { //获取企业注册时间(就没有就按当前时间) String establishment_date; if (companyPolicy.getEstablishmentdate() != null && !companyPolicy.getEstablishmentdate().equals("")){ establishment_date = companyPolicy.getEstablishmentdate(); } else { establishment_date = sdf.format(new Date()); } String date = sdf.format(sdf.parse(establishment_date)).replace("-","/"); infoDto.setBdt(date); //注册时间 } catch (ParseException e) { e.printStackTrace(); } infoDto.setUid(company.getId()); infoDto.setPassword(SecureUtil.md5().digestHex(company.getId().toString())); infoDto.setJgrd(companyPolicy.getCertified()); //已获认定 infoDto.setIsord(companyPolicy.getIsocertified()); //ISO认定 //诊断信息 CompanyPolicyDto companyPolicyDto = new CompanyPolicyDto(); // infoDto.setLname(company.getLegal_representative()); //法人 // companyPolicyDto.setLkey(company.getCompany_name()); // companyPolicyDto.setZw(company.getLr_position()); //法人职务 // companyPolicyDto.setIntro("诊断"); //简介 // companyPolicyDto.setFw(companyPolicy.getTechregion()); //服务领域 // companyPolicyDto.setUid(41561); // companyPolicyDto.setPasswd("e10adc3949ba59abbe56e057f20f883e"); // companyPolicyDto.setJgrd(companyPolicy.getCertified()); //已获认定 // companyPolicyDto.setIsord(companyPolicy.getIsocertified()); //ISO认定 // companyPolicyDto.setBname(company.getCompany_name()); // companyPolicyDto.setBdt(data); companyPolicyDto.setA2(companyPolicy.getRegisteredcapital().intValue());//注册资本 companyPolicyDto.setA3(companyPolicy.getTechregion());//技术领域 companyPolicyDto.setA5(companyPolicy.getObriskinvestment() ?1:0);//是否引入风险投资 companyPolicyDto.setA6(companyPolicy.getRegisteredtrademark());//已获商标 companyPolicyDto.setA8(companyPolicy.getObillegal() ?1:0);//是否存重大安全、质量事故、环境违法、偷漏税等行为(近2年内) companyPolicyDto.setA9(companyPolicy.getWorkerquantity());//职工总数 companyPolicyDto.setA10_1(companyPolicy.getTechnologistquantity());//科技人员 companyPolicyDto.setA10_2(companyPolicy.getMasterquantity());//硕士以上人员数 companyPolicyDto.setA12(companyPolicy.getOverseaspersonquantity());//留学归国人才数 companyPolicyDto.setA18(companyPolicy.getAppliedintellectualproperty());//知识产权 companyPolicyDto.setA19(companyPolicy.getInventionpatent());//已获得有效发明专利数 companyPolicyDto.setA20(companyPolicy.getApplingintellectualproperty());//已申请知识产权数 companyPolicyDto.setA21(companyPolicy.getTakedstandards());//主持或参加制定各类标准和技术规范数 companyPolicyDto.setA22(companyPolicy.getAchievements());//近三年科技成果转化总数 companyPolicyDto.setA23(companyPolicy.getProductevaluation());//近三年高品认定
及新产品鉴定情况 companyPolicyDto.setA24(companyPolicy.getTechnicalproject());//近三年承担的
政府科技项目数 companyPolicyDto.setA25(companyPolicy.getExaminingreport());//近三年获得的研发
活动检验检测报告数 companyPolicyDto.setA26(companyPolicy.getTechnologyreport());//近三年获得的研发
活动科技查新报告数 companyPolicyDto.setA27(companyPolicy.getFloorspace().intValue());//场地面积 companyPolicyDto.setA28(companyPolicy.getEquipmentvalue().intValue());//设备原值 companyPolicyDto.setA29(companyPolicy.getIacagreement());//产学研合作协议
签订数 companyPolicyDto.setA30(companyPolicy.getObsubsidiaryledgers() ?1:0);//是否编制研发费用辅助账 companyPolicyDto.setA31(companyPolicy.getObadditionaldeduction()?1:0);//是否办理研发费用加计扣除 companyPolicyDto.setA32(companyPolicy.getObaccountingsystem()?1:0);//是否建立了研发投入核算体系 companyPolicyDto.setA33(companyPolicy.getObrewardsystem()?1:0);//是否建立人才引进及绩效评价奖励制度 //近三年经营数据 List brdinvestmentList = companyPolicy.getCompanyBrdinvestments(); int year = com.feilong.core.date.DateUtil.getYear(new Date()); for (CompanyBrdinvestment brdinvestment : brdinvestmentList){ if (brdinvestment.getYear() == year-1){ companyPolicyDto.setA36(brdinvestment.getTotalsales().intValue());//近三年销售额2017年 companyPolicyDto.setA39(brdinvestment.getRdspending().intValue());//近三年研发费用2017年 companyPolicyDto.setA48(brdinvestment.getTotalassets().intValue());//近三年资产总额2017年 companyPolicyDto.setA51(brdinvestment.getTotalliabilities().intValue());//近三年负债总额2017年 companyPolicyDto.setA54(brdinvestment.getTotalprofits().intValue());//近三年利润总额2017年 companyPolicyDto.setA57(brdinvestment.getTotalnetprofits().intValue());//近三年净利润额2017年 companyPolicyDto.setA16_1(brdinvestment.getPsincome().intValue());//上年度高新技术
产品(服务)收入 companyPolicyDto.setA62(brdinvestment.getTotaltaxes().intValue());//上年度实际
交税总额 } if (brdinvestment.getYear() == year-2){ companyPolicyDto.setA35(brdinvestment.getTotalsales().intValue());//近三年销售额2016年 companyPolicyDto.setA38(brdinvestment.getRdspending().intValue());//近三年研发费用2016年 companyPolicyDto.setA47(brdinvestment.getTotalassets().intValue());//近三年资产总额2016年 companyPolicyDto.setA50(brdinvestment.getTotalliabilities().intValue());//近三年负债总额2016年 companyPolicyDto.setA53(brdinvestment.getTotalprofits().intValue());//近三年利润总额2016年 companyPolicyDto.setA56(brdinvestment.getTotalnetprofits().intValue());//近三年净利润额2016年 } if (brdinvestment.getYear() == year-3){ companyPolicyDto.setA34(brdinvestment.getTotalsales().intValue());//近三年销售额2015年 companyPolicyDto.setA37(brdinvestment.getRdspending().intValue());//近三年研发费用2015年 companyPolicyDto.setA46(brdinvestment.getTotalassets().intValue());//近三年资产总额2015年 companyPolicyDto.setA49(brdinvestment.getTotalliabilities().intValue());//近三年负债总额2015年 companyPolicyDto.setA52(brdinvestment.getTotalprofits().intValue());//近三年利润总额2015年 companyPolicyDto.setA55(brdinvestment.getTotalnetprofits().intValue());//近三年净利润额2015年 } } companyPolicyDto.setA45(companyPolicy.getExternalexpertsquantity());//外聘专家人数 companyPolicyDto.setA60(companyPolicy.getObmainproductrelevant()?1:0);//申请获批知识产权是否与主要产品(服务)相关 companyPolicyDto.setA61(companyPolicy.getObselfdevelopment()?1:0);//核心知识产权的获取方式是不是自主研发 companyPolicyDto.setA63(companyPolicy.getObinternationalcooperation()?1:0);//是否开展了国际科技合作交流 companyPolicyDto.setA64(companyPolicy.getObmanagementsystem()?1:0);//是否制定了企业研究开发的组织管理制度 companyPolicyDto.setA65(companyPolicy.getObincentivesystem()?2:0);//是否建立了科技成果转化的组织实施与激励奖励制度 companyPolicyDto.setA66(companyPolicy.getObopenplattform()?1:0);//是否建立开放式的创新创业平台 companyPolicyDto.setA67(companyPolicy.getObeducationplan()?1:0);//是否建立了职工教育培训计划 companyPolicyDto.setSf("江苏"); companyPolicyDto.setCity("苏州"); companyPolicyDto.setArea(company.getLocation()); //过滤首字母小写 String policyStr = JSONObject.toJSONString(companyPolicyDto, new PascalNameFilter()); JSONObject policyObj = JSONObject.parseObject(policyStr); String infoDtoStr = JSON.toJSONString(infoDto); JSONObject jsonObject = JSONObject.parseObject(infoDtoStr); //将企业信息添加到诊断信息 for (Map.Entry entry : jsonObject.entrySet()) { policyObj.put(entry.getKey(), entry.getValue()); } return policyObj.toString(); } /** * 保存评论满意度结果 * @param diagnosticReport */ public void savePolicyFeedback(DiagnosticReport diagnosticReport) { DiagnosticReport report = diagnosticReportService.findById(diagnosticReport.getId()); report.setSatisfaction_score(diagnosticReport.getSatisfaction_score()); report.setFeedback(diagnosticReport.getFeedback()); diagnosticReportService.updateSelective(report); } /** * 保存诊断返回分数 * @param flList */ public Integer savePolicyResultData(List flList, String diagnosticScore, Integer companyId) { DiagnosticReport report = new DiagnosticReport(); report.setDiagnostic_score(Double.parseDouble(diagnosticScore)); report.setDiagnostic_no("SND" + new Date().getTime()); report.setCompany_id(companyId); if (flList != null) { for (PolicyResultDto resultDto : flList) { if (resultDto.getLb().equals("主体基础")) { report.setMain_fondation(Double.parseDouble(resultDto.getCj())); } if (resultDto.getLb().equals("人才结构")) { report.setTalent_structure(Double.parseDouble(resultDto.getCj())); } if (resultDto.getLb().equals("营收投入")) { report.setRevenue_investment(Double.parseDouble(resultDto.getCj())); } if (resultDto.getLb().equals("知识产权")) { report.setIntellectual_property(Double.parseDouble(resultDto.getCj())); } if (resultDto.getLb().equals("研发管理")) { report.setDevelopment_management(Double.parseDouble(resultDto.getCj())); } } } diagnosticReportService.insertAndGetId(report); return report.getId(); } /** * 是否有权限诊断 * @param companyId * @return */ public boolean isPermission(Integer companyId) { DiagnosticUserGroup userGroup = diagnosticUserGroupService.findByCompanyId(companyId); if (userGroup != null){ return true; } return false; } }