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<ApsWorkOrderJob> 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);
|
}
|
|
|
|
@Override
|
public void batchInsertApsWorkOrderJob(ApsWorkOrderJobParam param) {
|
|
/*根据参数中当前页面 和 要目标页面 进行循环*/
|
for (int idx=param.getPageIndex(); idx<=param.getToPageIndex(); idx++){
|
param.setPageIndex(idx);
|
if (!batchSaveByPager(param)) {
|
return;
|
}
|
|
}
|
}
|
@Transactional
|
public boolean batchSaveByPager(ApsWorkOrderJobParam param) {
|
HttpHeaders headers = new HttpHeaders();
|
headers.setContentType(MediaType.APPLICATION_JSON);
|
/*设置当前页面*/
|
ApsWorkOrderJobLog log = 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.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= batchInsertApsWorkOrderJob(param, result);
|
if(ct>0){
|
log.setResult("ok save "+ct);
|
jobLogMapper.updateApsWorkOrderJobLog(log);
|
}else{
|
log.setResult("ok save 0");
|
jobLogMapper.updateApsWorkOrderJobLog(log);
|
return true;
|
}
|
}else {
|
log.setResult("ok receive 0");
|
jobLogMapper.updateApsWorkOrderJobLog(log);
|
return true;
|
}
|
} else {
|
log.setResponseData(response.getBody());
|
log.setResult("fail");
|
jobLogMapper.updateApsWorkOrderJobLog(log);
|
return true;
|
}
|
return true;
|
} else {
|
log.setResponseData(response.getBody());
|
log.setResult("fail");
|
jobLogMapper.updateApsWorkOrderJobLog(log);
|
return true;
|
}
|
}
|
@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();
|
}
|
}
|