package com.fzzy.async.fzzy40.impl;
|
|
import com.alibaba.fastjson.JSON;
|
import com.fzzy.api.Constant;
|
import com.fzzy.api.data.PushProtocol;
|
import com.fzzy.api.entity.*;
|
import com.fzzy.api.utils.ContextUtil;
|
import com.fzzy.api.view.repository.*;
|
import com.fzzy.async.fzzy40.entity.*;
|
import com.fzzy.async.fzzy40.repository.Fzzy40Sync1023Rep;
|
import com.fzzy.async.fzzy40.repository.Fzzy40SyncDrugLogDtlRep;
|
import com.fzzy.async.fzzy40.repository.Fzzy40SyncDrugLogPeopleRep;
|
import com.fzzy.async.fzzy40.repository.Fzzy40SyncDrugLogWayRep;
|
import com.fzzy.otherview.gd2022.dto.GdApi1023;
|
import com.fzzy.otherview.gd2022.dto.GdApi1023Dtl;
|
import com.fzzy.otherview.gd2022.dto.GdApi1023People;
|
import com.fzzy.otherview.gd2022.dto.GdApi1023Way;
|
import com.fzzy.push.gd2022.ApiCodeConstant;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang.time.DateFormatUtils;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.text.DateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* 熏蒸备案信息
|
*
|
* @Author:YAN
|
*/
|
@Slf4j
|
@Component
|
public class Fzzy40Sync1023 {
|
@Autowired
|
private Fzzy40Sync1023Rep fzzy40Sync1023Rep;
|
@Autowired
|
private Fzzy40SyncDrugLogPeopleRep drugLogPeopleRep;
|
@Autowired
|
private Fzzy40SyncDrugLogWayRep drugLogWayRep;
|
@Autowired
|
private Fzzy40SyncDrugLogDtlRep drugLogDtlRep;
|
@Autowired
|
private ApiLogRep apiLogRep;
|
@Autowired
|
private ApiInfoDataRep apiInfoDataRep;
|
|
|
/**
|
* 同步熏蒸备案信息
|
*
|
* @param deptId
|
* @param start
|
* @param end
|
*/
|
public void syncData(String kqdm, String deptId, Date start, Date end) {
|
log.info("-------------1023接口设备信息开始同步------------------");
|
|
//同步数据,只记录失败的信息
|
ApiLog apiLog = new ApiLog();
|
apiLog.setType(ApiLog.TYPE_SYNC);
|
apiLog.setKqdm(deptId);
|
apiLog.setUploadTime(new Date());
|
apiLog.setInteId(ApiCodeConstant.API_1023);
|
apiLog.setStatus(99);
|
apiLog.setId(ContextUtil.getUUID());
|
try {
|
List<Fz4DrugLogApply> list = fzzy40Sync1023Rep.listDrugLogApply(deptId);
|
|
if (null == list || list.isEmpty()) {
|
log.info("-------------没有获取到熏蒸备案信息------------------");
|
return;
|
}
|
List<GdApi1023Dtl> dtlList = new ArrayList<>();
|
List<GdApi1023Way> wayList = new ArrayList<>();
|
List<GdApi1023People> peopleList = new ArrayList<>();
|
for (Fz4DrugLogApply data : list) {
|
List<ApiInfoData> apiInfoList = apiInfoDataRep.getDataByInteAndData(ApiCodeConstant.API_1023, kqdm + DateFormatUtils.format(data.getTbrq(), "yyyyMMdd") + data.getXzbm());
|
if (apiInfoList.size() != 0) {
|
continue;
|
}
|
//储粮粮情明细表
|
String tbrq = "";
|
if (null != data.getTbrq()) {
|
tbrq = DateFormatUtils.format(data.getTbrq(), "yyyyMMdd");
|
}
|
List<Fz40DrugLogDtl> dtls = drugLogDtlRep.listDrugLogDtl(kqdm + tbrq + data.getXzbm());
|
for (Fz40DrugLogDtl dtl : dtls) {
|
GdApi1023Dtl gdApi1023Dtl = new GdApi1023Dtl();
|
BeanUtils.copyProperties(dtl, gdApi1023Dtl);
|
gdApi1023Dtl.setCfdm(dtl.getDepotId());
|
gdApi1023Dtl.setLspzdm(dtl.getFoodVariety());
|
gdApi1023Dtl.setLsxzdm(dtl.getFoodType());
|
gdApi1023Dtl.setLsdjdm(dtl.getFoodLevel());
|
gdApi1023Dtl.setLssl(dtl.getNumber());
|
gdApi1023Dtl.setSf(dtl.getPerWet());
|
gdApi1023Dtl.setZz(dtl.getPerImpurity());
|
dtlList.add(gdApi1023Dtl);
|
}
|
List<Fz40DrugLogWay> ways = drugLogWayRep.listDrugLogWay(kqdm + tbrq + data.getXzbm());
|
for (Fz40DrugLogWay way : ways) {
|
GdApi1023Way gdApi1023Way = new GdApi1023Way();
|
BeanUtils.copyProperties(way, gdApi1023Way);
|
wayList.add(gdApi1023Way);
|
}
|
List<Fz40DrugLogPeople> peoples = drugLogPeopleRep.listDrugLogPeople(kqdm + tbrq + data.getXzbm());
|
for (Fz40DrugLogPeople people : peoples) {
|
GdApi1023People gdApi1023People = new GdApi1023People();
|
BeanUtils.copyProperties(people, gdApi1023People);
|
peopleList.add(gdApi1023People);
|
|
}
|
|
GdApi1023 gdApi1023 = new GdApi1023();
|
BeanUtils.copyProperties(data, gdApi1023);
|
gdApi1023.setXzbm(data.getXzbm());
|
gdApi1023.setKqdm(kqdm);
|
gdApi1023.setDwdm(kqdm.substring(0, 18));
|
gdApi1023.setYjmc(data.getDrugName());
|
gdApi1023.setYjlx(data.getDrugType());
|
gdApi1023.setZhgxsj(data.getUpdateTime());
|
|
gdApi1023.setDtls(dtlList);
|
gdApi1023.setWays(wayList);
|
gdApi1023.setPeoples(peopleList);
|
|
//持久化保存,单独存入非国标接口表
|
ApiInfoData infoData = new ApiInfoData();
|
infoData.setId(ContextUtil.getUUID());
|
infoData.setKqdm(kqdm);
|
infoData.setInteType(Constant.API_CATEGORY_13);
|
infoData.setInteId(ApiCodeConstant.API_1023);
|
infoData.setBizType(PushProtocol.SB_GD_2022.getCode());
|
infoData.setUpdateTime(new Date());
|
infoData.setDataId(kqdm + DateFormatUtils.format(data.getTbrq(), "yyyyMMdd") + data.getXzbm());
|
|
if (null == apiInfoList || apiInfoList.isEmpty()) {
|
gdApi1023.setCzbz(Constant.CZBZ_I);
|
infoData.setCzbz(Constant.CZBZ_I);
|
} else {
|
gdApi1023.setCzbz(apiInfoList.get(0).getCzbz());
|
infoData.setCzbz(apiInfoList.get(0).getCzbz());
|
}
|
|
infoData.setData(JSON.toJSONString(gdApi1023));
|
|
//保存数据
|
apiInfoDataRep.save(infoData);
|
log.info("1023---同步数据:{}", gdApi1023.toString());
|
}
|
|
} catch (Exception e) {
|
log.error("---设备信息同步执行失败----{}", e.toString());
|
apiLog.setResult("设备信息同步执行失败:" + e.getMessage());
|
apiLogRep.save(apiLog);
|
}
|
}
|
}
|