CZT
2023-09-13 edca45e62b6bb47e51853c4168415f20c2f861cd
调整出入库业务时间跟单号日期不统一的问题
已添加1个文件
已修改4个文件
375 ■■■■ 文件已修改
src/main/java/com/fzzy/api/utils/DateUtil.java 256 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/async/fzzy35/impl/Fzzy35Sync1202.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/async/fzzy35/impl/Fzzy35Sync1205.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1202.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1205.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/api/utils/DateUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,256 @@
package com.fzzy.api.utils;
import org.apache.commons.lang.time.DateUtils;
import java.util.Calendar;
import java.util.Date;
/**
 * æ—¶é—´ç›¸å…³å·¥å…·ç±»
 *
 * @author jiazx
 */
public class DateUtil {
    /**
     * æ ¹æ®å½“前时间获取只有 yyyy-MM-dd的时间
     *
     * @param date
     * @return
     */
    public static Date getCurZero(Date date) {
        //TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
        date = DateUtils.setHours(date, 0);
        date = DateUtils.setMinutes(date, 0);
        date = DateUtils.setSeconds(date, 0);
        date = DateUtils.setMilliseconds(date, 0);
        return date;
    }
    /**
     * èŽ·å–å½“å‰æ—¶é—´ä¸‹ä¸€å¤©çš„é›¶ç‚¹é›¶åˆ†é›¶ç§’
     *
     * @param date
     * @return
     */
    public static Date getNextZero(Date date) {
        //TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
        date = DateUtils.addDays(date, 1);
        date = DateUtils.setHours(date, 0);
        date = DateUtils.setMinutes(date, 0);
        date = DateUtils.setSeconds(date, 0);
        date = DateUtils.setMilliseconds(date, 0);
        return date;
    }
    /**
     * èŽ·å–å½“å‰æ—¥æœŸæ‰€åœ¨æœˆçš„ç¬¬ä¸€å¤©ï¼Œæ•°æ®ä¸ºï¼š:00:00:00
     *
     * @param date
     * @return
     */
    public static Date getMonthFirst(Date date) {
        if (null == date) date = new Date();
        date = DateUtils.setDays(date, 1);
        date = DateUtils.setHours(date, 0);
        date = DateUtils.setMinutes(date, 0);
        date = DateUtils.setSeconds(date, 0);
        date = DateUtils.setMilliseconds(date, 0);
        return date;
    }
    /**
     * èŽ·å–å½“å‰å¹´ç¬¬ä¸€å¤©
     *
     * @param date
     * @return
     */
    public static Date getYearFirst(Date date) {
        if (null == date) date = new Date();
        Calendar currCal = Calendar.getInstance();
        currCal.setTime(date);
        int currentYear = currCal.get(Calendar.YEAR);
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        calendar.set(Calendar.YEAR, currentYear);
        Date currYearFirst = calendar.getTime();
        return currYearFirst;
    }
    /**
     * èŽ·å–å½“å‰æ—¶é—´çš„ä¸‹ä¸ªæœˆ1号
     *
     * @param date
     * @return
     */
    public static Date getNextMonthFirst(Date date) {
        if (null == date) date = new Date();
        date = DateUtils.addMonths(date, 1);
        date = DateUtils.setDays(date, 1);
        date = DateUtils.setHours(date, 0);
        date = DateUtils.setMinutes(date, 0);
        date = DateUtils.setSeconds(date, 0);
        date = DateUtils.setMilliseconds(date, 0);
        return date;
    }
    /**
     * èŽ·å–å½“å‰æ—¶é—´çš„ä¸Šä¸ªæœˆ1号
     *
     * @param date
     * @return
     */
    public static Date getPreMonthFirst(Date date) {
        if (null == date) date = new Date();
        date = DateUtils.addMonths(date, -1);
        date = DateUtils.setDays(date, 1);
        date = DateUtils.setHours(date, 0);
        date = DateUtils.setMinutes(date, 0);
        date = DateUtils.setSeconds(date, 0);
        date = DateUtils.setMilliseconds(date, 0);
        return date;
    }
    /**
     * æ—¶é—´ï¼Œæ ¹æ®å¤©æ•° æ·»åŠ å‡ å¤©ï¼Œæˆ–è€…å‡åŽ»å‡ å¤©
     *
     * @param date å½“前时间
     * @param num  æ­£æ•°æˆ–者负数
     * @return
     */
    public static Date getNewByDay(Date date, int num) {
        if (null == date) date = new Date();
        date = DateUtils.addDays(date, num);
        date = DateUtils.setHours(date, 0);
        date = DateUtils.setMinutes(date, 0);
        date = DateUtils.setSeconds(date, 0);
        date = DateUtils.setMilliseconds(date, 0);
        return date;
    }
    /**
     * æ—¶é—´ï¼Œæ ¹æ®å¤©æ•° æ·»åŠ å‡ åˆ†é’Ÿï¼Œæˆ–è€…å‡åŽ»å‡ åˆ†
     *
     * @param date å½“前时间
     * @param num  æ­£æ•°æˆ–者负数
     * @return
     */
    public static Date getNewByMinute(Date date, int num) {
        if (null == date) date = new Date();
        date = DateUtils.addMinutes(date, num);
        date = DateUtils.setHours(date, 0);
        date = DateUtils.setMinutes(date, 0);
        date = DateUtils.setSeconds(date, 0);
        date = DateUtils.setMilliseconds(date, 0);
        return date;
    }
    /**
     * èŽ·å–æŸå¹´ç¬¬ä¸€å¤©æ—¥æœŸ
     *
     * @param year å¹´ä»½
     * @return Date
     */
    public static Date getCurrYearFirst(int year) {
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        calendar.set(Calendar.YEAR, year);
        Date currYearFirst = calendar.getTime();
        return currYearFirst;
    }
    /**
     * èŽ·å–æ¬¡å¹´ç¬¬ä¸€å¤© 0点
     *
     * @param year å¹´ä»½
     * @return Date
     */
    public static Date getNextYearFirst(int year) {
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        calendar.set(Calendar.YEAR, year);
        calendar.roll(Calendar.DAY_OF_YEAR, -1);
        Date currYearLast = calendar.getTime();
        currYearLast = DateUtils.addDays(currYearLast, 1);
        return currYearLast;
    }
    /**
     * è®¡ç®—æ—¶é—´1与时间2直接的分钟数,
     *
     * @param begin
     * @param end
     * @return
     */
    public static long difMin(Date begin, Date end) {
        long between = (end.getTime() - begin.getTime()) / 1000;//除以1000是为了转换成秒
        //long day1 = between / (24 * 3600);
        // long hour1 = between % (24 * 3600) / 3600;
        long minute1 = between % 3600 / 60;
        // long second1 = between % 60 / 60;
        return minute1;
    }
    /**
     * è®¡ç®—æ—¶é—´1与时间2直接的天数,
     *
     * @param begin
     * @param end
     * @return
     */
    public static int difDay(Date begin, Date end) {
        return (int) ((end.getTime() - begin.getTime()) / (1000 * 3600 * 24));
    }
    /**
     * èŽ·å–å½“å‰æ—¶é—´çš„ å°æ—¶,时间从1-24
     *
     * @param date
     * @return
     */
    public static int getHour(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.HOUR_OF_DAY);
    }
    /**
     * èŽ·å–å½“å‰æ—¶é—´çš„ åˆ†é’Ÿ æ—¶é—´ä»Ž0 -59
     *
     * @param date
     * @return
     */
    public static int getMinute(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.MINUTE);
    }
    /**
     * èŽ·å–å½“å‰æ—¶é—´åˆ°ç¬¬äºŒå¤©å‡Œæ™¨çš„æ—¶é—´å·®ç§’æ•°
     *
     * @return
     */
    public static Long getNowToNextDaySeconds() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DAY_OF_YEAR, 1);
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.MILLISECOND, 0);
        return (cal.getTimeInMillis() - System.currentTimeMillis()) / 1000;
    }
    public static void main(String[] args) {
        System.out.println(getMinute(new Date()));
    }
}
src/main/java/com/fzzy/async/fzzy35/impl/Fzzy35Sync1202.java
@@ -3,11 +3,11 @@
import com.fzzy.api.Constant;
import com.fzzy.api.entity.Api1105;
import com.fzzy.api.entity.Api1202;
import com.fzzy.api.entity.Api1208;
import com.fzzy.api.entity.ApiLog;
import com.fzzy.api.service.ApiCommonService;
import com.fzzy.api.service.ApiTriggerService;
import com.fzzy.api.utils.ContextUtil;
import com.fzzy.api.utils.DateUtil;
import com.fzzy.api.view.repository.Api1202Rep;
import com.fzzy.api.view.repository.ApiLogRep;
import com.fzzy.async.fzzy35.entity.Fz35InoutNoticeIn;
@@ -17,9 +17,10 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.*;
/**
@@ -78,10 +79,6 @@
            Api1105 api1105;
            List<Fz35InoutNoticeIn> listInoutNotice;
            List<Api1202> api1202List;
            Calendar c = Calendar.getInstance();
            String ywsj = "";
            String num = "";
            Map<String, Integer> map = new HashMap<>();
            for (Fz35InoutRecord sysData : list) {
                if(null == sysData.getRecordWeight() || sysData.getRecordWeight() == 0){
                    sysData.setRecordWeight(sysData.getSettleWeight());
@@ -98,15 +95,15 @@
                apiData = new Api1202();
                apiData.setRkywdh(Constant.INOUT_TYPE_14 + sysData.getId().substring(4));
                //判断业务时间与单据号是否匹配
                ywsj = DateFormatUtils.format(sysData.getCompleteTime(),"yyMMdd");
                if(!ywsj.equals(sysData.getId().substring(4, 10))){
                    if(null == map.get(ywsj)){
                        map.put(ywsj, 10201);
                    }
                    num = String.valueOf(map.get(ywsj)).substring(1);
                    apiData.setRkywdh(Constant.INOUT_TYPE_14 + ywsj + num);
                    map.put(ywsj, map.get(ywsj) + 1);
                //判断业务时间与单据号是否匹配,若不匹配,则更改业务时间为单据号所在的时间
                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
                Date time = dateFormat.parse(sysData.getId().substring(2, 10));
                int numDay = DateUtil.difDay(sysData.getCompleteTime(), time);
                if(numDay != 0){
                    sysData.setFullWeightTime(DateUtils.addDays(sysData.getFullWeightTime(), numDay));
                    sysData.setEmptyWeightTime(DateUtils.addDays(sysData.getEmptyWeightTime(), numDay));
                    sysData.setCompleteTime(DateUtils.addDays(sysData.getCompleteTime(), numDay));
                }
                //货位代码
@@ -135,9 +132,7 @@
                //车船号
                apiData.setCch(sysData.getPlateNum());
                c.setTime(sysData.getRegisterTime());
                c.add(Calendar.MINUTE,-3);
                apiData.setDjsj(c.getTime());
                apiData.setDjsj(sysData.getRegisterTime());
                //粮食品种
                String mappingCode = apiTriggerService.getMappingCode(Constant.TRIGGER_P_LSPZ, sysData.getFoodVariety());
@@ -183,15 +178,13 @@
                apiData.setXckl( 0 - sysData.getDeHandle());
                apiData.setJz(sysData.getRecordWeight());
                c.setTime(sysData.getCompleteTime());
                c.add(Calendar.MINUTE,3);
                apiData.setCmsj(c.getTime());
                apiData.setCmsj(sysData.getCompleteTime());
                //入库结算单号,默认统一结算,不设置结算单号
                //apiData.setRkjsdh(kqdm + sysData.getId().substring(2));
                //操作标志及最后更新时间
                apiData.setZhgxsj(c.getTime());
                apiData.setZhgxsj(sysData.getCompleteTime());
                //业务id、库区编码、同步时间
                apiData.setBizId(sysData.getId());
src/main/java/com/fzzy/async/fzzy35/impl/Fzzy35Sync1205.java
@@ -7,6 +7,7 @@
import com.fzzy.api.service.ApiCommonService;
import com.fzzy.api.service.ApiTriggerService;
import com.fzzy.api.utils.ContextUtil;
import com.fzzy.api.utils.DateUtil;
import com.fzzy.api.view.repository.Api1205Rep;
import com.fzzy.api.view.repository.ApiLogRep;
import com.fzzy.async.fzzy35.entity.Fz35InoutNoticeOut;
@@ -16,9 +17,11 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.*;
/**
@@ -77,10 +80,6 @@
        Api1105 api1105;
        List<Fz35InoutNoticeOut> listInoutNotice;
        List<Api1205> api1205List;
        Calendar c = Calendar.getInstance();
            String ywsj = "";
            String num = "";
            Map<String, Integer> map = new HashMap<>();
        for (Fz35InoutRecord sysData : list) {
            if(null == sysData.getRecordWeight() || sysData.getRecordWeight() == 0){
                sysData.setRecordWeight(sysData.getSettleWeight());
@@ -96,15 +95,15 @@
            }
            apiData = new Api1205();
            apiData.setCkywdh(Constant.INOUT_TYPE_15 + sysData.getId().substring(4));
            //判断业务时间与单据号是否匹配
            ywsj = DateFormatUtils.format(sysData.getCompleteTime(),"yyMMdd");
            if(!ywsj.equals(sysData.getId().substring(4, 10))){
                if(null == map.get(ywsj)){
                    map.put(ywsj, 10201);
                }
                num = String.valueOf(map.get(ywsj)).substring(1);
                apiData.setCkywdh(Constant.INOUT_TYPE_15 + ywsj + num);
                map.put(ywsj, map.get(ywsj) + 1);
            //判断业务时间与单据号是否匹配,若不匹配,则更改业务时间为单据号所在的时间
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
            Date time = dateFormat.parse(sysData.getId().substring(2, 10));
            int numDay = DateUtil.difDay(sysData.getCompleteTime(), time);
            if(numDay != 0){
                sysData.setFullWeightTime(DateUtils.addDays(sysData.getFullWeightTime(), numDay));
                sysData.setEmptyWeightTime(DateUtils.addDays(sysData.getEmptyWeightTime(), numDay));
                sysData.setCompleteTime(DateUtils.addDays(sysData.getCompleteTime(), numDay));
            }
            //货位代码
@@ -130,9 +129,7 @@
            //车船号
            apiData.setCch(sysData.getPlateNum());
            c.setTime(sysData.getRegisterTime());
            c.add(Calendar.MINUTE,-3);
            apiData.setDjsj(c.getTime());
            apiData.setDjsj(sysData.getRegisterTime());
            //粮食品种
            String mappingCode = apiTriggerService.getMappingCode(Constant.TRIGGER_P_LSPZ, sysData.getFoodVariety());
@@ -166,12 +163,10 @@
            //净重
            apiData.setJz(sysData.getRecordWeight());
            c.setTime(sysData.getCompleteTime());
            c.add(Calendar.MINUTE,3);
            apiData.setCmsj(c.getTime());
            apiData.setCmsj(sysData.getCompleteTime());
            //操作标志及最后更新时间
            apiData.setZhgxsj(c.getTime());
            apiData.setZhgxsj(sysData.getCompleteTime());
            //业务id、库区编码、同步时间
            apiData.setBizId(sysData.getId());
src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1202.java
@@ -7,6 +7,7 @@
import com.fzzy.api.service.ApiCommonService;
import com.fzzy.api.service.ApiTriggerService;
import com.fzzy.api.utils.ContextUtil;
import com.fzzy.api.utils.DateUtil;
import com.fzzy.api.view.repository.Api1202Rep;
import com.fzzy.api.view.repository.ApiLogRep;
import com.fzzy.async.fzzy40.entity.Fz40InoutNoticeIn;
@@ -16,9 +17,11 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.*;
/**
@@ -77,9 +80,6 @@
            Api1105 api1105;
            List<Fz40InoutNoticeIn> listInoutNotice;
            List<Api1202> api1202List;
            String ywsj = "";
            String num = "";
            Map<String, Integer> map = new HashMap<>();
            for (Fz40InoutRecord sysData : list) {
                if(null == sysData.getRecordWeight() || sysData.getRecordWeight() == 0){
                    sysData.setRecordWeight(sysData.getSettleWeight());
@@ -96,15 +96,15 @@
                apiData = new Api1202();
                apiData.setRkywdh(Constant.INOUT_TYPE_14 + sysData.getId().substring(4));
                //判断业务时间与单据号是否匹配
                ywsj = DateFormatUtils.format(sysData.getCompleteTime(),"yyMMdd");
                if(!ywsj.equals(sysData.getId().substring(4, 10))){
                    if(null == map.get(ywsj)){
                        map.put(ywsj, 10201);
                    }
                    num = String.valueOf(map.get(ywsj)).substring(1);
                    apiData.setRkywdh(Constant.INOUT_TYPE_14 + ywsj + num);
                    map.put(ywsj, map.get(ywsj) + 1);
                //判断业务时间与单据号是否匹配,若不匹配,则更改业务时间为单据号所在的时间
                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
                Date time = dateFormat.parse(sysData.getId().substring(2, 10));
                int numDay = DateUtil.difDay(sysData.getCompleteTime(), time);
                if(numDay != 0){
                    sysData.setFullWeightTime(DateUtils.addDays(sysData.getFullWeightTime(), numDay));
                    sysData.setEmptyWeightTime(DateUtils.addDays(sysData.getEmptyWeightTime(), numDay));
                    sysData.setCompleteTime(DateUtils.addDays(sysData.getCompleteTime(), numDay));
                }
                //货位代码
src/main/java/com/fzzy/async/fzzy40/impl/Fzzy40Sync1205.java
@@ -7,6 +7,7 @@
import com.fzzy.api.service.ApiCommonService;
import com.fzzy.api.service.ApiTriggerService;
import com.fzzy.api.utils.ContextUtil;
import com.fzzy.api.utils.DateUtil;
import com.fzzy.api.view.repository.Api1205Rep;
import com.fzzy.api.view.repository.ApiLogRep;
import com.fzzy.async.fzzy40.entity.Fz40InoutNoticeOut;
@@ -16,9 +17,11 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.*;
/**
@@ -77,9 +80,6 @@
        Api1105 api1105;
        List<Fz40InoutNoticeOut> listInoutNotice;
        List<Api1205> api1205List;
        String ywsj = "";
        String num = "";
        Map<String, Integer> map = new HashMap<>();
        for (Fz40InoutRecord sysData : list) {
            if(null == sysData.getRecordWeight() || sysData.getRecordWeight() == 0){
                sysData.setRecordWeight(sysData.getSettleWeight());
@@ -95,15 +95,14 @@
            }
            apiData = new Api1205();
            apiData.setCkywdh(Constant.INOUT_TYPE_15 + sysData.getId().substring(4));
            //判断业务时间与单据号是否匹配
            ywsj = DateFormatUtils.format(sysData.getCompleteTime(),"yyMMdd");
            if(!ywsj.equals(sysData.getId().substring(4, 10))){
                if(null == map.get(ywsj)){
                    map.put(ywsj, 10201);
                }
                num = String.valueOf(map.get(ywsj)).substring(1);
                apiData.setCkywdh(Constant.INOUT_TYPE_15 + ywsj + num);
                map.put(ywsj, map.get(ywsj) + 1);
            //判断业务时间与单据号是否匹配,若不匹配,则更改业务时间为单据号所在的时间
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
            Date time = dateFormat.parse(sysData.getId().substring(2, 10));
            int numDay = DateUtil.difDay(sysData.getCompleteTime(), time);
            if(numDay != 0){
                sysData.setFullWeightTime(DateUtils.addDays(sysData.getFullWeightTime(), numDay));
                sysData.setEmptyWeightTime(DateUtils.addDays(sysData.getEmptyWeightTime(), numDay));
                sysData.setCompleteTime(DateUtils.addDays(sysData.getCompleteTime(), numDay));
            }
            //货位代码