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.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 ApiLogRep apiLogRep;
|
@Autowired
|
private Api1101Rep api1101Rep;
|
@Autowired
|
private Api1102Rep api1102Rep;
|
@Autowired
|
private Api1103Rep api1103Rep;
|
@Autowired
|
private Api1202Rep api1202Rep;
|
|
@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 = new ShjdjwApi1203();
|
Api1203 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());
|
//TODO 标记位
|
shjdjwApi1203.setPch("0");
|
|
list.add(shjdjwApi1203);
|
} else if (Constant.API_CODE_1205.equals(inteId)) {
|
//粮食出库数据封装
|
ShjdjwApi1205 shjdjwApi1205 = new ShjdjwApi1205();
|
Api1205 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("0");
|
//TODO 单位名称 仓房名称 单据类型 品种名称 地址 到库时间 离库时间 轮换年度
|
shjdjwApi1205.setPch("0");
|
|
list.add(shjdjwApi1205);
|
} else if (Constant.API_CODE_1208.equals(inteId)) {
|
//粮食库存数据封装
|
ShjdjwApi1208 shjdjwApi1208 = new ShjdjwApi1208();
|
Api1208 api1208 = (Api1208) data;
|
|
BeanUtils.copyProperties(api1208, shjdjwApi1208);
|
|
shjdjwApi1208.setLspzbm(api1208.getLspzdm());
|
shjdjwApi1208.setLsxzbm(api1208.getLsxzdm());
|
shjdjwApi1208.setDjbm(api1208.getLsdjdm());
|
shjdjwApi1208.setLqgsdwbm(api1208.getLqgsdwdm());
|
shjdjwApi1208.setPch("0");
|
//TODO 单位名称 仓房名称 廒间名称 库存监测时间
|
|
list.add(shjdjwApi1208);
|
} else if (Constant.API_CODE_1209.equals(inteId)) {
|
//损益单数据封装
|
ShjdjwApi1209 shjdjwApi1209 = new ShjdjwApi1209();
|
Api1209 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());
|
//TODO 单位名称 库点名称 年限 辅损溢数量 损益类型
|
|
list.add(shjdjwApi1209);
|
} else {
|
|
list.add(data);
|
}
|
dto.setData(list);
|
return JSON.toJSONString(dto);
|
}
|
|
|
|
/**
|
* 获取接口编码
|
*
|
* @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;
|
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(null);
|
//顺序号
|
shjdjwApi1202.setSxh(ywdh.substring(ywdh.length() - 4));
|
shjdjwApi1202.setDjzt("2");
|
//业务单号
|
shjdjwApi1202.setJydbh(null);
|
//轮换年度
|
shjdjwApi1202.setLhnd(null);
|
//批次号
|
shjdjwApi1202.setPch("0");
|
}
|
}
|