From a7a6b5d7ed7b6e5b96866b24fd1cb7ba3dcc19d1 Mon Sep 17 00:00:00 2001
From: cy <1664593601@qq.com>
Date: 星期三, 22 十一月 2023 14:24:47 +0800
Subject: [PATCH] feat: 物品统计前后端

---
 admin-web/src/api/dashboard/goodsStatis.js                                             |   10 
 consum-base/src/main/java/com/consum/base/pojo/query/LWhGoodsStatisQry.java            |   45 +++
 /dev/null                                                                              |  111 --------
 admin-web/src/views/statisticalreport/itemReport/index.vue                             |  429 +++++++++++++-------------------
 consum-base/src/main/java/com/consum/base/service/FinWarehouseLedgerServiceImpl.java   |    4 
 consum-base/src/main/java/com/consum/base/controller/LWhGoodsStatisticsController.java |   50 +++
 consum-base/src/main/java/com/consum/base/pojo/query/LWhLedgerQry.java                 |    1 
 consum-base/src/main/java/com/consum/base/service/LWhGoodsStatisticsServiceImpl.java   |  105 ++++++++
 consum-base/src/main/java/com/consum/base/service/LWhWarningConfigServiceImpl.java     |    4 
 9 files changed, 389 insertions(+), 370 deletions(-)

diff --git a/admin-web/src/api/dashboard/goodsStatis.js b/admin-web/src/api/dashboard/goodsStatis.js
new file mode 100644
index 0000000..dc8fded
--- /dev/null
+++ b/admin-web/src/api/dashboard/goodsStatis.js
@@ -0,0 +1,10 @@
+import request from '@/utils/request'
+
+// 鑾峰彇浜嬩欢缁熻
+export function getGoodsStatistics(params) {
+  return request({
+    url: '/pc/warehouse/goodsStatistics',
+    method: 'get',
+    params
+  });
+}
diff --git a/admin-web/src/views/statisticalreport/itemReport/edit.vue b/admin-web/src/views/statisticalreport/itemReport/edit.vue
deleted file mode 100644
index 37b0db9..0000000
--- a/admin-web/src/views/statisticalreport/itemReport/edit.vue
+++ /dev/null
@@ -1,111 +0,0 @@
-<template>
-  <win-sm :title="setting.title" @close="close" :width="'800px'">
-    <el-form ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px">
-      <el-form-item label="缂栧彿" prop="code">
-        <el-input disabled v-model="formData.code" clearable maxlength="20" show-word-limit style="width: 100%"/>
-      </el-form-item>
-      <el-form-item label="浠撳簱鍚嶇О" prop="name">
-        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-      </el-form-item>
-      <el-form-item label="鍦板潃" >
-        <el-input v-model="formData.adss" clearable maxlength="20" show-word-limit style="width: 100%"/>
-      </el-form-item>
-      <el-form-item label="鐘舵��" prop="status">
-        <el-switch
-          v-model="formData.status"
-          active-color="#0d997c"
-          inactive-color="#C0CCDA">
-        </el-switch>
-      </el-form-item>
-    </el-form>
-    <div slot="footer" align="center" class="dialog-footer">
-      <my-button name="鍙栨秷" site="form" @click="close"/>
-      <my-button name="淇濆瓨" site="form" @click="save"/>
-    </div>
-  </win-sm>
-</template>
-
-<script>
-import winSm from '@/components/win/win-sm'
-import myButton from '@/components/myButton/myButton'
-import * as finsystenant from '@/api/baseSetting/finsystenant'
-
-export default {
-  components: {winSm, myButton},
-  props: {
-    setting: {
-      type: Object,
-      default: () => {
-      }
-    }
-  },
-  data() {
-    return {
-      checkAll: false,
-      checkedList: [],
-      formData: {
-        code: '',
-        name: '',
-        status: true,
-        summary: '',
-      },
-      rules: {
-        code: [
-          {required: true, message: '璇疯緭鍏ユ満鏋勭紪鍙�', trigger: 'blur'}
-        ],
-        name: [
-          {required: true, message: '璇疯緭鍏ユ満鏋勫悕绉�', trigger: 'blur'}
-        ],
-        status: [
-          {required: true, message: '璇烽�夋嫨鐘舵��', trigger: 'blur'}
-        ]
-      }
-    }
-  },
-  created() {
-    if(this.setting.info){
-      this.formData = Object.assign({},JSON.parse(this.setting.info))
-    }
-  },
-  methods: {
-    getEditInfo(id){
-
-    },
-    close() {
-      this.$emit('close')
-    },
-    save() {
-      this.$refs.ruleForm.validate((valid) => {
-        if (valid) {
-          const params = Object.assign({}, this.formData)
-          if(this.setting.id){
-            // 缂栬緫鎺ュ彛
-            finsystenant.edit(params).then(res => {
-              if (res) {
-                this.$message.success('淇濆瓨鎴愬姛锛�')
-                this.close()
-                this.$emit('search')
-              } else {
-                this.$message.error('淇濆瓨澶辫触')
-              }
-            })
-          }else{
-            params.orgId = this.setting.orgId
-            finsystenant.add(params).then(res => {
-              if (res) {
-                this.$message.success('淇濆瓨鎴愬姛锛�')
-                this.close()
-                this.$emit('search')
-              } else {
-                this.$message.error('淇濆瓨澶辫触')
-              }
-            })
-          }
-        } else {
-          this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��')
-        }
-      })
-    }
-  }
-}
-</script>
diff --git a/admin-web/src/views/statisticalreport/itemReport/index.vue b/admin-web/src/views/statisticalreport/itemReport/index.vue
index 2936cd9..f205b0d 100644
--- a/admin-web/src/views/statisticalreport/itemReport/index.vue
+++ b/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>
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhGoodsStatisticsController.java b/consum-base/src/main/java/com/consum/base/controller/LWhGoodsStatisticsController.java
new file mode 100644
index 0000000..576c9e8
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhGoodsStatisticsController.java
@@ -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));
+
+    }
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/query/LWhGoodsStatisQry.java b/consum-base/src/main/java/com/consum/base/pojo/query/LWhGoodsStatisQry.java
new file mode 100644
index 0000000..ba9feb0
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/query/LWhGoodsStatisQry.java
@@ -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;
+
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/query/LWhLedgerQry.java b/consum-base/src/main/java/com/consum/base/pojo/query/LWhLedgerQry.java
index 7f81722..5e847d4 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/query/LWhLedgerQry.java
+++ b/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;
diff --git a/consum-base/src/main/java/com/consum/base/service/FinWarehouseLedgerServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/FinWarehouseLedgerServiceImpl.java
index e468793..664ffa8 100644
--- a/consum-base/src/main/java/com/consum/base/service/FinWarehouseLedgerServiceImpl.java
+++ b/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");
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhGoodsStatisticsServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/LWhGoodsStatisticsServiceImpl.java
new file mode 100644
index 0000000..67a3c85
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/service/LWhGoodsStatisticsServiceImpl.java
@@ -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());
+    }
+}
diff --git a/consum-base/src/main/java/com/consum/base/service/LWhWarningConfigServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/LWhWarningConfigServiceImpl.java
index 25cb395..f29fd2e 100644
--- a/consum-base/src/main/java/com/consum/base/service/LWhWarningConfigServiceImpl.java
+++ b/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");

--
Gitblit v1.9.1