CZT
2023-12-12 a82631013be641db3979e11013b2cf6e937a3e7b
src/main/java/com/fzzy/push/sh2023/SH2023ApiRemoteService.java
@@ -16,6 +16,7 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import com.fzzy.api.utils.NumberUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -293,6 +294,8 @@
            api1109.setWjl(JSON.toJSONString(map));
            //上海市平台文件名称规则:库区编码_业务流水号_分类码_顺序码.jpg,例如:91310114703439394M001_142211080101_GL_00.jpg
            api1109.setWjmc(getWjmc(api1109.getWjlx(), api1109.getWjmc()));
            //业务类型
            api1109.setYwdh(getYwdh(api1109.getWjlx(), api1109.getWjmc()));
            //设置空属性为默认值
            changeObject(api1109);
            return api1109;
@@ -350,6 +353,11 @@
            //合同审核人不能为空或填无
            if (StringUtils.isEmpty(api1201.getShr())) {
                api1201.setShr("审批人");
            }
            //设置购销方式,默认客户统一信用码为空,则为产销,反之为竞价;(1-定向;2-竞价;3-产销)
            api1201.setGxfs("2");
            if(StringUtils.isEmpty(api1201.getKhtyshxydm())){
                api1201.setGxfs("3");
            }
            //设置空属性为默认值
            changeObject(api1201);
@@ -596,16 +604,14 @@
            Api1302 apiData = (Api1302) data;
            BeanUtils.copyProperties(apiData, api1302);
            api1302.setBjw(ShAreaBjw.getBjw(code));
            api1302.setCpjw(String.valueOf(apiData.getLspjw()));
            api1302.setCzgw(String.valueOf(apiData.getLspjw()));
            api1302.setCzdw(String.valueOf(apiData.getLspjw()));
            api1302.setGfwjw(String.valueOf(apiData.getLspjw()));
            api1302.setLwmx(apiData.getLswdzjh());
            api1302.setLqjs("1");
            //批次号
            List<Api1208> api1208List = api1208Rep.findDataByHwdm(api1302.getHwdm());
            if (null != api1208List && api1208List.size() > 0) {
                api1302.setPch(apiData.getHwdm() + api1208List.get(0).getShnd());
            }
            //统计层高、层低、层均温等信息
            api1302 = packageData1302(api1302);
            //设置空属性为默认值
            changeObject(api1302);
@@ -837,16 +843,124 @@
        return data;
    }
    private String getWjmc(String wjlx, String wjmc) {
        if ("2".equals(wjlx) || "3".equals(wjlx) || "4".equals(wjlx) || "5".equals(wjlx)) {
            if (wjmc.endsWith(".jpg")) {
                wjmc = wjmc.replaceAll(".jpg", "_00.jpg");
    /**
     * 根据上海数据格式进行封装
     * 层均温:
     * 层高温:
     * 层低温:
     * 各范围均温:
     * 粮温明细:
     * 粮温状态:
     * 异常点个数:
     *
     * @param data
     * @return
     */
    private SH2023Api1302 packageData1302(SH2023Api1302 data) {
        if (StringUtils.isEmpty(data.getLswdzjh())) {
            return data;
        }
        String lswdzjh = data.getLswdzjh();
        String[] split = lswdzjh.split("\\|");
        Map<Integer, List<Double>> map = new HashMap<>();
        Integer ceng;
        Integer errorNum = 0;  //异常点个数
        String lwmx = "";   //粮温明细
        String lwzt = "0";  //粮温状态
        String gfwjw = "";  //各范围均温
        for (String s : split) {
            String[] grain = s.split(",");
            ceng = Integer.valueOf(grain[1]);
            if (null == map.get(ceng)) {
                map.put(ceng, new ArrayList<>());
            }
            if (wjmc.endsWith(".png")) {
                wjmc = wjmc.replaceAll(".png", "_00.png");
            map.get(ceng).add(Double.valueOf(grain[0]));
            lwmx += grain[1] + ":" + grain[2] + ":" + grain[3] + "$" + grain[0];
            if (Double.valueOf(grain[0]) <= -100) {
                lwmx += "$" + "1" + "#";
                errorNum++;
            } else {
                lwmx += "$" + "5" + "#";
            }
        }
        return wjmc;
        String cpjw = "";  //层平均温
        String czgw = "";  //层最高温
        String czdw = "";  //层最低温
        List<Double> payPoints;
        Double sum;
        int num;
        Double tempH;
        Double tempL;
        Double tempA;
        Double tempValue1 = 0.0; //范围均温1
        Double tempValue2 = 0.0; //范围均温2
        Double tempValue3 = 0.0; //范围均温3
        Integer numValue = 0; //计算范围均温
        for (Integer cengNum : map.keySet()) {
            payPoints = map.get(cengNum);
            sum = 0.0;
            num = 0;
            tempH = null;
            tempL = null;
            tempA = 0.0;
            for (Double point : payPoints) {
                if(point > -100){
                    sum += point;
                    num++;
                    if (tempH == null) {
                        tempH = point;
                    }
                    if (tempL == null) {
                        tempL = point;
                    }
                    if (tempH < point) {
                        tempH = point;
                    }
                    if (tempL > point) {
                        tempL = point;
                    }
                }
            }
            if (num > 0) {
                tempA = sum / num;
            }
            cpjw += cengNum + "$" + NumberUtil.keepPrecision(tempA, 1) + "#";
            czgw += cengNum + "$" + tempH + "#";
            czdw += cengNum + "$" + tempL + "#";
            //范围均温封装
            if (cengNum == 1) {
                tempValue1 = NumberUtil.keepPrecision(tempA, 1);
            } else if (cengNum == map.keySet().size()) {
                tempValue3 = NumberUtil.keepPrecision(tempA, 1);
            } else {
                tempValue2 += tempA;
                numValue++;
            }
        }
        if (errorNum > 0) {
            lwzt = "2";
        }
        if (numValue > 0) {
            tempValue2 = NumberUtil.keepPrecision(tempValue2 / numValue, 1);
        }
        gfwjw += tempValue1 + "#";
        if (map.keySet().size() == 2) {
            gfwjw += tempValue3 + "#";
        }
        if (map.keySet().size() > 3) {
            gfwjw += tempValue2 + "#" + tempValue3 + "#";
        }
        data.setCpjw(cpjw);
        data.setCzgw(czgw);
        data.setCzdw(czdw);
        data.setGfwjw(gfwjw);
        data.setLwmx(lwmx);
        data.setLwzt(lwzt);
        data.setYcdgs(errorNum);
        return data;
    }
    /**
@@ -867,28 +981,7 @@
        }
    }
    /**
     * Object类型转变为List
     *
     * @param obj
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> List<T> castList(Object obj, Class<T> clazz) {
        List<T> result = new ArrayList<T>();
        if (obj instanceof List<?>) {
            for (Object o : (List<?>) obj) {
                result.add(clazz.cast(o));
            }
            return result;
        }
        return null;
    }
    private List<SHFinanceDto> copyApi1503(Api1503 data) {
        Api1503 api1503 = data;
    private List<SHFinanceDto> copyApi1503(Api1503 api1503) {
        List<SHFinanceDto> list = new ArrayList<>();
        SHFinanceDto shFinanceDto = new SHFinanceDto();
        shFinanceDto.setDwdm(api1503.getDwdm());
@@ -938,8 +1031,7 @@
        return list;
    }
    private List<SHFinanceDto> copyApi1502(Api1502 data) {
        Api1502 api1502 = data;
    private List<SHFinanceDto> copyApi1502(Api1502 api1502) {
        List<SHFinanceDto> list = new ArrayList<>();
        SHFinanceDto shFinanceDto = new SHFinanceDto();
        shFinanceDto.setDwdm(api1502.getDwdm());
@@ -991,8 +1083,7 @@
        return list;
    }
    private List<SHFinanceDto> copyApi1501(Api1501 data) {
        Api1501 api1501 = data;
    private List<SHFinanceDto> copyApi1501(Api1501 api1501) {
        List<SHFinanceDto> list = new ArrayList<>();
        SHFinanceDto shFinanceDto = new SHFinanceDto();
        shFinanceDto.setDwdm(api1501.getDwdm());
@@ -1089,6 +1180,26 @@
        list.add(shFinanceDto);
    }
    private String getWjmc(String wjlx, String wjmc) {
        if ("2".equals(wjlx) || "3".equals(wjlx) || "4".equals(wjlx) || "5".equals(wjlx)) {
            if (wjmc.endsWith(".jpg")) {
                wjmc = wjmc.replaceAll(".jpg", "_00.jpg");
            }
            if (wjmc.endsWith(".png")) {
                wjmc = wjmc.replaceAll(".png", "_00.png");
            }
        }
        return wjmc;
    }
    private String getYwdh(String wjlx, String wjmc) {
        String ywdh = "";
        String[] s = wjmc.split("_");
        if ("2".equals(wjlx) || "3".equals(wjlx)) {
            ywdh = s[1];
        }
        return ywdh;
    }
    private Object changeObject(Object object) {
        // 使用反射获取属性列表 vo为实体对象名
        Field[] fields = object.getClass().getDeclaredFields();
@@ -1117,4 +1228,11 @@
        }
        return object;
    }
    @Override
    public ResponseDto pullData(ApiParam param, ApiConfs conf) {
        //该协议无此实现
        return null;
    }
}