czt
2024-11-06 11af6525c78f401f8e7ca1100417adf90415586e
src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1205.java
@@ -18,6 +18,7 @@
import org.apache.commons.lang.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
/**
@@ -44,6 +45,10 @@
    @Autowired
    private Api1205Rep api1205Rep;
    @Autowired
    private Api1206Rep api1206Rep;
    @Autowired
    private Api1310Rep api1310Rep;
    @Autowired
    private Api1404Rep api1404Rep;
    @Autowired
    private ApiCommonService commonService;
@@ -57,7 +62,7 @@
     * @param start
     * @param end
     */
    public void  syncData(String kqdm, String deptId, Date start, Date end) {
    public void syncData(String kqdm, String deptId, Date start, Date end) {
        log.info("-------------1205接口数据开始同步------------------");
@@ -70,185 +75,231 @@
        apiLog.setStatus(99);
        apiLog.setId(ContextUtil.getUUID());
        try {
        //获取粮食出库信息,根据流程完成时间获取
        List<Fz40InoutRecord> list = fzzySync1202Rep.listInoutRecord(deptId, INOUT_TYPE_OUT, start, end);
            //获取粮食出库信息,根据流程完成时间获取
            List<Fz40InoutRecord> list = fzzySync1202Rep.listInoutRecord(deptId, INOUT_TYPE_OUT, start, end);
        if (null == list || list.isEmpty()) {
            log.info("-------------没有获取到粮食出库信息------------------");
            return;
        }
        Api1205 apiData;
        Api1105 api1105;
        List<Fz40InoutNoticeOut> listInoutNotice;
        List<Api1205> api1205List;
        List<Fz40InoutRecordItem> listInoutRecordItem;
        for (Fz40InoutRecord sysData : list) {
            if(sysData.getRecordStatus().equals("DEL") || sysData.getRecordStatus().equals("ERROR")){
                continue;
            }
            if(null == sysData.getRecordWeight() || sysData.getRecordWeight() == 0){
                sysData.setRecordWeight(sysData.getSettleWeight());
            }
            //判断净重是否大于0,等于0表示不合格,不进行同步上传
            if(null == sysData.getRecordWeight() || sysData.getRecordWeight() == 0){
                continue;
            }
            //获取货位信息
            api1105 = commonService.getApi1105Cache(sysData.getDepotId());
            if(null == api1105){
                continue;
            }
            apiData = new Api1205();
            apiData.setCkywdh(Constant.INOUT_TYPE_15 + sysData.getId().substring(4));
            //货位代码
            apiData.setHwdm(api1105.getHwdm());
            apiData.setYwlx(Constant.INOUT_TYPE_1);
            apiData.setYwrq(DateUtils.parseDate(sysData.getId().substring(2, 10), new String[] { "yyyyMMdd" }));
            apiData.setCyr(sysData.getUserName());
            //默认一个随便值
            apiData.setLxdh(StringUtils.isEmpty(sysData.getUserContact()) ? "13012345678" : sysData.getUserContact().trim());
            if(StringUtils.isEmpty(sysData.getUserId()) || sysData.getUserId().length() != 18){
                sysData.setUserId("410183199003187055");
            if (null == list || list.isEmpty()) {
                log.info("-------------没有获取到粮食出库信息------------------");
                return;
            }
            //通知单号
            apiData.setCktzdh(sysData.getNoticeId());
            //获取合同号
            listInoutNotice = fzzySyncNoticeOutRep.listInoutNoticeOutById(sysData.getNoticeId());
            if (null != listInoutNotice && listInoutNotice.size() > 0) {
                //合同号
                if (StringUtils.isNotEmpty(listInoutNotice.get(0).getContractId())) {
                    List<Api1201> api1201List = api1201Rep.getDataByBizId(listInoutNotice.get(0).getContractId());
                    if(null != api1201List && api1201List.size() > 0){
                        apiData.setHth(api1201List.get(0).getHth());
                    }
                }
                if (StringUtils.isNotEmpty(listInoutNotice.get(0).getPlanId())) {
                    List<Api1404> api1404List = api1404Rep.getDataByBizIdAndKqdm(listInoutNotice.get(0).getPlanId(), kqdm);
                    if(null != api1404List && api1404List.size() > 0){
                        apiData.setJhmxh(api1404List.get(0).getJhmxdh());
                    }
                }
            }
            //运输工具,若为空,则默认给1-汽车
            apiData.setYsgj(StringUtils.isEmpty(sysData.getTransType()) ? "1":sysData.getTransType());
            //车船号
            apiData.setCch(sysData.getPlateNum());
            apiData.setDjsj(sysData.getRegisterTime());
            //粮食品种
            String mappingCode = apiTriggerService.getMappingCode(Constant.TRIGGER_P_LSPZ, sysData.getFoodVariety().substring(0, 3));
            apiData.setLspzdm(mappingCode);
            //粮食等级
            mappingCode = apiTriggerService.getMappingCode(Constant.TRIGGER_P_LSDJ, sysData.getFoodLevel());
            apiData.setLsdjdm(mappingCode);
            //粮食性质
            mappingCode = apiTriggerService.getMappingCode(Constant.TRIGGER_P_LSXZ, sysData.getFoodType());
            apiData.setLsxzdm(mappingCode);
            apiData.setShnd(StringUtils.isEmpty(sysData.getFoodYear())? DateFormatUtils.format(new Date(), "yyyy") :sysData.getFoodYear());
            //产地代码
            mappingCode = commonService.getFoodLocationIdFromCache(sysData.getFoodLocation());
            if(StringUtils.isEmpty(mappingCode)){
                mappingCode = apiData.getHwdm().substring(2,8);
            }
            apiData.setCddm(mappingCode);
            //皮重信息
            apiData.setPz(sysData.getEmptyWeight());
            if (null == sysData.getEmptyWeightTime()) {
                sysData.setEmptyWeightTime(DateUtils.addMinutes(sysData.getRegisterTime(), 25));
            }
            if(!sysData.getEmptyWeightTime().after(sysData.getRegisterTime())){
                sysData.setEmptyWeightTime(DateUtils.addMinutes(sysData.getRegisterTime(), 25));
            }
            apiData.setPzjlsj(sysData.getEmptyWeightTime());
            apiData.setPzjby(sysData.getEmptyWeightUser());
            apiData.setPzjly(sysData.getEmptyWeightUser());
            //毛重信息
            apiData.setMz(sysData.getFullWeight());
            if (null == sysData.getFullWeightTime()) {
                sysData.setFullWeightTime(DateUtils.addMinutes(sysData.getEmptyWeightTime(), 60));
            }
            if(!sysData.getFullWeightTime().after(sysData.getEmptyWeightTime())){
                sysData.setFullWeightTime(DateUtils.addMinutes(sysData.getEmptyWeightTime(), 60));
            }
            apiData.setMzjlsj(sysData.getFullWeightTime());
            apiData.setMzjby(sysData.getFullWeightUser());
            apiData.setMzjly(sysData.getFullWeightUser());
            //净重
            apiData.setJz(sysData.getRecordWeight());
            if(!sysData.getCompleteTime().after(sysData.getFullWeightTime())){
                sysData.setCompleteTime(DateUtils.addMinutes(sysData.getFullWeightTime(), 10));
            }
            apiData.setCmsj(sysData.getCompleteTime());
            if(StringUtils.isNotEmpty(sysData.getSettleId())){
                apiData.setCkjsdh(kqdm + sysData.getSettleId());
            }
            //操作标志及最后更新时间
            apiData.setZhgxsj(sysData.getUpdateTime());
            //业务id、库区编码、同步时间
            apiData.setBizId(sysData.getId());
            apiData.setKqdm(kqdm);
            apiData.setSyncTime(new Date());
            log.info("1201---同步数据:{}",apiData.toString());
            //判断是否为船运
            if(StringUtils.isNotEmpty(sysData.getTransType()) && sysData.getTransType().equals("3")){
                listInoutRecordItem = fzzy40SyncInoutRecordItemRep.findDataByRecordId(sysData.getId());
                if(null == listInoutRecordItem || listInoutRecordItem.isEmpty()){
                    api1205Rep.save(apiData);
            Api1205 apiData;
            Api1105 api1105;
            List<Fz40InoutNoticeOut> listInoutNotice;
            List<Api1205> api1205List;
            List<Api1206> api1206List;
            List<Fz40InoutRecordItem> listInoutRecordItem;
            for (Fz40InoutRecord sysData : list) {
                if (sysData.getRecordStatus().equals("DEL") || sysData.getRecordStatus().equals("ERROR")) {
                    continue;
                }
                int idNum = Integer.valueOf(sysData.getId().substring(12))*100 + 10001;
                for (Fz40InoutRecordItem fz40InoutRecordItem : listInoutRecordItem) {
                    if ("DEL".equals(fz40InoutRecordItem.getRecordStatus())) {
                        continue;
                    }
                    if(fz40InoutRecordItem.getSettleWeight() <= 0){
                        continue;
                    }
                    apiData.setCkywdh(Constant.INOUT_TYPE_15 + sysData.getId().substring(4,10) + String.valueOf(idNum).substring(1));
                    apiData.setMz(fz40InoutRecordItem.getFullWeight());
                    apiData.setPz(fz40InoutRecordItem.getEmptyWeight());
                    apiData.setJz(fz40InoutRecordItem.getSettleWeight());
                    apiData.setMzjlsj(fz40InoutRecordItem.getFullWeightTime());
                    apiData.setPzjlsj(fz40InoutRecordItem.getEmptyWeightTime());
                    api1205List = api1205Rep.getDataById(apiData.getCkywdh());
                    if(null == api1205List || api1205List.isEmpty()){
                        apiData.setCzbz(Constant.CZBZ_I);
                    }else {
                        apiData.setCzbz(api1205List.get(0).getCzbz());
                    }
                    api1205Rep.save(apiData);
                    idNum ++;
                if (null == sysData.getRecordWeight() || sysData.getRecordWeight() == 0) {
                    sysData.setRecordWeight(sysData.getSettleWeight());
                }
            }else {
                //判断净重是否大于0,等于0表示不合格,不进行同步上传
                if (null == sysData.getRecordWeight() || sysData.getRecordWeight() == 0) {
                    continue;
                }
                //获取货位信息
                api1105 = commonService.getApi1105Cache(sysData.getDepotId());
                if (null == api1105) {
                    continue;
                }
                apiData = new Api1205();
                apiData.setCkywdh(Constant.INOUT_TYPE_15 + sysData.getId().substring(4));
                //货位代码
                apiData.setHwdm(api1105.getHwdm());
                apiData.setYwlx(Constant.INOUT_TYPE_1);
                apiData.setYwrq(DateUtils.parseDate(sysData.getId().substring(2, 10), new String[]{"yyyyMMdd"}));
                //默认一个随便值
                apiData.setLxdh(StringUtils.isEmpty(sysData.getUserContact()) ? "13012345678" : sysData.getUserContact().trim());
                if (StringUtils.isEmpty(sysData.getUserId()) || sysData.getUserId().length() != 18) {
                    sysData.setUserId("410183199003187055");
                }
                apiData.setSfzh(sysData.getUserId());
                //通知单号
                apiData.setCktzdh(sysData.getNoticeId());
                //获取合同号
                listInoutNotice = fzzySyncNoticeOutRep.listInoutNoticeOutById(sysData.getNoticeId());
                if (null != listInoutNotice && listInoutNotice.size() > 0) {
                    //合同号
                    if (StringUtils.isNotEmpty(listInoutNotice.get(0).getContractId())) {
                        List<Api1201> api1201List = api1201Rep.getDataByBizId(listInoutNotice.get(0).getContractId());
                        if (null != api1201List && api1201List.size() > 0) {
                            apiData.setHth(api1201List.get(0).getHth());
                        }
                    }
                    if (StringUtils.isNotEmpty(listInoutNotice.get(0).getPlanId())) {
                        List<Api1404> api1404List = api1404Rep.getDataByBizIdAndKqdm(listInoutNotice.get(0).getPlanId(), kqdm);
                        if (null != api1404List && api1404List.size() > 0) {
                            apiData.setJhmxh(api1404List.get(0).getJhmxdh());
                            if (StringUtils.isEmpty(sysData.getFoodYear())) {
                                sysData.setFoodYear(api1404List.get(0).getShnd());
                            }
                        }
                    }
                }
                //运输工具,若为空,则默认给1-汽车
                apiData.setYsgj(StringUtils.isEmpty(sysData.getTransType()) ? "1" : sysData.getTransType());
                //车船号
                apiData.setCch(sysData.getPlateNum());
                apiData.setDjsj(sysData.getRegisterTime());
                //粮食品种
                String mappingCode = apiTriggerService.getMappingCode(Constant.TRIGGER_P_LSPZ, sysData.getFoodVariety().substring(0, 3));
                apiData.setLspzdm(mappingCode);
                //粮食等级
                mappingCode = apiTriggerService.getMappingCode(Constant.TRIGGER_P_LSDJ, sysData.getFoodLevel());
                apiData.setLsdjdm(mappingCode);
                //质检报告单号
                List<Api1310> dataByHwdm = api1310Rep.getDataByHwdm(apiData.getHwdm(), "02");
                if(null != dataByHwdm && dataByHwdm.size() > 0){
                    apiData.setZjbgdh(dataByHwdm.get(0).getZjbgdh());
                }
                //生成方式
                apiData.setScfs(1);
                if(StringUtils.isNotEmpty(sysData.getRecordStatus()) && sysData.getRecordStatus().equals("ADD")){
                    apiData.setScfs(2);
                    apiData.setSdblyy("库区停电导致无法按流程进行出库");
                }
                //粮食性质
                mappingCode = apiTriggerService.getMappingCode(Constant.TRIGGER_P_LSXZ, sysData.getFoodType());
                apiData.setLsxzdm(mappingCode);
                apiData.setShnd(StringUtils.isEmpty(sysData.getFoodYear()) ? DateFormatUtils.format(sysData.getRegisterTime(), "yyyy") : sysData.getFoodYear());
                //产地代码
                mappingCode = commonService.getFoodLocationIdFromCache(sysData.getFoodLocation());
                if (StringUtils.isEmpty(mappingCode)) {
                    mappingCode = apiData.getHwdm().substring(2, 8);
                }
                apiData.setCddm(mappingCode);
                //皮重信息
                apiData.setPz(sysData.getEmptyWeight());
                if (null == sysData.getEmptyWeightTime()) {
                    sysData.setEmptyWeightTime(DateUtils.addMinutes(sysData.getRegisterTime(), 25));
                }
                if (!sysData.getEmptyWeightTime().after(sysData.getRegisterTime())) {
                    sysData.setEmptyWeightTime(DateUtils.addMinutes(sysData.getRegisterTime(), 25));
                }
                apiData.setPzjlsj(sysData.getEmptyWeightTime());
                apiData.setPzjby(StringUtils.isEmpty(sysData.getEmptyWeightUser()) ? "监磅员" : sysData.getEmptyWeightUser());
                apiData.setPzjly(StringUtils.isEmpty(sysData.getEmptyWeightUser()) ? "计量员" : sysData.getEmptyWeightUser());
                //毛重信息
                apiData.setMz(sysData.getFullWeight());
                apiData.setKzl(0 - sysData.getDeCheck() + sysData.getAddCheck() - sysData.getDeHandle() - sysData.getDePackage() - sysData.getDeOther());
                if (null == sysData.getFullWeightTime()) {
                    sysData.setFullWeightTime(DateUtils.addMinutes(sysData.getEmptyWeightTime(), 60));
                }
                if (!sysData.getFullWeightTime().after(sysData.getEmptyWeightTime())) {
                    sysData.setFullWeightTime(DateUtils.addMinutes(sysData.getEmptyWeightTime(), 60));
                }
                apiData.setMzjlsj(sysData.getFullWeightTime());
                apiData.setMzjby(StringUtils.isEmpty(sysData.getFullWeightUser()) ? "监磅员" : sysData.getFullWeightUser());
                apiData.setMzjly(StringUtils.isEmpty(sysData.getFullWeightUser()) ? "计量员" : sysData.getFullWeightUser());
                //净重
                apiData.setJz(sysData.getRecordWeight());
                if (!sysData.getCompleteTime().after(sysData.getFullWeightTime())) {
                    sysData.setCompleteTime(DateUtils.addMinutes(sysData.getFullWeightTime(), 10));
                }
                apiData.setCmsj(sysData.getCompleteTime());
                //结算单号
                if (StringUtils.isNotEmpty(sysData.getSettleId())) {
                    apiData.setCkjsdh(kqdm + sysData.getSettleId());
                }
                if (StringUtils.isNotEmpty(apiData.getHth())) {
                    api1206List = api1206Rep.getDataByHthAndHwdm(apiData.getHth(), apiData.getHwdm());
                    if (null == api1206List || api1206List.isEmpty()) {
                        api1206List = api1206Rep.getDataByHth(apiData.getHth());
                        if (null != api1206List && api1206List.size() > 0) {
                            apiData.setCkjsdh(api1206List.get(0).getCkjsdh());
                        }
                    } else {
                        apiData.setCkjsdh(api1206List.get(0).getCkjsdh());
                    }
                }
                apiData.setCchlx("01");
                apiData.setXldd("库内");
                apiData.setBz(StringUtils.isEmpty(sysData.getRemarks()) ? "暂无备注信息" : sysData.getRemarks());
                apiData.setBzbdbz(25);
                apiData.setBzbjs(0);
                apiData.setCmqrmgryxm(StringUtils.isEmpty(sysData.getRegisterUser()) ? "门岗人" : sysData.getRegisterUser());
                apiData.setDjmgryxm(StringUtils.isEmpty(sysData.getRegisterUser()) ? "登记人" : sysData.getRegisterUser());
                apiData.setZcbgyxm(StringUtils.isEmpty(sysData.getHandleUser()) ? "值仓员" : sysData.getHandleUser());
                apiData.setZxzydw("外聘单位");
                apiData.setKzlyy("扣(增)量原因");
                //操作标志及最后更新时间
                apiData.setZhgxsj(sysData.getUpdateTime());
                //承运人 身份证号 电话
                apiData.setSfzh(sysData.getUserId());
                apiData.setCyr(sysData.getUserName().trim());
                apiData.setLxdh(sysData.getUserContact());
                //业务id、库区编码、同步时间
                apiData.setBizId(sysData.getId());
                apiData.setKqdm(kqdm);
                apiData.setSyncTime(new Date());
                log.info("1205---同步数据:{}", apiData.toString());
                api1205List = api1205Rep.getDataById(apiData.getCkywdh());
                if(null == api1205List || api1205List.isEmpty()){
                if (null == api1205List || api1205List.isEmpty()) {
                    apiData.setCzbz(Constant.CZBZ_I);
                }else {
                } else {
                    apiData.setCzbz(api1205List.get(0).getCzbz());
                }
                //保存数据
                api1205Rep.save(apiData);
                //判断是否为船运
                if (StringUtils.isNotEmpty(sysData.getTransType()) && sysData.getTransType().equals("3")) {
                    listInoutRecordItem = fzzy40SyncInoutRecordItemRep.findDataByRecordId(sysData.getId());
                    if (null == listInoutRecordItem || listInoutRecordItem.isEmpty()) {
                        api1205Rep.save(apiData);
                        continue;
                    }
                    int idNum = Integer.valueOf(sysData.getId().substring(12)) * 100 + 10001;
                    for (Fz40InoutRecordItem fz40InoutRecordItem : listInoutRecordItem) {
                        if ("DEL".equals(fz40InoutRecordItem.getRecordStatus())) {
                            continue;
                        }
                        if (fz40InoutRecordItem.getSettleWeight() <= 0) {
                            continue;
                        }
                        apiData.setCkywdh(Constant.INOUT_TYPE_15 + sysData.getId().substring(4, 10) + String.valueOf(idNum).substring(1));
                        apiData.setMz(fz40InoutRecordItem.getFullWeight());
                        apiData.setPz(fz40InoutRecordItem.getEmptyWeight());
                        apiData.setJz(fz40InoutRecordItem.getSettleWeight());
                        apiData.setMzjlsj(fz40InoutRecordItem.getFullWeightTime());
                        apiData.setPzjlsj(fz40InoutRecordItem.getEmptyWeightTime());
                        apiData.setKzl(0 - fz40InoutRecordItem.getDe());
                        api1205List = api1205Rep.getDataById(apiData.getCkywdh());
                        if (null == api1205List || api1205List.isEmpty()) {
                            apiData.setCzbz(Constant.CZBZ_I);
                        } else {
                            apiData.setCzbz(api1205List.get(0).getCzbz());
                        }
                        api1205Rep.save(apiData);
                        idNum++;
                    }
                } else {
                    //保存数据
                    api1205Rep.save(apiData);
                }
            }
        }
        } catch (Exception e) {
            log.error("---同步失败----{}", e);
            apiLog.setResult("同步失败:" + e.getMessage());