package com.fzzy.push.shjdjw2023;
|
|
import com.alibaba.fastjson.JSON;
|
import com.fzzy.api.Constant;
|
import com.fzzy.api.data.ApiParam;
|
import com.fzzy.api.data.PushProtocol;
|
import com.fzzy.api.dto.ResponseDto;
|
import com.fzzy.api.entity.*;
|
import com.fzzy.api.service.ApiCommonService;
|
import com.fzzy.api.service.ApiRemoteService;
|
import com.fzzy.api.service.ApiTriggerService;
|
import com.fzzy.api.utils.ContextUtil;
|
import com.fzzy.api.utils.RedisUtil;
|
import com.fzzy.api.view.repository.*;
|
import com.fzzy.push.shjdjw2023.dto.*;
|
import lombok.Data;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang.StringUtils;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.*;
|
|
/**
|
* 上海嘉定纪委监管平台-上传数据服务类
|
*
|
* @author czt
|
* @date 2023/5/9 14:09
|
*/
|
@Slf4j
|
@Data
|
@Service
|
public class ShjdjwApiRemoteService2023 implements ApiRemoteService {
|
|
@Autowired
|
private RedisUtil redisUtil;
|
@Autowired
|
private ApiCommonService apiCommonService;
|
@Autowired
|
private ApiTriggerService apiTriggerService;
|
@Autowired
|
private ApiLogRep apiLogRep;
|
@Autowired
|
private Api1101Rep api1101Rep;
|
@Autowired
|
private Api1102Rep api1102Rep;
|
@Autowired
|
private Api1103Rep api1103Rep;
|
@Autowired
|
private Api1202Rep api1202Rep;
|
@Autowired
|
private Api1104Rep api1104Rep;
|
@Autowired
|
private Api1208Rep api1208Rep;
|
|
@Override
|
public String getProtocol() {
|
return PushProtocol.SB_SHJdJW_2023.getCode();
|
}
|
|
@Override
|
public ResponseDto pushData(ApiParam param, Object data) {
|
return pushData(param, null, data);
|
}
|
|
@Override
|
public ResponseDto pushData(ApiParam param, ApiConfs conf, Object data) {
|
String inteId = param.getInteId();
|
String kqdm = param.getKqdm();
|
String bizId = param.getBizId();
|
|
try {
|
if (null == conf) {
|
conf = apiCommonService.getConf(kqdm);
|
}
|
//添加日志
|
ApiLog apiLog = new ApiLog();
|
apiLog.setId(ContextUtil.getUUID());
|
apiLog.setInteId(param.getInteId());
|
|
//获取接口编码
|
String interfaceId = getDataId(inteId);
|
|
//获取json数据
|
String jsonData = getJsonData(inteId, data, interfaceId);
|
|
if (StringUtils.isEmpty(interfaceId)) {
|
ResponseDto responseDto = new ResponseDto(99, "没有获取到接口", bizId);
|
apiLog.setStatus(99);
|
apiLog.setResult("没有获取到接口");
|
apiLogRep.save(apiLog);
|
return responseDto;
|
}
|
apiLog.setData(jsonData);
|
apiLog.setKqdm(kqdm);
|
apiLog.setUploadTime(new Date());
|
|
if (conf == null) {
|
ResponseDto responseDto = new ResponseDto(99, "没有获取到上传配置", bizId);
|
apiLog.setStatus(99);
|
apiLog.setResult("没有获取到上传配置");
|
apiLogRep.save(apiLog);
|
return responseDto;
|
}
|
|
ShjdjwRespDto responseDto = Shjdjw2023HttpClientUtil.postPushData(conf.getApiUrl(), jsonData, conf);
|
responseDto.setBizId(bizId);
|
apiLog.setStatus(responseDto.getCode() == 1 ? 0 : responseDto.getCode());
|
apiLog.setResult(responseDto.getDescription());
|
apiLogRep.save(apiLog);
|
ResponseDto resd = new ResponseDto();
|
resd.setSuccess(responseDto.getCode() == 1 ? 0 : responseDto.getCode());
|
resd.setMsg(responseDto.getDescription());
|
|
return resd;
|
} catch (Exception e) {
|
log.error(e.getMessage(), e);
|
return new ResponseDto(99, e.getMessage());
|
}
|
}
|
|
/**
|
* 调整数据封装,获取json数据
|
*
|
* @param inteId
|
* @param data
|
* @return
|
* @throws Exception
|
*/
|
private String getJsonData(String inteId, Object data, String interfaceId) {
|
ShjdjwReqDto<Object> dto = new ShjdjwReqDto<>();
|
dto.setId(getDataId(interfaceId));
|
List<Object> list = new ArrayList<>();
|
//转换封装
|
if (Constant.API_CODE_1102.equals(inteId)) {
|
//单位接口数据封装
|
ShjdjwApi1101 shjdjwApi1101 = new ShjdjwApi1101();
|
BeanUtils.copyProperties(data, shjdjwApi1101);
|
//查询单位信息
|
List<Api1101> listApi1101 = api1101Rep.findPushData(shjdjwApi1101.getKqdm());
|
Api1101 api1101 = null;
|
if (null != listApi1101 && listApi1101.size() > 0) {
|
api1101 = listApi1101.get(0);
|
}
|
if (null != api1101) {
|
shjdjwApi1101.setDwmc(api1101.getDwmc());
|
shjdjwApi1101.setKqs(api1101.getKqs());
|
}
|
//查询仓房信息
|
List<Api1103> listApi1103 = api1103Rep.findPushData(shjdjwApi1101.getKqdm());
|
if (null != listApi1103 && listApi1103.size() > 0) {
|
for (int i = 0; i < listApi1103.size(); i++) {
|
if (i == 0) {
|
shjdjwApi1101.setCfmc(listApi1103.get(i).getCfmc());
|
} else {
|
shjdjwApi1101.setCfmc(shjdjwApi1101.getCfmc() + "#" + listApi1103.get(i).getCfmc());
|
}
|
}
|
}
|
//单位信息封装
|
list.add(shjdjwApi1101);
|
} else if (Constant.API_CODE_1202.equals(inteId)) {
|
//粮食入库数据封装
|
ShjdjwApi1202 shjdjwApi1202 = new ShjdjwApi1202();
|
Api1202 api1202 = (Api1202) data;
|
copyApi1202(api1202, shjdjwApi1202);
|
list.add(shjdjwApi1202);
|
} else if (Constant.API_CODE_1203.equals(inteId)) {
|
//粮食入库检验数据封装
|
ShjdjwApi1203 shjdjwApi1203 = copyApi1203((Api1203) data);
|
|
list.add(shjdjwApi1203);
|
} else if (Constant.API_CODE_1205.equals(inteId)) {
|
//粮食出库数据封装
|
ShjdjwApi1205 shjdjwApi1205 = copyApi1205((Api1205) data);
|
|
list.add(shjdjwApi1205);
|
} else if (Constant.API_CODE_1208.equals(inteId)) {
|
//粮食库存数据封装
|
ShjdjwApi1208 shjdjwApi1208 = copyApi1208((Api1208) data);
|
|
list.add(shjdjwApi1208);
|
} else if (Constant.API_CODE_1209.equals(inteId)) {
|
//损益单数据封装
|
ShjdjwApi1209 shjdjwApi1209 = copyApi1209((Api1209) data);
|
|
list.add(shjdjwApi1209);
|
} else if (Constant.API_CODE_1310.equals(inteId)) {
|
//质检数据封装
|
ShjdjwApi1310 shjdjwApi1310 = copyApi1310((Api1310) data);
|
|
list.add(shjdjwApi1310);
|
} else if (Constant.API_CODE_1403.equals(inteId)) {
|
//轮换计划数据封装
|
ShjdjwApi1403 shjdjwApi1403 = new ShjdjwApi1403();
|
Api1403 api1403 = (Api1403) data;
|
BeanUtils.copyProperties(api1403, shjdjwApi1403);
|
|
shjdjwApi1403.setJhbm(api1403.getLhjhdh());
|
shjdjwApi1403.setPch("0");
|
|
list.add(shjdjwApi1403);
|
} else if (Constant.API_CODE_1404.equals(inteId)) {
|
//轮换计划完成情况数据封装
|
ShjdjwApi1404 shjdjwApi1404 = copyApi1404((Api1404) data);
|
|
list.add(shjdjwApi1404);
|
} else {
|
|
list.add(data);
|
}
|
dto.setData(list);
|
return JSON.toJSONString(dto);
|
}
|
|
private ShjdjwApi1404 copyApi1404(Api1404 data) {
|
ShjdjwApi1404 shjdjwApi1404 = new ShjdjwApi1404();
|
Api1404 api1404 = data;
|
BeanUtils.copyProperties(api1404, shjdjwApi1404);
|
|
//查询单位信息
|
List<Api1101> listApi1101 = api1101Rep.findPushData(api1404.getKqdm());
|
if (null != listApi1101 || listApi1101.size() > 0) {
|
shjdjwApi1404.setDwmc(listApi1101.get(0).getDwmc());
|
}
|
|
shjdjwApi1404.setJhnd("0");
|
shjdjwApi1404.setJhsl("0");
|
shjdjwApi1404.setYzxsl("0");
|
shjdjwApi1404.setZxbl("0");
|
shjdjwApi1404.setZbjjbl("0");
|
//TODO 计划年度 计划数量 已执行数量 执行比例 招标/竞价比例
|
return shjdjwApi1404;
|
}
|
|
private ShjdjwApi1203 copyApi1203(Api1203 data) {
|
ShjdjwApi1203 shjdjwApi1203 = new ShjdjwApi1203();
|
Api1203 api1203 = data;
|
BeanUtils.copyProperties(api1203, shjdjwApi1203);
|
|
shjdjwApi1203.setQydbh(api1203.getRkjydh());
|
shjdjwApi1203.setHwbm(api1203.getHwdm());
|
shjdjwApi1203.setYpbm(api1203.getRkywdh());
|
shjdjwApi1203.setJyjg(api1203.getJyz());
|
shjdjwApi1203.setJyjl(api1203.getJyjg());
|
shjdjwApi1203.setPzbm(api1203.getLspzdm());
|
shjdjwApi1203.setBjw("jiading");
|
shjdjwApi1203.setPch("0");
|
return shjdjwApi1203;
|
}
|
|
private ShjdjwApi1310 copyApi1310(Api1310 data) {
|
ShjdjwApi1310 shjdjwApi1310 = new ShjdjwApi1310();
|
Api1310 api1310 = data;
|
BeanUtils.copyProperties(api1310, shjdjwApi1310);
|
|
shjdjwApi1310.setZjbgdbh(api1310.getZjbgdh());
|
shjdjwApi1310.setPznm(api1310.getLspzdm());
|
shjdjwApi1310.setSkdjbm(api1310.getLsdjdm());
|
shjdjwApi1310.setJylbbm(api1310.getJylb());
|
shjdjwApi1310.setJyjl(api1310.getJyxmz());
|
shjdjwApi1310.setZlzbjgpd(api1310.getZbjgpd());
|
//查询单位信息
|
List<Api1101> listApi1101 = api1101Rep.findPushData(api1310.getKqdm());
|
if (null != listApi1101 || listApi1101.size() > 0) {
|
shjdjwApi1310.setDwmc(listApi1101.get(0).getDwmc());
|
}
|
|
//查询仓房信息
|
List<Api1103> listApi1103 = api1103Rep.findPushDataByCfdm(api1310.getHwdm().substring(0, 25));
|
if (null != listApi1103 || listApi1103.size() > 0) {
|
shjdjwApi1310.setCfmc(listApi1103.get(0).getCfmc());
|
}
|
|
//查询廒间信息
|
List<Api1104> listApi1104 = api1104Rep.findDataByAjdh(api1310.getHwdm().substring(0, 28));
|
if (null != listApi1104 || listApi1104.size() > 0) {
|
shjdjwApi1310.setAjmc(listApi1104.get(0).getAjmc());
|
}
|
|
//查询库区信息
|
List<Api1102> listApi1102 = api1102Rep.findPushData(api1310.getKqdm());
|
if (null != listApi1102 || listApi1102.size() > 0) {
|
shjdjwApi1310.setKdmc(listApi1102.get(0).getKqmc());
|
}
|
//查询粮食库存
|
List<Api1208> listApi1208 = api1208Rep.getDataByHwdm(api1310.getHwdm());
|
if (null != listApi1208 || listApi1208.size() > 0) {
|
shjdjwApi1310.setKdmc(listApi1208.get(0).getLsxzdm());
|
}
|
shjdjwApi1310.setPch("0");
|
return shjdjwApi1310;
|
}
|
|
private ShjdjwApi1209 copyApi1209(Api1209 data) {
|
ShjdjwApi1209 shjdjwApi1209 = new ShjdjwApi1209();
|
Api1209 api1209 = data;
|
|
BeanUtils.copyProperties(api1209, shjdjwApi1209);
|
|
shjdjwApi1209.setSydbh(api1209.getSydh());
|
shjdjwApi1209.setHwbm(api1209.getHwdm());
|
shjdjwApi1209.setRksl(api1209.getRkjz());
|
shjdjwApi1209.setCksl(api1209.getCkjz());
|
shjdjwApi1209.setSysl(api1209.getJzsysl());
|
//查询单位信息
|
List<Api1101> listApi1101 = api1101Rep.findPushData(api1209.getKqdm());
|
if (null != listApi1101 || listApi1101.size() > 0) {
|
shjdjwApi1209.setDwmc(listApi1101.get(0).getDwmc());
|
}
|
//查询库区信息
|
List<Api1102> listApi1102 = api1102Rep.findPushData(api1209.getKqdm());
|
if (null != listApi1102 || listApi1102.size() > 0) {
|
shjdjwApi1209.setKdmc(listApi1102.get(0).getKqmc());
|
}
|
|
shjdjwApi1209.setNx(api1209.getYwrq());
|
//辅损益数量
|
shjdjwApi1209.setFsysl(Math.abs(api1209.getJzsysl()));
|
//损益类型
|
shjdjwApi1209.setSylx(api1209.getJzsysl() > 0 ? "0" : "1");
|
return shjdjwApi1209;
|
}
|
|
private ShjdjwApi1208 copyApi1208(Api1208 data) {
|
ShjdjwApi1208 shjdjwApi1208 = new ShjdjwApi1208();
|
Api1208 api1208 = data;
|
|
BeanUtils.copyProperties(api1208, shjdjwApi1208);
|
|
shjdjwApi1208.setLspzbm(api1208.getLspzdm());
|
shjdjwApi1208.setLsxzbm(api1208.getLsxzdm());
|
shjdjwApi1208.setDjbm(api1208.getLsdjdm());
|
shjdjwApi1208.setLqgsdwbm(api1208.getLqgsdwdm());
|
|
//查询单位信息
|
List<Api1101> listApi1101 = api1101Rep.findPushData(api1208.getKqdm());
|
if (null != listApi1101 || listApi1101.size() > 0) {
|
shjdjwApi1208.setDwmc(listApi1101.get(0).getDwmc());
|
}
|
|
//查询仓房信息
|
List<Api1103> listApi1103 = api1103Rep.findPushDataByCfdm(api1208.getHwdm().substring(0, 25));
|
if (null != listApi1103 || listApi1103.size() > 0) {
|
shjdjwApi1208.setCfmc(listApi1103.get(0).getCfmc());
|
}
|
|
//查询廒间信息
|
List<Api1104> listApi1104 = api1104Rep.findDataByAjdh(api1208.getHwdm().substring(0, 28));
|
if (null != listApi1104 || listApi1104.size() > 0) {
|
shjdjwApi1208.setAjmc(listApi1104.get(0).getAjmc());
|
}
|
|
shjdjwApi1208.setKcjcsj(api1208.getZhgxsj());
|
|
shjdjwApi1208.setPch("0");
|
return shjdjwApi1208;
|
}
|
|
private ShjdjwApi1205 copyApi1205(Api1205 data) {
|
ShjdjwApi1205 shjdjwApi1205 = new ShjdjwApi1205();
|
Api1205 api1205 = data;
|
|
BeanUtils.copyProperties(api1205, shjdjwApi1205);
|
|
shjdjwApi1205.setYwdh(api1205.getCkywdh());
|
shjdjwApi1205.setHtbm(api1205.getHth());
|
shjdjwApi1205.setPzbm(api1205.getLspzdm());
|
shjdjwApi1205.setDjbm(api1205.getLsdjdm());
|
shjdjwApi1205.setLqxzbm(api1205.getLsxzdm());
|
shjdjwApi1205.setCzbz(api1205.getCzbz());
|
shjdjwApi1205.setLrfs("0");
|
shjdjwApi1205.setPzbm(api1205.getLspzdm());
|
|
//查询单位信息
|
List<Api1101> listApi1101 = api1101Rep.findPushData(api1205.getKqdm());
|
if (null != listApi1101 || listApi1101.size() > 0) {
|
shjdjwApi1205.setDwmc(listApi1101.get(0).getDwmc());
|
}
|
|
//查询仓房信息
|
List<Api1103> listApi1103 = api1103Rep.findPushDataByCfdm(api1205.getHwdm().substring(0, 25));
|
if (null != listApi1103 || listApi1103.size() > 0) {
|
shjdjwApi1205.setCfmc(listApi1103.get(0).getCfmc());
|
}
|
|
shjdjwApi1205.setDjlx("0");
|
|
//查询字典数据
|
ApiTrigger apiTrigger = apiTriggerService.findNameByCode(api1205.getLspzdm(), Constant.TRIGGER_P_LSPZ);
|
shjdjwApi1205.setWlmc(null == apiTrigger ? api1205.getLspzdm() : apiTrigger.getName());
|
shjdjwApi1205.setDz(StringUtils.isNotEmpty(api1205.getXldd()) ? api1205.getXldd() : "库内");
|
|
shjdjwApi1205.setDksj(api1205.getDjsj());
|
shjdjwApi1205.setLksj(api1205.getCmsj());
|
shjdjwApi1205.setPch("0");
|
return shjdjwApi1205;
|
}
|
|
|
/**
|
* 获取接口编码
|
*
|
* @param inteId
|
* @return
|
*/
|
private String getDataId(String inteId) {
|
switch (inteId) {
|
case "1102":
|
//单位接口编码
|
return ShjdjwApiCodeConstant.API_CODE_LS1101;
|
case "1202":
|
//粮食入库接口编码
|
return ShjdjwApiCodeConstant.API_CODE_LS1302;
|
case "1203":
|
//粮食入库检验接口编码
|
return ShjdjwApiCodeConstant.API_CODE_LS1303;
|
case "1205":
|
//粮食出库接口编码
|
return ShjdjwApiCodeConstant.API_CODE_LS1306;
|
case "1208":
|
//粮食库存接口编码
|
return ShjdjwApiCodeConstant.API_CODE_LS1310;
|
case "1209":
|
//损益单接口编码
|
return ShjdjwApiCodeConstant.API_CODE_LS1311;
|
case "1310":
|
//质检接口编码
|
return ShjdjwApiCodeConstant.API_CODE_LS1201;
|
case "1403":
|
//轮换计划接口编码
|
return ShjdjwApiCodeConstant.API_CODE_LS1501;
|
case "1404":
|
//轮换计划完成情况接口编码
|
return ShjdjwApiCodeConstant.API_CODE_LS1502;
|
default:
|
return inteId;
|
}
|
|
}
|
|
//装换封装
|
private void copyApi1202(Api1202 api1202, ShjdjwApi1202 shjdjwApi1202) {
|
BeanUtils.copyProperties(api1202, shjdjwApi1202);
|
String ywdh = api1202.getRkywdh();
|
shjdjwApi1202.setYwdh(ywdh);
|
shjdjwApi1202.setHwbm(api1202.getHwdm());
|
shjdjwApi1202.setPzbm(api1202.getLspzdm());
|
shjdjwApi1202.setLqxzbm(api1202.getLsxzdm());
|
shjdjwApi1202.setZjkl(api1202.getZjklxj());
|
//轮换计划单号
|
shjdjwApi1202.setJhbh(api1202.getJhmxh());
|
//顺序号
|
shjdjwApi1202.setSxh(ywdh.substring(ywdh.length() - 4));
|
shjdjwApi1202.setDjzt("2");
|
//业务单号
|
shjdjwApi1202.setJydbh(api1202.getRkywdh());
|
//轮换年度
|
shjdjwApi1202.setLhnd(api1202.getShnd());
|
//批次号
|
shjdjwApi1202.setPch("0");
|
}
|
}
|