futian.liu
2023-11-28 89495b208235d2e30244ce9485c75ac2f1690c79
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
package com.consum.base.service;
 
import com.consum.base.core.WhBusinessEnum;
import com.consum.base.core.utils.MapRowMapper;
import com.consum.base.core.utils.MapUtils;
import com.consum.base.core.utils.MapperUtil;
import com.consum.base.core.utils.MixType;
import com.consum.base.core.utils.PageUtil;
import com.consum.base.pojo.LWarehouseFlowParam;
import com.consum.base.pojo.query.LWhFormOutputQry;
import com.consum.base.pojo.response.OutAndInDetailVO;
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.jdbc.service.BaseServiceImpl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.compress.utils.Lists;
import org.springframework.stereotype.Service;
 
/**
 * @ClassName LWarehouseFlowService
 * @Date 2023/10/25
 * @Description
 * @Version 1.0
 **/
@Service
public class LWarehouseFlowService extends BaseServiceImpl {
 
    /**
     * 查询明细
     *
     * @param param
     * @return
     */
    private String QUERY_BUSINESS_FLOW = "SELECT flow.BUSINESS_TYPE,flow.BUSINESS_FORM_ID,CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.BUSINESS_FORM_CODE WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.BUSINESS_FORM_CODE END BUSINESS_FORM_CODE,record.GOODS_TEMPLATE_NAME,record.BASE_GOODS_MODELS_NAME,record.THIS_COUNT,record.THIS_TYPE,record.total_price,CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.AGENCY_NAME WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.AGENCY_NAME END AGENCY_NAME,CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.BUYER_NAME WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.OPERATOR_NAME END created_Name,flow.DEAL_TIME deal_Time FROM L_WAREHOUSE_FLOW flow LEFT JOIN L_WH_GOODS_RECORD record ON flow.id=record.WAREHOUSE_FLOW_ID LEFT JOIN L_WH_FORM_PROCURE tCaiGou ON flow.BUSINESS_TYPE=1 AND tCaiGou.id=flow.BUSINESS_FORM_ID LEFT JOIN L_WH_FORM_OUTPUT tFormOut ON flow.BUSINESS_TYPE=3 AND tFormOut.id=flow.BUSINESS_FORM_ID WHERE 1=1 ";
 
    public GenericPager<Map<String, Object>> queryBusinessFlow(LWarehouseFlowParam param) {
        StringBuilder sql = new StringBuilder(QUERY_BUSINESS_FLOW);
        Map<String, Object> paramts = new HashMap<>();
//        ArrayList<Object> params = new ArrayList<>();
        if (param.getBusinessType() != null) {
            sql.append(" and flow.BUSINESS_TYPE =:businessType");
            paramts.put("businessType", param.getBusinessType());
//            sql.append(" and flow.BUSINESS_TYPE =?");
//            params.add(param.getBusinessType());
        }
        if (StringUtils.isNotEmpty(param.getBusinessFormCode())) {
            sql.append(" AND CASE WHEN flow.BUSINESS_TYPE = 1 THEN tCaiGou.BUSINESS_FORM_CODE=:businessFormCode"
                + " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.BUSINESS_FORM_CODE=:businessFormCode END");
            paramts.put("businessFormCode", param.getBusinessFormCode());
//            sql.append(" AND CASE WHEN flow.BUSINESS_TYPE = 1 THEN flow.BUSINESS_FORM_CODE=?");
//            params.add(param.getBusinessFormCode());
        }
        if (param.getGoodsTemplateName() != null) {
            sql.append(" AND record.GOODS_TEMPLATE_NAME like :goodsTemplateName");
            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
//            sql.append(" AND record.GOODS_TEMPLATE_NAME like ?");
//            params.add(StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
        }
        if (param.getBaseGoodsModelsName() != null) {
            sql.append(" AND record.BASE_GOODS_MODELS_NAME like :baseGoodsModelsName");
            paramts.put("baseGoodsModelsName", StringUtils.CHAR_PERCENT + param.getBaseGoodsModelsName() + StringUtils.CHAR_PERCENT);
        }
        if (param.getAgencyId() != null) {
            sql.append(" AND tCaiGou.AGENCY_id=:agencyId");
            paramts.put("agencyId", param.getAgencyId());
        }
        if (param.getCreatedName() != null) {
            sql.append(" AND CASE" + " WHEN flow.BUSINESS_TYPE = 1 THEN tCaiGou.BUYER_NAME LIKE :createdName"
                + " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.OPERATOR_NAME LIKE :createdName END");
            paramts.put("createdName", StringUtils.CHAR_PERCENT + param.getCreatedName() + StringUtils.CHAR_PERCENT);
        }
        if (param.getDealTimeStart() != null) {
            sql.append(" and flow.DEAL_TIME >=:dealTimeStart ");
            paramts.put("dealTimeStart", param.getDealTimeStart() * 1000000);
        }
        if (param.getDealTimeEnd() != null) {
            sql.append(" and flow.DEAL_TIME <:dealTimeEnd ");
            paramts.put("dealTimeEnd", param.getDealTimeEnd() * 1000000 + 240000);
        }
        return selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapRowMapper());
    }
 
 
    /**
     * 台账查询
     *
     * @param param
     * @return
     */
    private String QUERY_TAIZHANG_LIST_QUERY = "SELECT CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.AGENCY_NAME WHEN (flow.BUSINESS_TYPE=2 OR flow.BUSINESS_TYPE=4 OR flow.BUSINESS_TYPE=6) THEN tTrans.OPERATOR_NAME WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.AGENCY_NAME WHEN flow.BUSINESS_TYPE=5 THEN tScrapped.AGENCY_NAME WHEN flow.BUSINESS_TYPE=7 THEN tInventory.AGENCY_NAME END AGENCY_NAME,ware.WAREHOUSE_NAME,record.GOODS_TEMPLATE_NAME,record.BASE_GOODS_MODELS_NAME,record.THIS_TYPE,flow.BUSINESS_TYPE,CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.BUSINESS_FORM_CODE WHEN (flow.BUSINESS_TYPE=2 OR flow.BUSINESS_TYPE=4 OR flow.BUSINESS_TYPE=6) THEN tTrans.BUSINESS_FORM_CODE WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.BUSINESS_FORM_CODE WHEN flow.BUSINESS_TYPE=5 THEN tScrapped.BUSINESS_FORM_CODE WHEN flow.BUSINESS_TYPE=7 THEN tInventory.BUSINESS_FORM_CODE END BUSINESS_FORM_CODe,record.THIS_COUNT,record.INITIAL_COUNT,record.END_COUNT,flow.DEAL_TIME,CASE WHEN flow.BUSINESS_TYPE=2 AND tTrans.STATES=1 THEN record.THIS_COUNT ELSE 0 END zai_Tu_Count FROM (SELECT*FROM BASE_WAREHOUSE WHERE 1=1 ";
    private String QUERY_TAIZHANG_LIST_RECORD = ")ware LEFT JOIN L_WAREHOUSE_FLOW flow ON ware.id=flow.WAREHOUSE_ID AND flow.WAREHOUSE_TYPE=0 LEFT JOIN L_WH_GOODS_RECORD record ON flow.id=record.WAREHOUSE_FLOW_ID ";
    private String QUERY_TAIZHANG_LIST_END = " WHERE record.id IS NOT NULL";
    private String QUERY_TAIZHANG_LIST_CAIGOU = " LEFT JOIN L_WH_FORM_PROCURE tCaiGou ON flow.BUSINESS_TYPE=1 AND tCaiGou.id=flow.BUSINESS_FORM_ID ";
    private String QUERY_TAIZHANG_LIST_DIAOBO = " LEFT JOIN L_WH_FORM_TRANSFER tTrans ON (flow.BUSINESS_TYPE=2 or flow.BUSINESS_TYPE=4 or flow.BUSINESS_TYPE=6) AND tTrans.id=flow.BUSINESS_FORM_ID ";
    private String QUERY_TAIZHANG_LIST_CHUKU = " LEFT JOIN L_WH_FORM_OUTPUT tFormOut ON flow.BUSINESS_TYPE=3 AND tFormOut.id=flow.BUSINESS_FORM_ID ";
    private String QUERY_TAIZHANG_LIST_PANDIAN = " LEFT JOIN L_WH_FORM_INVENTORY tInventory ON flow.BUSINESS_TYPE=7 AND tInventory.id=flow.BUSINESS_FORM_ID ";
    private String QUERY_TAIZHANG_LIST_BAOFEI = " LEFT JOIN L_WH_FORM_SCRAPPED tScrapped ON flow.BUSINESS_TYPE=5 AND tScrapped.id=flow.BUSINESS_FORM_ID ";
 
    public GenericPager<Map<String, Object>> queryTaiZhangList(LWarehouseFlowParam param) {
        StringBuilder sqlQuery = new StringBuilder(QUERY_TAIZHANG_LIST_QUERY);
        StringBuilder sqlEndRecord = new StringBuilder(QUERY_TAIZHANG_LIST_RECORD);
        StringBuilder sqlCaiGou = new StringBuilder(QUERY_TAIZHANG_LIST_CAIGOU);
        StringBuilder sqlDiaoBo = new StringBuilder(QUERY_TAIZHANG_LIST_DIAOBO);
        StringBuilder sqlChuKu = new StringBuilder(QUERY_TAIZHANG_LIST_CHUKU);
        StringBuilder sqlBaoFei = new StringBuilder(QUERY_TAIZHANG_LIST_BAOFEI);
        StringBuilder sqlPanDian = new StringBuilder(QUERY_TAIZHANG_LIST_PANDIAN);
        StringBuilder sqlEnd = new StringBuilder(QUERY_TAIZHANG_LIST_END);
 
        HashMap<String, Object> paramts = new HashMap<>();
        //机构
        if (param.getAgencyId() != null) {
            sqlQuery.append(" AND left(AGENCY_ID, length(:lengthAgencyId)) = :agencyId");
            paramts.put("lengthAgencyId", param.getAgencyId());
            paramts.put("agencyId", param.getAgencyId());
        }
        //仓库类型
        if (param.getWarehouseType() != null) {
            sqlQuery.append(" AND WAREHOUSE_TYPE = :warehouseType");
            paramts.put("warehouseType", param.getWarehouseType());
        }
        if (param.getBaseWarehouseId() != null) {
            sqlQuery.append(" AND id = :warehouseId");
            paramts.put("warehouseId", param.getBaseWarehouseId());
        }
        //物品名称
        if (StringUtils.isNotEmpty(param.getGoodsTemplateName())) {
            sqlEnd.append(" AND record.GOODS_TEMPLATE_NAME like :goodsTemplateName");
            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
        }
        if (param.getGoodsTemplateId() != null) {
            sqlEnd.append(" AND record.BASE_GOODS_TEMPLATE_ID=:goodsTemplateId");
            paramts.put("goodsTemplateId", param.getGoodsTemplateId());
        }
        //规格型号
        if (param.getBaseGoodsModelsId() != null) {
            sqlEnd.append(" AND record.BASE_GOODS_MODELS_ID=:baseGoodsModelsId");
            paramts.put("baseGoodsModelsId", param.getBaseGoodsModelsId());
        }
        // 同码表,1采购入库 2退还入库 3调拨入库 4盘盈入库 5申领出库 6调拨出库 7盘亏出库 8报废出库 9其他出库
        Short flowType = param.getFlowType();
        if (flowType != null) {
            Map<String, Short> typeByFlowType = WhBusinessEnum.getTypeByFlowType(flowType);
            //本次调整类型(1=调增;2=调减)
            Short flowThisType = typeByFlowType.get("flowThisType");
            //单据类型 1 采购2 调拨 3出库4部门分发5报废6部门物品回退仓库7物品盘点
            Short flowBusinessType = typeByFlowType.get("flowBusinessType");
            if (flowThisType != null) {
                sqlEnd.append(" AND flow.THIS_TYPE=:flowThisType");
                paramts.put("flowThisType", flowThisType);
            }
            if (flowBusinessType != null) {
                sqlEnd.append(" AND flow.BUSINESS_TYPE=:flowBusinessType");
                paramts.put("flowBusinessType", flowBusinessType);
            }
        }
        // 单号
        String businessFormCode = param.getBusinessFormCode();
        if (StringUtils.isNotEmpty(businessFormCode)) {
            sqlCaiGou.append(" and tCaiGou.BUSINESS_FORM_CODE = :caoGouBusinessFormCode");
            paramts.put("caoGouBusinessFormCode", businessFormCode);
            sqlDiaoBo.append(" and tTrans.BUSINESS_FORM_CODE = :diaoBoBusinessFormCode");
            paramts.put("diaoBoBusinessFormCode", businessFormCode);
            sqlChuKu.append(" and tFormOut.BUSINESS_FORM_CODE = :chuKuBusinessFormCode");
            paramts.put("chuKuBusinessFormCode", businessFormCode);
            sqlBaoFei.append(" and tScrapped.BUSINESS_FORM_CODE = :baoFeiBusinessFormCode");
            paramts.put("baoFeiBusinessFormCode", businessFormCode);
            sqlPanDian.append(" and tInventory.BUSINESS_FORM_CODE = :panDianBusinessFormCode");
            paramts.put("panDianBusinessFormCode", businessFormCode);
 
            sqlEnd.append(" and case when flow.BUSINESS_TYPE = 1 THEN tCaiGou.BUSINESS_FORM_CODE" +
                " WHEN ( flow.BUSINESS_TYPE = 2 OR flow.BUSINESS_TYPE = 4 OR flow.BUSINESS_TYPE = 6 ) THEN tTrans.BUSINESS_FORM_CODE" +
                " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.BUSINESS_FORM_CODE" +
                " WHEN flow.BUSINESS_TYPE = 5 THEN tScrapped.BUSINESS_FORM_CODE" +
                " WHEN flow.BUSINESS_TYPE = 7 THEN tInventory.BUSINESS_FORM_CODE end =:whereBusinessFormCode");
            paramts.put("whereBusinessFormCode", businessFormCode);
 
 
        }
        // 操作时间
        if (param.getDealTimeStart() != null) {
            sqlEnd.append(" and flow.DEAL_TIME >=:dealTimeStart ");
            paramts.put("dealTimeStart", param.getDealTimeStart() * 1000000);
        }
        if (param.getDealTimeEnd() != null) {
            sqlEnd.append(" and flow.DEAL_TIME <:dealTimeEnd ");
            paramts.put("dealTimeEnd", param.getDealTimeEnd() * 1000000 + 240000);
        }
        sqlEnd.append(" ORDER BY record.DEAL_TIME desc,record.id DESC ");
 
        StringBuilder sql = new StringBuilder();
        sql.append(sqlQuery)
            .append(sqlEndRecord)
            .append(sqlCaiGou)
            .append(sqlDiaoBo)
            .append(sqlChuKu)
            .append(sqlBaoFei)
            .append(sqlPanDian)
 
            .append(sqlEnd);
 
        return selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
    }
 
 
    public PageUtil queryAllBusinessFlow(LWhFormOutputQry param) {
        StringBuilder sql = new StringBuilder("SELECT\n"
            + "CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.id \n"
            + "WHEN (flow.BUSINESS_TYPE=2 OR flow.BUSINESS_TYPE=4 OR flow.BUSINESS_TYPE=6) THEN tTrans.id \n"
            + "WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.id \n"
            + "WHEN flow.BUSINESS_TYPE=5 THEN tScrapped.id \n"
            + "WHEN flow.BUSINESS_TYPE=7 THEN tInventory.id END id,\n"
            + "\n"
            + "CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.BUSINESS_FORM_CODE \n"
            + "WHEN (flow.BUSINESS_TYPE=2 OR flow.BUSINESS_TYPE=4 OR flow.BUSINESS_TYPE=6) THEN tTrans.BUSINESS_FORM_CODE \n"
            + "WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.BUSINESS_FORM_CODE \n"
            + "WHEN flow.BUSINESS_TYPE=5 THEN tScrapped.BUSINESS_FORM_CODE \n"
            + "WHEN flow.BUSINESS_TYPE=7 THEN tInventory.BUSINESS_FORM_CODE END BUSINESS_FORM_CODE,\n"
            + "\n"
            + "CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.AGENCY_NAME \n"
            + "WHEN (flow.BUSINESS_TYPE=2 OR flow.BUSINESS_TYPE=4 OR flow.BUSINESS_TYPE=6) THEN tTrans.OPERATOR_NAME \n"
            + "WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.AGENCY_NAME \n"
            + "WHEN flow.BUSINESS_TYPE=5 THEN tScrapped.AGENCY_NAME \n"
            + "WHEN flow.BUSINESS_TYPE=7 THEN tInventory.AGENCY_NAME END AGENCY_NAME,\n"
            + "\n"
            + "record.GOODS_TEMPLATE_NAME,\n"
            + "record.BASE_GOODS_MODELS_NAME,\n"
            + "record.THIS_TYPE,\n"
            + "flow.BUSINESS_TYPE,\n"
            + "record.THIS_COUNT,\n"
            + "flow.DEAL_TIME,\n"
            + "flow.OPERATOR_NAME,\n"
            + "record.TOTAL_PRICE\n"
            + "FROM  L_WAREHOUSE_FLOW flow\n"
            + "LEFT JOIN L_WH_GOODS_RECORD record ON flow.id=record.WAREHOUSE_FLOW_ID\n"
            + "LEFT JOIN L_WH_FORM_PROCURE tCaiGou ON flow.BUSINESS_TYPE=1 AND tCaiGou.id=flow.BUSINESS_FORM_ID\n"
            + "LEFT JOIN L_WH_FORM_TRANSFER tTrans ON (flow.BUSINESS_TYPE=2 or flow.BUSINESS_TYPE=4 or flow.BUSINESS_TYPE=6) AND tTrans.id=flow.BUSINESS_FORM_ID\n"
            + "LEFT JOIN L_WH_FORM_OUTPUT tFormOut ON flow.BUSINESS_TYPE=3 AND tFormOut.id=flow.BUSINESS_FORM_ID\n"
            + "LEFT JOIN L_WH_FORM_INVENTORY tInventory ON flow.BUSINESS_TYPE=7 AND tInventory.id=flow.BUSINESS_FORM_ID\n"
            + "LEFT JOIN L_WH_FORM_SCRAPPED tScrapped ON flow.BUSINESS_TYPE=5 AND tScrapped.id=flow.BUSINESS_FORM_ID\n"
            + "LEFT JOIN base_warehouse bw ON flow.WAREHOUSE_ID = bw.id\n"
            + "LEFT JOIN fin_sys_tenant fst ON fst.id = bw.AGENCY_ID\n"
            + "WHERE record.id IS NOT NULL ");
 
        HashMap<String, Object> paramts = new HashMap<>();
        //机构
        if (param.getAgencyId() != null) {
            sql.append("AND fst.id like :agencyId ");
            paramts.put("agencyId", param.getAgencyId() + StringUtils.CHAR_PERCENT);
        }
 
        //物品名称
        if (StringUtils.isNotEmpty(param.getGoodsTempName())) {
            sql.append(" AND record.GOODS_TEMPLATE_NAME like :goodsTemplateName");
            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTempName() + StringUtils.CHAR_PERCENT);
        }
        if (param.getGoodsTemplateId() != null) {
            sql.append(" AND record.BASE_GOODS_TEMPLATE_ID =:goodsTemplateId");
            paramts.put("goodsTemplateId", param.getGoodsTemplateId());
        }
        //规格型号
        if (param.getBaseGoodsModelsId() != null) {
            sql.append(" AND record.BASE_GOODS_MODELS_ID=:baseGoodsModelsId");
            paramts.put("baseGoodsModelsId", param.getBaseGoodsModelsId());
        }
        // 同码表,1采购入库 2退还入库 3调拨入库 4盘盈入库 5申领出库 6调拨出库 7盘亏出库 8报废出库 9其他出库
        Integer flowType = param.getFlowType();
        if (flowType != null) {
            Map<String, Short> typeByFlowType = WhBusinessEnum.getTypeByFlowType(flowType.shortValue());
            //本次调整类型(1=调增;2=调减)
            Short flowThisType = typeByFlowType.get("flowThisType");
            //单据类型 1 采购2 调拨 3出库4部门分发5报废6部门物品回退仓库7物品盘点
            Short flowBusinessType = typeByFlowType.get("flowBusinessType");
            if (flowThisType != null) {
                sql.append(" AND flow.THIS_TYPE=:flowThisType");
                paramts.put("flowThisType", flowThisType);
            }
            if (flowBusinessType != null) {
                sql.append(" AND flow.BUSINESS_TYPE=:flowBusinessType");
                paramts.put("flowBusinessType", flowBusinessType);
            }
        }
        // 单号
        String businessFormCode = param.getBusinessFormCode();
        if (StringUtils.isNotEmpty(businessFormCode)) {
            sql.append(" and case when flow.BUSINESS_TYPE = 1 THEN tCaiGou.BUSINESS_FORM_CODE =:whereBusinessFormCode" +
                " WHEN ( flow.BUSINESS_TYPE = 2 OR flow.BUSINESS_TYPE = 4 OR flow.BUSINESS_TYPE = 6 ) THEN tTrans.BUSINESS_FORM_CODE =:whereBusinessFormCode" +
                " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.BUSINESS_FORM_CODE=:whereBusinessFormCode" +
                " WHEN flow.BUSINESS_TYPE = 5 THEN tScrapped.BUSINESS_FORM_CODE =:whereBusinessFormCode" +
                " WHEN flow.BUSINESS_TYPE = 7 THEN tInventory.BUSINESS_FORM_CODE =:whereBusinessFormCode end");
            paramts.put("whereBusinessFormCode", businessFormCode);
 
        }
        // 操作时间
        if (param.getStartTime() != null) {
            sql.append(" and flow.DEAL_TIME >=:dealTimeStart ");
            paramts.put("dealTimeStart", param.getStartTime() * 1000000);
        }
        if (param.getEndTime() != null) {
            sql.append(" and flow.DEAL_TIME <:dealTimeEnd ");
            paramts.put("dealTimeEnd", param.getEndTime() * 1000000 + 240000);
        }
        sql.append(" ORDER BY record.DEAL_TIME desc,record.id DESC ");
        GenericPager<Map<String, Object>> mapGenericPager = selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
        PageUtil pageUtil = new PageUtil(mapGenericPager);
        List<OutAndInDetailVO> result = Lists.newArrayList();
        mapGenericPager.getDatas().forEach(map -> {
            OutAndInDetailVO outAndInDetailVO = MapUtils.convertMapToObj(map, OutAndInDetailVO.class);
            Integer thisType = outAndInDetailVO.getThisType();
            Integer businessType = outAndInDetailVO.getBusinessType();
            String mixType = MixType.getMixType(businessType + "" + thisType);
            outAndInDetailVO.setMixType(mixType);
            result.add(outAndInDetailVO);
        });
        pageUtil.setDatas(result);
        return pageUtil;
    }
}