package com.fzzy.async.fzzy61.impl;
|
|
import com.fzzy.api.Constant;
|
import com.fzzy.api.entity.Api1102;
|
import com.fzzy.api.entity.Api1105;
|
import com.fzzy.api.entity.Api1208;
|
import com.fzzy.api.entity.ApiLog;
|
import com.fzzy.api.service.ApiCommonService;
|
import com.fzzy.api.service.ApiTriggerService;
|
import com.fzzy.api.utils.ContextUtil;
|
import com.fzzy.api.view.repository.Api1102Rep;
|
import com.fzzy.api.view.repository.Api1208Rep;
|
import com.fzzy.api.view.repository.ApiLogRep;
|
import com.fzzy.async.fzzy61.entity.Fz61DepotStore;
|
import com.fzzy.async.fzzy61.repository.Fzzy61Sync1208Rep;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.time.DateUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* 粮食库存
|
*/
|
@Slf4j
|
@Component
|
public class Fzzy61Sync1208 {
|
|
@Autowired
|
private Fzzy61Sync1208Rep fzzySync1208Rep;
|
@Autowired
|
private ApiTriggerService apiTriggerService;
|
@Autowired
|
private Api1208Rep api1208Rep;
|
@Autowired
|
private ApiCommonService commonService;
|
@Autowired
|
private Api1102Rep api1102Rep;
|
@Autowired
|
private ApiLogRep apiLogRep;
|
|
/**
|
* 同步粮食库存
|
*
|
* @param deptId
|
* @param start
|
* @param end
|
*/
|
public void syncData(String kqdm, String deptId, Date start, Date end) {
|
|
log.info("-------------1208粮食库存信息接口数据开始同步------------------");
|
|
//同步数据,只记录失败的信息
|
ApiLog apiLog = new ApiLog();
|
apiLog.setType(ApiLog.TYPE_SYNC);
|
apiLog.setKqdm(deptId);
|
apiLog.setUploadTime(new Date());
|
apiLog.setInteId(Constant.API_CODE_1208);
|
apiLog.setStatus(99);
|
apiLog.setId(ContextUtil.getUUID());
|
try {
|
List<Fz61DepotStore> list = fzzySync1208Rep.listDepot(deptId, start, end);
|
|
if (null == list || list.isEmpty()) {
|
|
log.info("-------------没有获取到粮食库存信息------------------");
|
|
return;
|
}
|
|
//根据库区代码获取单位代码
|
Api1102 api1102 = api1102Rep.findById(kqdm).get();
|
|
Api1208 apiData;
|
Api1105 api1105;
|
List<Api1208> api1208List;
|
for (Fz61DepotStore fz61DepotStore : list) {
|
|
//获取货位信息
|
api1105 = commonService.getApi1105Cache(fz61DepotStore.getDepotId());
|
if (null == api1105) {
|
continue;
|
}
|
|
apiData = new Api1208();
|
apiData.setId(fz61DepotStore.getId());
|
apiData.setHwdm(api1105.getHwdm());
|
|
//粮食品种
|
String mappingCode = apiTriggerService.getMappingCode(Constant.TRIGGER_P_LSPZ, fz61DepotStore.getFoodVariety());
|
apiData.setLspzdm(mappingCode);
|
|
//粮食性质
|
mappingCode = apiTriggerService.getMappingCode(Constant.TRIGGER_P_LSXZ, fz61DepotStore.getFoodType());
|
apiData.setLsxzdm(mappingCode);
|
|
//粮食等级
|
mappingCode = apiTriggerService.getMappingCode(Constant.TRIGGER_P_LSDJ, fz61DepotStore.getFoodLevel());
|
apiData.setLsdjdm(mappingCode);
|
|
apiData.setShnd(fz61DepotStore.getFoodYear());
|
|
//产地代码
|
mappingCode = commonService.getFoodLocationIdFromCache(fz61DepotStore.getFoodLocation());
|
if (StringUtils.isEmpty(mappingCode)) {
|
mappingCode = apiData.getHwdm().substring(2, 8);
|
}
|
apiData.setCd(mappingCode);
|
|
apiData.setBgy(StringUtils.isEmpty(api1105.getBgy()) ? "保管员" : api1105.getBgy());
|
apiData.setLqgsdwdm(fz61DepotStore.getLqgsdwdm());
|
apiData.setLqxzqhdm(api1102.getXzqhdm());
|
if (apiData.getLsxzdm().equals("121")) {
|
//省级储备粮-粮权行政区划代码为省级
|
apiData.setLqxzqhdm(api1102.getXzqhdm().substring(0, 2) + "0000");
|
}
|
if (apiData.getLsxzdm().equals("122")) {
|
//市级储备粮-粮权行政区划代码为市级
|
apiData.setLqxzqhdm(api1102.getXzqhdm().substring(0, 4) + "00");
|
}
|
|
//粮权归属单位
|
if (null == apiData.getLqgsdwdm()) {
|
api1208List = api1208Rep.findDataByHwdm(api1105.getHwdm());
|
if (null != api1208List && api1208List.size() > 0) {
|
apiData.setLqgsdwdm(api1208List.get(0).getLqgsdwdm());
|
apiData.setLqxzqhdm(api1208List.get(0).getLqxzqhdm());
|
apiData.setLqgstydwbm(api1208List.get(0).getLqgstydwbm());
|
} else {
|
apiData.setLqgsdwdm(api1102.getDwdm());
|
apiData.setLqxzqhdm(api1102.getXzqhdm());
|
}
|
}
|
|
|
//若为商品粮,则粮权性质区划代码为null
|
if ("200".equals(apiData.getLsxzdm())) {
|
apiData.setLqxzqhdm(null);
|
}
|
|
//管理方式-默认直储
|
if (StringUtils.isEmpty(fz61DepotStore.getManageType())) {
|
apiData.setGlfs("01");
|
} else {
|
apiData.setGlfs(fz61DepotStore.getManageType());
|
}
|
|
//收储地点-默认库内
|
apiData.setScdd("1");
|
//储粮方式
|
apiData.setClfs(fz61DepotStore.getStoreType());
|
//包装储粮是,核查包存粮包数
|
if ("2".equals(apiData.getClfs())) {
|
apiData.setBclbs((int) (fz61DepotStore.getStorageReal() / 25));
|
}
|
|
//货位状态
|
mappingCode = apiTriggerService.getMappingCode(Constant.TRIGGER_P_HWZT, fz61DepotStore.getDepotStatus());
|
apiData.setHwzt(mappingCode);
|
if (null == fz61DepotStore.getStoreDate()) {
|
fz61DepotStore.setStoreDate(new Date());
|
}
|
//入仓时间
|
apiData.setRcsj(fz61DepotStore.getStoreDate());
|
//封仓日期
|
if ("3".equals(apiData.getHwzt()) || "4".equals(apiData.getHwzt())) {
|
if (null == fz61DepotStore.getFullDate()) {
|
fz61DepotStore.setFullDate(DateUtils.addDays(fz61DepotStore.getStoreDate(), 30));
|
}
|
apiData.setFcrq(fz61DepotStore.getFullDate());
|
}
|
|
if ("1".equals(apiData.getHwzt())) {
|
//出仓完成时间
|
apiData.setCcwcsj(fz61DepotStore.getOutDate());
|
//清仓时间
|
apiData.setQcsj(DateUtils.addHours(apiData.getCcwcsj(), 60));
|
}
|
//国别
|
apiData.setGb("156");
|
apiData.setSjsl(fz61DepotStore.getStorageReal());
|
apiData.setJjsl(fz61DepotStore.getStorageReal());
|
apiData.setSjzlxg(6);
|
apiData.setLdtj(10000);
|
|
apiData.setZhgxsj(fz61DepotStore.getUpdateDate());
|
|
//业务id、库区编码、同步时间
|
apiData.setBizId(fz61DepotStore.getId());
|
apiData.setKqdm(kqdm);
|
apiData.setSyncTime(new Date());
|
|
//库存每次新增
|
api1208List = api1208Rep.getDataById(apiData.getId());
|
if (null == api1208List || api1208List.isEmpty()) {
|
apiData.setCzbz(Constant.CZBZ_I);
|
} else {
|
apiData.setCzbz(api1208List.get(0).getCzbz());
|
}
|
|
//保存数据
|
api1208Rep.save(apiData);
|
}
|
} catch (Exception e) {
|
log.error("---1208粮食库存信息同步失败----{}", e.toString());
|
apiLog.setResult("同步失败:" + e.getMessage());
|
apiLogRep.save(apiLog);
|
}
|
}
|
}
|