From 8d7fed8bbc790806ba4e2cb1907984a6a9be4a86 Mon Sep 17 00:00:00 2001 From: "castle.zang" Date: Tue, 4 Mar 2025 14:24:58 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E7=A6=8F=E7=89=B9=E6=8A=93=E5=8F=96?= =?UTF-8?q?=E7=BD=91=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pcn/api/busi/ford/IFordFetchWebService.java | 22 +++++ .../busi/ford/MesFordFetchWebController.java | 94 ++++++++++++++++++++++ .../ford/MesFordFetchWebServiceImpl.java | 91 +++++++++++++++++++++ 3 files changed, 207 insertions(+) create mode 100644 modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/ford/IFordFetchWebService.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/ford/MesFordFetchWebController.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/ford/MesFordFetchWebServiceImpl.java diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/ford/IFordFetchWebService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/ford/IFordFetchWebService.java new file mode 100644 index 0000000..73e3dcb --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/ford/IFordFetchWebService.java @@ -0,0 +1,22 @@ +package cn.estsh.i3plus.ext.mes.pcn.api.busi.ford; + +import cn.estsh.i3plus.pojo.mes.bean.ford.MesFordFetchParameter; + +import java.util.List; + +public interface IFordFetchWebService { + + void insertParams(MesFordFetchParameter parameter); + + + void updateParams(MesFordFetchParameter parameter); + + + void deleteParams(Long id,String UserName); + + MesFordFetchParameter queryParams(Long id); + + List queryParams(String organizeCode); + + void doFetchData(Long id,String organizeCode); +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/ford/MesFordFetchWebController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/ford/MesFordFetchWebController.java new file mode 100644 index 0000000..08f1199 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/ford/MesFordFetchWebController.java @@ -0,0 +1,94 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.busi.ford; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.ford.IFordFetchWebService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.pojo.mes.bean.ford.MesFordFetchParameter; +import cn.estsh.impp.framework.boot.util.ResultBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@Api(tags = "福特web抓单") +@RequestMapping(MesCommonConstant.MES_YANFEN + "/fetch-web") +@Slf4j +public class MesFordFetchWebController { + + @Autowired + private IFordFetchWebService fordFetchWebService; + + @PostMapping(value = "/param/save") + @ApiOperation(value = "保存抓单参数") + public ResultBean saveParams(@RequestBody MesFordFetchParameter params) { + try { + fordFetchWebService.insertParams(params); + } catch (Exception e) { + return ResultBean.fail(e.getMessage()); + } + return ResultBean.success("保存成功!"); + } + + @PostMapping(value = "/param/update") + @ApiOperation(value = "更新抓单参数") + public ResultBean updateParams(@RequestBody MesFordFetchParameter params) { + try { + fordFetchWebService.updateParams(params); + } catch (Exception e) { + return ResultBean.fail(e.getMessage()); + } + return ResultBean.success("更新成功!"); + } + + @GetMapping(value = "/param/del/{id}/{userName}") + @ApiOperation(value = "删除抓单参数") + public ResultBean updateParams(@PathVariable Long id, @PathVariable String userName) { + try { + fordFetchWebService.deleteParams(id, userName); + } catch (Exception e) { + return ResultBean.fail(e.getMessage()); + } + return ResultBean.success("删除成功!"); + } + + @GetMapping(value = "/param/query/{id}") + @ApiOperation(value = "查询抓单参数") + public ResultBean queryParams(@PathVariable Long id) { + MesFordFetchParameter parameter; + try { + parameter = fordFetchWebService.queryParams(id); + } catch (Exception e) { + return ResultBean.fail(e.getMessage()); + } + return ResultBean.success("查询成功!").setResultObject(parameter); + } + + + @GetMapping(value = "/param/query/list/{organizeCode}") + @ApiOperation(value = "查询抓单参数") + public ResultBean queryParamList(@PathVariable String organizeCode) { + List mesFordFetchParameters; + try { + mesFordFetchParameters = fordFetchWebService.queryParams(organizeCode); + } catch (Exception e) { + return ResultBean.fail(e.getMessage()); + } + return ResultBean.success("查询成功!").setResultList(mesFordFetchParameters); + } + + @GetMapping(value = "/param/data/{id}/{organizeCode}") + @ApiOperation(value = "定时抓单") + public ResultBean queryData(@PathVariable Long id,@PathVariable String organizeCode) { + + try { + } catch (Exception e) { + return ResultBean.fail(e.getMessage()); + } + return null; + } + + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/ford/MesFordFetchWebServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/ford/MesFordFetchWebServiceImpl.java new file mode 100644 index 0000000..fd271e4 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/ford/MesFordFetchWebServiceImpl.java @@ -0,0 +1,91 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.ford; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.ford.IFordFetchWebService; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.ford.MesFordFetchParameter; +import cn.estsh.i3plus.pojo.mes.repository.ford.MesFordFetchParameterRepository; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.net.HttpCookie; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +@Service +@Slf4j +public class MesFordFetchWebServiceImpl implements IFordFetchWebService { + @Autowired + private MesFordFetchParameterRepository paramRao; + + @Override + public void insertParams(MesFordFetchParameter parameter) { + ConvertBean.saveOrUpdate(parameter, parameter.getCreateUser()); + paramRao.insert(parameter); + + } + + @Override + public void updateParams(MesFordFetchParameter parameter) { + ConvertBean.saveOrUpdate(parameter, parameter.getCreateUser()); + paramRao.update(parameter); + } + + @Override + public void deleteParams(Long id,String userName) { + paramRao.deleteWeaklyById(id,userName); + } + + @Override + public MesFordFetchParameter queryParams(Long id) { + Optional params = paramRao.findById(id); + return params.orElseGet(MesFordFetchParameter::new); + + } + + @Override + public List queryParams(String organizeCode) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + return paramRao.findByHqlWhere(ddlPackBean); + } + + @Override + public void doFetchData(Long id, String organizeCode) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(id,"id",ddlPackBean); + List list = paramRao.findByHqlWhere(ddlPackBean); + if (list.isEmpty()) { + throw ImppExceptionBuilder.newInstance().setErrorDetail("未查询出当前配置,请检查数据!").build(); + } + MesFordFetchParameter parameter = list.get(0); + //尝试登录 + Map paramMap = new HashMap<>(); + paramMap.put("username", parameter.getUid()); + paramMap.put("passwork", parameter.getPwd()); + Map header = new HashMap<>(); + header.put("content-type","application/x-www-form-urlencoded"); + HttpResponse loginResponse = HttpRequest.post(parameter.getLoginUrl()).form(paramMap).execute(); + if (loginResponse.getStatus() != 200){ + log.info("登录失败,需要重新登录!返回内容为:{}",loginResponse.body()); + } + List cookies = loginResponse.getCookies(); + //拼接请求参数 + //time=0.9656002469020775&maxpage=5&trigger=B100VR12&st=2023-05-12%2005:00:00&et=2023-05-12%2023:59:59&catacode=0&itemcode=0 + Map map = new HashMap<>(); + map.put("maxpage",parameter.getPageSize() != null ? parameter.getPageSize().toString() : "1"); + map.put("trigger",parameter.getInfoPointCode()); + map.put("st",parameter.getStartDateTime()); + map.put("et",parameter.getEndDateTime()); + map.put("catacode","0"); + map.put("itemcode","0"); + HttpResponse response = HttpRequest.get(parameter.getFetchUrl()).cookie(cookies).timeout(60000).form(map).execute(); + log.info("查询出来的内容为:{}",response.body()); + } +} From 0ed0d4e43fd5df62e0d6d03b85feed4603508987 Mon Sep 17 00:00:00 2001 From: "castle.zang" Date: Wed, 5 Mar 2025 16:15:04 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E7=A6=8F=E7=89=B9=E6=8A=93=E5=8F=96?= =?UTF-8?q?=E7=BD=91=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pcn/api/busi/ford/IFordFetchWebService.java | 3 +- modules/i3plus-ext-mes-pcn-apiservice/pom.xml | 4 ++ .../busi/ford/MesFordFetchWebController.java | 7 ++- .../ford/MesFordFetchWebServiceImpl.java | 68 ++++++++++++++++++---- pom.xml | 5 ++ 5 files changed, 73 insertions(+), 14 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/ford/IFordFetchWebService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/ford/IFordFetchWebService.java index 73e3dcb..862cbff 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/ford/IFordFetchWebService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/ford/IFordFetchWebService.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.pcn.api.busi.ford; import cn.estsh.i3plus.pojo.mes.bean.ford.MesFordFetchParameter; +import cn.estsh.i3plus.pojo.mes.bean.ford.MesFordJsaSortInfoWithFetchWeb; import java.util.List; @@ -18,5 +19,5 @@ public interface IFordFetchWebService { List queryParams(String organizeCode); - void doFetchData(Long id,String organizeCode); + List doFetchData(Long id, String organizeCode); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/pom.xml b/modules/i3plus-ext-mes-pcn-apiservice/pom.xml index b7eacef..94b8dff 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/pom.xml +++ b/modules/i3plus-ext-mes-pcn-apiservice/pom.xml @@ -14,6 +14,10 @@ jar + + org.jsoup + jsoup + org.apache.cxf diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/ford/MesFordFetchWebController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/ford/MesFordFetchWebController.java index 08f1199..fcacc59 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/ford/MesFordFetchWebController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/ford/MesFordFetchWebController.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.busi.ford; import cn.estsh.i3plus.ext.mes.pcn.api.busi.ford.IFordFetchWebService; import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.pojo.mes.bean.ford.MesFordFetchParameter; +import cn.estsh.i3plus.pojo.mes.bean.ford.MesFordJsaSortInfoWithFetchWeb; import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -10,6 +11,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; @RestController @@ -82,12 +84,13 @@ public class MesFordFetchWebController { @GetMapping(value = "/param/data/{id}/{organizeCode}") @ApiOperation(value = "定时抓单") public ResultBean queryData(@PathVariable Long id,@PathVariable String organizeCode) { - + List mesFordJsaSortInfoWithFetchWebs; try { + mesFordJsaSortInfoWithFetchWebs = fordFetchWebService.doFetchData(id, organizeCode); } catch (Exception e) { return ResultBean.fail(e.getMessage()); } - return null; + return ResultBean.success("查询成功").setResultList(mesFordJsaSortInfoWithFetchWebs); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/ford/MesFordFetchWebServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/ford/MesFordFetchWebServiceImpl.java index fd271e4..1f30dda 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/ford/MesFordFetchWebServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/ford/MesFordFetchWebServiceImpl.java @@ -5,19 +5,22 @@ import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.ford.MesFordFetchParameter; +import cn.estsh.i3plus.pojo.mes.bean.ford.MesFordJsaSortInfoWithFetchWeb; import cn.estsh.i3plus.pojo.mes.repository.ford.MesFordFetchParameterRepository; +import cn.estsh.i3plus.pojo.mes.repository.ford.MesFordJsaSortInfoWithFetchWebRepository; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import lombok.extern.slf4j.Slf4j; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.net.HttpCookie; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; +import java.util.*; @Service @Slf4j @@ -25,6 +28,9 @@ public class MesFordFetchWebServiceImpl implements IFordFetchWebService { @Autowired private MesFordFetchParameterRepository paramRao; + @Autowired + private MesFordJsaSortInfoWithFetchWebRepository fetchWebRao; + @Override public void insertParams(MesFordFetchParameter parameter) { ConvertBean.saveOrUpdate(parameter, parameter.getCreateUser()); @@ -57,7 +63,8 @@ public class MesFordFetchWebServiceImpl implements IFordFetchWebService { } @Override - public void doFetchData(Long id, String organizeCode) { + public List doFetchData(Long id, String organizeCode) { + List infoList = new ArrayList<>(); DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getNumEqualPack(id,"id",ddlPackBean); List list = paramRao.findByHqlWhere(ddlPackBean); @@ -68,12 +75,15 @@ public class MesFordFetchWebServiceImpl implements IFordFetchWebService { //尝试登录 Map paramMap = new HashMap<>(); paramMap.put("username", parameter.getUid()); - paramMap.put("passwork", parameter.getPwd()); - Map header = new HashMap<>(); - header.put("content-type","application/x-www-form-urlencoded"); - HttpResponse loginResponse = HttpRequest.post(parameter.getLoginUrl()).form(paramMap).execute(); + paramMap.put("password", parameter.getPwd()); + paramMap.put("t", String.valueOf(System.currentTimeMillis())); + String body = "username="+parameter.getUid()+"&password="+parameter.getPwd()+"&t="+ System.currentTimeMillis(); + String loginUrl = parameter.getLoginUrl(); + HttpResponse loginResponse = HttpRequest.post(loginUrl).body(body) + .header("Content-Type","application/x-www-form-urlencoded").timeout(60000).execute(); + log.info("doFetchData-打印的返回值是:{}",loginResponse.body()); if (loginResponse.getStatus() != 200){ - log.info("登录失败,需要重新登录!返回内容为:{}",loginResponse.body()); + log.info("doFetchData-登录失败,需要重新登录!返回内容为:{}",loginResponse.body()); } List cookies = loginResponse.getCookies(); //拼接请求参数 @@ -86,6 +96,42 @@ public class MesFordFetchWebServiceImpl implements IFordFetchWebService { map.put("catacode","0"); map.put("itemcode","0"); HttpResponse response = HttpRequest.get(parameter.getFetchUrl()).cookie(cookies).timeout(60000).form(map).execute(); - log.info("查询出来的内容为:{}",response.body()); + log.info("doFetchData-查询出来的内容为:{}",response.body()); + Document doc = Jsoup.parse(response.body()); + Elements trList = doc.select("tr"); + for (Element tr : trList) { + Elements tdList = tr.select("td"); + MesFordJsaSortInfoWithFetchWeb webInfo = new MesFordJsaSortInfoWithFetchWeb(); + webInfo.setSeq(Long.parseLong(tdList.get(0).text())); + webInfo.setFetchDate(tdList.get(1).text()); + webInfo.setFetchTime(tdList.get(2).text()); + webInfo.setVinCode(tdList.get(3).text()); + webInfo.setPartNo(tdList.get(4).text()); + webInfo.setPartName(tdList.get(5).text()); + webInfo.setColorCode(tdList.get(6).text()); + webInfo.setInfo0008(tdList.get(7).text()); + webInfo.setSeqContext(tdList.get(8).text()); + webInfo.setRemark(tdList.get(9).text()); + webInfo.setInfoPointDesc(tdList.get(10).text()); + webInfo.setFetchType(1); //抓取类型 + webInfo.setDataStatus(200); + webInfo.setOrganizeCode(organizeCode); + webInfo.setInfoPointCode(parameter.getInfoPointCode()); + webInfo.setCustOrganizeCode(parameter.getCustOrganizeCode()); + ConvertBean.saveOrUpdate(webInfo,"doFetchData"); + //校验是否已经查询过 + DdlPackBean webInfoPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(webInfo.getSeq(),"seq",webInfoPackBean); + DdlPreparedPack.getNumEqualPack(webInfo.getFetchDate(),"fetchDate",webInfoPackBean); + DdlPreparedPack.getNumEqualPack(webInfo.getFetchTime(),"fetchTime",webInfoPackBean); + int count = fetchWebRao.findByHqlWhereCount(webInfoPackBean); + if (count > 0){ + continue; + } + fetchWebRao.insert(webInfo); + infoList.add(webInfo); + } + + return infoList; } } diff --git a/pom.xml b/pom.xml index 77012b8..0517f83 100644 --- a/pom.xml +++ b/pom.xml @@ -41,6 +41,11 @@ + + org.jsoup + jsoup + 1.11.3 + org.apache.cxf From 37843777b5c40631ba1a57722a59e0cd5a7f6522 Mon Sep 17 00:00:00 2001 From: "castle.zang" Date: Thu, 6 Mar 2025 11:01:36 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E7=A6=8F=E7=89=B9=E6=8A=93=E5=8F=96?= =?UTF-8?q?=E7=BD=91=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ford/MesFordFetchWebServiceImpl.java | 67 +++++++++++----------- 1 file changed, 35 insertions(+), 32 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/ford/MesFordFetchWebServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/ford/MesFordFetchWebServiceImpl.java index 1f30dda..8d81178 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/ford/MesFordFetchWebServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/ford/MesFordFetchWebServiceImpl.java @@ -12,9 +12,9 @@ import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -99,38 +99,41 @@ public class MesFordFetchWebServiceImpl implements IFordFetchWebService { log.info("doFetchData-查询出来的内容为:{}",response.body()); Document doc = Jsoup.parse(response.body()); Elements trList = doc.select("tr"); - for (Element tr : trList) { - Elements tdList = tr.select("td"); - MesFordJsaSortInfoWithFetchWeb webInfo = new MesFordJsaSortInfoWithFetchWeb(); - webInfo.setSeq(Long.parseLong(tdList.get(0).text())); - webInfo.setFetchDate(tdList.get(1).text()); - webInfo.setFetchTime(tdList.get(2).text()); - webInfo.setVinCode(tdList.get(3).text()); - webInfo.setPartNo(tdList.get(4).text()); - webInfo.setPartName(tdList.get(5).text()); - webInfo.setColorCode(tdList.get(6).text()); - webInfo.setInfo0008(tdList.get(7).text()); - webInfo.setSeqContext(tdList.get(8).text()); - webInfo.setRemark(tdList.get(9).text()); - webInfo.setInfoPointDesc(tdList.get(10).text()); - webInfo.setFetchType(1); //抓取类型 - webInfo.setDataStatus(200); - webInfo.setOrganizeCode(organizeCode); - webInfo.setInfoPointCode(parameter.getInfoPointCode()); - webInfo.setCustOrganizeCode(parameter.getCustOrganizeCode()); - ConvertBean.saveOrUpdate(webInfo,"doFetchData"); - //校验是否已经查询过 - DdlPackBean webInfoPackBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getNumEqualPack(webInfo.getSeq(),"seq",webInfoPackBean); - DdlPreparedPack.getNumEqualPack(webInfo.getFetchDate(),"fetchDate",webInfoPackBean); - DdlPreparedPack.getNumEqualPack(webInfo.getFetchTime(),"fetchTime",webInfoPackBean); - int count = fetchWebRao.findByHqlWhereCount(webInfoPackBean); - if (count > 0){ - continue; + for (int i = 1; i < trList.size(); i++) { + Elements tdList = trList.get(i).select("td"); + MesFordJsaSortInfoWithFetchWeb webInfo = new MesFordJsaSortInfoWithFetchWeb(); + if (tdList.get(0).text().equals("无数据") || StringUtils.isBlank(tdList.get(0).text())){ + break; + } + webInfo.setSeq(Long.parseLong(tdList.get(0).text())); + webInfo.setFetchDate(tdList.get(1).text()); + webInfo.setFetchTime(tdList.get(2).text()); + webInfo.setVinCode(tdList.get(3).text()); + webInfo.setPartNo(tdList.get(4).text()); + webInfo.setPartName(tdList.get(5).text()); + webInfo.setColorCode(tdList.get(6).text()); + webInfo.setInfo0008(tdList.get(7).text()); + webInfo.setSeqContext(tdList.get(8).text()); + webInfo.setRemark(tdList.get(9).text()); + webInfo.setInfoPointDesc(tdList.get(10).text()); + webInfo.setFetchType(1); //抓取类型 + webInfo.setDataStatus(200); + webInfo.setOrganizeCode(organizeCode); + webInfo.setInfoPointCode(parameter.getInfoPointCode()); + webInfo.setCustOrganizeCode(parameter.getCustOrganizeCode()); + ConvertBean.saveOrUpdate(webInfo,"doFetchData"); + //校验是否已经查询过 + DdlPackBean webInfoPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(webInfo.getSeq(),"seq",webInfoPackBean); + DdlPreparedPack.getStringEqualPack(webInfo.getFetchDate(),"fetchDate",webInfoPackBean); + DdlPreparedPack.getStringEqualPack(webInfo.getFetchTime(),"fetchTime",webInfoPackBean); + int count = fetchWebRao.findByHqlWhereCount(webInfoPackBean); + if (count > 0){ + continue; + } + fetchWebRao.insert(webInfo); + infoList.add(webInfo); } - fetchWebRao.insert(webInfo); - infoList.add(webInfo); - } return infoList; } From d42f88d77a5586307d7adcdc7b2dd3adf9d2a1b9 Mon Sep 17 00:00:00 2001 From: "castle.zang" Date: Mon, 10 Mar 2025 14:26:32 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E7=A6=8F=E7=89=B9=E6=8A=93=E5=8F=96?= =?UTF-8?q?=E7=BD=91=E9=A1=B5=E5=A2=9E=E5=8A=A0=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ford/MesFordFetchWebServiceImpl.java | 52 +++++++++++++++++++--- 1 file changed, 47 insertions(+), 5 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/ford/MesFordFetchWebServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/ford/MesFordFetchWebServiceImpl.java index 8d81178..ef45d9c 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/ford/MesFordFetchWebServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/ford/MesFordFetchWebServiceImpl.java @@ -95,16 +95,23 @@ public class MesFordFetchWebServiceImpl implements IFordFetchWebService { map.put("et",parameter.getEndDateTime()); map.put("catacode","0"); map.put("itemcode","0"); - HttpResponse response = HttpRequest.get(parameter.getFetchUrl()).cookie(cookies).timeout(60000).form(map).execute(); - log.info("doFetchData-查询出来的内容为:{}",response.body()); - Document doc = Jsoup.parse(response.body()); - Elements trList = doc.select("tr"); + //校验最后一条数据是否已经存在数据库中, 特殊逻辑page如果为空,则只查最后一页的内容 + boolean result = checkLastPage(parameter, cookies, organizeCode); + if (!result){ + //分页查询 + map.put("page",parameter.getCurrentPageIndex()); + HttpResponse response = HttpRequest.get(parameter.getFetchUrl()).cookie(cookies).timeout(60000).form(map).execute(); + log.info("doFetchData-查询出来的内容为:{}",response.body()); + Document doc = Jsoup.parse(response.body()); + int tempCount = 0; + Elements trList = doc.select("tr"); for (int i = 1; i < trList.size(); i++) { Elements tdList = trList.get(i).select("td"); MesFordJsaSortInfoWithFetchWeb webInfo = new MesFordJsaSortInfoWithFetchWeb(); if (tdList.get(0).text().equals("无数据") || StringUtils.isBlank(tdList.get(0).text())){ break; } + tempCount++; webInfo.setSeq(Long.parseLong(tdList.get(0).text())); webInfo.setFetchDate(tdList.get(1).text()); webInfo.setFetchTime(tdList.get(2).text()); @@ -134,7 +141,42 @@ public class MesFordFetchWebServiceImpl implements IFordFetchWebService { fetchWebRao.insert(webInfo); infoList.add(webInfo); } + if (tempCount == parameter.getPageSize()){ + parameter.setCurrentPageIndex(parameter.getCurrentPageIndex()+1); + ConvertBean.saveOrUpdate(parameter,"doFetchData-index"); + paramRao.update(parameter); + } + } + return infoList; + } + + private boolean checkLastPage(MesFordFetchParameter parameter, List cookies,String organizeCode) { + Map map = new HashMap<>(); + map.put("maxpage",parameter.getPageSize() != null ? parameter.getPageSize().toString() : "1"); + map.put("trigger",parameter.getInfoPointCode()); + map.put("st",parameter.getStartDateTime()); + map.put("et",parameter.getEndDateTime()); + map.put("catacode","0"); + map.put("itemcode","0"); + //校验最后一条数据是否已经存在数据库中, 特殊逻辑page如果为空,则只查最后一页的内容 + HttpResponse response = HttpRequest.get(parameter.getFetchUrl()).cookie(cookies).timeout(60000).form(map).execute(); + log.info("doFetchData-查询出来的内容为:{}",response.body()); + Document doc = Jsoup.parse(response.body()); + Elements trList = doc.select("tr"); + Elements tdList = trList.get(trList.size()-1).select("td"); + if (!tdList.isEmpty()){ + if (tdList.get(0).text().equals("无数据") || StringUtils.isBlank(tdList.get(0).text())) { + return false; + } + //校验是否已经查询过 + DdlPackBean webInfoPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(Long.parseLong(tdList.get(0).text()),"seq",webInfoPackBean); + DdlPreparedPack.getStringEqualPack(tdList.get(1).text(),"fetchDate",webInfoPackBean); + DdlPreparedPack.getStringEqualPack(tdList.get(2).text(),"fetchTime",webInfoPackBean); + int count = fetchWebRao.findByHqlWhereCount(webInfoPackBean); + return count > 0; + } + return false; - return infoList; } }