huangjiayang
2025-04-21 2bdb234b82f18e09a1ab8fd9bd28b44fed9084be
aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderJobServiceImpl.java
@@ -1,6 +1,10 @@
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;
@@ -9,6 +13,7 @@
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;
@@ -19,6 +24,7 @@
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;
/**
@@ -27,6 +33,7 @@
 * @author zhl
 * @date 2025-04-17
 */
@Slf4j
@Service
public class ApsWorkOrderJobServiceImpl implements IApsWorkOrderJobService 
{
@@ -120,47 +127,118 @@
    }
    /**
     * 根据页码全量同步数据
     * */
    @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();
    }
}