cy
2023-11-22 a7a6b5d7ed7b6e5b96866b24fd1cb7ba3dcc19d1
feat: 物品统计前后端
4个文件已添加
1个文件已删除
4个文件已修改
759 ■■■■ 已修改文件
admin-web/src/api/dashboard/goodsStatis.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin-web/src/views/statisticalreport/itemReport/edit.vue 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin-web/src/views/statisticalreport/itemReport/index.vue 429 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/controller/LWhGoodsStatisticsController.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/query/LWhGoodsStatisQry.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/query/LWhLedgerQry.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/FinWarehouseLedgerServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/LWhGoodsStatisticsServiceImpl.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/LWhWarningConfigServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin-web/src/api/dashboard/goodsStatis.js
New file
@@ -0,0 +1,10 @@
import request from '@/utils/request'
// 获取事件统计
export function getGoodsStatistics(params) {
  return request({
    url: '/pc/warehouse/goodsStatistics',
    method: 'get',
    params
  });
}
admin-web/src/views/statisticalreport/itemReport/edit.vue
File was deleted
admin-web/src/views/statisticalreport/itemReport/index.vue
@@ -1,280 +1,191 @@
<template>
  <div class="app-container">
    <el-container>
      <el-container>
        <el-card class="box-card" style="width: 100%" shadow="never">
          <!--搜索条件-->
          <div class="filter-container">
            <my-search ref="searchBar" :items="items" @search="fifterForm"></my-search>
          </div>
          <el-row style="margin-top: 15px">
            <el-col>
              <!--列表-->
              <my-table-v2 ref="myTable" :filter="filterFrom" :table="table"/>
            </el-col>
          </el-row>
          <!--添加/编辑弹窗-->
          <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search"/>
        </el-card>
      </el-container>
    </el-container>
    <my-import
      :import-setting="importSetting"
      :dialog-show="importSetting.dialogShow"
      :dialog-title="importSetting.dialogTitle"
    />
    <el-card class="box-card" shadow="never">
      <div class="filter-container" style="margin-bottom: 10px">
        <my-search ref="searchBar" :items="items" @search="filterForm"></my-search>
      </div>
      <div class="title"  align="center">物品统计表</div>
      <el-table
        v-loading="loading"
        :data="tableData"
        border
        style="width: 100%">
        <el-table-column
          fixed="left"
          align="center"
          prop="orgName"
          label="机构"
          width="150">
        </el-table-column>
        <el-table-column
          fixed="left"
          align="center"
          prop="warehouseName"
          label="仓库/部门"
          width="150">
        </el-table-column>
        <el-table-column
          fixed="left"
          align="center"
          prop="goodsCode"
          label="物品编码"
          width="150">
        </el-table-column>
        <el-table-column
          fixed="left"
          align="center"
          prop="goodsTemplateName"
          label="物品名称"
          width="150">
        </el-table-column>
        <el-table-column
          fixed="left"
          align="center"
          prop="baseGoodsModelsName"
          label="规格型号"
          width="150">
        </el-table-column>
        <el-table-column
          fixed="left"
          align="center"
          prop="zaiKuNum"
          label="在库/在用数量"
          width="150">
        </el-table-column>
        <el-table-column
          fixed="left"
          align="center"
          prop="baoFeiNum"
          label="报废数"
          width="150">
        </el-table-column>
        <el-table-column
          fixed="left"
          align="center"
          prop="diaoBoNum"
          label="调拨数"
          width="150">
        </el-table-column>
        <el-table-column
          fixed="left"
          align="center"
          prop="totalNum"
          label="总数量"
          width="150">
        </el-table-column>
      </el-table>
    </el-card>
  </div>
</template>
<script>
import MyTableV2 from "@/components/myTable/myTableV2";
import MyButton from "@/components/myButton/myButton";
import SettingIplatform from '@/utils/settingIplatform';
import edit from './edit'
import * as finsystenant from '@/api/baseSetting/finsystenant'
import myImport from '@/views/components/myImport'
import {getBaseUrl} from '@/utils/base';
  import {getGoodsStatistics} from '@/api/dashboard/goodsStatis.js'
  import {formatDate,LongToDate} from "@/utils/DateFormatter";
  import {downLoad} from "@/utils/base";
  import SettingIplatform from '@/utils/settingIplatform';
export default {
  name: "index",
  components: {MyButton, MyTableV2, edit, myImport},
  data() {
    return {
      // 搜索框
      items: [
        {
          type: 'text',
          dataIndex: 'name',
          label: '单号',
          placeholder: '请输入',
          defaultValue: ''
        },
        {
          type: 'select',
          dataIndex: 'status',
          label: '类型',
          placeholder: '请选择',
          defaultValue: '1',
          options: [
            {
              label: '启用',
              value: '1'
  export default {
    data() {
      return {
        items: [
          {
            type: 'cascader',
            dataIndex: 'agencyId',
            label: '机构',
            placeholder: '请选择',
            defaultValue: '',
            options: [],
            cascader: [{key:'warehouseId',queryKey: 'agencyId'},{key:'goodsTemplateId',queryKey: 'agencyId'}],
            optionsConfig: { url: '/pc/fin/sys/tenant/select/tree_fin_tenant', props: null },
          },
          {
            type: 'select',
            dataIndex: 'baseWarehouseId',
            label: '仓库',
            placeholder: '请选择',
            defaultValue: '',
            options: [],
            optionsConfig: {
              label: 'warehouseName',
              value: 'id',
              url: SettingIplatform.apiBaseURL + '/pc/base/warehouse/select/tenant_warehouse'
            },
            {
              label: '禁用',
              value: '0'
            }
          ]
        },
        {
          type: 'text',
          dataIndex: 'name',
          label: '物品名称',
          placeholder: '请输入',
          defaultValue: ''
        },
        {
          type: 'text',
          dataIndex: 'name',
          label: '创建人',
          placeholder: '请输入',
          defaultValue: ''
        },
      ],
      // 树数据
      treeDataList: [],
      // 搜索条件
      filterFrom: {
        tenantId: null,
        userName: null,
        userPhone: null,
        status: 1
      },
      // 导入
      importSetting: {
          dialogTitle: '导入',
          dialogShow: false,
          fileSettings: {
              data: {},
              uploadUrl: getBaseUrl()+"/pc/fin/sys/tenant/import", // 上传地址
              accept: '.xls', // 格式
              type: 'text', // 回显形式
              loading: false // 导入效果
          },
          /* 模板下载 */
          templateSettings: {
              templateName: '导入模板.xls', // 名称
              templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate' // 下载地址
          {
            type: 'select',
            dataIndex: 'goodsTemplateId',
            label: '物品名称',
            placeholder: '请输入',
            defaultValue: '',
            options: [],
            cascader: [{key:'categoryId',queryKey: 'goodsTemplatesId'}],
            optionsConfig: {
              label: 'goodsName',
              value: 'id',
              url: SettingIplatform.apiBaseURL + '/pc/base/goods/template/query/goodsTemplate',
            },
          },
          onSuccess: null
      },
      editSetting: {
        title: '',
        id: '',
        orgId: '',
        show: false,
      },
      // 表格数据
      table: {
        showIndex: true, // 是否显示序号
        expand: false, // 是否显示详情数据
        url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/select/list', // 请求地址
        // 工具条
        tools: {
          columnsCtrl: {// 列控制按钮
            show: false
          {
            type: 'select',
            dataIndex: 'baseGoodsModelsId',
            label: '规格型号',
            placeholder: '请选择',
            defaultValue: '',
            options: [],
            optionsConfig: {
              label: 'modelName',
              value: 'id',
              url: SettingIplatform.apiBaseURL + '/pc/base/goods/models/query/goodsModel'
            },
          },
          generalExport: {// 通用导出按钮
            show: false
          {
            type: 'select',
            dataIndex: 'costType',
            label: '类别',
            placeholder: '请选择',
            defaultValue: '',
            options: [{
              label: 'A',
              value: '1'},{
              label: 'B',
              value: '2'},{
              label: 'C',
              value: '3'}],
          },
          // 自定义工具条按钮
          custom: [
          ]
        },
        // 列信息
        columns: [
          {title: '类型', field: 'name', align: 'left',},
          {title: '单号', field: 'code', align: 'center'},
          {title: '物品名称', field: 'lv', align: 'center', },
          {title: '规格型号', field: 'lv', align: 'center', },
          {title: '出入库数量', field: 'summary', align: 'left',},
          {title: '金额', field: 'summary', align: 'left',},
          {title: '所属机构', field: 'summary', align: 'left',},
          {title: '创建人', field: 'summary', align: 'left',},
          {title: '操作时间', field: 'summary', align: 'left',},
        ],
        // 操作信息
        operation: {
          show: true, // 显示操作列
          width: '150', // 列宽
          attr: [
            {
              title: '详情',
              events: (row) => {
                this.showAudit(row);
              },
            },
          ],
        },
        paging: {
          show: true, // 显示分页
          // 分页信息
          page: {
            small: false,
            pageNum: 1,
            pageSize: 10,
            total: 0
          }
        }
        tableData: [],
        loading: true,
        params:{examYear: formatDate(new Date(),'yyyyMMdd')}
      }
    },
    mounted() {
      this.getTableData({})
    },
    methods: {
      filterForm(e) {
        this.params = e
        this.getTableData(e)
      },
    }
  },
  created() {
    // 获取机构树
    this.initTreeData()
  },
  methods: {
    //导入
    importOrg() {
        this.importSetting.dialogShow = true
        this.importSetting.onSuccess = (response, callBack) => {
            if (response.code===1){
              this.$message.success(response.msg)
              this.search(1)
            }else{
              this.$message.warning(response.msg)
            }
            callBack()
        }
    },
    // 左侧树初始化
    initTreeData() {
      finsystenant.getTree().then(res => {
        const content = res || []
        this.treeDataList.splice(0, this.treeDataList.length)
        this.treeDataList = content
        if (content.length > 0) {
          this.importSetting.fileSettings.data = {pid: content[0].id}
        }
      })
    },
    updState(row) {
      let vm = this
      let text = row.status == 0 ? "启用" : "禁用";
      vm.$modal.confirm('确认要' + text + '"' + row.name + '"吗?').then(function () {
        let params = Object.assign({}, row)
        params.status = row.status == 1 ? 0 : 1
        finsystenant.edit(params).then(res => {
          if (res) {
            row.status = row.status === 1 ? 0 : 1
            vm.$modal.msgSuccess(text + "成功");
            vm.search()
          }
      getTableData(e) {
        this.loading = true
        getGoodsStatistics(e).then(res => {
          this.tableData = res
          this.loading = false
        }).catch(() => {
          this.loading = false
        })
      })
    },
    del(row) {
      this.$modal
        .confirm('是否确认删除名称为"' + row.name + '"的机构吗?')
        .then(function () {
          finsystenant.del({id: row.id}).then((res) => {
          });
        })
        .then((res) => {
          this.$message.success('删除成功!');
          this.search()
        })
        .catch(() => {
        });
    },
    showAdd() {
      // if (!this.editSetting.orgId) {
      //   this.$message.warning('请先选择左侧机构')
      // } else {
        this.editSetting.id = null;
        this.editSetting.info = null;
        this.editSetting.title = '新增';
        this.editSetting.show = true;
      // }
    },
    showAudit(row) {
      this.editSetting.id = row.id;
      this.editSetting.info = JSON.stringify(row);
      this.editSetting.title = '编辑';
      this.editSetting.show = true;
    },
    nodeClick(param) {
      param = param || {}
      this.p = Object.assign({}, {
        id: param.id,
        name: param.name
      })
      if (this.p.id != undefined && this.p.id != null) {
        this.filterFrom.tenantId = this.p.id
        this.editSetting.orgId = this.p.id
      } else {
        this.filterFrom.tenantId = null
        this.editSetting.orgId = null
      }
      this.importSetting.fileSettings.data = {pid: param.id}
      this.search(1)
    },
    // 查询table列表
    search(pageNum) {
      if (pageNum != undefined) {
        this.$refs.myTable.search(pageNum)
      } else {
        this.$refs.myTable.search()
      }
    },
    fifterForm(params) {
      this.filterFrom = Object.assign(this.filterFrom, params)
      this.search(1)
    }
  }
}
</script>
<style scoped>
<style scoped class="">
  .title{
    text-align: center;
    font-size: 18px;
    font-weight: bold;
    margin-bottom: 10px;
  }
</style>
consum-base/src/main/java/com/consum/base/controller/LWhGoodsStatisticsController.java
New file
@@ -0,0 +1,50 @@
package com.consum.base.controller;
import com.consum.base.BaseController;
import com.consum.base.core.utils.CommonUtil;
import com.consum.base.pojo.query.LWhGoodsStatisQry;
import com.consum.base.service.LWhGoodsStatisticsServiceImpl;
import com.consum.model.po.FinSysTenantUser;
import com.iplatform.model.po.S_user_core;
import com.walker.web.ResponseValue;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
 * @ClassName LWhGoodsStatisticsController
 * @Author cy
 * @Date 2023/11/21
 * @Description 物品统计
 * @Version 1.0
 **/
@RestController
@RequestMapping("/pc/warehouse/goodsStatistics")
public class LWhGoodsStatisticsController extends BaseController {
    @Resource
    private LWhGoodsStatisticsServiceImpl lWhGoodsStatisticsService;
    @GetMapping("")
    public ResponseValue getWhGoodsStatisList() {
        S_user_core currentUser = this.getCurrentUser();
        if (currentUser == null) {
            return ResponseValue.error("登录用户信息不存在");
        }
        LWhGoodsStatisQry param = CommonUtil.getObjFromReq(LWhGoodsStatisQry.class);
        LWhGoodsStatisQry qry = new LWhGoodsStatisQry();
        CommonUtil.copyProperties(param, qry);
        param = qry;
        /*当前登录人只能看到自己机构下的列表*/
        FinSysTenantUser sysInfo = this.getSysInfo();
        String tenantId = sysInfo.getTenantId();
        Long paramAgencyId = param.getAgencyId();
        if (paramAgencyId == null || !paramAgencyId.toString().startsWith(tenantId)) {
            param.setAgencyId(Long.valueOf(tenantId));
        }
        return ResponseValue.success(lWhGoodsStatisticsService.getWhGoodsStatisList(param));
    }
}
consum-base/src/main/java/com/consum/base/pojo/query/LWhGoodsStatisQry.java
New file
@@ -0,0 +1,45 @@
package com.consum.base.pojo.query;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName LWhGoodsStatisParam
 * @Author cy
 * @Date 2023/11/22
 * @Description
 * @Version 1.0
 **/
@ApiModel(value = "物品统计查询参数")
@Data
public class LWhGoodsStatisQry {
    @ApiModelProperty(value = "机构")
    private Long agencyId;
    @ApiModelProperty(value = "部门id")
    private Long departmentId;
    @ApiModelProperty("仓库id")
    private Long baseWarehouseId;
    @ApiModelProperty(value = "物品名称")
    private String goodsTemplateName;
    private Long goodsTemplateId;
    @ApiModelProperty(value = "规格型号")
    private String baseGoodsModelsName;
    @ApiModelProperty("规格型号")
    private Long baseGoodsModelsId;
    @ApiModelProperty("价值类型")
    private Short costType;
    @ApiModelProperty(value = "操作时间")
    private Long dealTimeStart;
    @ApiModelProperty(value = "操作时间")
    private Long dealTimeEnd;
}
consum-base/src/main/java/com/consum/base/pojo/query/LWhLedgerQry.java
@@ -26,6 +26,7 @@
    @ApiModelProperty("物品名称")
    private String goodsTemplateName;
    private String goodsTemplateId;
    @ApiModelProperty("分类")
    private Long categoryId;
consum-base/src/main/java/com/consum/base/service/FinWarehouseLedgerServiceImpl.java
@@ -50,6 +50,10 @@
            sql.append(" AND goods.GOODS_TEMPLATE_NAME like :goodsTemplateName");
            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
        }
        if (param.getGoodsTemplateId() != null) {
            sql.append(" AND goods.BASE_GOODS_TEMPLATE_ID=:goodsTemplateId");
            paramts.put("goodsTemplateId", param.getGoodsTemplateId());
        }
        //分类
        if (param.getCategoryId() != null) {
            sql.append(" AND goodsTemp.CATEGORY_ID=:categoryId");
consum-base/src/main/java/com/consum/base/service/LWhGoodsStatisticsServiceImpl.java
New file
@@ -0,0 +1,105 @@
package com.consum.base.service;
import com.consum.base.core.utils.MapperUtil;
import com.consum.base.pojo.query.LWhGoodsStatisQry;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.jdbc.service.BaseServiceImpl;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
/**
 * @ClassName LWhGoodsStatisticsServiceImpl
 * @Author cy
 * @Date 2023/11/21
 * @Description
 * @Version 1.0
 **/
@Service
public class LWhGoodsStatisticsServiceImpl extends BaseServiceImpl {
    private String GET_WHGOODS_STATIS_LIST_COLUMN = "SELECT tCangKu.org_name,tCangKu.WAREHOUSE_NAME,goodsTemp.GOODS_CODE,tKuCun.GOODS_TEMPLATE_NAME,tKuCun.BASE_GOODS_MODELS_NAME,CASE tKuCun.COST_TYPE WHEN 1 THEN 'A类' WHEN 2 THEN 'B类' WHEN 3 THEN 'C类' END AS cost_Type,tKuCun.total_num,tKuCun.zai_ku_num,tKuCun.diao_bo_num,tKuCun.bao_fei_num FROM ";
    private String GET_WHGOODS_STATIS_LIST_T_CANGKU = "(SELECT tenant.id tenantId,tenant.NAME AS org_name,ware.*FROM fin_sys_tenant tenant right JOIN (SELECT 0 WAREHOUSE_TYPE,id,AGENCY_ID,WAREHOUSE_NAME FROM BASE_WAREHOUSE UNION ALL SELECT 1 WAREHOUSE_TYPE,id,TENANT_ID AGENCY_ID,`NAME` WAREHOUSE_NAME FROM fin_sys_tenant_department) ware ON tenant.id=ware.AGENCY_ID ";
    private String GET_WHGOODS_STATIS_LIST_T_CANGKU_WHERE = "where 1=1";
    private String GET_WHGOODS_STATIS_LIST_T_CANGKU_END = ") tCangKu LEFT JOIN";
    private String GET_WHGOODS_STATIS_LIST_T_KUCUN = "(SELECT WAREHOUSE_TYPE,WAREHOUSE_ID,BASE_GOODS_TEMPLATE_ID,GOODS_TEMPLATE_NAME,COST_TYPE,BASE_GOODS_MODELS_ID,BASE_GOODS_MODELS_NAME,COUNT(CASE WHEN goods.STATES BETWEEN 0 AND 2 THEN 1 END) AS total_num,count(CASE WHEN goods.STATES=1 OR goods.STATES=2 THEN 1 END) zai_ku_num,count(CASE WHEN goods.STATES=0 THEN 1 END) diao_bo_num,count(CASE WHEN goods.STATES=3 THEN 1 END) bao_fei_num FROM l_wh_goods goods ";
    private String GET_WHGOODS_STATIS_LIST_T_KUCUN_WHERE = "where 1=1";
    private String GET_WHGOODS_STATIS_LIST_T_KUCUN_GROUP_BY = " GROUP BY WAREHOUSE_TYPE,WAREHOUSE_ID,BASE_GOODS_TEMPLATE_ID,GOODS_TEMPLATE_NAME,BASE_GOODS_MODELS_ID,BASE_GOODS_MODELS_NAME,COST_TYPE) tKuCun ON tCangKu.WAREHOUSE_TYPE=tKuCun.WAREHOUSE_TYPE and tCangKu.id = tKuCun.WAREHOUSE_ID LEFT JOIN BASE_GOODS_TEMPLATE goodsTemp ON goodsTemp.id=tKuCun.BASE_GOODS_TEMPLATE_ID ";
    private String GET_WHGOODS_STATIS_LIST_T_END_WHERE = " where 1=1";
    public List getWhGoodsStatisList(LWhGoodsStatisQry param) {
        StringBuilder sqlColumn = new StringBuilder(GET_WHGOODS_STATIS_LIST_COLUMN);
        StringBuilder sqlCangKu = new StringBuilder(GET_WHGOODS_STATIS_LIST_T_CANGKU);
        StringBuilder sqlCangKuWhere = new StringBuilder(GET_WHGOODS_STATIS_LIST_T_CANGKU_WHERE);
        StringBuilder sqlCangKuEnd = new StringBuilder(GET_WHGOODS_STATIS_LIST_T_CANGKU_END);
        StringBuilder sqlKuCun = new StringBuilder(GET_WHGOODS_STATIS_LIST_T_KUCUN);
        StringBuilder sqlKuCunWhere = new StringBuilder(GET_WHGOODS_STATIS_LIST_T_KUCUN_WHERE);
        StringBuilder sqlKuCunGoupBy = new StringBuilder(GET_WHGOODS_STATIS_LIST_T_KUCUN_GROUP_BY);
        StringBuilder sqlEndWhere = new StringBuilder(GET_WHGOODS_STATIS_LIST_T_END_WHERE);
        HashMap<String, Object> paramts = new HashMap<>();
        //机构
        if (param.getAgencyId() != null) {
            sqlCangKuWhere.append(" AND left(tenant.id, length(:lengthAgencyId)) = :agencyId");
            paramts.put("lengthAgencyId", param.getAgencyId());
            paramts.put("agencyId", param.getAgencyId());
        }
        // 部门
        if (param.getDepartmentId() != null) {
            sqlCangKuWhere.append(" AND ware.WAREHOUSE_TYPE=1 and ware.id = :departmentId");
            paramts.put("departmentId", param.getDepartmentId());
        }
        //仓库
        if (param.getBaseWarehouseId() != null) {
            sqlCangKuWhere.append(" AND ware.WAREHOUSE_TYPE =0 and ware.id = :warehouseId");
            paramts.put("warehouseId", param.getBaseWarehouseId());
        }
        //物品名称
        if (StringUtils.isNotEmpty(param.getGoodsTemplateName())) {
            sqlKuCunWhere.append(" AND goods.GOODS_TEMPLATE_NAME like :goodsTemplateName");
            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
        }
        if (param.getGoodsTemplateId() != null) {
            sqlKuCunWhere.append(" AND goods.BASE_GOODS_TEMPLATE_ID=:goodsTemplateId");
            paramts.put("goodsTemplateId", param.getGoodsTemplateId());
        }
        //规格型号
        if (param.getBaseGoodsModelsId() != null) {
            sqlKuCunWhere.append(" AND goods.BASE_GOODS_MODELS_ID=:baseGoodsModelsId");
            paramts.put("baseGoodsModelsId", param.getBaseGoodsModelsId());
        }
        //价值类型
        if (param.getCostType() != null) {
            // 将数字转换为对应的字符
            char costType = (char) ('A' + param.getCostType() - 1);
            sqlKuCunWhere.append(" AND goods.COST_TYPE=':costType'");
            paramts.put("costType", costType);
        }
//        // 操作时间
//        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);
//        }
        sqlEndWhere.append(" ORDER BY tKuCun.total_num desc,tCangKu.tenantId asc");
        StringBuilder sql = new StringBuilder();
        sql.append(sqlColumn)
                .append(sqlCangKu)
                .append(sqlCangKuWhere)
                .append(sqlCangKuEnd)
                .append(sqlKuCun)
                .append(sqlKuCunWhere)
                .append(sqlKuCunGoupBy)
                .append(sqlEndWhere);
        return select(sql.toString(), paramts, new MapperUtil());
    }
}
consum-base/src/main/java/com/consum/base/service/LWhWarningConfigServiceImpl.java
@@ -54,6 +54,10 @@
            sql.append(" AND goodsTemp.GOODS_NAME like :goodsTemplateName");
            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
        }
        if (param.getBaseGoodsTemplateId() != null) {
            sql.append(" AND wareConf.BASE_GOODS_TEMPLATE_ID=:baseGoodsTemplateId");
            paramts.put("baseGoodsTemplateId", param.getBaseGoodsTemplateId());
        }
        //分类
        if (param.getCategoryId() != null) {
            sql.append(" AND cate.id=:categoryId");