WS
2023-05-25 9149e48f78437e04725e24d98e2a75872f86d671
src/main/java/com/fzzy/push/shjdjw2023/ShjdjwApiRemoteService2023.java
@@ -1,6 +1,7 @@
package com.fzzy.push.shjdjw2023;
import com.alibaba.fastjson.JSON;
import com.bstek.dorado.util.DateUtils;
import com.fzzy.api.Constant;
import com.fzzy.api.data.ApiParam;
import com.fzzy.api.data.PushProtocol;
@@ -20,6 +21,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.DateFormat;
import java.util.*;
/**
@@ -53,6 +55,9 @@
    private Api1104Rep api1104Rep;
    @Autowired
    private Api1208Rep api1208Rep;
    @Autowired
    private Api1404Rep api1404Rep;
    @Override
    public String getProtocol() {
@@ -113,6 +118,29 @@
            resd.setSuccess(responseDto.getCode() == 1 ? 0 : responseDto.getCode());
            resd.setMsg(responseDto.getDescription());
            if (Constant.API_CODE_1403.equals(inteId)) {
                //轮换计划完成情况数据封装
                Shjdjw1502 shjdjw1502 = copy1502((Api1403) data);
                ShjdjwReqDto<Object> dto = new ShjdjwReqDto<>();
                dto.setId(getDataId(ShjdjwApiCodeConstant.API_CODE_LS1502));
                List<Object> list = new ArrayList<>();
                list.add(shjdjw1502);
                dto.setData(list);
                String json = JSON.toJSONString(dto);
                //轮换计划完成情况数据上传
                apiLog.setData(json);
                apiLog.setKqdm(kqdm);
                apiLog.setUploadTime(new Date());
                ShjdjwRespDto shjdjwresponseDto = Shjdjw2023HttpClientUtil.postPushData(conf.getApiUrl(), json, conf);
                responseDto.setBizId(bizId);
                apiLog.setStatus(shjdjwresponseDto.getCode() == 1 ? 0 : shjdjwresponseDto.getCode());
                apiLog.setResult(shjdjwresponseDto.getDescription());
                apiLogRep.save(apiLog);
                ResponseDto response = new ResponseDto();
                response.setSuccess(shjdjwresponseDto.getCode() == 1 ? 0 : shjdjwresponseDto.getCode());
                response.setMsg(shjdjwresponseDto.getDescription());
            }
            return resd;
        } catch (Exception e) {
            log.error(e.getMessage(), e);
@@ -193,19 +221,9 @@
            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");
            ShjdjwApi1403 shjdjwApi1403 = copyApi1403((Api1403) data);
            list.add(shjdjwApi1403);
        } else if (Constant.API_CODE_1404.equals(inteId)) {
            //轮换计划完成情况数据封装
            ShjdjwApi1404 shjdjwApi1404 = copyApi1404((Api1404) data);
            list.add(shjdjwApi1404);
        } else {
            list.add(data);
@@ -214,29 +232,71 @@
        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 ShjdjwApi1403 copyApi1403(Api1403 api1403) {
        ShjdjwApi1403 shjdjwApi1403 = new ShjdjwApi1403();
        BeanUtils.copyProperties(api1403, shjdjwApi1403);
        List<Double> lhsl = getLhsl(api1403);
        shjdjwApi1403.setLrsl(lhsl.get(1));
        shjdjwApi1403.setLrsl(lhsl.get(0));
        shjdjwApi1403.setJhbm(api1403.getLhjhdh());
        shjdjwApi1403.setPch("0");
        return shjdjwApi1403;
    }
    private ShjdjwApi1203 copyApi1203(Api1203 data) {
    /**
     * 获取轮入和轮出重量
     * @param api1403
     * @return
     */
    private List<Double> getLhsl(Api1403 api1403) {
        List<Api1404> api1404List = api1404Rep.getDataByLhjhdh(api1403.getLhjhdh());
        List<Double> lhsl = new ArrayList<>();
        if(null != api1404List && api1404List.size() > 0){
//            double sum = api1404List.stream().mapToDouble(Api1404::getLhsl).summaryStatistics().getSum();
            double lcSum = api1404List.stream()
                    .filter(x->x.getLhlx().equals("1"))
                    .mapToDouble(Api1404::getLhsl)
                    .summaryStatistics().getSum();
            double lrSum = api1404List.stream()
                    .filter(x->x.getLhlx().equals("2"))
                    .mapToDouble(Api1404::getLhsl)
                    .summaryStatistics().getSum();
            lhsl.add(lcSum);
            lhsl.add(lrSum);
        }
        return lhsl;
    }
    private Shjdjw1502 copy1502(Api1403 api1403) {
        Shjdjw1502 shjdjw1502 = new Shjdjw1502();
        shjdjw1502.setDwmc(api1403.getLhjhdh());
        shjdjw1502.setJhnd(api1403.getJhnd());
        // 计划数量
        List<Double> lhsl = getLhsl(api1403);
        Double sum = lhsl.stream().reduce(0d, Double::sum);
        // 已执行数量
        List<Api1202> api1202List = api1202Rep.getDataByTime(api1403.getKszxrq(), api1403.getJzzxrq());
//                DateUtils.format("yyyy-MM-dd HH:mm:ss", api1403.getKszxrq()),
//                DateUtils.format("yyyy-MM-dd HH:mm:ss", api1403.getJzzxrq()));
        Double yzxsl = api1202List.stream()
                .mapToDouble(Api1202::getJz)
                .summaryStatistics().getSum();
        shjdjw1502.setJhsl(sum.toString());
        shjdjw1502.setYzxsl(yzxsl.toString());
        //执行比例
        shjdjw1502.setZxbl(String.valueOf((yzxsl/sum*100)));
        // 招标/竞价比例
        shjdjw1502.setZbjjbl("100");
        shjdjw1502.setCzbz(api1403.getCzbz());
        return shjdjw1502;
    }
    private ShjdjwApi1203 copyApi1203(Api1203 api1203) {
        ShjdjwApi1203 shjdjwApi1203 = new ShjdjwApi1203();
        Api1203 api1203 = data;
        BeanUtils.copyProperties(api1203, shjdjwApi1203);
        shjdjwApi1203.setQydbh(api1203.getRkjydh());
@@ -250,52 +310,59 @@
        return shjdjwApi1203;
    }
    private ShjdjwApi1310 copyApi1310(Api1310 data) {
    private ShjdjwApi1310 copyApi1310(Api1310 api1310) {
        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());
        if(StringUtils.isNotEmpty(shjdjwApi1310.getJyxm())){
            String[] split = shjdjwApi1310.getJyxm().split(",");
            StringBuilder jyjl = new StringBuilder();
            for (String s : split) {
                jyjl.append(",合格");
            }
            shjdjwApi1310.setJyjl(jyjl.toString().substring(1));
        }
        shjdjwApi1310.setZlzbjgpd(api1310.getZbjgpd());
        //查询单位信息
        List<Api1101> listApi1101 = api1101Rep.findPushData(api1310.getKqdm());
        if (null != listApi1101 || listApi1101.size() > 0) {
        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) {
        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) {
        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) {
        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) {
        if (null != listApi1208 && listApi1208.size() > 0) {
            shjdjwApi1310.setKdmc(listApi1208.get(0).getLsxzdm());
        }
        shjdjwApi1310.setPch("0");
        return shjdjwApi1310;
    }
    private ShjdjwApi1209 copyApi1209(Api1209 data) {
    private ShjdjwApi1209 copyApi1209(Api1209 api1209) {
        ShjdjwApi1209 shjdjwApi1209 = new ShjdjwApi1209();
        Api1209 api1209 = data;
        BeanUtils.copyProperties(api1209, shjdjwApi1209);
@@ -306,12 +373,12 @@
        shjdjwApi1209.setSysl(api1209.getJzsysl());
        //查询单位信息
        List<Api1101> listApi1101 = api1101Rep.findPushData(api1209.getKqdm());
        if (null != listApi1101 || listApi1101.size() > 0) {
        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) {
        if (null != listApi1102 && listApi1102.size() > 0) {
            shjdjwApi1209.setKdmc(listApi1102.get(0).getKqmc());
        }
@@ -323,9 +390,8 @@
        return shjdjwApi1209;
    }
    private ShjdjwApi1208 copyApi1208(Api1208 data) {
    private ShjdjwApi1208 copyApi1208(Api1208 api1208) {
        ShjdjwApi1208 shjdjwApi1208 = new ShjdjwApi1208();
        Api1208 api1208 = data;
        BeanUtils.copyProperties(api1208, shjdjwApi1208);
@@ -336,19 +402,19 @@
        //查询单位信息
        List<Api1101> listApi1101 = api1101Rep.findPushData(api1208.getKqdm());
        if (null != listApi1101 || listApi1101.size() > 0) {
        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) {
        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) {
        if (null != listApi1104 && listApi1104.size() > 0) {
            shjdjwApi1208.setAjmc(listApi1104.get(0).getAjmc());
        }
@@ -358,9 +424,8 @@
        return shjdjwApi1208;
    }
    private ShjdjwApi1205 copyApi1205(Api1205 data) {
    private ShjdjwApi1205 copyApi1205(Api1205 api1205) {
        ShjdjwApi1205 shjdjwApi1205 = new ShjdjwApi1205();
        Api1205 api1205 = data;
        BeanUtils.copyProperties(api1205, shjdjwApi1205);
@@ -375,13 +440,13 @@
        //查询单位信息
        List<Api1101> listApi1101 = api1101Rep.findPushData(api1205.getKqdm());
        if (null != listApi1101 || listApi1101.size() > 0) {
        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) {
        if (null != listApi1103 && listApi1103.size() > 0) {
            shjdjwApi1205.setCfmc(listApi1103.get(0).getCfmc());
        }
@@ -431,9 +496,6 @@
            case "1403":
                //轮换计划接口编码
                return ShjdjwApiCodeConstant.API_CODE_LS1501;
            case "1404":
                //轮换计划完成情况接口编码
                return ShjdjwApiCodeConstant.API_CODE_LS1502;
            default:
                return inteId;
        }
@@ -458,6 +520,9 @@
        shjdjwApi1202.setJydbh(api1202.getRkywdh());
        //轮换年度
        shjdjwApi1202.setLhnd(api1202.getShnd());
        //到库时间、离库时间
        shjdjwApi1202.setDksj(api1202.getDjsj());
        shjdjwApi1202.setLksj(api1202.getCmsj());
        //批次号
        shjdjwApi1202.setPch("0");
    }