Преглед изворни кода

库存分析相关功能--搞定当日库存情况

wukai пре 1 месец
родитељ
комит
0b1e74aaea

+ 84 - 55
jjt-biz/src/main/java/com/jjt/inventory/controller/InventoryController.java

@@ -3,7 +3,11 @@ package com.jjt.inventory.controller;
 import com.jjt.common.core.controller.BaseController;
 import com.jjt.common.core.domain.R;
 import com.jjt.common.core.redis.RedisCache;
+import com.jjt.inventory.domain.TwinCalcHourBp;
+import com.jjt.inventory.domain.TwinCalcHourPt;
 import com.jjt.inventory.service.IInventoryService;
+import com.jjt.inventory.service.ITwinCalcHourBpService;
+import com.jjt.inventory.service.ITwinCalcHourPtService;
 import com.jjt.inventory.vo.BpVO;
 import com.jjt.inventory.vo.PtVO;
 import com.jjt.inventory.vo.TopVO;
@@ -17,7 +21,10 @@ import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -36,6 +43,10 @@ public class InventoryController extends BaseController {
     private IInventoryService inventoryService;
     @Resource
     private MssqlService mssqlService;
+    @Resource
+    private ITwinCalcHourBpService bpService;
+    @Resource
+    private ITwinCalcHourPtService ptService;
 
 
     @ApiOperation("盘头库库存分析")
@@ -47,16 +58,6 @@ public class InventoryController extends BaseController {
         String sql = "SELECT TOP 10 SKU,SKU_DESCRC,LOT01 FROM V_WMS_STOCK WHERE WAREHOUSE_ID='WH03-盘头仓库' AND UOM='个' AND LOT01 IS NOT NULL AND LOT01!='' ORDER BY LOT01";
         List<TopVO> tops = topProcess(sql);
         ptVO.setTops(tops);
-//
-//
-//        // 模拟TOP排名数据
-//        for (int i = 1; i <= 10; i++) {
-//            PtVO.Top top = new PtVO.Top();
-//            top.setName("纱种" + i);
-//            top.setDate(LocalDate.now().minusDays(10 - i));
-//            top.setDay(10 - i);
-//            ptVO.getTops().add(top);
-//        }
 
         // 模拟30天的使用情况数据
         for (int day = 0; day < 30; day++) {
@@ -81,24 +82,28 @@ public class InventoryController extends BaseController {
             }
             // 计算比例
             for (PtVO.YarnTypeDetail detail : usage.getDetails()) {
-                BigDecimal ratio = new BigDecimal(detail.getNum())
-                        .divide(new BigDecimal(totalNum), 2, RoundingMode.HALF_UP);
+                BigDecimal ratio = new BigDecimal(detail.getNum()).divide(new BigDecimal(totalNum), 2, RoundingMode.HALF_UP);
                 detail.setRatio(ratio);
             }
             ptVO.getUsages().add(usage);
         }
 
-        // 模拟库存情况数据
-        for (int i = 1; i <= 4; i++) {
-            PtVO.Stock stock = new PtVO.Stock();
-            stock.setName("纱种" + i);
-            stock.setIn(100 * i);
-            stock.setOut(50 * i);
-            stock.setMax(200 * i);
-            stock.setMin(50 * i);
-            stock.setAvg(BigDecimal.valueOf(120.5));
-            ptVO.getStocks().add(stock);
-        }
+        Map<String, PtVO.Stock> stats = new HashMap<>(16);
+        List<TwinCalcHourPt> hourPtList = ptService.selectTwinCalcHourPtByDay(LocalDateTime.now().minusHours(7).toLocalDate());
+
+        hourPtList.forEach(pt -> {
+            PtVO.Stock stock = stats.computeIfAbsent(pt.getName(), k -> new PtVO.Stock());
+            stock.setName(pt.getName());
+            stock.addIn(pt.getInNum());
+            stock.addOut(pt.getOutNum());
+            stock.updateMax(pt.getNum());
+            stock.updateMin(pt.getNum());
+            stock.total(pt.getNum());
+        });
+        long hours = hourPtList.stream().map(TwinCalcHourPt::getHour).distinct().count();
+        stats.values().forEach(stock -> stock.calcAvg((int) hours));
+
+        ptVO.getStocks().addAll(stats.values());
 
         return R.ok(ptVO);
     }
@@ -113,15 +118,6 @@ public class InventoryController extends BaseController {
         List<TopVO> tops = topProcess(sql);
         bpVO.setTops(tops);
 
-//        // 模拟TOP排名数据
-//        for (int i = 1; i <= 10; i++) {
-//            BpVO.Top top = new BpVO.Top();
-//            top.setName("纱种" + i);
-//            top.setDate(LocalDate.now().minusDays(10 - i));
-//            top.setDay(10 - i);
-//            bpVO.getTops().add(top);
-//        }
-
         // 模拟近一月库存情况 - 卷数、米数、重量三种类型
         for (int i = 0; i < 30; i++) {
             // 米数库存
@@ -171,35 +167,50 @@ public class InventoryController extends BaseController {
 
                 // 根据数量计算比例
                 for (BpVO.YarnTypeDetail detail : details) {
-                    BigDecimal ratio = new BigDecimal(detail.getNum())
-                            .divide(new BigDecimal(totalNum), 2, RoundingMode.HALF_UP);
+                    BigDecimal ratio = new BigDecimal(detail.getNum()).divide(new BigDecimal(totalNum), 2, RoundingMode.HALF_UP);
                     detail.setRatio(ratio);
                     stock.getDetails().add(detail);
                 }
             }
         }
+        Map<String, BpVO.Stock[]> stats = new HashMap<>(16);
+        List<TwinCalcHourBp> hourBpList = bpService.selectTwinCalcHourPtByDay(LocalDateTime.now().minusHours(7).toLocalDate());
 
-        // 模拟库存情况数据(卷数、米数、重量)
-        String[] stockTypes = {"卷数", "米数", "重量"};
-        for (String type : stockTypes) {
-            for (int i = 1; i <= 4; i++) {
-                BpVO.Stock stock = new BpVO.Stock();
-                stock.setName("纱种" + i);
-                stock.setIn(100 * i);
-                stock.setOut(50 * i);
-                stock.setMax(200 * i);
-                stock.setMin(50 * i);
-                stock.setAvg(BigDecimal.valueOf(220.5));
-
-                if (type.equals("卷数")) {
-                    bpVO.getRollStocks().add(stock);
-                } else if (type.equals("米数")) {
-                    bpVO.getMeterStocks().add(stock);
-                } else {
-                    bpVO.getWeightStocks().add(stock);
-                }
-            }
-        }
+        hourBpList.forEach(bp -> {
+            BpVO.Stock[] stock = stats.computeIfAbsent(bp.getName(), k -> {
+                BpVO.Stock[] newStock = new BpVO.Stock[3];
+                newStock[0] = new BpVO.Stock(); // 卷数
+                newStock[1] = new BpVO.Stock(); // 米数
+                newStock[2] = new BpVO.Stock(); // 重量
+                return newStock;
+            });
+            // 处理卷数统计
+            processStock(stock[0], bp.getName(), bp.getRollIn(), bp.getRollOut(), bp.getRollNum());
+            // 处理米数统计
+            processStock(stock[1], bp.getName(), bp.getMeterIn(), bp.getMeterOut(), bp.getMeterNum());
+            // 处理重量统计
+            processStock(stock[2], bp.getName(), bp.getWeightIn(), bp.getWeightOut(), bp.getWeightNum());
+        });
+
+        long hours = hourBpList.stream().map(TwinCalcHourBp::getHour).distinct().count();
+        
+        // 使用流式处理优化计算和分类
+        List<BpVO.Stock> rollStocks = new ArrayList<>();
+        List<BpVO.Stock> meterStocks = new ArrayList<>();
+        List<BpVO.Stock> weightStocks = new ArrayList<>();
+
+        stats.values().stream().forEach(stockArray -> {
+            stockArray[0].calcAvg((int) hours);
+            stockArray[1].calcAvg((int) hours);
+            stockArray[2].calcAvg((int) hours);
+            
+            rollStocks.add(stockArray[0]);
+            meterStocks.add(stockArray[1]);
+            weightStocks.add(stockArray[2]);
+        });
+        bpVO.setRollStocks(rollStocks);
+        bpVO.setMeterStocks(meterStocks);
+        bpVO.setWeightStocks(weightStocks);
         return R.ok(bpVO);
     }
 
@@ -223,5 +234,23 @@ public class InventoryController extends BaseController {
         }).collect(Collectors.toList());
     }
 
+    /**
+     * 处理库存数据
+     *
+     * @param stock 库存数据
+     * @param name  名称
+     * @param in    入库数量
+     * @param out   出库数量
+     * @param num   数量
+     */
+    private void processStock(BpVO.Stock stock, String name, Integer in, Integer out, Integer num) {
+        stock.setName(name);
+        stock.addIn(in);
+        stock.addOut(out);
+        stock.updateMax(num);
+        stock.updateMin(num);
+        stock.total(num);
+    }
+
 
 }

+ 6 - 0
jjt-biz/src/main/java/com/jjt/inventory/service/ITwinCalcHourBpService.java

@@ -67,4 +67,10 @@ public interface ITwinCalcHourBpService {
      * @param hour 小时
      */
     void delete(LocalDate date, int hour);
+    /**
+     * 按天查询数据
+     * @param date 日期
+     * @return 结果
+     */
+    List<TwinCalcHourBp> selectTwinCalcHourPtByDay(LocalDate date);
 }

+ 10 - 1
jjt-biz/src/main/java/com/jjt/inventory/service/ITwinCalcHourPtService.java

@@ -1,8 +1,9 @@
 package com.jjt.inventory.service;
 
+import com.jjt.inventory.domain.TwinCalcHourPt;
+
 import java.time.LocalDate;
 import java.util.List;
-import com.jjt.inventory.domain.TwinCalcHourPt;
 
 /**
  * 盘头仓库小时数据Service接口
@@ -61,8 +62,16 @@ public interface ITwinCalcHourPtService {
 
     /**
      * 按时间删除
+     *
      * @param date 日期
      * @param hour 小时
      */
     void delete(LocalDate date, int hour);
+
+    /**
+     * 按天查询数据
+     * @param date 日期
+     * @return 结果
+     */
+    List<TwinCalcHourPt> selectTwinCalcHourPtByDay(LocalDate date);
 }

+ 6 - 6
jjt-biz/src/main/java/com/jjt/inventory/service/impl/InventoryServiceImpl.java

@@ -20,10 +20,7 @@ import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.function.BiConsumer;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -103,6 +100,7 @@ public class InventoryServiceImpl implements IInventoryService {
     private void ptProcess(List<StockVO> ptList, String sqlSuffix, LocalDateTime start) {
         String inSql = "SELECT [时间] TIME,[仓库编码] CODE,[仓库名称] NAME,[物料编码] SKU,[物料描述] SKU_DESCRC,[当日入库量] NUM,[单托_支数_米数] LENGTH,[单重_KG] WEIGHT FROM V_MES_SHANGJIA t" +
                 " WHERE [仓库编码]='WH03'" + sqlSuffix;
+//        AND [物料类型]!='容器类'
         List<Map<String, Object>> inList = mssqlService.executeQuery(inSql);
         String outSql = "SELECT [时间] TIME,[仓库编码] CODE,[仓库名称] NAME,[物料编码] SKU,[物料描述] SKU_DESCRC,[当日出库量] NUM,[单托_支数_米数] LENGTH,[单重_KG] WEIGHT,[产线_目标库位名称] TARGET FROM V_MES_FAYUN t" +
                 " WHERE [仓库编码]='WH03'" + sqlSuffix;
@@ -136,8 +134,9 @@ public class InventoryServiceImpl implements IInventoryService {
 
         List<TwinCalcHourPt> resultList = new ArrayList<>(stats.values());
         resultList.forEach(pt -> {
-            pt.setCreateTime(DateUtils.toDate(start));
-            pt.setUpdateTime(DateUtils.toDate(start));
+            pt.setDataDate(DateUtils.toDate(start.toLocalDate()));
+            pt.setHour(start.getHour());
+            pt.setCreateTime(new Date());
         });
 
         ptService.delete(start.toLocalDate(), start.getHour());
@@ -205,6 +204,7 @@ public class InventoryServiceImpl implements IInventoryService {
         resultList.forEach(bp -> {
             bp.setDataDate(DateUtils.toDate(start.toLocalDate()));
             bp.setHour(start.getHour());
+            bp.setCreateTime(new Date());
             // 定义正则表达式模式
             String patternString = "([A-Za-z]+-[A-Za-z])(\\d+)\\(([0-9.]+\\*[0-9.]+)\\)";
             Pattern pattern = Pattern.compile(patternString);

+ 14 - 0
jjt-biz/src/main/java/com/jjt/inventory/service/impl/TwinCalcHourBpServiceImpl.java

@@ -1,6 +1,7 @@
 package com.jjt.inventory.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.jjt.common.utils.DateUtils;
 import com.jjt.inventory.domain.TwinCalcHourBp;
 import com.jjt.inventory.mapper.TwinCalcHourBpMapper;
 import com.jjt.inventory.service.ITwinCalcHourBpService;
@@ -100,4 +101,17 @@ public class TwinCalcHourBpServiceImpl implements ITwinCalcHourBpService {
         queryWrapper.eq("hour", hour);
         twinCalcHourBpMapper.delete(queryWrapper);
     }
+
+    /**
+     * 查询白坯仓库小时数据
+     *
+     * @param date 日期
+     * @return 白坯仓库小时数据
+     */
+    @Override
+    public List<TwinCalcHourBp> selectTwinCalcHourPtByDay(LocalDate date) {
+        TwinCalcHourBp query = new TwinCalcHourBp();
+        query.setDataDate(DateUtils.toDate(date));
+        return selectTwinCalcHourBpList(query);
+    }
 }

+ 14 - 0
jjt-biz/src/main/java/com/jjt/inventory/service/impl/TwinCalcHourPtServiceImpl.java

@@ -1,6 +1,7 @@
 package com.jjt.inventory.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.jjt.common.utils.DateUtils;
 import com.jjt.inventory.domain.TwinCalcHourPt;
 import com.jjt.inventory.mapper.TwinCalcHourPtMapper;
 import com.jjt.inventory.service.ITwinCalcHourPtService;
@@ -100,4 +101,17 @@ public class TwinCalcHourPtServiceImpl implements ITwinCalcHourPtService {
         queryWrapper.eq("hour", hour);
         twinCalcHourPtMapper.delete(queryWrapper);
     }
+
+    /**
+     * 按时间查询
+     *
+     * @param date 日期
+     * @return 结果
+     */
+    @Override
+    public List<TwinCalcHourPt> selectTwinCalcHourPtByDay(LocalDate date) {
+        TwinCalcHourPt query = new TwinCalcHourPt();
+        query.setDataDate(DateUtils.toDate(date));
+        return selectTwinCalcHourPtList(query);
+    }
 }

+ 33 - 1
jjt-biz/src/main/java/com/jjt/inventory/vo/BpVO.java

@@ -6,6 +6,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.util.List;
 
@@ -45,7 +46,6 @@ public class BpVO {
     }
 
     @Data
-    @NoArgsConstructor
     @ApiModel("库存情况")
     public static class Stock {
         @ApiModelProperty("纱种名称")
@@ -60,6 +60,38 @@ public class BpVO {
         private Integer min;
         @ApiModelProperty("平均库存量")
         private BigDecimal avg;
+
+        public Stock() {
+            this.in = 0;
+            this.out = 0;
+            this.max = 0;
+            this.min = 999999999;
+            this.avg = BigDecimal.ZERO;
+        }
+
+        public void addIn(int amount) {
+            this.in += amount;
+        }
+
+        public void calcAvg(int amount) {
+            this.avg = avg.divide(BigDecimal.valueOf(amount), 2, RoundingMode.HALF_UP);
+        }
+
+        public void total(int amount) {
+            this.avg = this.avg.add(BigDecimal.valueOf(amount));
+        }
+
+        public void addOut(int amount) {
+            this.out += amount;
+        }
+
+        public void updateMax(int current) {
+            this.max = Math.max(this.max, current);
+        }
+
+        public void updateMin(int current) {
+            this.min = Math.min(this.min, current);
+        }
     }
 
     @Data

+ 33 - 1
jjt-biz/src/main/java/com/jjt/inventory/vo/PtVO.java

@@ -6,6 +6,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.List;
@@ -35,7 +36,6 @@ public class PtVO {
     }
 
     @Data
-    @NoArgsConstructor
     @ApiModel("库存情况")
     public static class Stock {
         @ApiModelProperty("纱种名称")
@@ -50,6 +50,38 @@ public class PtVO {
         private Integer min;
         @ApiModelProperty("平均库存量")
         private BigDecimal avg;
+
+        public Stock() {
+            this.in = 0;
+            this.out = 0;
+            this.max = 0;
+            this.min = 999999999;
+            this.avg = BigDecimal.ZERO;
+        }
+
+        public void addIn(int amount) {
+            this.in += amount;
+        }
+
+        public void calcAvg(int amount) {
+            this.avg = avg.divide(BigDecimal.valueOf(amount), 2, RoundingMode.HALF_UP);
+        }
+
+        public void total(int amount) {
+            this.avg = this.avg.add(BigDecimal.valueOf(amount));
+        }
+
+        public void addOut(int amount) {
+            this.out += amount;
+        }
+
+        public void updateMax(int current) {
+            this.max = Math.max(this.max, current);
+        }
+
+        public void updateMin(int current) {
+            this.min = Math.min(this.min, current);
+        }
     }
 
     @Data

+ 40 - 27
jjt-biz/src/main/resources/mapper/calc/TwinCalcHourSpecMapper.xml

@@ -1,40 +1,51 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.jjt.calc.mapper.TwinCalcHourSpecMapper">
 
     <resultMap type="TwinCalcHourSpec" id="TwinCalcHourSpecResult">
-        <result property="id"    column="ID"    />
-        <result property="dataDate"    column="DATA_DATE"    />
-        <result property="hour"    column="HOUR"    />
-        <result property="deviceId"    column="DEVICE_ID"    />
-        <result property="length"    column="LENGTH"    />
-        <result property="spec"    column="SPEC"    />
-        <result property="height"    column="HEIGHT"    />
-        <result property="mick"    column="MICK"    />
-        <result property="density"    column="DENSITY"    />
-        <result property="price"    column="PRICE"    />
-        <result property="remark"    column="REMARK"    />
+        <result property="id" column="ID"/>
+        <result property="dataDate" column="DATA_DATE"/>
+        <result property="hour" column="HOUR"/>
+        <result property="deviceId" column="DEVICE_ID"/>
+        <result property="length" column="LENGTH"/>
+        <result property="spec" column="SPEC"/>
+        <result property="height" column="HEIGHT"/>
+        <result property="mick" column="MICK"/>
+        <result property="density" column="DENSITY"/>
+        <result property="price" column="PRICE"/>
+        <result property="remark" column="REMARK"/>
     </resultMap>
 
     <sql id="selectTwinCalcHourSpecVo">
-        select ID, DATA_DATE, HOUR, DEVICE_ID, LENGTH, SPEC, HEIGHT, MICK, DENSITY, PRICE, REMARK from TWIN_CALC_HOUR_SPEC
+        select ID,
+               DATA_DATE,
+               HOUR,
+               DEVICE_ID,
+               LENGTH,
+               SPEC,
+               HEIGHT,
+               MICK,
+               DENSITY,
+               PRICE,
+               REMARK
+        from TWIN_CALC_HOUR_SPEC
     </sql>
 
     <select id="selectTwinCalcHourSpecList" parameterType="TwinCalcHourSpec" resultMap="TwinCalcHourSpecResult">
         <include refid="selectTwinCalcHourSpecVo"/>
         <where>
-            <if test="dataDate != null "> and DATA_DATE = #{dataDate}</if>
-            <if test="hour != null "> and HOUR = #{hour}</if>
-            <if test="deviceId != null "> and DEVICE_ID = #{deviceId}</if>
-            <if test="length != null "> and LENGTH = #{length}</if>
-            <if test="spec != null  and spec != ''"> and SPEC = #{spec}</if>
-            <if test="height != null "> and HEIGHT = #{height}</if>
-            <if test="mick != null "> and MICK = #{mick}</if>
-            <if test="density != null "> and DENSITY = #{density}</if>
-            <if test="price != null "> and PRICE = #{price}</if>
-            <if test="remark != null  and remark != ''"> and REMARK = #{remark}</if>
+            <if test="dataDate != null ">and DATEADD(hour, -HOUR, DATA_DATE) = #{dataDate}</if>
+            <if test="hour != null ">and HOUR = #{hour}</if>
+            <if test="deviceId != null ">and DEVICE_ID = #{deviceId}</if>
+            <if test="length != null ">and LENGTH = #{length}</if>
+            <if test="spec != null  and spec != ''">and SPEC = #{spec}</if>
+            <if test="height != null ">and HEIGHT = #{height}</if>
+            <if test="mick != null ">and MICK = #{mick}</if>
+            <if test="density != null ">and DENSITY = #{density}</if>
+            <if test="price != null ">and PRICE = #{price}</if>
+            <if test="remark != null  and remark != ''">and REMARK = #{remark}</if>
             <if test="params.sTime != null and params.eTime != null">
                 and DATEADD(hour, HOUR, DATA_DATE) between #{params.sTime} and #{params.eTime}
             </if>
@@ -59,7 +70,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="density != null">DENSITY,</if>
             <if test="price != null">PRICE,</if>
             <if test="remark != null">REMARK,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="dataDate != null">#{dataDate},</if>
             <if test="hour != null">#{hour},</if>
@@ -71,7 +82,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="density != null">#{density},</if>
             <if test="price != null">#{price},</if>
             <if test="remark != null">#{remark},</if>
-         </trim>
+        </trim>
     </insert>
 
     <update id="updateTwinCalcHourSpec" parameterType="TwinCalcHourSpec">
@@ -92,7 +103,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </update>
 
     <delete id="deleteTwinCalcHourSpecById" parameterType="Long">
-        delete from TWIN_CALC_HOUR_SPEC where ID = #{id}
+        delete
+        from TWIN_CALC_HOUR_SPEC
+        where ID = #{id}
     </delete>
 
     <delete id="deleteTwinCalcHourSpecByIds" parameterType="String">

+ 1 - 1
jjt-biz/src/main/resources/mapper/inventory/TwinCalcHourBpMapper.xml

@@ -54,7 +54,7 @@
     <select id="selectTwinCalcHourBpList" parameterType="TwinCalcHourBp" resultMap="TwinCalcHourBpResult">
         <include refid="selectTwinCalcHourBpVo"/>
         <where>
-            <if test="dataDate != null ">and DATA_DATE = #{dataDate}</if>
+            <if test="dataDate != null ">and cast( DATEADD(hour, HOUR-7, DATA_DATE) as date) = #{dataDate}</if>
             <if test="hour != null ">and HOUR = #{hour}</if>
             <if test="name != null  and name != ''">and NAME like concat('%', #{name}, '%')</if>
             <if test="sku != null  and sku != ''">and SKU = #{sku}</if>

+ 46 - 31
jjt-biz/src/main/resources/mapper/inventory/TwinCalcHourPtMapper.xml

@@ -1,44 +1,57 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.jjt.inventory.mapper.TwinCalcHourPtMapper">
 
     <resultMap type="TwinCalcHourPt" id="TwinCalcHourPtResult">
-        <result property="id"    column="ID"    />
-        <result property="dataDate"    column="DATA_DATE"    />
-        <result property="hour"    column="HOUR"    />
-        <result property="name"    column="NAME"    />
-        <result property="sku"    column="SKU"    />
-        <result property="inNum"    column="IN_NUM"    />
-        <result property="outNum"    column="OUT_NUM"    />
-        <result property="num"    column="NUM"    />
-        <result property="createdBy"    column="CREATED_BY"    />
-        <result property="createdTime"    column="CREATED_TIME"    />
-        <result property="updatedBy"    column="UPDATED_BY"    />
-        <result property="updatedTime"    column="UPDATED_TIME"    />
-        <result property="remark"    column="REMARK"    />
+        <result property="id" column="ID"/>
+        <result property="dataDate" column="DATA_DATE"/>
+        <result property="hour" column="HOUR"/>
+        <result property="name" column="NAME"/>
+        <result property="sku" column="SKU"/>
+        <result property="inNum" column="IN_NUM"/>
+        <result property="outNum" column="OUT_NUM"/>
+        <result property="num" column="NUM"/>
+        <result property="createdBy" column="CREATED_BY"/>
+        <result property="createdTime" column="CREATED_TIME"/>
+        <result property="updatedBy" column="UPDATED_BY"/>
+        <result property="updatedTime" column="UPDATED_TIME"/>
+        <result property="remark" column="REMARK"/>
     </resultMap>
 
     <sql id="selectTwinCalcHourPtVo">
-        select ID, DATA_DATE, HOUR, NAME, SKU, IN_NUM, OUT_NUM, NUM, CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME, REMARK from TWIN_CALC_HOUR_PT
+        select ID,
+               DATA_DATE,
+               HOUR,
+               NAME,
+               SKU,
+               IN_NUM,
+               OUT_NUM,
+               NUM,
+               CREATED_BY,
+               CREATED_TIME,
+               UPDATED_BY,
+               UPDATED_TIME,
+               REMARK
+        from TWIN_CALC_HOUR_PT
     </sql>
 
     <select id="selectTwinCalcHourPtList" parameterType="TwinCalcHourPt" resultMap="TwinCalcHourPtResult">
         <include refid="selectTwinCalcHourPtVo"/>
         <where>
-            <if test="dataDate != null "> and DATA_DATE = #{dataDate}</if>
-            <if test="hour != null "> and HOUR = #{hour}</if>
-            <if test="name != null  and name != ''"> and NAME like concat('%', #{name}, '%')</if>
-            <if test="sku != null  and sku != ''"> and SKU = #{sku}</if>
-            <if test="inNum != null "> and IN_NUM = #{inNum}</if>
-            <if test="outNum != null "> and OUT_NUM = #{outNum}</if>
-            <if test="num != null "> and NUM = #{num}</if>
-            <if test="createdBy != null  and createdBy != ''"> and CREATED_BY = #{createdBy}</if>
-            <if test="createdTime != null "> and CREATED_TIME = #{createdTime}</if>
-            <if test="updatedBy != null  and updatedBy != ''"> and UPDATED_BY = #{updatedBy}</if>
-            <if test="updatedTime != null "> and UPDATED_TIME = #{updatedTime}</if>
-            <if test="remark != null  and remark != ''"> and REMARK = #{remark}</if>
+            <if test="dataDate != null ">and cast( DATEADD(hour, HOUR-7, DATA_DATE) as date) = #{dataDate}</if>
+            <if test="hour != null ">and HOUR = #{hour}</if>
+            <if test="name != null  and name != ''">and NAME like concat('%', #{name}, '%')</if>
+            <if test="sku != null  and sku != ''">and SKU = #{sku}</if>
+            <if test="inNum != null ">and IN_NUM = #{inNum}</if>
+            <if test="outNum != null ">and OUT_NUM = #{outNum}</if>
+            <if test="num != null ">and NUM = #{num}</if>
+            <if test="createdBy != null  and createdBy != ''">and CREATED_BY = #{createdBy}</if>
+            <if test="createdTime != null ">and CREATED_TIME = #{createdTime}</if>
+            <if test="updatedBy != null  and updatedBy != ''">and UPDATED_BY = #{updatedBy}</if>
+            <if test="updatedTime != null ">and UPDATED_TIME = #{updatedTime}</if>
+            <if test="remark != null  and remark != ''">and REMARK = #{remark}</if>
         </where>
     </select>
 
@@ -62,7 +75,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updatedBy != null">UPDATED_BY,</if>
             <if test="updatedTime != null">UPDATED_TIME,</if>
             <if test="remark != null">REMARK,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="dataDate != null">#{dataDate},</if>
             <if test="hour != null">#{hour},</if>
@@ -76,7 +89,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updatedBy != null">#{updatedBy},</if>
             <if test="updatedTime != null">#{updatedTime},</if>
             <if test="remark != null">#{remark},</if>
-         </trim>
+        </trim>
     </insert>
 
     <update id="updateTwinCalcHourPt" parameterType="TwinCalcHourPt">
@@ -99,7 +112,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </update>
 
     <delete id="deleteTwinCalcHourPtById" parameterType="Long">
-        delete from TWIN_CALC_HOUR_PT where ID = #{id}
+        delete
+        from TWIN_CALC_HOUR_PT
+        where ID = #{id}
     </delete>
 
     <delete id="deleteTwinCalcHourPtByIds" parameterType="String">