| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420 |
- 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<CompanyPolicy>{
- @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<CompanyPolicy> 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<CompanyBrdinvestment> 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<String, Object> 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());//近三年高品认定<br/>及新产品鉴定情况
- companyPolicyDto.setA24(companyPolicy.getTechnicalproject());//近三年承担的<br/>政府科技项目数
- companyPolicyDto.setA25(companyPolicy.getExaminingreport());//近三年获得的研发<br/>活动检验检测报告数
- companyPolicyDto.setA26(companyPolicy.getTechnologyreport());//近三年获得的研发<br/>活动科技查新报告数
- companyPolicyDto.setA27(companyPolicy.getFloorspace().intValue());//场地面积
- companyPolicyDto.setA28(companyPolicy.getEquipmentvalue().intValue());//设备原值
- companyPolicyDto.setA29(companyPolicy.getIacagreement());//产学研合作协议<br/>签订数
- 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<CompanyBrdinvestment> 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());//上年度高新技术<br/>产品(服务)收入
- companyPolicyDto.setA62(brdinvestment.getTotaltaxes().intValue());//上年度实际<br/>交税总额
- }
- 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<String, Object> 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<PolicyResultDto> 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;
- }
- }
|