package com.aps.job.service.impl;
|
|
import cn.hutool.core.util.IdUtil;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.aps.common.core.constant.SecurityConstants;
|
import com.aps.common.core.utils.DateUtils;
|
import com.aps.common.core.utils.StringUtils;
|
import com.aps.common.core.utils.uuid.IdUtils;
|
import com.aps.job.domain.ApsStandardProcessRouteHeaderJob;
|
import com.aps.job.domain.ApsStandardProcessRouteLineJob;
|
import com.aps.job.domain.ApsWorkOrderJobLog;
|
import com.aps.job.mapper.ApsStandardProcessRouteHeaderJobMapper;
|
import com.aps.job.mapper.ApsStandardProcessRouteLineJobMapper;
|
import com.aps.job.mapper.ApsWorkOrderJobLogMapper;
|
import com.aps.job.service.IApsStandardProcessRouteHeaderJobService;
|
import com.aps.system.api.RemoteCoreService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
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 org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.client.RestTemplate;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 标准工艺路线HeaderService业务层处理
|
*
|
* @author hjy
|
* @date 2025-05-09
|
*/
|
@Service
|
public class ApsStandardProcessRouteHeaderJobServiceImpl implements IApsStandardProcessRouteHeaderJobService
|
{
|
@Autowired
|
private ApsStandardProcessRouteHeaderJobMapper apsStandardProcessRouteHeaderJobMapper;
|
|
@Autowired
|
private ApsStandardProcessRouteLineJobMapper apsStandardProcessRouteLineJobMapper;
|
|
@Value("${u9.processRouteUrl}")
|
private String getProcessRouteUrl;
|
|
@Autowired
|
private ApsWorkOrderJobLogMapper jobLogMapper;
|
|
@Autowired
|
private RestTemplate restTemplate;
|
|
@Autowired
|
private RemoteCoreService remoteCoreService;
|
|
/**
|
* 查询标准工艺路线Header
|
*
|
* @param id 标准工艺路线Header主键
|
* @return 标准工艺路线Header
|
*/
|
@Override
|
public ApsStandardProcessRouteHeaderJob selectApsStandardProcessRouteHeaderJobById(Long id)
|
{
|
return apsStandardProcessRouteHeaderJobMapper.selectApsStandardProcessRouteHeaderJobById(id);
|
}
|
|
/**
|
* 查询标准工艺路线Header列表
|
*
|
* @param apsStandardProcessRouteHeaderJob 标准工艺路线Header
|
* @return 标准工艺路线Header
|
*/
|
@Override
|
public List<ApsStandardProcessRouteHeaderJob> selectApsStandardProcessRouteHeaderJobList(ApsStandardProcessRouteHeaderJob apsStandardProcessRouteHeaderJob)
|
{
|
return apsStandardProcessRouteHeaderJobMapper.selectApsStandardProcessRouteHeaderJobList(apsStandardProcessRouteHeaderJob);
|
}
|
|
/**
|
* 新增标准工艺路线Header
|
*
|
* @param apsStandardProcessRouteHeaderJob 标准工艺路线Header
|
* @return 结果
|
*/
|
@Override
|
public int insertApsStandardProcessRouteHeaderJob(ApsStandardProcessRouteHeaderJob apsStandardProcessRouteHeaderJob)
|
{
|
apsStandardProcessRouteHeaderJob.setCreateTime(DateUtils.getNowDate());
|
return apsStandardProcessRouteHeaderJobMapper.insertApsStandardProcessRouteHeaderJob(apsStandardProcessRouteHeaderJob);
|
}
|
|
/**
|
* 修改标准工艺路线Header
|
*
|
* @param apsStandardProcessRouteHeaderJob 标准工艺路线Header
|
* @return 结果
|
*/
|
@Override
|
public int updateApsStandardProcessRouteHeaderJob(ApsStandardProcessRouteHeaderJob apsStandardProcessRouteHeaderJob)
|
{
|
apsStandardProcessRouteHeaderJob.setUpdateTime(DateUtils.getNowDate());
|
return apsStandardProcessRouteHeaderJobMapper.updateApsStandardProcessRouteHeaderJob(apsStandardProcessRouteHeaderJob);
|
}
|
|
/**
|
* 批量删除标准工艺路线Header
|
*
|
* @param ids 需要删除的标准工艺路线Header主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteApsStandardProcessRouteHeaderJobByIds(Long[] ids)
|
{
|
return apsStandardProcessRouteHeaderJobMapper.deleteApsStandardProcessRouteHeaderJobByIds(ids);
|
}
|
|
/**
|
* 删除标准工艺路线Header信息
|
*
|
* @param id 标准工艺路线Header主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteApsStandardProcessRouteHeaderJobById(Long id)
|
{
|
return apsStandardProcessRouteHeaderJobMapper.deleteApsStandardProcessRouteHeaderJobById(id);
|
}
|
|
@Override
|
public boolean syncProcessRouteData(Integer pageIndex, Integer pageSize, String orgCode, String itemCodeList) {
|
JSONObject requestBody = new JSONObject();
|
ResponseEntity<String> response = null;
|
ApsWorkOrderJobLog jobLog = new ApsWorkOrderJobLog();
|
String batchNum = "";
|
try {
|
// 设置请求头
|
HttpHeaders headers = new HttpHeaders();
|
headers.setContentType(MediaType.APPLICATION_JSON);
|
// 设置请求体
|
while (true) {
|
batchNum = IdUtils.fastSimpleUUID();
|
jobLog = new ApsWorkOrderJobLog();
|
requestBody = new JSONObject();
|
requestBody.put("PageIndex", pageIndex);
|
requestBody.put("PageSize", pageSize);
|
if(!StringUtils.isEmpty(orgCode)){
|
requestBody.put("OrgCode", orgCode);
|
}
|
// 创建HttpEntity对象
|
HttpEntity<String> request = new HttpEntity<>(requestBody.toJSONString(), headers);
|
// 发送POST请求
|
response = restTemplate.postForEntity(getProcessRouteUrl, request, String.class);
|
JSONObject responseBodyJson = JSONObject.parseObject(response.getBody());
|
if (response.getStatusCode().is2xxSuccessful() && "200".equals(responseBodyJson.getString("status"))) {
|
JSONArray jsonArray = responseBodyJson.getJSONArray("data");
|
if (!jsonArray.isEmpty()) {
|
List<ApsStandardProcessRouteHeaderJob> headerList = new ArrayList<>();
|
List<ApsStandardProcessRouteLineJob> lineList = new ArrayList<>();
|
for (Object o : jsonArray) {
|
//o对象中的属性赋值给ApsBomHeaderJob对象
|
JSONObject routeHeader = (JSONObject) o;
|
JSONArray routeLines = routeHeader.getJSONArray("RoutingLines");
|
ApsStandardProcessRouteHeaderJob insertRouteHeader = new ApsStandardProcessRouteHeaderJob();
|
insertRouteHeader.setId(IdUtil.getSnowflakeNextId());
|
insertRouteHeader.setRouteId(routeHeader.getString("HID"));
|
insertRouteHeader.setItemCode(routeHeader.getString("HItemCode"));
|
insertRouteHeader.setVersion(routeHeader.getString("RoutingVersionCode"));
|
insertRouteHeader.setStartDate(DateUtils.parseDate(routeHeader.getString("HEffectiveDate")));
|
insertRouteHeader.setEndDate(DateUtils.parseDate(routeHeader.getString("HDisableDate")));
|
insertRouteHeader.setOrgCode(routeHeader.getString("HOrgCode"));
|
insertRouteHeader.setCreateBy(batchNum);
|
headerList.add(insertRouteHeader);
|
for(Object line : routeLines){
|
JSONObject lineJson = (JSONObject) line;
|
ApsStandardProcessRouteLineJob routeLine = new ApsStandardProcessRouteLineJob();
|
routeLine.setId(IdUtil.getSnowflakeNextId());
|
routeLine.setRouteId(lineJson.getString("HID"));
|
routeLine.setRouteNum(lineJson.getString("Sequence"));
|
routeLine.setRouteName(lineJson.getString("WorkCenterName"));
|
routeLine.setRouteCode(lineJson.getString("WorkCenterCode"));
|
routeLine.setStartDate(DateUtils.parseDate(lineJson.getString("LEffectiveDate")));
|
routeLine.setEndDate(DateUtils.parseDate(lineJson.getString("LDisableDate")));
|
routeLine.setOrgCode(lineJson.getString("LOrgCode"));
|
routeLine.setStandardTime(lineJson.getBigDecimal("StandardTime"));
|
routeLine.setCreateBy(batchNum);
|
lineList.add(routeLine);
|
}
|
}
|
List<ApsStandardProcessRouteHeaderJob> temp1 = new ArrayList<>();
|
for(int i=0;i<headerList.size();i++){
|
temp1.add(headerList.get(i));
|
if(temp1.size()>=20){
|
apsStandardProcessRouteHeaderJobMapper.insertProcessRouteHeaderBatch(temp1);
|
temp1 = new ArrayList<>();
|
}
|
}
|
List<ApsStandardProcessRouteLineJob> temp2 = new ArrayList<>();
|
for(int j=0;j<lineList.size();j++){
|
temp2.add(lineList.get(j));
|
if(temp2.size()>=20){
|
apsStandardProcessRouteLineJobMapper.insertProcessRouteLineBatch(temp2);
|
temp2 = new ArrayList<>();
|
}
|
}
|
jobLog.setRequestData(requestBody.toJSONString());
|
jobLog.setPageNum(Long.valueOf(pageIndex));
|
jobLog.setPageCount(Long.valueOf(pageSize));
|
jobLog.setCreateTime(DateUtils.getNowDate());
|
jobLog.setBizType("processRoute");
|
jobLog.setResult("header:"+headerList.size() + " line:"+lineList.size());
|
jobLog.setCreateBy(batchNum);
|
jobLogMapper.insertApsWorkOrderJobLog(jobLog);
|
pageIndex++;
|
}else{
|
break;
|
}
|
}else{
|
jobLog.setRequestData(requestBody.toJSONString());
|
jobLog.setResponseData(response.getBody());
|
jobLog.setPageNum(Long.valueOf(pageIndex));
|
jobLog.setPageCount(Long.valueOf(pageSize));
|
jobLog.setCreateTime(DateUtils.getNowDate());
|
jobLog.setBizType("processRoute");
|
jobLog.setResult("error");
|
jobLog.setCreateBy(batchNum);
|
jobLogMapper.insertApsWorkOrderJobLog(jobLog);
|
break;
|
}
|
}
|
}catch (Exception e){
|
e.printStackTrace();
|
jobLog.setRequestData(requestBody.toJSONString());
|
jobLog.setResponseData(response.getBody());
|
jobLog.setPageNum(Long.valueOf(pageIndex));
|
jobLog.setPageCount(Long.valueOf(pageSize));
|
jobLog.setCreateTime(DateUtils.getNowDate());
|
jobLog.setBizType("processRoute");
|
jobLog.setResult("error");
|
jobLog.setCreateBy(batchNum);
|
jobLogMapper.insertApsWorkOrderJobLog(jobLog);
|
return false;
|
}
|
return true;
|
}
|
|
@Transactional(rollbackFor = Exception.class)
|
@Override
|
public boolean syncProcessRouteDataJob(Integer pageIndex, Integer pageSize, String orgCode, String itemCodeList) {
|
try {
|
apsStandardProcessRouteHeaderJobMapper.deleteProcessRouteHeaderJob();
|
apsStandardProcessRouteLineJobMapper.deleteProcessRouteLineJob();
|
boolean res = syncProcessRouteData(pageIndex, pageSize, orgCode, itemCodeList);
|
if(!res){
|
return false;
|
}
|
remoteCoreService.setProcessRouteDataToRedis(SecurityConstants.INNER);
|
apsStandardProcessRouteHeaderJobMapper.deleteProcessRouteHeader();
|
apsStandardProcessRouteLineJobMapper.deleteProcessRouteLine();
|
apsStandardProcessRouteHeaderJobMapper.insertIntoProcessRouteHeader();
|
apsStandardProcessRouteLineJobMapper.insertIntoProcessRouteLine();
|
} catch (Exception e) {
|
e.printStackTrace();
|
throw new RuntimeException(e);
|
}
|
return true;
|
}
|
}
|