futian.liu
2023-12-20 1b8db0473522c886428767f7eeaaf7f52d47ce42
consum-base/src/main/java/com/consum/base/service/LWarehouseFlowService.java
@@ -1,6 +1,7 @@
package com.consum.base.service;
import com.consum.base.core.WhBusinessEnum;
import com.consum.base.core.type.MixType;
import com.consum.base.core.utils.*;
import com.consum.base.pojo.LWarehouseFlowParam;
import com.consum.base.pojo.query.LWhFormOutputQry;
@@ -86,7 +87,7 @@
     * @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) 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 = 6 THEN tBack.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) 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 = 6 THEN tBack.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_QUERY = "SELECT CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.AGENCY_NAME WHEN ( flow.BUSINESS_TYPE = 2 OR flow.BUSINESS_TYPE = 4 ) and flow.THIS_TYPE=1  THEN tTrans.IN_AGENCY_NAME WHEN ( flow.BUSINESS_TYPE = 2 OR flow.BUSINESS_TYPE = 4 ) and flow.THIS_TYPE=2  THEN tTrans.OUT_AGENCY_NAME WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.AGENCY_NAME WHEN flow.BUSINESS_TYPE=5 THEN tScrapped.AGENCY_NAME WHEN flow.BUSINESS_TYPE = 6 THEN tBack.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) 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 = 6 THEN tBack.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 ";
@@ -213,14 +214,16 @@
     * @param param
     * @return
     */
    private String QUERY_DEPT_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.NAME as dept_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 fin_sys_tenant_department WHERE 1=1 ";
    private String QUERY_DEPT_TAIZHANG_LIST_QUERY = "SELECT CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.AGENCY_NAME WHEN (flow.BUSINESS_TYPE=2 OR flow.BUSINESS_TYPE=4) THEN tTrans.OUT_AGENCY_NAME WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.AGENCY_NAME WHEN flow.BUSINESS_TYPE=5 AND flow.WAREHOUSE_TYPE=0 THEN tScrapped.AGENCY_NAME WHEN flow.BUSINESS_TYPE=5 AND flow.WAREHOUSE_TYPE=1 THEN tDepScrapped.AGENCY_NAME WHEN flow.BUSINESS_TYPE=6 AND flow.WAREHOUSE_TYPE=1 THEN tBack.AGENCY_NAME WHEN flow.BUSINESS_TYPE=7 THEN tInventory.AGENCY_NAME END AGENCY_NAME,ware.NAME AS dept_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) THEN tTrans.BUSINESS_FORM_CODE WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.BUSINESS_FORM_CODE WHEN flow.BUSINESS_TYPE=5 AND flow.WAREHOUSE_TYPE=0 THEN tScrapped.BUSINESS_FORM_CODE WHEN flow.BUSINESS_TYPE=5 AND flow.WAREHOUSE_TYPE=1 THEN tDepScrapped.BUSINESS_FORM_CODE WHEN flow.BUSINESS_TYPE=6 AND flow.WAREHOUSE_TYPE=1 THEN tBack.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 fin_sys_tenant_department WHERE 1=1 ";
    private String QUERY_DEPT_TAIZHANG_LIST_RECORD = ")ware LEFT JOIN L_WAREHOUSE_FLOW flow ON ware.id=flow.WAREHOUSE_ID AND flow.WAREHOUSE_TYPE=1 LEFT JOIN L_WH_GOODS_RECORD record ON flow.id=record.WAREHOUSE_FLOW_ID ";
    private String QUERY_DEPT_TAIZHANG_LIST_END = " WHERE record.id IS NOT NULL";
    private String QUERY_DEPT_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_DEPT_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_DEPT_TAIZHANG_LIST_DIAOBO = " LEFT JOIN L_WH_FORM_TRANSFER tTrans ON (flow.BUSINESS_TYPE=2 or flow.BUSINESS_TYPE=4) AND tTrans.id=flow.BUSINESS_FORM_ID ";
    private String QUERY_DEPT_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_DEPT_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_DEPT_TAIZHANG_LIST_BAOFEI = " LEFT JOIN L_WH_FORM_SCRAPPED tScrapped ON flow.BUSINESS_TYPE=5 AND tScrapped.id=flow.BUSINESS_FORM_ID ";
    private String QUERY_DEPT_TAIZHANG_LIST_BAOFEI = " LEFT JOIN L_WH_FORM_SCRAPPED tScrapped ON flow.BUSINESS_TYPE=5 AND flow.WAREHOUSE_TYPE=0 AND tScrapped.id=flow.BUSINESS_FORM_ID ";
    private String QUERY_DEPT_TAIZHANG_LIST_DEP_BAOFEI = " LEFT JOIN DEP_FORM_SCRAPPED tDepScrapped ON flow.BUSINESS_TYPE=5 AND flow.WAREHOUSE_TYPE=1 AND tDepScrapped.id=flow.BUSINESS_FORM_ID ";
    private String QUERY_DEPT_TAIZHANG_LIST_DEP_TUIHUI = " LEFT JOIN USING_FORM_BACK tBack ON flow.BUSINESS_TYPE=6 AND tBack.id=flow.BUSINESS_FORM_ID ";
    public GenericPager<Map<String, Object>> queryDeptTaiZhangList(LWarehouseFlowParam param) {
        StringBuilder sqlQuery = new StringBuilder(QUERY_DEPT_TAIZHANG_LIST_QUERY);
@@ -230,6 +233,8 @@
        StringBuilder sqlChuKu = new StringBuilder(QUERY_DEPT_TAIZHANG_LIST_CHUKU);
        StringBuilder sqlBaoFei = new StringBuilder(QUERY_DEPT_TAIZHANG_LIST_BAOFEI);
        StringBuilder sqlPanDian = new StringBuilder(QUERY_DEPT_TAIZHANG_LIST_PANDIAN);
        StringBuilder sqlDepBaoFei = new StringBuilder(QUERY_DEPT_TAIZHANG_LIST_DEP_BAOFEI);
        StringBuilder sqlDepTuiHui = new StringBuilder(QUERY_DEPT_TAIZHANG_LIST_DEP_TUIHUI);
        StringBuilder sqlEnd = new StringBuilder(QUERY_DEPT_TAIZHANG_LIST_END);
        HashMap<String, Object> paramts = new HashMap<>();
@@ -292,13 +297,18 @@
            paramts.put("chuKuBusinessFormCode", businessFormCode);
            sqlBaoFei.append(" and tScrapped.BUSINESS_FORM_CODE = :baoFeiBusinessFormCode");
            paramts.put("baoFeiBusinessFormCode", businessFormCode);
            sqlDepBaoFei.append(" and tDepScrapped.BUSINESS_FORM_CODE = :deptBaoFeiBusinessFormCode");
            paramts.put("deptBaoFeiBusinessFormCode", businessFormCode);
            sqlDepTuiHui.append(" and tBack.BUSINESS_FORM_CODE = :deptBackBusinessFormCode");
            paramts.put("deptBackBusinessFormCode", 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) 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 = 5 AND flow.WAREHOUSE_TYPE = 0 THEN tScrapped.BUSINESS_FORM_CODE" +
                    " WHEN flow.BUSINESS_TYPE = 5 AND flow.WAREHOUSE_TYPE = 1 THEN tDepScrapped.BUSINESS_FORM_CODE" +
                    " WHEN flow.BUSINESS_TYPE = 6 THEN tBack.BUSINESS_FORM_CODE" +
                    " WHEN flow.BUSINESS_TYPE = 7 THEN tInventory.BUSINESS_FORM_CODE end =:whereBusinessFormCode");
            paramts.put("whereBusinessFormCode", businessFormCode);
@@ -322,7 +332,8 @@
                .append(sqlChuKu)
                .append(sqlBaoFei)
                .append(sqlPanDian)
                .append(sqlDepBaoFei)
                .append(sqlDepTuiHui)
                .append(sqlEnd);
        return selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
@@ -359,7 +370,8 @@
                + "flow.DEAL_TIME,\n"
                + "flow.OPERATOR_NAME,\n"
                + "record.TOTAL_PRICE\n"
                + "FROM  L_WAREHOUSE_FLOW flow\n"
                + "FROM ( SELECT * FROM BASE_WAREHOUSE WHERE 1= 1 AND AGENCY_ID =:tenantId ) bw "
                + "LEFT JOIN L_WAREHOUSE_FLOW flow ON bw.id = flow.WAREHOUSE_ID AND flow.WAREHOUSE_TYPE = 0\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) AND tTrans.id=flow.BUSINESS_FORM_ID\n"
@@ -367,11 +379,15 @@
                + "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 USING_FORM_BACK tBack ON flow.BUSINESS_TYPE=6 AND tBack.id=flow.BUSINESS_FORM_ID\n"
                + "LEFT JOIN base_warehouse bw ON flow.WAREHOUSE_ID = bw.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) {
            paramts.put("tenantId", param.getAgencyId());
        }
        //机构
        if (param.getAgencyId() != null) {
            sql.append("AND fst.id like :agencyId ");
@@ -440,6 +456,7 @@
            Integer businessType = outAndInDetailVO.getBusinessType();
            String mixType = MixType.getMixType(businessType + "" + thisType);
            outAndInDetailVO.setMixType(mixType);
            outAndInDetailVO.setTotalPrice(CurrencyUtil.convertFenToYuan(outAndInDetailVO.getTotalPrice()));
            result.add(outAndInDetailVO);
        });
        pageUtil.setDatas(result);