package com.aps.job.service.impl; import java.util.ArrayList; import java.util.List; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.aps.common.core.utils.DateUtils; import com.aps.job.domain.ApsWorkOrderJobLog; import com.aps.job.mapper.ApsWorkOrderJobLogMapper; import com.aps.job.param.ApsWorkOrderJobParam; import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; 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; /** * 工单同步Service业务层处理 * * @author zhl * @date 2025-04-17 */ @Service public class ApsWorkOrderJobServiceImpl implements IApsWorkOrderJobService { @Autowired private ApsWorkOrderJobMapper apsWorkOrderJobMapper; /** * 获取订单接口 * */ @Value("${u9.workOrderJobUrl}") private String getWorkOrderUrl; @Autowired private RestTemplate restTemplate; @Autowired private ApsWorkOrderJobLogMapper jobLogMapper; /** * 查询工单同步 * * @param id 工单同步主键 * @return 工单同步 */ @Override public ApsWorkOrderJob selectApsWorkOrderJobById(Long id) { return apsWorkOrderJobMapper.selectApsWorkOrderJobById(id); } /** * 查询工单同步列表 * * @param apsWorkOrderJob 工单同步 * @return 工单同步 */ @Override public List selectApsWorkOrderJobList(ApsWorkOrderJob apsWorkOrderJob) { return apsWorkOrderJobMapper.selectApsWorkOrderJobList(apsWorkOrderJob); } /** * 新增工单同步 * * @param apsWorkOrderJob 工单同步 * @return 结果 */ @Override public int insertApsWorkOrderJob(ApsWorkOrderJob apsWorkOrderJob) { apsWorkOrderJob.setCreateTime(DateUtils.getNowDate()); return apsWorkOrderJobMapper.insertApsWorkOrderJob(apsWorkOrderJob); } /** * 修改工单同步 * * @param apsWorkOrderJob 工单同步 * @return 结果 */ @Override public int updateApsWorkOrderJob(ApsWorkOrderJob apsWorkOrderJob) { apsWorkOrderJob.setUpdateTime(DateUtils.getNowDate()); return apsWorkOrderJobMapper.updateApsWorkOrderJob(apsWorkOrderJob); } /** * 批量删除工单同步 * * @param ids 需要删除的工单同步主键 * @return 结果 */ @Override public int deleteApsWorkOrderJobByIds(Long[] ids) { return apsWorkOrderJobMapper.deleteApsWorkOrderJobByIds(ids); } /** * 删除工单同步信息 * * @param id 工单同步主键 * @return 结果 */ @Override public int deleteApsWorkOrderJobById(Long id) { return apsWorkOrderJobMapper.deleteApsWorkOrderJobById(id); } @Transactional @Override public void batchInsertApsWorkOrderJob(ApsWorkOrderJobParam param) { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); /*根据参数中当前页面 和 要目标页面 进行循环*/ for (int idx=param.getPageIndex(); idx<=param.getToPageIndex(); idx++){ /*设置当前页面*/ param.setPageIndex(idx); ApsWorkOrderJobLog log = new ApsWorkOrderJobLog(); String requestString = JSONObject.toJSONString(param); HttpEntity request = new HttpEntity<>(requestString, headers); ResponseEntity response = restTemplate.postForEntity(getWorkOrderUrl, request, String.class); log.setRequestData(requestString); log.setPageNum(Long.valueOf(param.getPageIndex())); log.setPageCount(Long.valueOf(param.getPageSize())); log.setCreateTime(DateUtils.getNowDate()); log.setBizType("work_order"); jobLogMapper.insertApsWorkOrderJobLog(log); if (response.getStatusCode().is2xxSuccessful()) { JSONObject responseBodyJson = JSONObject.parseObject(response.getBody()); if ("200".equals(responseBodyJson.getString("status"))) { JSONArray result = responseBodyJson.getJSONArray("data"); if (result != null&& !result.isEmpty()) { int ct= batchSave(param, result); if(ct>0){ log.setResult("ok save "+ct); jobLogMapper.updateApsWorkOrderJobLog(log); return; }else{ log.setResult("ok save 0"); jobLogMapper.updateApsWorkOrderJobLog(log); return; } }else { log.setResult("ok receive 0"); jobLogMapper.updateApsWorkOrderJobLog(log); return; } } else { log.setResponseData(response.getBody()); log.setResult("fail"); jobLogMapper.updateApsWorkOrderJobLog(log); return; } } else { log.setResponseData(response.getBody()); log.setResult("fail"); jobLogMapper.updateApsWorkOrderJobLog(log); return; } } } @Transactional public int batchSave(ApsWorkOrderJobParam param, JSONArray result) { List 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(param.getPageIndex()); order.setDelFlag("0"); order.setProcessStatus("0"); jobs.add(order); } return apsWorkOrderJobMapper.batchInsertApsWorkOrderJob(jobs); } }