YYC
2023-08-18 0df1d5c695a7231ed2d9ea032b96975077593f05
文件同步
已修改1个文件
已添加3个文件
347 ■■■■■ 文件已修改
src/main/java/com/fzzy/async/fzzy40/Fzzy40SyncService12.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/async/fzzy40/entity/Fz40FileInfo.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1109.java 244 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/async/fzzy40/repository/Fzzy40Sync1109Rep.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/async/fzzy40/Fzzy40SyncService12.java
@@ -41,6 +41,8 @@
    private Fzzy40Sync1209 fzzySync1209;
    @Autowired
    private Fzzy40Sync1210 fzzySync1210;
    @Autowired
    private Fzzy40Sync1109 fzzySync1109;
    @Override
    public String getProtocol() {
@@ -79,13 +81,13 @@
        //倒仓信息同步
        fzzySync1207.syncData(kqdm, deptId, start, end);
        //出入库文件信息同步  TODO
        //出入库文件信息同步
        fzzySync1109.syncData(kqdm, deptId, start, end);
        //粮食库存同步  TODO
        //粮食库存同步
        fzzySync1208.syncData(kqdm, deptId, start, end);
        //粮食性质转变信息同步  TODO
        //粮食性质转变信息同步
        fzzySync1210.syncData(kqdm, deptId, start, end);
src/main/java/com/fzzy/async/fzzy40/entity/Fz40FileInfo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package com.fzzy.async.fzzy40.entity;
import com.bstek.dorado.annotation.PropertyDef;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
 * é™„件信息,系统所有类型附件均使用该类
 * <p>
 * å…¶ä¸­å›¾ç‰‡ä¿¡æ¯ï¼Œæ”¯æŒç›´æŽ¥ä¿å­˜åˆ°æ•°æ®åº“中,使用字段:imgData
 * <p>
 * é™„件信息全部保存在服务器硬盘中,不再保存数据库
 *
 * @author Andy
 */
@Data
@Entity
@Table(name = "D_FILE")
public class Fz40FileInfo implements Serializable {
    private static final long serialVersionUID = 86018008520229637L;
    @Id
    @Column(name = "FILE_ID_", length = 40)
    @PropertyDef(label = "附件ID")
    private String fileId;
    @PropertyDef(label = "组织编号")
    @Column(name = "COMPANY_ID_", length = 10)
    private String companyId;
    @Column(name = "BIZ_ID_", length = 40)
    @PropertyDef(label = "业务ID")
    private String bizId;
    @Column(name = "BIZ_TAG_", length = 20)
    @PropertyDef(label = "业务标签", description = "附件在绑定业务的时候可能需要其他标识区分")
    private String bizTag;
    @PropertyDef(label = "文件名称")
    @Column(name = "FILE_NAME_", length = 100)
    private String fileName;
    @PropertyDef(label = "创建时间")
    @Column(name = "CREATE_TIME_")
    private Date createTime;
    public Fz40FileInfo() {
        super();
    }
    public Fz40FileInfo(String fileName, String type, String imgDataStr, Date createTime) {
        this.fileName = fileName;
        this.createTime = createTime;
    }
    public Fz40FileInfo(Fz40FileInfo file) {
        this.createTime = file.getCreateTime();
        this.fileName = file.getFileName();
    }
}
src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1109.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,244 @@
package com.fzzy.async.fzzy40.impl;
import com.fzzy.api.Constant;
import com.fzzy.api.entity.Api1109;
import com.fzzy.api.entity.ApiLog;
import com.fzzy.api.utils.ContextUtil;
import com.fzzy.api.utils.FileUtil;
import com.fzzy.api.view.repository.Api1109Rep;
import com.fzzy.api.view.repository.ApiLogRep;
import com.fzzy.async.fzzy40.entity.Fz40FileInfo;
import com.fzzy.async.fzzy40.entity.Fz40InoutRecord;
import com.fzzy.async.fzzy40.repository.Fzzy40Sync1109Rep;
import com.fzzy.async.fzzy40.repository.Fzzy40Sync1202Rep;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
/**
 * æ–‡ä»¶ä¿¡æ¯
 */
@Slf4j
@Component
public class Fzzy40Sync1109 {
    private final static String IMG_START_C = "C_";
    private final static String IMG_START_R = "R_";
    /**
     * å›¾ç‰‡ç±»åž‹
     */
    private final static String IMG_TYPE_1 = "1";    //库区鸟瞰图
    private final static String IMG_TYPE_2 = "2";    //入库图片
    private final static String IMG_TYPE_3 = "3";    //出库图片
    private final static String IMG_TYPE_4 = "4";    //入库检斤视频
    private final static String IMG_TYPE_5 = "5";    //出库检斤视频
    private final static String IMG_TYPE_104 = "104";//熏蒸备案接口附件,用于广东省
    /**
     * ä¸šåŠ¡ç±»åž‹
     */
    private final static String BIZ_TAG_WEIGHT_FULL = "WEIGHT_FULL";
    private final static String BIZ_TAG_WEIGHT_EMPTY = "WEIGHT_EMPTY";
    private final static String BIZ_TAG_REGISTER = "REGISTER";
    private final static String BIZ_TAG_HANDLE = "HANDLE";
    @Autowired
    private Fzzy40Sync1109Rep fzzySync1109Rep;
    @Autowired
    private Fzzy40Sync1202Rep fzzySync1202Rep;
    @Autowired
    private Api1109Rep api1109Rep;
    @Autowired
    private ApiLogRep apiLogRep;
    @Autowired
    private FileUtil fileUtil;
    /**
     * åŒæ­¥æ–‡ä»¶æŽ¥å£
     *
     * @param deptId
     * @param start
     * @param end
     */
    public void syncData(String kqdm, String deptId, Date start, Date end) {
        log.info("-------------1109接口数据开始同步------------------");
        //同步数据,只记录失败的信息
        ApiLog apiLog = new ApiLog();
        apiLog.setType(ApiLog.TYPE_SYNC);
        apiLog.setKqdm(deptId);
        apiLog.setUploadTime(new Date());
        apiLog.setInteId(Constant.API_CODE_1109);
        apiLog.setStatus(99);
        apiLog.setId(ContextUtil.getUUID());
        try {
            List<Fz40FileInfo> list = fzzySync1109Rep.listFileInfo(start, end);
            if (null == list || list.isEmpty()) {
                log.info("-------------没有获取到文件信息------------------");
                return;
            }
            Map<String, Integer> map = new HashMap<>();
            Api1109 apiData;
            String wjlx;
            String wjmc;
            List<Api1109> api1109List;
            List<Fz40InoutRecord> listInout;
            for (Fz40FileInfo sysData : list) {
                if (StringUtils.isEmpty(sysData.getBizId())) {
                    continue;
                }
                //根据图片id查询对应出入库信息
                listInout = fzzySync1202Rep.listInoutRecordById(sysData.getBizId());
                if (null == listInout || listInout.isEmpty()) {
                    continue;
                }
                //若出入库信息为删除或者错误状态,则不同步
                if ("DEL".equals(listInout.get(0).getRecordStatus()) || "ERROR".equals(listInout.get(0).getRecordStatus())) {
                    continue;
                }
                //若出入库信息中入库重量为空或为0,则不同步
                if (null == listInout.get(0).getRecordWeight() || listInout.get(0).getRecordWeight() == 0) {
                    continue;
                }
                //只同步称重
                if (BIZ_TAG_WEIGHT_FULL.equals(sysData.getBizTag()) || BIZ_TAG_WEIGHT_EMPTY.equals(sysData.getBizTag())) {
                    wjlx = "";
                    wjmc = kqdm;
                    //入库抓拍图
                    if (sysData.getBizId().startsWith(IMG_START_R)) {
                        wjlx = IMG_TYPE_2;
                        wjmc += "_" + Constant.INOUT_TYPE_14 + sysData.getBizId().substring(4);
                    }
                    //出库抓拍图
                    if (sysData.getBizId().startsWith(IMG_START_C)) {
                        wjlx = IMG_TYPE_3;
                        wjmc += "_" + Constant.INOUT_TYPE_15 + sysData.getBizId().substring(4);
                    }
                    //若文件类型为空,则跳过
                    if (StringUtils.isEmpty(wjlx)) {
                        continue;
                    }
                    apiData = new Api1109();
                    //主键id
                    apiData.setId(UUID.randomUUID().toString());
                    //文件路径
                    apiData.setWjdz(fileUtil.getInoutFilePath(sysData.getCreateTime()) + sysData.getFileName());
                    //文件名称
                    wjmc = getImgNameType(wjmc, sysData.getBizTag(), sysData.getBizId(), sysData.getFileName(), map);
                    apiData.setWjmc(wjmc);
                    //文件类型
                    apiData.setWjlx(wjlx);
                    //操作标志及最后更新时间
                    apiData.setZhgxsj(new Date());
                    //业务id、库区编码、同步时间
                    apiData.setBizId(sysData.getFileId());
                    apiData.setKqdm(kqdm);
                    apiData.setSyncTime(new Date());
                    api1109List = api1109Rep.getDataByBizId(apiData.getBizId());
                    if (null == api1109List || api1109List.isEmpty()) {
                        apiData.setCzbz(Constant.CZBZ_I);
                    } else {
                        apiData.setCzbz(api1109List.get(0).getCzbz());
                    }
                    //保存数据
                    api1109Rep.save(apiData);
                    log.info("1109---同步数据:{}", apiData.toString());
                }
            }
        } catch (Exception e) {
            log.error("---文件同步执行失败----{}", e);
            apiLog.setResult("同步文件信息失败:" + e.getMessage());
            apiLogRep.save(apiLog);
        }
    }
    /**
     * èŽ·å–å›¾ç‰‡å‘½åç±»åž‹
     *
     * @param wjmc     éœ€è¦çš„æ–‡ä»¶åç§°
     * @param bizTag   æ–‡ä»¶ä¸šåŠ¡ç±»åž‹
     * @param bizId    æ–‡ä»¶ä¸šåŠ¡id
     * @param fileName åŽŸæ–‡ä»¶å
     * @param map
     * @return
     */
    private String getImgNameType(String wjmc, String bizTag, String bizId, String fileName, Map<String, Integer> map) {
        if (fileName.indexOf(Constant.IMG_NAME_TYPE_GL) >= 0) {
            return wjmc + "_" + Constant.IMG_NAME_TYPE_GL + ".jpg";
        }
        if (fileName.indexOf(Constant.IMG_NAME_TYPE_GR) >= 0) {
            return wjmc + "_" + Constant.IMG_NAME_TYPE_GR + ".jpg";
        }
        if (fileName.indexOf(Constant.IMG_NAME_TYPE_GT) >= 0) {
            return wjmc + "_" + Constant.IMG_NAME_TYPE_GT + ".jpg";
        }
        if (fileName.indexOf(Constant.IMG_NAME_TYPE_TL) >= 0) {
            return wjmc + "_" + Constant.IMG_NAME_TYPE_TL + ".jpg";
        }
        if (fileName.indexOf(Constant.IMG_NAME_TYPE_TR) >= 0) {
            return wjmc + "_" + Constant.IMG_NAME_TYPE_TR + ".jpg";
        }
        if (fileName.indexOf(Constant.IMG_NAME_TYPE_TT) >= 0) {
            return wjmc + "_" + Constant.IMG_NAME_TYPE_TT + ".jpg";
        }
        if (fileName.indexOf(Constant.IMG_NAME_TYPE_SL) >= 0) {
            return wjmc + "_" + Constant.IMG_NAME_TYPE_SL + ".jpg";
        }
        if (fileName.indexOf(Constant.IMG_NAME_TYPE_SF) >= 0) {
            return wjmc + "_" + Constant.IMG_NAME_TYPE_SF + ".jpg";
        }
        Integer num = 0;
        //毛重
        if (BIZ_TAG_WEIGHT_FULL.equals(bizTag)) {
            if (null == map.get(bizId + "_" + bizTag)) {
                map.put(bizId + "_" + bizTag, 1);
            }
            num = map.get(bizId + "_" + bizTag);
            if (num == 1) {
                wjmc += "_" + Constant.IMG_NAME_TYPE_GL;
                map.put(bizId + "_" + bizTag, 2);
            }
            if (num == 2) {
                wjmc += "_" + Constant.IMG_NAME_TYPE_GR;
                map.put(bizId + "_" + bizTag, 3);
            }
            if (num == 3) {
                wjmc += "_" + Constant.IMG_NAME_TYPE_GT;
                map.remove(bizId + "_" + bizTag);
            }
        }
        //皮重
        if (BIZ_TAG_WEIGHT_EMPTY.equals(bizTag)) {
            if (null == map.get(bizId + "_" + bizTag)) {
                map.put(bizId + "_" + bizTag, 1);
            }
            num = map.get(bizId + "_" + bizTag);
            if (num == 1) {
                wjmc += "_" + Constant.IMG_NAME_TYPE_TL;
                map.put(bizId + "_" + bizTag, 2);
            }
            if (num == 2) {
                wjmc += "_" + Constant.IMG_NAME_TYPE_TR;
                map.put(bizId + "_" + bizTag, 3);
            }
            if (num == 3) {
                wjmc += "_" + Constant.IMG_NAME_TYPE_TT;
                map.remove(bizId + "_" + bizTag);
            }
        }
        return wjmc + ".jpg";
    }
}
src/main/java/com/fzzy/async/fzzy40/repository/Fzzy40Sync1109Rep.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.fzzy.async.fzzy40.repository;
import com.fzzy.async.fzzy35.entity.Fz35FileInfo;
import com.fzzy.async.fzzy40.entity.Fz40FileInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.Date;
import java.util.List;
/**
 * @Author:YAN
 */
public interface Fzzy40Sync1109Rep extends JpaRepository<Fz40FileInfo, String> {
    /**
     * æ ¹æ®ä¿¡æ¯æ–‡ä»¶ä¿¡æ¯
     *
     * @param start
     * @param end
     * @return
     */
    @Query("from Fz40FileInfo where createTime >=:start and createTime <:end order by createTime ")
    List<Fz40FileInfo> listFileInfo(@Param("start") Date start, @Param("end") Date end);
}