| | |
| | | package com.aps.job.service.impl; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | |
| | | import com.alibaba.fastjson.JSONArray; |
| | |
| | | import com.aps.job.domain.ApsWorkOrderJobLog; |
| | | import com.aps.job.mapper.ApsWorkOrderJobLogMapper; |
| | | import com.aps.job.param.ApsWorkOrderJobParam; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpEntity; |
| | |
| | | import com.aps.job.mapper.ApsWorkOrderJobMapper; |
| | | import com.aps.job.domain.ApsWorkOrderJob; |
| | | import com.aps.job.service.IApsWorkOrderJobService; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | /** |
| | |
| | | * @author zhl |
| | | * @date 2025-04-17 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class ApsWorkOrderJobServiceImpl implements IApsWorkOrderJobService |
| | | { |
| | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 根据页码全量同步数据 |
| | | * */ |
| | | @Override |
| | | public void batchInsertApsWorkOrderJob(ApsWorkOrderJobParam param) { |
| | | |
| | | /*根据参数中当前页面 和 要目标页面 进行循环*/ |
| | | for (int idx=param.getPageIndex(); idx<=param.getToPageIndex(); idx++){ |
| | | param.setPageIndex(idx); |
| | | if (!batchSaveByPager(param)) { |
| | | return; |
| | | } |
| | | |
| | | } |
| | | } |
| | | /** |
| | | * 根据时间段每日更新,页面自动递增循环同步数据 |
| | | * */ |
| | | @Override |
| | | public void SyncWorkOrderByTime(){ |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
| | | LocalDateTime today = LocalDateTime.now(); |
| | | LocalDate yesterday = LocalDate.now().minusDays(1); |
| | | LocalDateTime yesterdayMidnight = yesterday.atStartOfDay(); |
| | | boolean continueFlag = true; |
| | | Integer currentPage = 1; |
| | | ApsWorkOrderJobParam param=new ApsWorkOrderJobParam(); |
| | | param.setPageIndex(currentPage); |
| | | param.setDocState(Arrays.asList(0,1,2,4)); |
| | | param.setBeginDate(yesterdayMidnight.format(formatter)); |
| | | param.setEndDate(today.format(formatter)); |
| | | param.setPageSize(1000); |
| | | while (continueFlag){ |
| | | param.setPageIndex(currentPage); |
| | | continueFlag= batchSaveByPager(param); |
| | | currentPage++; |
| | | } |
| | | } |
| | | |
| | | @Transactional |
| | | @Override |
| | | public boolean batchSaveByPager(ApsWorkOrderJobParam param) { |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | headers.setContentType(MediaType.APPLICATION_JSON); |
| | | Integer PageIndex = 1; |
| | | Integer PageSize = 500; |
| | | Boolean continueFlag = true; |
| | | /* while (continueFlag){*/ |
| | | |
| | | ApsWorkOrderJobLog log = new ApsWorkOrderJobLog(); |
| | | |
| | | /*设置当前页面*/ |
| | | ApsWorkOrderJobLog jobLog = new ApsWorkOrderJobLog(); |
| | | String requestString = JSONObject.toJSONString(param); |
| | | HttpEntity<String> request = new HttpEntity<>(requestString, headers); |
| | | ResponseEntity<String> response = restTemplate.postForEntity(getWorkOrderUrl, request, String.class); |
| | | log.setRequestData(requestString); |
| | | log.setResponseData(response.getBody()); |
| | | log.setPageNum(Long.valueOf(PageIndex)); |
| | | log.setPageCount(Long.valueOf(PageSize)); |
| | | log.setCreateTime(); |
| | | jobLogMapper.insertApsWorkOrderJobLog(log) |
| | | jobLog.setRequestData(requestString); |
| | | jobLog.setPageNum(Long.valueOf(param.getPageIndex())); |
| | | jobLog.setPageCount(Long.valueOf(param.getPageSize())); |
| | | jobLog.setCreateTime(DateUtils.getNowDate()); |
| | | jobLog.setBizType("work_order"); |
| | | jobLogMapper.insertApsWorkOrderJobLog(jobLog); |
| | | if (response.getStatusCode().is2xxSuccessful()) { |
| | | JSONObject responseBodyJson = JSONObject.parseObject(response.getBody()); |
| | | if ("200".equals(responseBodyJson.getString("status"))) { |
| | | JSONArray result = responseBodyJson.getJSONArray("data"); |
| | | if (result != null) { |
| | | List<ApsWorkOrderJob> jobs = new ArrayList<>(); |
| | | for (int i = 0; i < result.size(); i++) { |
| | | ApsWorkOrderJob order = result.getObject(i, ApsWorkOrderJob.class); |
| | | JSONObject jsonObject = result.getJSONObject(i); |
| | | order.setOrderId(jsonObject.get("ID").toString()); |
| | | order.setCreateTime(DateUtils.getNowDate()); |
| | | order.setPageIndex(i); |
| | | order.setPageNum(PageIndex); |
| | | order.setDelFlag("0"); |
| | | order.setProcessStatus("0"); |
| | | jobs.add(order); |
| | | } |
| | | apsWorkOrderJobMapper.batchInsertApsWorkOrderJob(jobs); |
| | | if (result != null&& !result.isEmpty()) { |
| | | int ct= batchInsertApsWorkOrderJob(param, result); |
| | | jobLog.setResult("ok save "+ct); |
| | | jobLogMapper.updateApsWorkOrderJobLog(jobLog); |
| | | return true; |
| | | }else { |
| | | jobLog.setResult("ok receive 0"); |
| | | jobLogMapper.updateApsWorkOrderJobLog(jobLog); |
| | | return false; |
| | | } |
| | | } else { |
| | | jobLog.setResponseData(response.getBody()); |
| | | jobLog.setResult("fail"); |
| | | jobLogMapper.updateApsWorkOrderJobLog(jobLog); |
| | | return false; |
| | | } |
| | | |
| | | } else { |
| | | jobLog.setResponseData(response.getBody()); |
| | | jobLog.setResult("fail"); |
| | | jobLogMapper.updateApsWorkOrderJobLog(jobLog); |
| | | log.info(JSONObject.toJSONString(jobLog)); |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | @Transactional |
| | | public int batchInsertApsWorkOrderJob(ApsWorkOrderJobParam param, JSONArray result) { |
| | | List<ApsWorkOrderJob> jobs = new ArrayList<>(); |
| | | List<String> orderIds = new ArrayList<>(); |
| | | for (int i = 0; i < result.size(); i++) { |
| | | ApsWorkOrderJob order = result.getObject(i, ApsWorkOrderJob.class); |
| | | JSONObject jsonObject = result.getJSONObject(i); |
| | | order.setOrderId(jsonObject.get("ID").toString()); |
| | | order.setCreateTime(DateUtils.getNowDate()); |
| | | order.setPageIndex(i); |
| | | order.setPageNum(param.getPageIndex()); |
| | | order.setDelFlag("0"); |
| | | order.setProcessStatus("0"); |
| | | jobs.add(order); |
| | | orderIds.add(order.getOrderId()); |
| | | } |
| | | apsWorkOrderJobMapper.deleteWorkOrderJobByOrderIds(orderIds); |
| | | return apsWorkOrderJobMapper.batchInsertApsWorkOrderJob(jobs); |
| | | } |
| | | |
| | | /** |
| | | * 同步零件工单信息 |
| | | * */ |
| | | @Transactional |
| | | @Override |
| | | public void syncPartOrderData() { |
| | | apsWorkOrderJobMapper.deleteAllPartPlan(); |
| | | apsWorkOrderJobMapper.batchInsertPartPlan(); |
| | | } |
| | | } |