a01c352d0db6adfe723adacf09db423243ed3f22..c245c39ff88c0cdcfde4435e8a10e7c2a018f28f
2024-12-30 YYC
熏蒸备案新页面
c245c3 对比 | 目录
2024-12-30 YYC
数据同步
5d2ddd 对比 | 目录
已修改10个文件
841 ■■■■■ 文件已修改
src/main/java/com/fzzy/api/utils/FileUtils.java 254 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/async/fzzy40/entity/Fz40DrugLogPeople.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/async/fzzy40/entity/Fz40InoutStockChange.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1023.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1202.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1207.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1310.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/otherview/gd2022/GdApi9201.view.xml 525 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/otherview/gd2022/pr/GDApi9201PR.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/push/gd2022/GD2022ApiRemoteService2022.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/api/utils/FileUtils.java
@@ -1,9 +1,16 @@
package com.fzzy.api.utils;
import com.fzzy.data.ConfigData;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.time.DateFormatUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import ws.schild.jave.Encoder;
import ws.schild.jave.EncoderException;
import ws.schild.jave.MultimediaObject;
import ws.schild.jave.encode.AudioAttributes;
import ws.schild.jave.encode.EncodingAttributes;
import ws.schild.jave.encode.VideoAttributes;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -14,114 +21,177 @@
/**
 * 将文件转为二进制流工具类
 * @author czt
 *
 * @author czt
 */
@Slf4j
@Service(FileUtils.BEAN_ID)
public class FileUtils {
    public static final String BEAN_ID = "base.fileUtil";
    public static final String BEAN_ID = "base.fileUtil";
    @Autowired
    private ConfigData configData;
    @Autowired
    private ConfigData configData;
    /**
     * 根据文件路径将文件转为二进制文件流字符串
     * @param filePath:文件路径
     * @return
     */
    public static String fileToByteString(String filePath) {
        byte[] bytes = file2byte(filePath);
        return toHexString(bytes);
    }
    /**
     * 根据文件路径将文件转为二进制文件流字符串
     *
     * @param filePath:文件路径
     * @return
     */
    public static String fileToByteString(String filePath) {
        byte[] bytes = file2byte(filePath);
        return toHexString(bytes);
    }
    /**
     * 根据文件路径将文件转为二进制数组
     * @param filePath:文件路径
     * @return
     */
    public static byte[] file2byte(String filePath) {
        byte[] buffer = null;
        try {
            File file = new File(filePath);
            FileInputStream fis = new FileInputStream(file);
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] b = new byte[1024];
            int n;
            while ((n = fis.read(b)) != -1) {
                bos.write(b, 0, n);
            }
            fis.close();
            bos.close();
            buffer = bos.toByteArray();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return buffer;
    }
    /**
     * 将二进制数组转为字符串
     * @param byteArray
     * @return
     */
    private static String toHexString(byte[] byteArray) {
        if (byteArray == null || byteArray.length < 1)
            throw new IllegalArgumentException(
                    "this byteArray must not be null or empty");
    /**
     * 根据文件路径将文件转为二进制数组
     *
     * @param filePath:文件路径
     * @return
     */
    public static byte[] file2byte(String filePath) {
        byte[] buffer = null;
        try {
            File file = new File(filePath);
            FileInputStream fis = new FileInputStream(file);
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] b = new byte[1024];
            int n;
            while ((n = fis.read(b)) != -1) {
                bos.write(b, 0, n);
            }
            fis.close();
            bos.close();
            buffer = bos.toByteArray();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return buffer;
    }
        final StringBuilder hexString = new StringBuilder();
        for (int i = 0; i < byteArray.length; i++) {
            if ((byteArray[i] & 0xff) < 0x10)// 0~F前面不零
                hexString.append("0");
            hexString.append(Integer.toHexString(0xFF & byteArray[i]));
        }
        return hexString.toString().toLowerCase();
    }
    /**
     * 将二进制数组转为字符串
     *
     * @param byteArray
     * @return
     */
    private static String toHexString(byte[] byteArray) {
        if (byteArray == null || byteArray.length < 1)
            throw new IllegalArgumentException(
                    "this byteArray must not be null or empty");
    public String getInoutFilePath(Date date) {
        if (null == date) {
            date = new Date();
        }
        final StringBuilder hexString = new StringBuilder();
        for (int i = 0; i < byteArray.length; i++) {
            if ((byteArray[i] & 0xff) < 0x10)// 0~F前面不零
                hexString.append("0");
            hexString.append(Integer.toHexString(0xFF & byteArray[i]));
        }
        return hexString.toString().toLowerCase();
    }
        String basePath = configData.getImgPath() + "INOUT/"
                + DateFormatUtils.format(date, "yyyyMM") + "/";
    public String getInoutFilePath(Date date) {
        if (null == date) {
            date = new Date();
        }
        File file = new File(basePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        String basePath = configData.getImgPath() + "INOUT/"
                + DateFormatUtils.format(date, "yyyyMM") + "/";
        return basePath;
    }
        File file = new File(basePath);
        if (!file.exists()) {
            file.mkdirs();
        }
    public String getSnapFilePath(Date date) {
        if (null == date) {
            date = new Date();
        }
        return basePath;
    }
        String basePath = configData.getImgPath() + "SNAP/"
                + DateFormatUtils.format(date, "yyyyMM") + "/";
        File file = new File(basePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        return basePath;
    }
    public String getSnapFilePath(Date date) {
        if (null == date) {
            date = new Date();
        }
    public String getCommonFilePath(Date date) {
        if (null == date)
            date = new Date();
        String basePath = configData.getImgPath() + "SNAP/"
                + DateFormatUtils.format(date, "yyyyMM") + "/";
        File file = new File(basePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        return basePath;
    }
        String basePath = configData.getImgPath() + "COMMON/"
                + DateFormatUtils.format(date, "yyyyMM") + "/";
    public String getCommonFilePath(Date date) {
        if (null == date)
            date = new Date();
        File file = new File(basePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        return basePath;
    }
        String basePath = configData.getImgPath() + "COMMON/"
                + DateFormatUtils.format(date, "yyyyMM") + "/";
        File file = new File(basePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        return basePath;
    }
    /**
     * 视频压缩
     *
     * @param source 源文件
     * @param target 目标文件
     * @param rate   压缩比
     */
    public static void compre(File source, File target, Integer rate) throws EncoderException {
        try {
            log.info("---------------开始压缩---------------");
            long start = System.currentTimeMillis();
            // 音频编码属性配置
            AudioAttributes audio = new AudioAttributes();
            audio.setCodec("libmp3lame");
            // 设置音频比特率,单位:b (比特率越高,清晰度/音质越好,当然文件也就越大 56000 = 56kb)
            // audio.setBitRate(new Integer(56_000));
            audio.setBitRate(new Integer(10));
            // 设置重新编码的音频流中使用的声道数(1 =单声道,2 = 双声道(立体声))
            audio.setChannels(1);
            // 采样率越高声音的还原度越好,文件越大
            // audio.setSamplingRate(new Integer(44100));
            audio.setSamplingRate(new Integer(22050));
            // 视频编码属性配置
            VideoAttributes video = new VideoAttributes();
            // 设置编码
            video.setCodec("h254");
            //设置音频比特率,单位:b (比特率越高,清晰度/音质越好,当然文件也就越大 5600000 = 5600kb)
            // video.setBitRate(new Integer(5_600_000 / rate));
            video.setBitRate(10 / rate);
            // 设置视频帧率(帧率越低,视频会出现断层,越高让人感觉越连续),这里 除1000是为了单位转换
            video.setFrameRate(15);
            // 编码设置
            EncodingAttributes attr = new EncodingAttributes();
            attr.setOutputFormat("mp4");
            attr.setAudioAttributes(audio);
            attr.setVideoAttributes(video);
            // 设置值编码
            Encoder ec = new Encoder();
            ec.encode(new MultimediaObject(source), target, attr);
            log.info("---------------结束压缩---------------");
            long end = System.currentTimeMillis();
            log.info("压缩前大小:" + source.length() + " 压缩后大小:" + target.length());
            log.info("压缩耗时:" + (end - start));
        } catch (EncoderException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        }
    }
}
src/main/java/com/fzzy/async/fzzy40/entity/Fz40DrugLogPeople.java
@@ -24,8 +24,8 @@
    @Id
    @Column(name = "PEOPLE_ID_", length = 40)
    @PropertyDef(label = "propleId")
    private String propleId;
    @PropertyDef(label = "peopleId")
    private String peopleId;
    @Column(name = "DRUG_LOG_ID_", length = 12)
src/main/java/com/fzzy/async/fzzy40/entity/Fz40InoutStockChange.java
@@ -60,6 +60,14 @@
    @PropertyDef(label = "倒出仓库")
    private String depotIdOut;
    @Column(name = "CHANGE_START_DATE_")
    @PropertyDef(label = "倒仓开始日期", description = "yyyy-MM-dd")
    private Date changeStartDate;
    @Column(name = "CHANGE_END_DATE_")
    @PropertyDef(label = "倒仓结束日期", description = "yyyy-MM-dd")
    private Date changeEndDate;
    @Column(name = "CHANGE_DATE_")
    @PropertyDef(label = "倒仓日期", description = "yyyy-MM-dd")
    private Date changeDate;
src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1023.java
@@ -197,11 +197,11 @@
                infoData.setKqdm(kqdm);
                infoData.setInteType(Constant.API_CATEGORY_13);
                infoData.setInteId(ApiCodeConstant.API_1023);
                infoData.setBizType(PushProtocol.SB_GD_2022.getCode());
                infoData.setInteId(ApiCodeConstant.API_9201);
                infoData.setBizType(PushProtocol.SB_GD_2023.getCode());
                infoData.setUpdateTime(new Date());
                infoData.setDataId(data.getXzbm());
                apiInfoList = apiInfoDataRep.getDataByInteAndData(ApiCodeConstant.API_1023, data.getXzbm(), kqdm);
                apiInfoList = apiInfoDataRep.getDataByInteAndData(ApiCodeConstant.API_9201, data.getXzbm(), kqdm);
                if (null == apiInfoList || apiInfoList.isEmpty()) {
                    GD2022Api1023.setCzbz(Constant.CZBZ_I);
src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1202.java
@@ -148,9 +148,14 @@
                //粮权单位归属代码
                List<Api1208> dataByHwdm = api1208Rep.findDataByHwdm(apiData.getHwdm());
                if(null != dataByHwdm && dataByHwdm.size() > 0){
                    apiData.setLqgsdwdm(StringUtils.isEmpty(dataByHwdm.get(0).getLqgsdwdm()) ? apiData.getHwdm().substring(0, 18) : dataByHwdm.get(0).getLqgsdwdm());
                if (null != dataByHwdm && dataByHwdm.size() > 0) {
                    apiData.setLqgsdwdm(StringUtils.isEmpty(dataByHwdm.get(0).getLqgsdwdm()) ? apiData.getKqdm() : dataByHwdm.get(0).getLqgsdwdm());
                }else {
                    apiData.setLqgsdwdm(apiData.getKqdm());
                }
                apiData.setSlr("售粮人");
                apiData.setSlrdz("售粮人地址");
                apiData.setBz(StringUtils.isEmpty(sysData.getRemarks()) ? "备注" : sysData.getRemarks());
                apiData.setXxdz(StringUtils.isEmpty(sysData.getUserAddress()) ? "详细地址" : sysData.getUserAddress());
@@ -164,7 +169,7 @@
                //生成方式
                apiData.setScfs(1);
                if(StringUtils.isNotEmpty(sysData.getRecordStatus()) && sysData.getRecordStatus().equals("ADD")){
                if (StringUtils.isNotEmpty(sysData.getRecordStatus()) && sysData.getRecordStatus().equals("ADD")) {
                    apiData.setScfs(2);
                    apiData.setSdblyy("库区停电导致无法按流程进行出库");
                }
@@ -254,7 +259,6 @@
                apiData.setBizId(sysData.getId());
                apiData.setKqdm(kqdm);
                apiData.setSyncTime(new Date());
                apiData.setBz(null == sysData.getRemarks() ? "备注" : sysData.getRemarks());
                apiData.setKlyy("扣量原因");
                apiData.setCmqrmgryxm(StringUtils.isEmpty(sysData.getRegisterUser()) ? "登记人" : sysData.getRegisterUser());
@@ -263,6 +267,8 @@
                //04:表示农用车车牌号,绿底白字; LS:表示临时虚拟号牌,仅限于售 粮车无固定号牌时使用
                apiData.setCchlx("01");
                apiData.setLdd("装粮地点");
                apiData.setZkj(0.0);
                apiData.setZlfyzkl(0.0);
                apiData.setQzsfzkl(0.0);
                apiData.setQzzzzkl(0.0);
                apiData.setQzgwcmkl(0.0);
src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1207.java
@@ -96,6 +96,8 @@
                apiData.setDchwdm(api1105Out.getHwdm());
                apiData.setDrhwdm(api1105In.getHwdm());
                apiData.setDcrq(sysData.getChangeDate());
                apiData.setDcksrq(sysData.getChangeStartDate());
                apiData.setDcjsrq(sysData.getChangeEndDate());
                apiData.setDcsl(sysData.getNumber());
                apiData.setBzw(sysData.getBzw());
                apiData.setBzbjs(sysData.getBzbjs());
src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1310.java
@@ -106,8 +106,8 @@
                api1310.setRkrq(fz40Quality.getStoreDate());
                api1310.setJylb(fz40Quality.getType());
                api1310.setJysj(fz40Quality.getTime());
                api1310.setJydw(fz40Quality.getUser());
                api1310.setJyr(fz40Quality.getUser());
                api1310.setJydw(StringUtils.isEmpty(fz40Quality.getUnit()) ? "检验单位" : fz40Quality.getUnit());
                api1310.setJyr(StringUtils.isEmpty(fz40Quality.getUser()) ? "检验人" : fz40Quality.getUser());
                api1310.setJyyj(fz40Quality.getStandard());
                if (StringUtils.isEmpty(fz40Quality.getZblb())) {
                    api1310.setZblb("2");
@@ -139,9 +139,6 @@
                api1310.setZbjgpd(fz40Quality.getResult());
                api1310.setQfrq(fz40Quality.getTime());
                api1310.setBgcjsj(fz40Quality.getTime());
                if (fz40Quality.getUser().isEmpty()){
                    fz40Quality.setUser(fz40Quality.getCheckUser());
                }
                api1310.setShrxm(fz40Quality.getShrxm().contains("、")?fz40Quality.getShrxm().replace('、','|'):fz40Quality.getShrxm());
                if (null == fz40Quality.getCheckTime()) {
                    fz40Quality.setCheckTime(DateUtils.addDays(fz40Quality.getTime(), -1));
src/main/java/com/fzzy/otherview/gd2022/GdApi9201.view.xml
@@ -6,11 +6,11 @@
    <DataType name="dtMain">
      <Property name="creationType">com.fzzy.api.entity.Api9201</Property>
      <PropertyDef name="bizId">
        <Property/>
        <Property></Property>
        <Property name="label">业务id</Property>
      </PropertyDef>
      <PropertyDef name="kqdm">
        <Property/>
        <Property></Property>
        <Property name="label">库区代码</Property>
      </PropertyDef>
      <PropertyDef name="syncTime">
@@ -18,15 +18,15 @@
        <Property name="label">同步时间</Property>
      </PropertyDef>
      <PropertyDef name="id">
        <Property/>
        <Property></Property>
        <Property name="label">id</Property>
      </PropertyDef>
      <PropertyDef name="xzbm">
        <Property/>
        <Property></Property>
        <Property name="label">熏蒸备案编号</Property>
      </PropertyDef>
      <PropertyDef name="kqmc">
        <Property/>
        <Property></Property>
        <Property name="label">库区名称</Property>
      </PropertyDef>
      <PropertyDef name="tbrq">
@@ -34,11 +34,11 @@
        <Property name="label">填报日期</Property>
      </PropertyDef>
      <PropertyDef name="dwdm">
        <Property/>
        <Property></Property>
        <Property name="label">单位代码</Property>
      </PropertyDef>
      <PropertyDef name="dwmc">
        <Property/>
        <Property></Property>
        <Property name="label">单位名称</Property>
      </PropertyDef>
      <PropertyDef name="sqxzrq">
@@ -46,75 +46,75 @@
        <Property name="label">申请熏蒸日期</Property>
      </PropertyDef>
      <PropertyDef name="fzr">
        <Property/>
        <Property></Property>
        <Property name="label">负责人</Property>
      </PropertyDef>
      <PropertyDef name="fzrdh">
        <Property/>
        <Property></Property>
        <Property name="label">负责人电话</Property>
      </PropertyDef>
      <PropertyDef name="xcfzr">
        <Property/>
        <Property></Property>
        <Property name="label">现场负责人</Property>
      </PropertyDef>
      <PropertyDef name="xcfzrzw">
        <Property/>
        <Property></Property>
        <Property name="label">现场负责人职务</Property>
      </PropertyDef>
      <PropertyDef name="xcfzrdh">
        <Property/>
        <Property></Property>
        <Property name="label">现场负责人电话</Property>
      </PropertyDef>
      <PropertyDef name="tbr">
        <Property/>
        <Property></Property>
        <Property name="label">填表人</Property>
      </PropertyDef>
      <PropertyDef name="tbrdh">
        <Property/>
        <Property></Property>
        <Property name="label">填表人电话</Property>
      </PropertyDef>
      <PropertyDef name="sfszjjxd">
        <Property/>
        <Property></Property>
        <Property name="label">是否设置警戒线(东)</Property>
      </PropertyDef>
      <PropertyDef name="sfszjjxx">
        <Property/>
        <Property></Property>
        <Property name="label">是否设置警戒线(西)</Property>
      </PropertyDef>
      <PropertyDef name="sfszjjxn">
        <Property/>
        <Property></Property>
        <Property name="label">是否设置警戒线(南)</Property>
      </PropertyDef>
      <PropertyDef name="sfszjjxb">
        <Property/>
        <Property></Property>
        <Property name="label">是否设置警戒线(北)</Property>
      </PropertyDef>
      <PropertyDef name="ssxzzystqybqk">
        <Property/>
        <Property></Property>
        <Property name="label">实施熏蒸作业时天气预报情况</Property>
      </PropertyDef>
      <PropertyDef name="xzssgcap">
        <Property/>
        <Property></Property>
        <Property name="label">熏蒸安排及实施过程</Property>
      </PropertyDef>
      <PropertyDef name="aqfhjyjcccs">
        <Property/>
        <Property></Property>
        <Property name="label">安全防护及应急处置措施</Property>
      </PropertyDef>
      <PropertyDef name="xzzysx">
        <Property/>
        <Property></Property>
        <Property name="label">熏蒸注意事项</Property>
      </PropertyDef>
      <PropertyDef name="fileStorageId">
        <Property/>
        <Property></Property>
        <Property name="label">文件存储ID</Property>
      </PropertyDef>
      <PropertyDef name="yjmc">
        <Property/>
        <Property></Property>
        <Property name="label">药剂名称</Property>
      </PropertyDef>
      <PropertyDef name="yjlx">
        <Property/>
        <Property></Property>
        <Property name="label">药剂类型/型号</Property>
      </PropertyDef>
      <PropertyDef name="yjyxqz">
@@ -126,15 +126,15 @@
        <Property name="label">领取数量</Property>
      </PropertyDef>
      <PropertyDef name="sysbjfs">
        <Property/>
        <Property></Property>
        <Property name="label">施药设备及方式</Property>
      </PropertyDef>
      <PropertyDef name="zcdd">
        <Property/>
        <Property></Property>
        <Property name="label">暂存地点</Property>
      </PropertyDef>
      <PropertyDef name="lqr">
        <Property/>
        <Property></Property>
        <Property name="label">领取人</Property>
      </PropertyDef>
      <PropertyDef name="lqrq">
@@ -142,24 +142,24 @@
        <Property name="label">领取时间</Property>
      </PropertyDef>
      <PropertyDef name="czbz">
        <Property/>
        <Property></Property>
        <Property name="label">操作标志</Property>
      </PropertyDef>
      <PropertyDef name="zhgxsj">
        <Property name="dataType">Date</Property>
        <Property name="label">更新时间</Property>
      </PropertyDef>
      <PropertyDef name="dtl">
        <Property/>
        <Property name="label">粮情明细表</Property>
      <PropertyDef name="dtls">
        <Property></Property>
        <Property name="dataType">[dtDtl]</Property>
      </PropertyDef>
      <PropertyDef name="way">
        <Property/>
        <Property name="label">熏蒸备案方式</Property>
      <PropertyDef name="ways">
        <Property></Property>
        <Property name="dataType">[dtWay]</Property>
      </PropertyDef>
      <PropertyDef name="people">
        <Property/>
        <Property name="label">粮情明细表</Property>
      <PropertyDef name="peoples">
        <Property></Property>
        <Property name="dataType">[dtPeople]</Property>
      </PropertyDef>
    </DataType>
    <DataType name="dtGBArea">
@@ -223,114 +223,6 @@
        <Property name="label">接口报文</Property>
      </PropertyDef>
    </DataType>
    <DataType name="dtDtl">
      <Property name="creationType">com.fzzy.push.gd2022.dto.Gd2022Api1023Dtl</Property>
      <PropertyDef name="cfdm">
        <Property/>
      </PropertyDef>
      <PropertyDef name="lspzdm">
        <Property/>
      </PropertyDef>
      <PropertyDef name="lsxzdm">
        <Property/>
      </PropertyDef>
      <PropertyDef name="lsdjdm">
        <Property/>
      </PropertyDef>
      <PropertyDef name="lssl">
        <Property name="dataType">Double</Property>
      </PropertyDef>
      <PropertyDef name="sf">
        <Property name="dataType">Double</Property>
      </PropertyDef>
      <PropertyDef name="zz">
        <Property name="dataType">Double</Property>
      </PropertyDef>
      <PropertyDef name="lw">
        <Property name="dataType">Double</Property>
      </PropertyDef>
      <PropertyDef name="cw">
        <Property name="dataType">Double</Property>
      </PropertyDef>
      <PropertyDef name="cnsd">
        <Property name="dataType">Double</Property>
      </PropertyDef>
      <PropertyDef name="clfs">
        <Property/>
      </PropertyDef>
      <PropertyDef name="cfmc">
        <Property/>
      </PropertyDef>
      <PropertyDef name="rkrq">
        <Property name="dataType">Date</Property>
      </PropertyDef>
      <PropertyDef name="hc">
        <Property/>
      </PropertyDef>
      <PropertyDef name="cldjpd">
        <Property/>
      </PropertyDef>
      <PropertyDef name="ldtj">
        <Property name="dataType">Double</Property>
      </PropertyDef>
      <PropertyDef name="kjtj">
        <Property name="dataType">Double</Property>
      </PropertyDef>
      <PropertyDef name="lddwyyl">
        <Property name="dataType">Double</Property>
      </PropertyDef>
      <PropertyDef name="kjdwyyl">
        <Property name="dataType">Double</Property>
      </PropertyDef>
      <PropertyDef name="zyyl">
        <Property name="dataType">Double</Property>
      </PropertyDef>
      <PropertyDef name="qmx">
        <Property/>
      </PropertyDef>
      <PropertyDef name="jhxzksrq">
        <Property name="dataType">Date</Property>
      </PropertyDef>
      <PropertyDef name="jhxzjsrq">
        <Property name="dataType">Date</Property>
      </PropertyDef>
    </DataType>
    <DataType name="dtPeople">
      <Property name="creationType">com.fzzy.push.gd2022.dto.Gd2022Api1023People</Property>
      <PropertyDef name="xm">
        <Property/>
      </PropertyDef>
      <PropertyDef name="zw">
        <Property/>
      </PropertyDef>
      <PropertyDef name="zyzg">
        <Property/>
      </PropertyDef>
      <PropertyDef name="stzk">
        <Property/>
      </PropertyDef>
      <PropertyDef name="xzrwfg">
        <Property/>
      </PropertyDef>
      <PropertyDef name="sfwb">
        <Property/>
      </PropertyDef>
    </DataType>
    <DataType name="dtWay">
      <Property name="creationType">com.fzzy.push.gd2022.dto.Gd2022Api1023Way</Property>
      <PropertyDef name="xznd">
        <Property name="dataType">Double</Property>
      </PropertyDef>
      <PropertyDef name="mbsj">
        <Property name="dataType">Integer</Property>
      </PropertyDef>
      <PropertyDef name="xzfs">
        <Property/>
      </PropertyDef>
      <PropertyDef name="sqfs">
        <Property/>
      </PropertyDef>
    </DataType>
    <DataType name="dtParam">
      <Property name="creationType">com.fzzy.api.data.ApiParam</Property>
      <PropertyDef name="kqdm">
@@ -353,6 +245,181 @@
          <Property name="keyProperty">code</Property>
          <Property name="valueProperty">name</Property>
        </Property>
      </PropertyDef>
    </DataType>
    <DataType name="dtPeople">
      <Property name="creationType">com.fzzy.push.gd2022.dto.Gd2022Api1023People</Property>
      <PropertyDef name="xm">
        <Property></Property>
        <Property name="label">姓名</Property>
      </PropertyDef>
      <PropertyDef name="zw">
        <Property></Property>
        <Property name="label">职务</Property>
      </PropertyDef>
      <PropertyDef name="zyzg">
        <Property></Property>
        <Property name="label">职业资格</Property>
      </PropertyDef>
      <PropertyDef name="stzk">
        <Property></Property>
        <Property name="label">身体状况</Property>
      </PropertyDef>
      <PropertyDef name="xzrwfg">
        <Property></Property>
        <Property name="label">熏蒸任务分工</Property>
      </PropertyDef>
      <PropertyDef name="sfwb">
        <Property></Property>
        <Property name="label">是否外包</Property>
      </PropertyDef>
    </DataType>
    <DataType name="dtWay">
      <Property name="creationType">com.fzzy.push.gd2022.dto.Gd2022Api1023Way</Property>
      <PropertyDef name="xznd">
        <Property></Property>
        <Property name="label">设定熏蒸浓度(ml/m3)</Property>
        <Property name="dataType">Double</Property>
        <Property name="displayFormat">#0.000</Property>
      </PropertyDef>
      <PropertyDef name="mbsj">
        <Property></Property>
        <Property name="label">密闭时间(天)</Property>
        <Property name="dataType">Integer</Property>
      </PropertyDef>
      <PropertyDef name="xzfs">
        <Property></Property>
        <Property name="label">熏蒸方式</Property>
      </PropertyDef>
      <PropertyDef name="sqfs">
        <Property></Property>
        <Property name="label">散气方式</Property>
      </PropertyDef>
    </DataType>
    <DataType name="dtDtl">
      <Property name="creationType">com.fzzy.push.gd2022.dto.Gd2022Api1023Dtl</Property>
      <PropertyDef name="cfdm">
        <Property></Property>
        <Property name="label">仓房/油罐代码</Property>
      </PropertyDef>
      <PropertyDef name="lspzdm">
        <Property></Property>
        <Property name="label">粮食品种代码</Property>
        <Property name="mapping">
          <Property name="mapValues">${dorado.getDataProvider(&quot;apiTriggerService#trigger&quot;).getResult(&quot;LSPZ&quot;)}</Property>
          <Property name="keyProperty">code</Property>
          <Property name="valueProperty">name</Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="lsxzdm">
        <Property></Property>
        <Property name="label">粮食性质代码</Property>
        <Property name="mapping">
          <Property name="mapValues">${dorado.getDataProvider(&quot;apiTriggerService#trigger&quot;).getResult(&quot;LSXZ&quot;)}</Property>
          <Property name="keyProperty">code</Property>
          <Property name="valueProperty">name</Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="lsdjdm">
        <Property></Property>
        <Property name="label">粮食等级代码</Property>
        <Property name="mapping">
          <Property name="keyProperty">code</Property>
          <Property name="mapValues">${dorado.getDataProvider(&quot;apiTriggerService#trigger&quot;).getResult(&quot;LSDJ&quot;)}</Property>
          <Property name="valueProperty">name</Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="lssl">
        <Property name="dataType">Double</Property>
        <Property name="label">粮食数量(吨)</Property>
        <Property name="displayFormat">#0.000</Property>
      </PropertyDef>
      <PropertyDef name="sf">
        <Property name="dataType">Double</Property>
        <Property name="label">水份</Property>
        <Property name="displayFormat">#0.000</Property>
      </PropertyDef>
      <PropertyDef name="zz">
        <Property name="dataType">Double</Property>
        <Property name="label">杂志</Property>
        <Property name="displayFormat">#0.000</Property>
      </PropertyDef>
      <PropertyDef name="lw">
        <Property name="dataType">Double</Property>
        <Property name="label">粮温</Property>
        <Property name="displayFormat">#0.000</Property>
      </PropertyDef>
      <PropertyDef name="cw">
        <Property name="dataType">Double</Property>
        <Property name="label">仓温</Property>
        <Property name="displayFormat">#0.000</Property>
      </PropertyDef>
      <PropertyDef name="cnsd">
        <Property name="dataType">Double</Property>
        <Property name="label">仓内湿度</Property>
        <Property name="displayFormat">#0.000</Property>
      </PropertyDef>
      <PropertyDef name="clfs">
        <Property></Property>
        <Property name="label">储粮方式</Property>
      </PropertyDef>
      <PropertyDef name="rkrq">
        <Property name="dataType">Date</Property>
        <Property name="label">入库日期</Property>
      </PropertyDef>
      <PropertyDef name="hc">
        <Property></Property>
        <Property name="label">害虫</Property>
      </PropertyDef>
      <PropertyDef name="cldjpd">
        <Property></Property>
        <Property name="label">虫粮等级判定</Property>
        <Property name="mapping">
          <Property name="mapValues">${dorado.getDataProvider(&quot;apiTriggerService#trigger&quot;).getResult(&quot;CLDJPD&quot;)}</Property>
          <Property name="keyProperty">code</Property>
          <Property name="valueProperty">name</Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="ldtj">
        <Property name="dataType">Double</Property>
        <Property name="label">粮堆体积(m3)</Property>
        <Property name="displayFormat">#0.000</Property>
      </PropertyDef>
      <PropertyDef name="kjtj">
        <Property name="dataType">Double</Property>
        <Property name="label">空间体积(m3)</Property>
        <Property name="displayFormat">#0.000</Property>
      </PropertyDef>
      <PropertyDef name="lddwyyl">
        <Property name="dataType">Double</Property>
        <Property name="label">粮堆单位用药量</Property>
        <Property name="displayFormat">#0.000</Property>
      </PropertyDef>
      <PropertyDef name="kjdwyyl">
        <Property name="dataType">Double</Property>
        <Property name="label">空间单位用药量</Property>
        <Property name="displayFormat">#0.000</Property>
      </PropertyDef>
      <PropertyDef name="zyyl">
        <Property name="dataType">Double</Property>
        <Property name="label">总用药量</Property>
        <Property name="displayFormat">#0.000</Property>
      </PropertyDef>
      <PropertyDef name="qmx">
        <Property></Property>
        <Property name="label">气密性</Property>
      </PropertyDef>
      <PropertyDef name="jhxzksrq">
        <Property name="dataType">Date</Property>
        <Property name="label">计划熏蒸开始日期</Property>
      </PropertyDef>
      <PropertyDef name="jhxzjsrq">
        <Property name="dataType">Date</Property>
        <Property name="label">计划熏蒸结束日期</Property>
      </PropertyDef>
      <PropertyDef name="cfmc">
        <Property></Property>
        <Property name="label">仓房名称</Property>
      </PropertyDef>
    </DataType>
  </Model>
@@ -469,6 +536,18 @@
        <Property name="width">100</Property>
      </ToolBarButton>
      <Separator/>
      <ToolBarButton>
        <ClientEvent name="onClick">var cur = view.get(&quot;#dgMain&quot;).getCurrentItem();&#xD;
if(cur){&#xD;
    view.get(&quot;#dialogDtl&quot;).show();&#xD;
}else{&#xD;
    $alert(&quot;请勾选需要修改的数据!&quot;);&#xD;
}</ClientEvent>
        <Property name="exClassName">toolbar-button-warm</Property>
        <Property name="iconClass">fa fa-search</Property>
        <Property name="width">100</Property>
        <Property name="caption">查看详情</Property>
      </ToolBarButton>
      <ToolBarButton>
        <ClientEvent name="onClick">var select = view.get(&quot;#dgMain&quot;).get(&quot;selection&quot;);&#xD;
if(select &amp;&amp; select.length > 0){&#xD;
@@ -782,7 +861,7 @@
                  </Button>
                </Container>
                <DataGrid id="dataPeoples">
                  <Property name="dataPath">#.people</Property>
                  <Property name="dataPath">#.peoples</Property>
                  <Property name="dataSet">dsMain</Property>
                  <DataColumn name="xm">
                    <Property name="property">xm</Property>
@@ -851,7 +930,7 @@
                  </Button>
                </Container>
                <DataGrid id="dataWays">
                  <Property name="dataPath">#.way</Property>
                  <Property name="dataPath">#.ways</Property>
                  <Property name="dataSet">dsMain</Property>
                  <DataColumn name="xznd">
                    <Property name="property">xznd</Property>
@@ -1069,6 +1148,152 @@
      </Children>
      <Tools/>
    </Dialog>
    <Dialog id="addDtl">
      <Property name="caption">熏蒸作业的储粮粮情明细</Property>
      <Property name="width">80%</Property>
      <Buttons>
        <Button>
          <ClientEvent name="onClick">var cur = view.get(&quot;#dgDtl&quot;).getCurrentItem();&#xD;
view.get(&quot;#updateSave&quot;).execute(function(){&#xD;
    self.get(&quot;parent&quot;).hide();&#xD;
});</ClientEvent>
          <Property name="caption">确定</Property>
          <Property name="iconClass">fa fa-check</Property>
        </Button>
        <Button>
          <ClientEvent name="onClick">var cur = view.get(&quot;#dgMain&quot;).getCurrentItem();&#xD;
self.get(&quot;parent&quot;).hide();&#xD;
if(cur) cur.cancel();</ClientEvent>
          <Property name="caption">取消</Property>
          <Property name="iconClass">fa fa-times</Property>
        </Button>
      </Buttons>
      <Children>
        <AutoForm>
          <Property name="dataSet">dsMain</Property>
          <Property name="cols">*,*,*,*</Property>
          <Property name="labelPosition">top</Property>
          <Property name="labelSeparator">:</Property>
          <Property name="dataPath">#.dtls</Property>
          <AutoFormElement>
            <Property name="name">cfdm</Property>
            <Property name="property">cfdm</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">lspzdm</Property>
            <Property name="property">lspzdm</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">lsxzdm</Property>
            <Property name="property">lsxzdm</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">lsdjdm</Property>
            <Property name="property">lsdjdm</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">lssl</Property>
            <Property name="property">lssl</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">sf</Property>
            <Property name="property">sf</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">zz</Property>
            <Property name="property">zz</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">lw</Property>
            <Property name="property">lw</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">cw</Property>
            <Property name="property">cw</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">cnsd</Property>
            <Property name="property">cnsd</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">clfs</Property>
            <Property name="property">clfs</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">rkrq</Property>
            <Property name="property">rkrq</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">hc</Property>
            <Property name="property">hc</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">cldjpd</Property>
            <Property name="property">cldjpd</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">ldtj</Property>
            <Property name="property">ldtj</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">kjtj</Property>
            <Property name="property">kjtj</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">lddwyyl</Property>
            <Property name="property">lddwyyl</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">kjdwyyl</Property>
            <Property name="property">kjdwyyl</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">zyyl</Property>
            <Property name="property">zyyl</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">qmx</Property>
            <Property name="property">qmx</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">jhxzksrq</Property>
            <Property name="property">jhxzksrq</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">jhxzjsrq</Property>
            <Property name="property">jhxzjsrq</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">cfmc</Property>
            <Property name="property">cfmc</Property>
            <Editor/>
          </AutoFormElement>
        </AutoForm>
      </Children>
      <Tools/>
    </Dialog>
    <UpdateAction id="updateDelDtl">
      <Property name="dataResolver">gDApi9201PR#updateSave</Property>
      <Property name="confirmMessage">当前数据删除后无法恢复,请确认要删除么?</Property>
@@ -1078,7 +1303,7 @@
      </UpdateItem>
    </UpdateAction>
    <UpdateAction id="updateSave">
      <Property name="dataResolver">gDApi1023PR#saveData</Property>
      <Property name="dataResolver">gDApi9201PR#updateSave</Property>
      <UpdateItem>
        <Property name="dataPath">[#current]</Property>
        <Property name="dataSet">dsMain</Property>
@@ -1099,7 +1324,7 @@
      <Property name="items">是,否</Property>
    </ListDropDown>
    <ListDropDown id="listDropZG">
      <Property name="items">初级,中级,高级</Property>
      <Property name="items">初级,中级,高级,培训合格</Property>
    </ListDropDown>
  </View>
</ViewConfig>
src/main/java/com/fzzy/otherview/gd2022/pr/GDApi9201PR.java
@@ -1,6 +1,8 @@
package com.fzzy.otherview.gd2022.pr;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson2.JSON;
import com.bstek.dorado.annotation.DataProvider;
import com.bstek.dorado.annotation.DataResolver;
import com.bstek.dorado.annotation.Expose;
@@ -15,6 +17,9 @@
import com.fzzy.api.service.ApiRemoteService;
import com.fzzy.api.utils.ContextUtil;
import com.fzzy.api.view.repository.Api9201Rep;
import com.fzzy.push.gd2022.dto.Gd2022Api1023Dtl;
import com.fzzy.push.gd2022.dto.Gd2022Api1023People;
import com.fzzy.push.gd2022.dto.Gd2022Api1023Way;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -64,6 +69,12 @@
        if (null == param) {
            org.springframework.data.domain.Page<Api9201> japPage = api9201Rep.findAll(pageable);
            page.setEntityCount((int) japPage.getTotalElements());
            for (Api9201 api9201 : japPage.getContent()) {
                api9201.setDtls(JSONArray.parseArray(api9201.getDtl(), Gd2022Api1023Dtl.class));
                api9201.setPeoples(JSONArray.parseArray(api9201.getPeople(), Gd2022Api1023People.class));
                api9201.setWays(JSONArray.parseArray(api9201.getWay(), Gd2022Api1023Way.class));
            }
            page.setEntities(japPage.getContent());
            return;
@@ -114,9 +125,10 @@
        // 手动将doradoEntity对象转换为标准Bean对象
        Api9201 data = new Api9201();
        BeanUtils.copyProperties(entity, data);
        data.setDtl(JSON.toJSONString(data.getDtls()));
        data.setPeople(JSON.toJSONString(data.getPeoples()));
        data.setWay(JSON.toJSONString(data.getWays()));
        data.setKqdm(data.getKqdm().trim());
        api9201Rep.save(data);
    }
src/main/java/com/fzzy/push/gd2022/GD2022ApiRemoteService2022.java
@@ -789,6 +789,11 @@
            apiData.setZhgxsj(DateUtils.addSeconds(new Date(), -10));
            return JSON.toJSONString(apiData);
        }
        if (Constant.API_CODE_9201.equals(inteId)) {
            Api9201 apiData = (Api9201) data;
            apiData.setZhgxsj(DateUtils.addSeconds(new Date(), -10));
            return JSON.toJSONString(apiData);
        }
        if (ApiCodeConstant.API_2001.equals(inteId)) {
            Gd2022Api2001 apiData = (Gd2022Api2001) data;
            //校验统一编码是否为空,为空则查询信息进行赋值