From 33032d320cb75854def7391026b0401f1bfb8360 Mon Sep 17 00:00:00 2001
From: 黎星凯 <13949086503@163.com>
Date: 星期六, 11 五月 2024 17:26:02 +0800
Subject: [PATCH] 20240511修改: 分发单优化, 分类,物品,分发单明细,采购单明细数据导入
---
consum-base/src/main/java/com/consum/base/util/DateUtil.java | 250 +++++++
consum-base/src/main/java/com/consum/base/pojo/excel/ImportGoodsInfoTemplate.java | 11
admin-web/src/views/foundation/classification/index.vue | 16
consum-base/src/main/java/com/consum/base/pojo/excel/ImportProcureOrderTemplate.java | 31
consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java | 58 +
consum-base/src/main/java/com/consum/base/pojo/excel/LWhFormTransferTemplate.java | 53 +
consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java | 434 ++++++++++++
deploy-jar-single/src/main/resources/import/物品信息old.xls | 0
deploy-jar-single/src/main/resources/import/采购导入old.xls | 0
consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java | 269 +++++--
deploy-jar-single/src/main/resources/import/物品信息.xls | 0
consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java | 202 +++++
consum-base/src/main/java/com/consum/base/service/FinSysTenantDepartmentService.java | 8
admin-web/public/static/config.js | 4
deploy-jar-single/src/main/resources/import/采购导入.xls | 0
consum-base/src/main/java/com/consum/base/service/impl/FinSysTenantDepartmentServiceImpl.java | 15
consum-base/pom.xml | 4
consum-base/src/main/java/com/consum/base/listener/EasyExcelListener.java | 39 +
consum-base/src/main/java/com/consum/base/pojo/excel/ImportClassificationTemplate.java | 26
admin-web/src/views/stock/procure/purchaseOrder/index.vue | 8
consum-base/src/main/java/com/consum/base/controller/FinSysTenantController.java | 142 ++--
consum-base/src/main/java/com/consum/base/service/BaseCategoryService.java | 15
deploy-jar-single/src/main/resources/import/分发导入.xls | 0
consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsInfoParam.java | 5
deploy-jar-single/src/main/resources/import/物品分类.xls | 0
consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java | 374 ++++++++--
admin-web/src/views/departmentitem/itemdis/distribution/index.vue | 67 +
27 files changed, 1,718 insertions(+), 313 deletions(-)
diff --git a/admin-web/public/static/config.js b/admin-web/public/static/config.js
index 09bd03b..77b3c75 100644
--- a/admin-web/public/static/config.js
+++ b/admin-web/public/static/config.js
@@ -9,8 +9,8 @@
// 鎺ュ彛璇锋眰鍦板潃
- ftpUrl: 'http://172.16.60.172:8083/lowConsum',//寮�鍙�
- apiBaseURL: 'http://172.16.60.172:8083/lowConsum',//寮�鍙�
+ ftpUrl: 'http://172.16.20.9:8083/lowConsum',//寮�鍙�
+ apiBaseURL: 'http://172.16.20.9:8083/lowConsum',//寮�鍙�
// apiBaseURL: 'http://172.16.60.110:8083/lowConsum',//寮�鍙�
diff --git a/admin-web/src/views/departmentitem/itemdis/distribution/index.vue b/admin-web/src/views/departmentitem/itemdis/distribution/index.vue
index b994d13..1e0fb27 100644
--- a/admin-web/src/views/departmentitem/itemdis/distribution/index.vue
+++ b/admin-web/src/views/departmentitem/itemdis/distribution/index.vue
@@ -11,6 +11,7 @@
<!--鍒楄〃-->
<div class="table-tool-bar" style="margin-bottom: 15px">
<my-button name="鏂板" @click="handleAdd" site="tools" size="medium"/>
+ <my-button name="瀵煎叆" @click="openImport()" site="tools" size="medium" />
</div>
<div :style="{ 'overflow-y': 'auto', height: `calc(100vh - 320px)` }" v-loading="loading">
<el-row v-if="list.length" class="card" :gutter="5">
@@ -22,19 +23,19 @@
<span>鍒嗗彂鍗曞彿锛�</span>
<span class="value">{{ item.businessFormCode }}</span>
- <span style="padding-left: 30px">鍒嗗彂鐘舵�侊細</span>
- <span style="color: red" v-if="item.states === 0" class="value">鏈垎鍙�</span>
- <span v-if="item.states === 2" class="value">宸插垎鍙�</span>
+<!-- <span style="padding-left: 30px">鍒嗗彂鐘舵�侊細</span>-->
+<!-- <span style="color: red" v-if="item.states === 0" class="value">鏈垎鍙�</span>-->
+<!-- <span v-if="item.states === 2" class="value">宸插垎鍙�</span>-->
</div>
<div class="card-header-right">
<!-- 瀵煎嚭鍗曞瓙 -->
- <el-button v-if="item.states === 0" name="涓嬭浇" site="form" type="primary" size="mini" @click="handleDetail(item)">
- 涓嬭浇
- </el-button>
+<!-- <el-button v-if="item.states === 0" name="涓嬭浇" site="form" type="primary" size="mini" @click="handleDetail(item)">-->
+<!-- 涓嬭浇-->
+<!-- </el-button>-->
- <el-button v-if="item.states === 0" name="涓婁紶" site="form" type="primary" size="mini" @click="handleUploadPage(item)">
- 涓婁紶
- </el-button>
+<!-- <el-button v-if="item.states === 0" name="涓婁紶" site="form" type="primary" size="mini" @click="handleUploadPage(item)">-->
+<!-- 涓婁紶-->
+<!-- </el-button>-->
<el-button name="鏌ョ湅璇︽儏" site="form" type="primary" size="mini" @click="handleDetail(item)">
鏌ョ湅璇︽儏
@@ -45,7 +46,7 @@
<div class="box"><span class="span-two">閮ㄩ棬锛�</span>{{ item.inWarehouseName }}</div>
<div class="box"><span class="span-two">鍒嗗彂浜猴細</span>{{ item.outOperatorName }}</div>
<div class="box">
- <span class="span-two">鍒嗗彂鏃堕棿锛�</span>{{ item.inTime | formatTime }}
+ <span class="span-two">鍒嗗彂鏃堕棿锛�</span>{{ item.createTime | formatTime }}
</div>
</div>
<div class="card-end">
@@ -104,6 +105,13 @@
@close="detailSetting.show = false"
ref="detailRef"
></detail>
+
+ <my-import
+ :import-setting="importSetting"
+ :dialog-show="importSetting.dialogShow"
+ :dialog-title="importSetting.dialogTitle"
+ />
+
</div>
</template>
@@ -117,6 +125,7 @@
import uploadPage from './uploadPage';
import listPage from '@/views/mixins/listPage';
import {getUserDetail} from "@/utils/auth";
+import {getBaseUrl} from '@/utils/base';
export default {
name: 'index',
@@ -127,6 +136,26 @@
loading: false,
adddialog: false,
list: [],
+
+ // 瀵煎叆
+ importSetting: {
+ dialogTitle: '瀵煎叆',
+ dialogShow: false,
+ fileSettings: {
+ data: {},
+ uploadUrl: getBaseUrl() + '/pc/l/wh/form/transfer/import2', // 涓婁紶鍦板潃
+ accept: '.xls', // 鏍煎紡
+ type: 'text', // 鍥炴樉褰㈠紡
+ loading: true, // 瀵煎叆鏁堟灉
+ },
+ /* 妯℃澘涓嬭浇 */
+ templateSettings: {
+ templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
+ templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate?type=distribute', // 涓嬭浇鍦板潃
+ },
+ onSuccess: null,
+ },
+
// 鎼滅储妗�
items: [
{
@@ -203,7 +232,23 @@
this.total = res.totalRows;
this.loading = false;
});
- }
+ },
+ openImport(){
+ this.importOrg();
+ },
+ //瀵煎叆
+ 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();
+ };
+ },
},
};
</script>
diff --git a/admin-web/src/views/foundation/classification/index.vue b/admin-web/src/views/foundation/classification/index.vue
index 115890d..774aa37 100644
--- a/admin-web/src/views/foundation/classification/index.vue
+++ b/admin-web/src/views/foundation/classification/index.vue
@@ -69,15 +69,15 @@
dialogShow: false,
fileSettings: {
data: {},
- uploadUrl: getBaseUrl() + '/pc/fin/sys/tenant/import', // 涓婁紶鍦板潃
+ uploadUrl: getBaseUrl() + '/pc/base/category/import', // 涓婁紶鍦板潃
accept: '.xls', // 鏍煎紡
type: 'text', // 鍥炴樉褰㈠紡
- loading: false, // 瀵煎叆鏁堟灉
+ loading: true, // 瀵煎叆鏁堟灉
},
/* 妯℃澘涓嬭浇 */
templateSettings: {
templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
- templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate', // 涓嬭浇鍦板潃
+ templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate?type=classification', // 涓嬭浇鍦板潃
},
onSuccess: null,
},
@@ -108,6 +108,12 @@
name: '鏂板',
click: () => {
this.showAdd(null);
+ },
+ },
+ {
+ name: '瀵煎叆',
+ click: () => {
+ this.openImport(null);
},
},
],
@@ -288,6 +294,10 @@
this.filterFrom = Object.assign(this.filterFrom, params);
this.search(1);
},
+
+ openImport(){
+ this.importOrg();
+ },
},
};
</script>
diff --git a/admin-web/src/views/stock/procure/purchaseOrder/index.vue b/admin-web/src/views/stock/procure/purchaseOrder/index.vue
index fa78cbb..aa59722 100644
--- a/admin-web/src/views/stock/procure/purchaseOrder/index.vue
+++ b/admin-web/src/views/stock/procure/purchaseOrder/index.vue
@@ -12,7 +12,7 @@
<div class="table-tool-bar" style="margin-bottom: 15px">
<!-- <my-button name="鏂板" check-permission="procure:order:add" @click="handleAdd" site="tools" size="medium" />-->
<my-button name="鏂板" @click="handleAdd" site="tools" size="medium" />
- <my-button name="瀵煎叆" @click="importSetting.dialogShow = true" site="tools" size="medium" />
+ <my-button name="瀵煎叆" @click="openImport()" site="tools" size="medium" />
</div>
<div v-loading="loading" style="margin-bottom: 15px">
<div :style="{ 'overflow-y': 'auto', height: 'calc(100vh - 352px)' }">
@@ -226,7 +226,7 @@
uploadUrl: getBaseUrl() + '/pc/whForm/procure/import', // 涓婁紶鍦板潃
accept: '.xls', // 鏍煎紡
type: 'text', // 鍥炴樉褰㈠紡
- loading: false, // 瀵煎叆鏁堟灉
+ loading: true, // 瀵煎叆鏁堟灉
},
/* 妯℃澘涓嬭浇 */
templateSettings: {
@@ -300,6 +300,10 @@
.catch(() => {});
});
},
+ openImport(){
+ this.importOrg();
+ }
+
},
};
</script>
diff --git a/consum-base/pom.xml b/consum-base/pom.xml
index c1e9318..0edc9dd 100644
--- a/consum-base/pom.xml
+++ b/consum-base/pom.xml
@@ -145,6 +145,10 @@
<artifactId>hutool-core</artifactId>
<version>4.5.3</version>
</dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
</dependencies>
</project>
diff --git a/consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java b/consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java
index f827446..552f22d 100644
--- a/consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java
@@ -1,7 +1,19 @@
package com.consum.base.controller;
+import java.io.IOException;
import java.util.List;
-
+import java.util.Map;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.EasyExcelFactory;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.excel.exception.ExcelAnalysisException;
+import com.alibaba.excel.exception.ExcelDataConvertException;
+import com.consum.base.pojo.*;
+import com.consum.base.pojo.excel.ImportClassificationTemplate;
+import com.consum.model.po.*;
+import org.apache.commons.compress.utils.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.DeleteMapping;
@@ -9,20 +21,16 @@
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-
import com.consum.base.BaseController;
import com.consum.base.core.utils.CommonUtil;
-import com.consum.base.pojo.BaseCategoryParam;
-import com.consum.base.pojo.ProjectTreeResult;
import com.consum.base.service.BaseCategoryService;
import com.consum.base.service.BaseGoodsTemplateService;
-import com.consum.model.po.BaseCategory;
import com.iplatform.model.po.S_user_core;
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.web.ResponseValue;
-
import io.swagger.annotations.Api;
+import org.springframework.web.multipart.MultipartFile;
/**
* @Description 鐗╁搧鍒嗙被
@@ -70,7 +78,7 @@
}
// 鍒ゆ柇鍚屼竴鐖剁被id涓嬪垎绫诲悕绉版槸鍚﹂噸澶�
BaseCategory category = this.baseCategoryService.getByCategoryNameAndFatherCategoryId(param.getCategoryName(),
- param.getFatherCategoryId());
+ param.getFatherCategoryId());
if (category != null) {
return ResponseValue.error("鍒嗙被鍚嶇О宸插瓨鍦�");
}
@@ -214,4 +222,184 @@
return ResponseValue.success(baseCategories);
}
+ /**
+ * 瀵煎叆鐗╁搧鍒嗙被
+ *
+ * @param file
+ * @return
+ * @throws IOException
+ */
+ @PostMapping("/import")
+ public ResponseValue importData(MultipartFile file) {
+ String originalFilename = file.getOriginalFilename();
+// if (!".xls".endsWith(originalFilename)) {
+// return ResponseValue.error("鏂囦欢鏍煎紡鏈夎!");
+// }
+ FinSysTenantUser sysInfo = this.getSysInfo();
+ if (sysInfo == null) {
+ return ResponseValue.error("褰撳墠鐧诲綍鐢ㄦ埛涓虹┖");
+ }
+ // 褰撳墠鐧诲綍鐢ㄦ埛
+ S_user_core currentUser = this.getCurrentUser();
+ try {
+ EasyExcelFactory.read(file.getInputStream(), ImportClassificationTemplate.class,
+ new AnalysisEventListener<ImportClassificationTemplate>() {
+
+ /**
+ * 姣忔潯瀛樺偍鐨刲ist
+ */
+ final List<ImportClassificationTemplate> importData = Lists.newArrayList();
+
+ /**
+ * 璇诲彇鐨勮鍙�
+ */
+ Integer rowIndex = 0;
+
+ /**
+ * 琛ㄥご淇℃伅
+ * @param headMap
+ * @param context
+ */
+ @Override
+ public void invokeHeadMap(Map headMap, AnalysisContext context) {
+ // 楠岃瘉琛ㄥご鏁伴噺
+ logger.info("瑙f瀽鍒嗗彂鍗曠殑琛ㄥご闀垮害: {}", headMap.size());
+ if (headMap.size() != 4) {
+ throw new ExcelAnalysisException("涓婁紶鐨勬枃浠朵笉绗�!");
+ }
+ }
+
+ /**
+ * 鏁版嵁澶勭悊
+ * @param data
+ * @param analysisContext
+ */
+ @Override
+ public void invoke(ImportClassificationTemplate data, AnalysisContext analysisContext) {
+ rowIndex++;
+ // 璺宠繃
+ if (data.getCategoryOne().contains("璇存槑锛�")) {
+ return;
+ }
+ if (StrUtil.isEmpty(data.getCategoryOne())) {
+ throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝涓�绾у垎绫讳笉鑳戒负绌猴細" + data.getCategoryOne());
+ }
+ if (StrUtil.isEmpty(data.getCategoryTwo())) {
+ throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝浜岀骇鍒嗙被涓嶈兘涓虹┖锛�" + data.getCategoryTwo());
+ }
+ if (StrUtil.isEmpty(data.getCategoryThree())) {
+ throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝鍝佺被鍚嶇О涓嶈兘涓虹┖锛�" + data.getCategoryThree());
+ }
+ if (StrUtil.isEmpty(data.getType())) {
+ throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝绠$悊鍒嗙被涓嶈兘涓虹┖锛�" + data.getType());
+ }
+ importData.add(data);
+ }
+
+ /**
+ * 鏁版嵁澶勭悊瀵煎叆涓绘柟娉�
+ * @param analysisContext
+ */
+ @Override
+ public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+ for (ImportClassificationTemplate data : importData) {
+ String h1 = data.getCategoryOne();
+ String h2 = data.getCategoryTwo();
+ String h3 = data.getCategoryThree();
+ String type = data.getType();
+ BaseCategoryParam baseCategoryParam1 = new BaseCategoryParam();
+ baseCategoryParam1.setFatherCategoryId(0L);
+ baseCategoryParam1.setCategoryName(h1);
+ GenericPager<BaseCategory> baseCategoryGenericPager = baseCategoryService.queryBaseCategoryList2(baseCategoryParam1);
+ List<BaseCategory> datas = baseCategoryGenericPager.getDatas();
+
+ // 涓�绾у垎绫�
+ BaseCategory D1 = null;
+ if (!CollectionUtil.isEmpty(datas)) {
+ D1 = datas.get(0);
+ } else {
+ // 鏂板鐖剁骇
+ BaseCategoryParam param = new BaseCategoryParam();
+ param.setCategoryName(h1);
+ param.setStates(1);
+ int getIndex = baseCategoryService.selIndexByPid(0L);
+ param.setOrderNumber(getIndex + 1);
+ baseCategoryService.add(param, currentUser);
+ GenericPager<BaseCategory> baseCategoryGenericPager2 = baseCategoryService.queryBaseCategoryList2(baseCategoryParam1);
+ List<BaseCategory> datas2 = baseCategoryGenericPager2.getDatas();
+ D1 = datas2.get(0);
+ }
+
+ // 2銆佷簩绾у垎绫� 鏌ヨ绗簩灞傛暟鎹�
+ BaseCategoryParam baseCategoryParam2 = new BaseCategoryParam();
+ baseCategoryParam2.setCategoryName(h2);
+ baseCategoryParam2.setFatherCategoryId(D1.getId());
+ GenericPager<BaseCategory> baseCategoryGenericPager2 = baseCategoryService.queryBaseCategoryList2(baseCategoryParam2);
+ List<BaseCategory> datas2 = baseCategoryGenericPager2.getDatas();
+ BaseCategory D2 = null;
+ if (!CollectionUtil.isEmpty(datas2)) {
+ D2 = datas2.get(0);
+ } else {
+ // 鏂板鐖�2绾�
+ BaseCategoryParam param = new BaseCategoryParam();
+ param.setCategoryName(h2);
+ param.setStates(1);
+ param.setFatherCategoryId(D1.getId());
+ int getIndex = baseCategoryService.selIndexByPid(D1.getId());
+ param.setOrderNumber(getIndex + 1);
+ baseCategoryService.add(param, currentUser);
+ GenericPager<BaseCategory> baseCategoryGenericPager4 = baseCategoryService.queryBaseCategoryList2(baseCategoryParam2);
+ List<BaseCategory> datas4 = baseCategoryGenericPager4.getDatas();
+ D2 = datas4.get(0);
+ }
+
+ // 3銆佷笁绾у垎绫�(濡傛灉宸茬粡瀛樺湪锛岄偅涔堜笉澶勭悊锛屼笉瀛樺湪鏂板)
+ BaseCategoryParam baseCategoryParam3 = new BaseCategoryParam();
+ baseCategoryParam3.setCategoryName(h3);
+ baseCategoryParam3.setClassification(type);
+ baseCategoryParam3.setFatherCategoryId(D2.getId());
+ GenericPager<BaseCategory> baseCategoryGenericPager3 = baseCategoryService.queryBaseCategoryList2(baseCategoryParam3);
+ List<BaseCategory> datas3 = baseCategoryGenericPager3.getDatas();
+ if (!CollectionUtil.isEmpty(datas3)) {
+ } else {
+ // 鏂板鐖�2绾�
+ BaseCategoryParam param = new BaseCategoryParam();
+ param.setCategoryName(h3);
+ param.setStates(1);
+ param.setFatherCategoryId(D2.getId());
+ int getIndex = baseCategoryService.selIndexByPid(D2.getId());
+ param.setOrderNumber(getIndex + 1);
+ param.setClassification(type);
+ baseCategoryService.add(param, currentUser);
+ //GenericPager<BaseCategory> baseCategoryGenericPager4 = baseCategoryService.queryBaseCategoryList2(baseCategoryParam3);
+ //List<BaseCategory> datas4 = baseCategoryGenericPager4.getDatas();
+ //D3 = datas4.get(0);
+ }
+ }
+ }
+
+ @Override
+ public void onException(Exception exception, AnalysisContext analysisContext) throws Exception {
+ if (exception instanceof ExcelDataConvertException) {
+ ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException) exception;
+ Integer row = excelDataConvertException.getRowIndex() + 1;
+ Integer column = excelDataConvertException.getColumnIndex() + 1;
+ throw new ExcelAnalysisException("绗�" + row + "琛岋紝绗�" + column + "鍒楄В鏋愬紓甯革紝璇锋纭~鍐�");
+ } else {
+ throw new ExcelAnalysisException(exception.getMessage());
+ }
+ }
+ }).sheet(0).doRead();
+ } catch (ExcelAnalysisException e) {
+ return ResponseValue.error(e.getMessage());
+ }catch (RuntimeException e) {
+ e.printStackTrace();
+ return ResponseValue.error("绯荤粺閿欒");
+ }catch (Exception e) {
+ e.printStackTrace();
+ return ResponseValue.error("绯荤粺閿欒");
+ }
+ return ResponseValue.success("瀵煎叆鎴愬姛!");
+ }
+
}
diff --git a/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java b/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java
index fe31dc4..d19a2f3 100644
--- a/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java
@@ -7,7 +7,9 @@
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
-
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.exception.ExcelAnalysisException;
+import com.consum.base.service.*;
import org.apache.commons.compress.utils.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
@@ -17,7 +19,6 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
-
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
@@ -30,11 +31,6 @@
import com.consum.base.pojo.BaseGoodsTemplateParam;
import com.consum.base.pojo.excel.ImportGoodsInfoTemplate;
import com.consum.base.pojo.response.GoodsTemplateVO;
-import com.consum.base.service.BaseCategoryService;
-import com.consum.base.service.BaseGoodsTemplateService;
-import com.consum.base.service.BaseWarehouseService;
-import com.consum.base.service.FinSysTenantService;
-import com.consum.base.service.LWhGoodsService;
import com.consum.model.po.BaseCategory;
import com.consum.model.po.BaseGoodsModels;
import com.consum.model.po.BaseGoodsTemplate;
@@ -77,6 +73,9 @@
@Autowired
private BaseCategoryService baseCategoryService;
+ @Autowired
+ private BaseGoodsModelsService baseGoodsModelsService;
+
/**
* @Description 鏂板鐗╁搧妯℃澘
* @Author 鍗㈠簡闃�
@@ -101,7 +100,7 @@
}
// 鍒ゆ柇鍚屼竴鍒嗙被涓嬬殑鐗╁搧鍚嶇О鏄惁閲嶅
BaseGoodsTemplate goodsTemplate =
- this.baseGoodsTemplateService.getByGoodsNameAndCategoryId(param.getGoodsName(), param.getCategoryId());
+ this.baseGoodsTemplateService.getByGoodsNameAndCategoryId(param.getGoodsName(), param.getCategoryId());
if (goodsTemplate != null) {
return ResponseValue.error("鐗╁搧鍚嶇О宸插瓨鍦�");
}
@@ -181,9 +180,9 @@
*
* @author 鍗㈠簡闃�
* @date 2023/10/25
- * <p>
- * 鐗╁搧鐨勭鐢ㄦ垨鍒犻櫎锛屼笉褰卞搷宸茬粡閲囪喘鍏ヨ繃搴撶殑鐗╁搧淇℃伅銆�
- * <p>
+ * <p>
+ * 鐗╁搧鐨勭鐢ㄦ垨鍒犻櫎锛屼笉褰卞搷宸茬粡閲囪喘鍏ヨ繃搴撶殑鐗╁搧淇℃伅銆�
+ * <p>
*/
@PostMapping("/updStatus")
public ResponseValue updateStatus() {
@@ -204,9 +203,9 @@
* @Description 鏍规嵁鐗╁搧id鍒犻櫎鐗╁搧
* @Author 鍗㈠簡闃�
* @Date 2023/10/25
- * <p>
- * 鐗╁搧鐨勭鐢ㄦ垨鍒犻櫎锛屼笉褰卞搷宸茬粡閲囪喘鍏ヨ繃搴撶殑鐗╁搧淇℃伅銆�
- * <p/>
+ * <p>
+ * 鐗╁搧鐨勭鐢ㄦ垨鍒犻櫎锛屼笉褰卞搷宸茬粡閲囪喘鍏ヨ繃搴撶殑鐗╁搧淇℃伅銆�
+ * <p/>
*/
@DeleteMapping("/del")
public ResponseValue updateById() {
@@ -249,7 +248,7 @@
public ResponseValue queryGoodsTemplateByCategoryId(Long agencyId, Long categoryId) {
// 涓嶉檺鍒舵満鏋�
List<BaseGoodsTemplate> list = baseGoodsTemplateService.queryGoodsTemplateByCategoryId(null, categoryId,
- StatesType.NORMAL.getValue(), null);
+ StatesType.NORMAL.getValue(), null);
if (list == null) {
return ResponseValue.error("鏌ヨ澶辫触锛�");
}
@@ -258,10 +257,10 @@
@ApiOperation(value = "璋冩嫧鏌ヨ鏈烘瀯涓嬫墍鏈変粨搴撲笅鐨勫垎绫绘ā鏉夸俊鎭�", notes = "璋冩嫧鏌ヨ鏈烘瀯涓嬫墍鏈変粨搴撲笅鐨勫垎绫绘ā鏉夸俊鎭�")
@ApiImplicitParams({
- @ApiImplicitParam(name = "agencyId", value = "鐖剁骇鏈烘瀯id", required = true, dataType = "java.lang.Long",
- paramType = "query"),
- @ApiImplicitParam(name = "categoryId", value = "鍒嗙被id", required = true, dataType = "Long",
- paramType = "query")})
+ @ApiImplicitParam(name = "agencyId", value = "鐖剁骇鏈烘瀯id", required = true, dataType = "java.lang.Long",
+ paramType = "query"),
+ @ApiImplicitParam(name = "categoryId", value = "鍒嗙被id", required = true, dataType = "Long",
+ paramType = "query")})
@GetMapping("/query/warehouse/goods")
public ResponseValue queryWarehouseGoods(Long agencyId, Long categoryId) {
@@ -270,7 +269,7 @@
map.put("categoryId", categoryId);
List<BaseWarehouse> baseWarehouseList =
- baseWarehouseService.getBaseWareHouseList(agencyId, StatesType.NORMAL.getValue());
+ baseWarehouseService.getBaseWareHouseList(agencyId, StatesType.NORMAL.getValue());
if (CollectionUtils.isEmpty(baseWarehouseList)) {
return ResponseValue.error("鏈烘瀯鏃犱粨搴擄紒");
@@ -279,11 +278,11 @@
map.put("warehouseIdList", warehouseIdList);
String sql =
- "SELECT DISTINCT bgt.id,bgt.GOODS_NAME, CLASSIFICATION type FROM l_wh_goods g LEFT JOIN base_goods_template bgt ON g.BASE_GOODS_TEMPLATE_ID = bgt.id "
- + "WHERE WAREHOUSE_TYPE = 0 " + "AND WAREHOUSE_ID in (:warehouseIdList) "
- + "AND CATEGORY_ID = :categoryId "
- // 1:闆嗛噰,2:鑷噰
- + "AND BUY_TYPE =1";
+ "SELECT DISTINCT bgt.id,bgt.GOODS_NAME, CLASSIFICATION type FROM l_wh_goods g LEFT JOIN base_goods_template bgt ON g.BASE_GOODS_TEMPLATE_ID = bgt.id "
+ + "WHERE WAREHOUSE_TYPE = 0 " + "AND WAREHOUSE_ID in (:warehouseIdList) "
+ + "AND CATEGORY_ID = :categoryId "
+ // 1:闆嗛噰,2:鑷噰
+ + "AND BUY_TYPE =1";
List<GoodsTemplateVO> resultList = Lists.newArrayList();
List<Map<String, Object>> goodsTemplateList = lWhGoodsService.select(sql, map, new MapperUtil());
@@ -294,82 +293,174 @@
return ResponseValue.success("鏌ヨ鎴愬姛!", resultList);
}
+ /**
+ * 瀵煎叆鐗╁搧鏁版嵁
+ * @param file
+ * @return
+ */
@PostMapping("/import")
- public ResponseValue upload(MultipartFile file) throws IOException {
+ public ResponseValue importData(MultipartFile file) {
String originalFilename = file.getOriginalFilename();
- if (!".xls".endsWith(originalFilename)) {
- return ResponseValue.error("鏂囦欢鏍煎紡鏈夎!");
- }
+// if (!".xls".endsWith(originalFilename)) {
+// return ResponseValue.error("鏂囦欢鏍煎紡鏈夎!");
+// }
FinSysTenantUser sysInfo = this.getSysInfo();
if (sysInfo == null) {
return ResponseValue.error("褰撳墠鐧诲綍鐢ㄦ埛涓虹┖");
}
- EasyExcelFactory.read(file.getInputStream(), ImportGoodsInfoTemplate.class,
- new AnalysisEventListener<ImportGoodsInfoTemplate>() {
- List<BaseGoodsTemplateParam> list = Lists.newArrayList();
+ try {
+ EasyExcelFactory.read(file.getInputStream(), ImportGoodsInfoTemplate.class,
+ new AnalysisEventListener<ImportGoodsInfoTemplate>() {
+ /**
+ * 涓绘暟鎹�
+ */
+ final List<BaseGoodsTemplateParam> list = Lists.newArrayList();
- @Override
- public void invoke(ImportGoodsInfoTemplate data, AnalysisContext analysisContext) {
- String categoryOne = data.getCategoryOne();
- String categoryTwo = data.getCategoryTwo();
- String categoryThree = data.getCategoryThree();
- String goodsName = data.getGoodsName();
- String goodModelName = data.getGoodModelName();
- String unit = data.getUnit();
- String type = data.getType();
- String agencyName = data.getAgencyName();
+ /**
+ * 妯″潡鏁版嵁
+ */
+ final List<BaseGoodsModels> baseGoodsModelsArrayList = Lists.newArrayList();
- BaseCategory baseCategory = baseCategoryService.getByCategoryByName(categoryThree);
- Long categoryId = baseCategory.getId();
+ /**
+ * 璇诲彇鐨勮鍙�
+ */
+ Integer rowIndex = 0;
- Optional<BaseGoodsTemplateParam> optional =
- list.stream().filter(item -> item.getCategoryId().equals(categoryId)).findFirst();
+ /**
+ * 琛ㄥご淇℃伅
+ * @param headMap
+ * @param context
+ */
+ @Override
+ public void invokeHeadMap(Map headMap, AnalysisContext context) {
+ // 楠岃瘉琛ㄥご鏁伴噺
+ logger.info("瑙f瀽鍒嗗彂鍗曠殑琛ㄥご闀垮害: {}", headMap.size());
+ if (headMap.size() != 7) {
+ throw new ExcelAnalysisException("涓婁紶鐨勬枃浠朵笉绗�!");
+ }
+ }
- if (optional.isPresent()) {
- BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
- baseGoodsModels.setModelName(goodModelName);
- baseGoodsModels.setUnit(unit);
- optional.get().getModels().add(baseGoodsModels);
- } else {
- BaseGoodsTemplateParam baseGoodsTemplate = new BaseGoodsTemplateParam();
- baseGoodsTemplate.setCategoryId(categoryId);
- baseGoodsTemplate.setGoodsName(goodsName);
- baseGoodsTemplate.setStates(1);
- FinSysTenant finSysTenant = finSysTenantService.selectByName(agencyName);
- baseGoodsTemplate.setAgencyId(finSysTenant.getId());
- baseGoodsTemplate.setAgencyName(agencyName);
+ /**
+ * 鏁版嵁澶勭悊
+ * @param data
+ * @param analysisContext
+ */
+ @Override
+ public void invoke(ImportGoodsInfoTemplate data, AnalysisContext analysisContext) {
+ rowIndex++;
+ String categoryOne = data.getCategoryOne();
+ String categoryTwo = data.getCategoryTwo();
+ String categoryThree = data.getCategoryThree();
+ if (StrUtil.isEmpty(categoryThree)) {
+ throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝鍝佺被鍚嶇О涓嶈兘涓虹┖锛�" + categoryThree);
+ }
+ String goodsName = data.getGoodsName();
+ if (StrUtil.isEmpty(goodsName)) {
+ throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝鍝佸悕涓嶈兘涓虹┖锛�" + goodsName);
+ }
+ String goodModelName = data.getGoodModelName();
+ if (StrUtil.isEmpty(goodModelName)) {
+ throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝瑙勬牸鍨嬪彿涓嶈兘涓虹┖锛�" + goodModelName);
+ }
+ String unit = data.getUnit();
+ if (StrUtil.isEmpty(unit)) {
+ throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝鍗曚綅涓嶈兘涓虹┖锛�" + unit);
+ }
+ //String type = data.getType();
+ String agencyName = data.getAgencyName();
+ if (StrUtil.isEmpty(agencyName)) {
+ throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝鍒涘缓鏈烘瀯涓嶈兘涓虹┖锛�" + agencyName);
+ }
+ BaseCategory baseCategory = baseCategoryService.getByCategoryByName(categoryThree);
+ if (baseCategory == null) {
+ throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝鏈煡璇㈠埌姝ゅ搧绫诲悕绉帮細" + categoryThree);
+ }
+ Long categoryId = baseCategory.getId();
+ // 鍒ゆ柇鍚屼竴鍒嗙被涓嬬殑鐗╁搧鍚嶇О鏄惁閲嶅
+ BaseGoodsTemplate goodsTemplate = baseGoodsTemplateService.getByGoodsNameAndCategoryId(goodsName, categoryId);
+ if (goodsTemplate != null) {
+ // 鏌ョ湅姝ゆ壒娆″拰鏁伴噺
+ BaseGoodsModels baseGoodsModelsAdd = new BaseGoodsModels();
+ baseGoodsModelsAdd.setGoodsTemplatesId(goodsTemplate.getId());
+ baseGoodsModelsAdd.setStates(1);
+ baseGoodsModelsAdd.setModelName(goodModelName);
+ baseGoodsModelsAdd.setUnit(unit);
+ // 鍒ゆ柇鍚屼竴鐗╁搧妯℃澘id涓嬬殑 瑙勬牸鍨嬪彿鍚嶇О鏄惁閲嶅
+ BaseGoodsModels baseGoodsModels = baseGoodsModelsService.getByModelNameAndGoodsTemplatesId(baseGoodsModelsAdd);
+ if (baseGoodsModels == null) {
+ baseGoodsModelsArrayList.add(baseGoodsModelsAdd);
+ return;
+ } else {
+ throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹�" + "鐗╁搧鍚嶇О锛�" + goodsName + "宸插瓨鍦紝瑙勬牸锛�" + goodModelName + "锛屽崟浣嶏細" + unit);
+ }
+ }
+ Optional<BaseGoodsTemplateParam> optional =
+ list.stream().filter(item -> item.getCategoryId().equals(categoryId)).findFirst();
+ Optional<BaseGoodsTemplateParam> optional2 =
+ list.stream().filter(item -> item.getGoodsName().equals(goodsName)).findFirst();
+ if (optional.isPresent() && optional2.isPresent()) {
+ BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
+ baseGoodsModels.setModelName(goodModelName);
+ baseGoodsModels.setUnit(unit);
+ optional.get().getModels().add(baseGoodsModels);
+ } else {
+ BaseGoodsTemplateParam baseGoodsTemplate = new BaseGoodsTemplateParam();
+ baseGoodsTemplate.setCategoryId(categoryId);
+ baseGoodsTemplate.setGoodsName(goodsName);
+ baseGoodsTemplate.setStates(1);
+ FinSysTenant finSysTenant = finSysTenantService.selectByName(agencyName);
+ if (finSysTenant == null) {
+ throw new ExcelAnalysisException("绗�" + rowIndex + "鏉℃暟鎹紝鏈煡璇㈠埌姝ゆ満鏋勶細" + agencyName);
+ }
+ baseGoodsTemplate.setAgencyId(finSysTenant.getId());
+ baseGoodsTemplate.setAgencyName(agencyName);
+ List<BaseGoodsModels> models = new ArrayList<>();
+ BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
+ baseGoodsModels.setModelName(goodModelName);
+ baseGoodsModels.setUnit(unit);
+ models.add(baseGoodsModels);
+ baseGoodsTemplate.setModels(models);
+ list.add(baseGoodsTemplate);
+ }
+ }
- List<BaseGoodsModels> models = new ArrayList<>();
- BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
- baseGoodsModels.setModelName(goodModelName);
- baseGoodsModels.setUnit(unit);
- models.add(baseGoodsModels);
- baseGoodsTemplate.setModels(models);
+ /**
+ * 澶勭悊鍚庡鍏ユ暟鎹�
+ * @param analysisContext
+ */
+ @Override
+ public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+ // 涓绘暟鎹瓨鍌�
+ for (BaseGoodsTemplateParam baseGoodsTemplate : list) {
+ baseGoodsTemplateService.add(baseGoodsTemplate, null);
+ }
+ // 妯″潡鏁版嵁瀛樺偍
+ for (BaseGoodsModels baseGoodsModels : baseGoodsModelsArrayList) {
+ baseGoodsModelsService.add(baseGoodsModels);
+ }
+ }
- list.add(baseGoodsTemplate);
- }
- }
-
- @Override
- public void doAfterAllAnalysed(AnalysisContext analysisContext) {
- for (BaseGoodsTemplateParam baseGoodsTemplate : list) {
- baseGoodsTemplateService.add(baseGoodsTemplate, null);
- }
- }
-
- @Override
- public void onException(Exception exception, AnalysisContext analysisContext) throws Exception {
- if (exception instanceof ExcelDataConvertException) {
- ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception;
- Integer row = excelDataConvertException.getRowIndex() + 1;
- Integer column = excelDataConvertException.getColumnIndex() + 1;
- throw new RuntimeException("绗�" + row + "琛岋紝绗�" + column + "鍒楄В鏋愬紓甯革紝璇锋纭~鍐�");
- } else {
- throw new RuntimeException(exception.getMessage());
- }
- }
- }).sheet(0).doRead();
-
+ @Override
+ public void onException(Exception exception, AnalysisContext analysisContext) throws Exception {
+ if (exception instanceof ExcelDataConvertException) {
+ ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException) exception;
+ Integer row = excelDataConvertException.getRowIndex() + 1;
+ Integer column = excelDataConvertException.getColumnIndex() + 1;
+ throw new ExcelAnalysisException("绗�" + row + "琛岋紝绗�" + column + "鍒楄В鏋愬紓甯革紝璇锋纭~鍐�");
+ } else {
+ throw new ExcelAnalysisException(exception.getMessage());
+ }
+ }
+ }).sheet(0).doRead();
+ } catch (ExcelAnalysisException e) {
+ return ResponseValue.error(e.getMessage());
+ } catch (RuntimeException e) {
+ e.printStackTrace();
+ return ResponseValue.error("绯荤粺閿欒");
+ }catch (Exception e) {
+ e.printStackTrace();
+ return ResponseValue.error("绯荤粺閿欒");
+ }
return ResponseValue.success("瀵煎叆鎴愬姛!");
}
}
diff --git a/consum-base/src/main/java/com/consum/base/controller/FinSysTenantController.java b/consum-base/src/main/java/com/consum/base/controller/FinSysTenantController.java
index 3335a92..0607533 100644
--- a/consum-base/src/main/java/com/consum/base/controller/FinSysTenantController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/FinSysTenantController.java
@@ -187,12 +187,12 @@
// 鐪佽繘鍏� 鏌ヨ 鐪佸拰鍦板競 锛涘湴甯傝繘鍏� 鏌ヨ鑷繁鍦板競
// TODO Long.valueOf(getSysInfo().getTenantId())
FinSysTenant finSysTenant =
- this.finSysTenantService.get(new FinSysTenant(Long.valueOf(getSysInfo().getTenantId())));
+ this.finSysTenantService.get(new FinSysTenant(Long.valueOf(getSysInfo().getTenantId())));
if (finSysTenant.getLv() == 3) {
return ResponseValue.error("鍘垮尯绾у埆鏃犳硶鏌ョ湅");
}
List<FinSysTenant> finSysTenantList =
- this.finSysTenantService.queryTreeById(finSysTenant.getId(), finSysTenant.getLv());
+ this.finSysTenantService.queryTreeById(finSysTenant.getId(), finSysTenant.getLv());
List<TreeNode> treeNodeList = new ArrayList<>();
// 鐪佹煡鏈韩鍙婁互涓� 甯傛煡鏈骇 鍘挎棤鏉冩煡鐪�
if (finSysTenant.getLv() == 1) {
@@ -204,7 +204,7 @@
}
} else {
TreeNode treeNode = new TreeNode(finSysTenantList.get(0).getId(), finSysTenantList.get(0).getName(),
- new ArrayList<>(), finSysTenantList.get(0).getParentId(), finSysTenantList.get(0).getCode());
+ new ArrayList<>(), finSysTenantList.get(0).getParentId(), finSysTenantList.get(0).getCode());
treeNodeList.add(treeNode);
}
return ResponseValue.success(treeNodeList);
@@ -219,12 +219,12 @@
// 鐪佽繘鍏� 鏌ヨ 鐪佸拰鍦板競 锛涘湴甯傝繘鍏� 鏌ヨ鑷繁鍦板競
// TODO Long.valueOf(getSysInfo().getTenantId())
FinSysTenant finSysTenant =
- this.finSysTenantService.get(new FinSysTenant(Long.valueOf(getSysInfo().getTenantId())));
+ this.finSysTenantService.get(new FinSysTenant(Long.valueOf(getSysInfo().getTenantId())));
if (finSysTenant.getLv() == 3) {
return ResponseValue.error("鍘垮尯绾у埆鏃犳硶鏌ョ湅");
}
Map<Long, List<FinSysTenant>> finSysTenantList =
- this.finSysTenantService.queryCountyByCityCode(finSysTenant.getId(), finSysTenant.getLv());
+ this.finSysTenantService.queryCountyByCityCode(finSysTenant.getId(), finSysTenant.getLv());
return ResponseValue.success(finSysTenantList);
}
@@ -236,7 +236,7 @@
while (var3.hasNext()) {
Object obj = var3.next();
- node = this.toTreeNode((FinSysTenant)obj);
+ node = this.toTreeNode((FinSysTenant) obj);
if (node.getId() == this.defaultParentId) {
this.rootMap.put(node.getId(), node);
@@ -256,7 +256,7 @@
var3 = this.rootMap.values().iterator();
while (var3.hasNext()) {
- TreeNode n = (TreeNode)var3.next();
+ TreeNode n = (TreeNode) var3.next();
n.setParentId(this.defaultParentId);
this.dummyRoot.addChild(n);
}
@@ -271,16 +271,16 @@
Iterator i = childMap.values().iterator();
while (i.hasNext()) {
- _node = (TreeNode)i.next();
+ _node = (TreeNode) i.next();
this.mountMiddleNode(_node, childMap);
}
}
private void mountMiddleNode(TreeNode currentNode, Map<Long, TreeNode> childMap) {
- TreeNode _parentNode = (TreeNode)this.rootMap.get(currentNode.getParentId());
+ TreeNode _parentNode = (TreeNode) this.rootMap.get(currentNode.getParentId());
if (_parentNode == null) {
- _parentNode = (TreeNode)childMap.get(currentNode.getId());
+ _parentNode = (TreeNode) childMap.get(currentNode.getId());
if (_parentNode == null) {
throw new NullPointerException("parent node not found, current: " + currentNode);
}
@@ -295,7 +295,7 @@
protected TreeNode toTreeNode(FinSysTenant entity) {
TreeNode treeNode =
- new TreeNode(entity.getId(), entity.getName(), (List)null, entity.getParentId(), entity.getCode());
+ new TreeNode(entity.getId(), entity.getName(), (List) null, entity.getParentId(), entity.getCode());
return treeNode;
}
@@ -307,7 +307,7 @@
Iterator var2 = this.rootMap.values().iterator();
while (var2.hasNext()) {
- TreeNode node = (TreeNode)var2.next();
+ TreeNode node = (TreeNode) var2.next();
list.add(node);
}
return list;
@@ -330,7 +330,7 @@
whStr.append(" and name is not null and(");
String upperCase = param.getFirstZmS().toUpperCase();
whStr.append(
- "instr(:upperFirstZmS,F_PINYIN( SUBSTR(name, 1, 1)))>0 or instr(:upperFirstZmS2,SUBSTR(name, 1, 1))>0");
+ "instr(:upperFirstZmS,F_PINYIN( SUBSTR(name, 1, 1)))>0 or instr(:upperFirstZmS2,SUBSTR(name, 1, 1))>0");
parameter.put("upperFirstZmS", upperCase);
parameter.put("upperFirstZmS2", upperCase);
whStr.append(")");
@@ -408,6 +408,10 @@
fileName = "鐗╁搧淇℃伅.xls";
} else if ("procure".equals(type)) {
fileName = "閲囪喘瀵煎叆.xls";
+ } else if ("distribute".equals(type)) {
+ fileName = "鍒嗗彂瀵煎叆.xls";
+ } else if ("classification".equals(type)) {
+ fileName = "鐗╁搧鍒嗙被.xls";
}
Resource resource = new ClassPathResource("import/" + fileName);
// 鑾峰彇鏂囦欢杈撳叆娴�
@@ -440,61 +444,61 @@
}
EasyExcelFactory
- .read(file.getInputStream(), ImportTenantTemplate.class, new AnalysisEventListener<ImportTenantTemplate>() {
- LinkedList<FinSysTenantParam> finSysTenantParams = new LinkedList<>();
+ .read(file.getInputStream(), ImportTenantTemplate.class, new AnalysisEventListener<ImportTenantTemplate>() {
+ LinkedList<FinSysTenantParam> finSysTenantParams = new LinkedList<>();
- @Override
- public void invoke(ImportTenantTemplate finSysTenantParam, AnalysisContext analysisContext) {
- String code = finSysTenantParam.getCode();
- String tenantName = finSysTenantParam.getTenantName();
- ReadSheetHolder readSheetHolder = analysisContext.readSheetHolder();
- Integer rowIndex = readSheetHolder.getRowIndex() + 1;
- if (StringUtils.isEmpty(code) || code.length() > 20) {
- IllegalStateException exception =
- new IllegalStateException("绗�" + rowIndex + "琛�,鏈烘瀯缂栧彿涓嶈兘涓虹┖鎴栭暱搴﹀ぇ浜�20");
- throw exception;
- }
- if (null != finSysTenantService.queryOneByCode(code)) {
- throw new IllegalStateException("绗�" + rowIndex + "琛�,鏈烘瀯缂栧彿宸插瓨鍦�");
- }
- if (StringUtils.isEmpty(tenantName) || tenantName.length() > 100) {
- IllegalStateException exception =
- new IllegalStateException("绗�" + rowIndex + "琛�,鏈烘瀯鍚嶇О涓嶈兘涓虹┖鎴栭暱搴﹀ぇ浜�100");
- throw exception;
- }
- FinSysTenantParam tenantParam = new FinSysTenantParam();
- tenantParam.setParentId(pid);
- tenantParam.setStatus(1);
- tenantParam.setSummary("绯荤粺瀵煎叆");
- tenantParam.setCode(code);
- tenantParam.setName(tenantName);
- finSysTenantParams.add(tenantParam);
- }
-
- @Override
- public void doAfterAllAnalysed(AnalysisContext analysisContext) {
- finSysTenantService.insertFinSysTenantBatch(finSysTenantParams, sysInfo, lv);
- }
-
- @Override
- public void onException(Exception exception, AnalysisContext context) {
- // 濡傛灉鏄煇涓�涓崟鍏冩牸鐨勮浆鎹㈠紓甯� 鑳借幏鍙栧埌鍏蜂綋琛屽彿
- if (exception instanceof ExcelDataConvertException) {
- ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception;
- Integer rowIndex = excelDataConvertException.getRowIndex() + 1;
- Integer columnIndex = excelDataConvertException.getColumnIndex();
- String stringValue = excelDataConvertException.getCellData().getStringValue();
- logger.error("绗瑊}琛岋紝绗瑊}鍒楄В鏋愬紓甯革紝鏁版嵁涓�:{}", rowIndex, columnIndex, stringValue);
- throw new IllegalStateException(
- "绗�" + rowIndex + "琛岋紝绗�" + columnIndex + "鍒楄В鏋愬紓甯�,寮傚父鏁版嵁涓�:[ " + stringValue + " ]");
- }
- if (exception instanceof IllegalStateException) {
- throw (IllegalStateException)exception;
+ @Override
+ public void invoke(ImportTenantTemplate finSysTenantParam, AnalysisContext analysisContext) {
+ String code = finSysTenantParam.getCode();
+ String tenantName = finSysTenantParam.getTenantName();
+ ReadSheetHolder readSheetHolder = analysisContext.readSheetHolder();
+ Integer rowIndex = readSheetHolder.getRowIndex() + 1;
+ if (StringUtils.isEmpty(code) || code.length() > 20) {
+ IllegalStateException exception =
+ new IllegalStateException("绗�" + rowIndex + "琛�,鏈烘瀯缂栧彿涓嶈兘涓虹┖鎴栭暱搴﹀ぇ浜�20");
+ throw exception;
+ }
+ if (null != finSysTenantService.queryOneByCode(code)) {
+ throw new IllegalStateException("绗�" + rowIndex + "琛�,鏈烘瀯缂栧彿宸插瓨鍦�");
+ }
+ if (StringUtils.isEmpty(tenantName) || tenantName.length() > 100) {
+ IllegalStateException exception =
+ new IllegalStateException("绗�" + rowIndex + "琛�,鏈烘瀯鍚嶇О涓嶈兘涓虹┖鎴栭暱搴﹀ぇ浜�100");
+ throw exception;
+ }
+ FinSysTenantParam tenantParam = new FinSysTenantParam();
+ tenantParam.setParentId(pid);
+ tenantParam.setStatus(1);
+ tenantParam.setSummary("绯荤粺瀵煎叆");
+ tenantParam.setCode(code);
+ tenantParam.setName(tenantName);
+ finSysTenantParams.add(tenantParam);
}
- }
+ @Override
+ public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+ finSysTenantService.insertFinSysTenantBatch(finSysTenantParams, sysInfo, lv);
+ }
- }).doReadAll();
+ @Override
+ public void onException(Exception exception, AnalysisContext context) {
+ // 濡傛灉鏄煇涓�涓崟鍏冩牸鐨勮浆鎹㈠紓甯� 鑳借幏鍙栧埌鍏蜂綋琛屽彿
+ if (exception instanceof ExcelDataConvertException) {
+ ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException) exception;
+ Integer rowIndex = excelDataConvertException.getRowIndex() + 1;
+ Integer columnIndex = excelDataConvertException.getColumnIndex();
+ String stringValue = excelDataConvertException.getCellData().getStringValue();
+ logger.error("绗瑊}琛岋紝绗瑊}鍒楄В鏋愬紓甯革紝鏁版嵁涓�:{}", rowIndex, columnIndex, stringValue);
+ throw new IllegalStateException(
+ "绗�" + rowIndex + "琛岋紝绗�" + columnIndex + "鍒楄В鏋愬紓甯�,寮傚父鏁版嵁涓�:[ " + stringValue + " ]");
+ }
+ if (exception instanceof IllegalStateException) {
+ throw (IllegalStateException) exception;
+ }
+
+ }
+
+ }).doReadAll();
return ResponseValue.success("瀵煎叆鎴愬姛!", 1);
}
@@ -520,7 +524,7 @@
if (sysInfo == null) {
return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
}
-
+
int num = this.finSysTenantService.updateFinSysTenant(param, this.getSysInfo());
return num > 0 ? ResponseValue.success(1) : ResponseValue.error("缂栬緫澶辫触锛�");
}
@@ -586,7 +590,7 @@
// 鐪�
FinSysTenant finSysTenant1 = this.finSysTenantService.get(new FinSysTenant(finSysTenant.getParentId()));
List<FinSysTenantUser> finSysTenantUserList =
- this.finSysTenantUserService.getByOrgId(finSysTenant1.getId());
+ this.finSysTenantUserService.getByOrgId(finSysTenant1.getId());
if (!StringUtils.isEmptyList(finSysTenantUserList)) {
FinSysTenantUserResult finSysTenantUserResult = new FinSysTenantUserResult();
finSysTenantUserResult.setOrgId(finSysTenant1.getId());
@@ -608,7 +612,7 @@
// 甯�
FinSysTenant finSysTenant2 = this.finSysTenantService.get(new FinSysTenant(finSysTenant.getParentId()));
List<FinSysTenantUser> finSysTenantUserList2 =
- this.finSysTenantUserService.getByOrgId(finSysTenant2.getId());
+ this.finSysTenantUserService.getByOrgId(finSysTenant2.getId());
if (!StringUtils.isEmptyList(finSysTenantUserList2)) {
FinSysTenantUserResult finSysTenantUserResult = new FinSysTenantUserResult();
finSysTenantUserResult.setOrgId(finSysTenant2.getId());
@@ -619,7 +623,7 @@
// 鐪�
FinSysTenant finSysTenant1 = this.finSysTenantService.get(new FinSysTenant(finSysTenant2.getParentId()));
List<FinSysTenantUser> finSysTenantUserList =
- this.finSysTenantUserService.getByOrgId(finSysTenant1.getId());
+ this.finSysTenantUserService.getByOrgId(finSysTenant1.getId());
if (!StringUtils.isEmptyList(finSysTenantUserList)) {
FinSysTenantUserResult finSysTenantUserResult = new FinSysTenantUserResult();
finSysTenantUserResult.setOrgId(finSysTenant1.getId());
@@ -633,7 +637,7 @@
@ApiOperation(value = "鑾峰彇鐖剁骇鏈烘瀯", notes = "鑾峰彇鐖剁骇鏈烘瀯")
@ApiImplicitParams({
- @ApiImplicitParam(name = "Authorization", value = "token", dataType = "String", paramType = "header"),})
+ @ApiImplicitParam(name = "Authorization", value = "token", dataType = "String", paramType = "header"),})
@GetMapping("/get/parent/tenant")
public ResponseValue getParentTenant() {
FinSysTenantUser sysInfo = getSysInfo();
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java b/consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java
index e6538a8..ef8e0db 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java
@@ -2,25 +2,34 @@
import java.io.IOException;
import java.lang.reflect.Field;
+import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
-
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.exception.ExcelAnalysisException;
+import com.alibaba.fastjson.JSONObject;
+import com.consum.base.core.utils.IdUtil;
+import com.consum.base.pojo.*;
+import com.consum.base.service.*;
+import com.consum.base.util.DateUtil;
+import com.consum.model.po.*;
import org.apache.commons.compress.utils.Lists;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
-
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
@@ -28,8 +37,6 @@
import com.consum.base.BaseController;
import com.consum.base.core.utils.CommonUtil;
import com.consum.base.core.utils.PageUtil;
-import com.consum.base.pojo.LWhFormProcureGoodsInfoParam;
-import com.consum.base.pojo.LWhFormProcureParam;
import com.consum.base.pojo.dto.GoodModelInfoDTO;
import com.consum.base.pojo.excel.ImportProcureOrderTemplate;
import com.consum.base.pojo.excel.ProcureExcelTemplate;
@@ -39,21 +46,12 @@
import com.consum.base.pojo.response.GoodsTemplateCountVO;
import com.consum.base.pojo.response.GoodsTemplateInfoVO;
import com.consum.base.pojo.response.LWhFormProcureExtendVO;
-import com.consum.base.service.BaseCategoryService;
-import com.consum.base.service.LWhFormProcureGoodsService;
-import com.consum.base.service.LWhFormProcureService;
-import com.consum.base.service.LWhProcureModelService;
import com.consum.base.service.core.LWhFormProcureCoreService;
-import com.consum.model.po.BaseCategory;
-import com.consum.model.po.FinSysTenantUser;
-import com.consum.model.po.LWhFormProcure;
-import com.consum.model.po.LWhFormProcureGoods;
import com.iplatform.model.po.S_user_core;
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.CollectionUtils;
import com.walker.infrastructure.utils.DateUtils;
import com.walker.web.ResponseValue;
-
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
import cn.hutool.core.util.ReflectUtil;
@@ -83,6 +81,24 @@
private LWhProcureModelService lWhProcureModelService;
@Resource
private BaseCategoryService baseCategoryService;
+
+ /**
+ * 浠撳簱鏈嶅姟
+ */
+ @Autowired
+ private BaseWarehouseService baseWarehouseService;
+
+ /**
+ * 鍏ュ簱id
+ */
+ @Autowired
+ private BaseGoodsTemplateService baseGoodsTemplateService;
+
+ /**
+ * 鐗╁搧model鏈嶅姟
+ */
+ @Autowired
+ private BaseGoodsModelsService baseGoodsModelsService;
/**
* @Description 鏂板
@@ -116,7 +132,7 @@
*/
@ApiOperation(value = "閲囪喘鍗曞垪琛ㄦ煡璇�", notes = "閲囪喘鍗曞垪琛ㄦ煡璇�")
@ApiImplicitParams({@ApiImplicitParam(name = "param", value = "閲囪喘鏌ヨ鏉′欢", required = true,
- dataType = "FormProcureQryDto", paramType = "query")})
+ dataType = "FormProcureQryDto", paramType = "query")})
@GetMapping("/list")
public ResponseValue queryFormProcureList() {
FormProcureQry param = CommonUtil.getObjFromReq(FormProcureQry.class);
@@ -143,7 +159,7 @@
// 鏌ヨ鍨嬪彿鏁伴噺
List<GoodsTemplateCountVO> procureCount =
- lWhProcureModelService.getProcureCountByBusinessId(item.getId());
+ lWhProcureModelService.getProcureCountByBusinessId(item.getId());
fromProcureVO.setFromProcureTemplateInfoList(procureCount);
result.add(fromProcureVO);
@@ -238,7 +254,7 @@
BeanUtils.copyProperties(formProcureGood, goodsTemplateInfoVO);
List<GoodModelInfoDTO> goodsModelInfoList =
- lWhProcureModelService.getGoodsModelListByBusinessId(null, formProcureGood.getId());
+ lWhProcureModelService.getGoodsModelListByBusinessId(null, formProcureGood.getId());
if (CollectionUtils.isEmpty(goodsModelInfoList)) {
continue;
}
@@ -268,7 +284,7 @@
goodsModelVO.setUnit(goodModelInfo.getUnit());
goodsModelVO.setCounts(goodModelInfo.getCounts());
goodsModelVO.setTotalAmount(
- goodModelInfo.getTotalAmount() != null ? goodModelInfo.getTotalAmount().doubleValue() : null);
+ goodModelInfo.getTotalAmount() != null ? goodModelInfo.getTotalAmount().doubleValue() : null);
goodsModelVO.setWorehouseCount(goodModelInfo.getWorehouseCount());
goodsModelVO.setPrice(goodModelInfo.getPrice());
goodsModelVO.setBaseGoodsModelsId(goodModelInfo.getBaseGoodsModelsId());
@@ -277,7 +293,7 @@
@ApiOperation(value = "閲囪喘鍗曟槑缁嗘煡璇�", notes = "閲囪喘鍗曟槑缁嗘煡璇�")
@ApiImplicitParams({@ApiImplicitParam(name = "param", value = "閲囪喘鍗曟槑缁嗘煡璇�", required = true,
- dataType = "FormProcureQryDto", paramType = "query")})
+ dataType = "FormProcureQryDto", paramType = "query")})
@GetMapping("detail/list")
public ResponseValue queryFormProcureDetailList() {
FormProcureQry formProcureQry = CommonUtil.getObjFromReq(FormProcureQry.class);
@@ -296,7 +312,7 @@
@ApiOperation(value = "閲囪喘鍗曞鍑�", notes = "閲囪喘鍗曞鍑�")
@ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "閲囪喘鍗昳d", required = true, dataType = "Long", paramType = "query")})
+ @ApiImplicitParam(name = "id", value = "閲囪喘鍗昳d", required = true, dataType = "Long", paramType = "query")})
@GetMapping("/list/export")
public ResponseValue<String> export(Long id, HttpServletResponse response) throws Exception {
TemplateExportParams params = new TemplateExportParams("import/閲囪喘鍏ュ簱鍗�.xls");
@@ -312,9 +328,9 @@
}
int countNum =
- exportList.stream().filter(item -> item.getNum() != null).mapToInt(ProcureExcelTemplate::getNum).sum();
+ exportList.stream().filter(item -> item.getNum() != null).mapToInt(ProcureExcelTemplate::getNum).sum();
double totalAmount = exportList.stream().filter(export -> export.getTotalAmount() != null)
- .mapToDouble(ProcureExcelTemplate::getAmount).sum();
+ .mapToDouble(ProcureExcelTemplate::getAmount).sum();
Optional<ProcureExcelTemplate> first = exportList.stream().findFirst();
ProcureExcelTemplate templateExcelExport = first.get();
String businessFormCode = templateExcelExport.getBusinessFormCode();
@@ -334,87 +350,267 @@
}
+ /**
+ * 閲囪喘鍗曞鍏�
+ *
+ * @param file
+ * @return
+ */
@ApiOperation(value = "閲囪喘鍗曞鍏�", notes = "閲囪喘鍗曞鍏�")
@PostMapping("/import")
- public ResponseValue upload(MultipartFile file) throws IOException {
+ public ResponseValue upload(MultipartFile file) {
String originalFilename = file.getOriginalFilename();
- if (!".xls".endsWith(originalFilename)) {
- return ResponseValue.error("鏂囦欢鏍煎紡鏈夎!");
- }
+ // 鏂囦欢鏍煎紡鏍¢獙
+// if (!".xls".endsWith(originalFilename)) {
+// return ResponseValue.error("鏂囦欢鏍煎紡鏈夎!");
+// }
FinSysTenantUser sysInfo = this.getSysInfo();
if (sysInfo == null) {
return ResponseValue.error("褰撳墠鐧诲綍鐢ㄦ埛涓虹┖");
}
- EasyExcelFactory.read(file.getInputStream(), ImportProcureOrderTemplate.class,
- new AnalysisEventListener<ImportProcureOrderTemplate>() {
- List<LWhFormProcureParam> list = Lists.newArrayList();
+ try {
+ EasyExcelFactory.read(file.getInputStream(), ImportProcureOrderTemplate.class,
+ new AnalysisEventListener<ImportProcureOrderTemplate>() {
+ /**
+ * 鑷噰閲囪喘鍗曠殑鍐呭眰鏁版嵁
+ */
+ final List<LWhFormProcureGoodsInfoParam> zcList = Lists.newArrayList();
- @Override
- public void invoke(ImportProcureOrderTemplate data, AnalysisContext analysisContext) {
- String categoryOne = data.getCategoryOne();
- String categoryTwo = data.getCategoryTwo();
- String categoryThree = data.getCategoryThree();
- String goodsName = data.getGoodsName();
- String goodModelName = data.getGoodModelName();
- String unit = data.getUnit();
- String type = data.getType();
- String agencyName = data.getAgencyName();
- String warehouseName = data.getWarehouseName();
- String supplierName = data.getSupplierName();
- String price = data.getPrice();
- String num = data.getNum();
+ /**
+ * 闆嗛噰閲囪喘鍗曠殑鍐呭眰鏁版嵁
+ */
+ final List<LWhFormProcureGoodsInfoParam> jcList = Lists.newArrayList();
- BaseCategory baseCategory = baseCategoryService.getByCategoryByName(categoryThree);
- Long categoryId = baseCategory.getId();
+ /**
+ * 閲囪喘鍗曠殑涓绘暟鎹�
+ */
+ final LWhFormProcureParam lWhFormProcureParam = new LWhFormProcureParam();
- // Optional<BaseGoodsTemplateParam> optional =
- // list.stream().filter(item -> item.getCategoryId().equals(categoryId)).findFirst();
- //
- // if (optional.isPresent()) {
- // BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
- // baseGoodsModels.setModelName(goodModelName);
- // baseGoodsModels.setUnit(unit);
- // optional.get().getModels().add(baseGoodsModels);
- // } else {
- // BaseGoodsTemplateParam baseGoodsTemplate = new BaseGoodsTemplateParam();
- // baseGoodsTemplate.setCategoryId(categoryId);
- // baseGoodsTemplate.setGoodsName(goodsName);
- // baseGoodsTemplate.setStates(1);
- // FinSysTenant finSysTenant = finSysTenantService.selectByName(agencyName);
- // baseGoodsTemplate.setAgencyId(finSysTenant.getId());
- // baseGoodsTemplate.setAgencyName(agencyName);
- //
- // List<BaseGoodsModels> models = new ArrayList<>();
- // BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
- // baseGoodsModels.setModelName(goodModelName);
- // baseGoodsModels.setUnit(unit);
- // models.add(baseGoodsModels);
- // baseGoodsTemplate.setModels(models);
- //
- // list.add(baseGoodsTemplate);
- // }
- }
+ /**
+ * 绗嚑鏉℃暟鎹�
+ */
+ Integer index = 0;
- @Override
- public void doAfterAllAnalysed(AnalysisContext analysisContext) {
- for (LWhFormProcureParam procureParam : list) {
- // lWhFormProcureService.add(procureParam, null);
- }
- }
+ /**
+ * 琛ㄥご淇℃伅
+ * @param headMap
+ * @param context
+ */
+ @Override
+ public void invokeHeadMap(Map headMap, AnalysisContext context) {
+ // 楠岃瘉琛ㄥご鏁伴噺
+ logger.info("瑙f瀽鍒嗗彂鍗曠殑琛ㄥご闀垮害: {}", headMap.size());
+ if (headMap.size() != 12) {
+ throw new ExcelAnalysisException("涓婁紶鐨勬枃浠朵笉绗�!");
+ }
+ }
- @Override
- public void onException(Exception exception, AnalysisContext analysisContext) throws Exception {
- if (exception instanceof ExcelDataConvertException) {
- ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception;
- Integer row = excelDataConvertException.getRowIndex() + 1;
- Integer column = excelDataConvertException.getColumnIndex() + 1;
- throw new RuntimeException("绗�" + row + "琛岋紝绗�" + column + "鍒楄В鏋愬紓甯革紝璇锋纭~鍐�");
- } else {
- throw new RuntimeException(exception.getMessage());
- }
- }
- }).sheet(0).doRead();
+ /**
+ * 鏁版嵁澶勭悊
+ * @param data
+ * @param analysisContext
+ */
+ @Override
+ public void invoke(ImportProcureOrderTemplate data, AnalysisContext analysisContext) {
+ index++;
+ String categoryOne = data.getCategoryOne();
+ String categoryTwo = data.getCategoryTwo();
+ String categoryThree = data.getCategoryThree();
+ if (StrUtil.isEmpty(categoryThree)) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鍝佺被鍚嶇О涓嶈兘涓虹┖锛�" + categoryThree);
+ }
+ String goodsName = data.getGoodsName();
+ if (StrUtil.isEmpty(goodsName)) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鍝佸悕涓嶈兘涓虹┖锛�" + goodsName);
+ }
+ String goodModelName = data.getGoodModelName();
+ if (StrUtil.isEmpty(goodModelName)) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝瑙勬牸鍨嬪彿涓嶈兘涓虹┖锛�" + goodModelName);
+ }
+ String unit = data.getUnit();
+ if (StrUtil.isEmpty(unit)) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鍗曚綅涓嶈兘涓虹┖锛�" + unit);
+ }
+ String type = data.getType();
+ //String agencyName = data.getAgencyName();
+ String warehouseName = data.getWarehouseName();
+ if (StrUtil.isEmpty(warehouseName)) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鎵�鍦ㄤ粨搴撲笉鑳戒负绌猴細" + warehouseName);
+ }
+ String supplierName = data.getSupplierName();
+ if (StrUtil.isEmpty(supplierName)) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝渚涜揣鍟嗕笉鑳戒负绌猴細" + supplierName);
+ }
+ String price = data.getPrice();
+ if (StrUtil.isEmpty(price)) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鍗曚环(鍏�)涓嶈兘涓虹┖锛�" + price);
+ }
+ String num = data.getNum();
+ if (StrUtil.isEmpty(num)) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝搴撳瓨鏁伴噺涓嶈兘涓虹┖锛�" + num);
+ }
+ // 鐗╁搧绫诲瀷(鑷噰闆嗛噰)
+ String goodsType = data.getGoodsType();
+ if (StrUtil.isEmpty(goodsType)) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鐗╁搧绫诲瀷涓嶈兘涓虹┖锛�" + goodsType);
+ }
+
+ // 绗竴娆¤繘鏉ユ妸澶栧眰鐨勫�艰缃竴涓�
+ if (lWhFormProcureParam.getAgencyId() == null) {
+ // [閫氳繃浠撳簱鍚嶏紝鏌ユ壘瀵瑰簲鐨勪粨搴搃d]
+ FinSysTenantUser currentUser = getSysInfo();
+ BaseWarehouseParam baseWarehouseParam = new BaseWarehouseParam();
+ baseWarehouseParam.setStates(1);
+ baseWarehouseParam.setWarehouseName(warehouseName);
+ GenericPager<BaseWarehouse> pager = baseWarehouseService.queryList(baseWarehouseParam, currentUser);
+ List<BaseWarehouse> datas = pager.getDatas();
+ Long ckId = null;
+ if (!CollectionUtil.isEmpty(datas)) {
+ BaseWarehouse baseWarehouse = datas.get(0);
+ ckId = baseWarehouse.getId();
+ } else {
+ // 鎶ラ敊 浠撳簱涓嶅瓨鍦�
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝浠撳簱涓嶅瓨鍦細" + warehouseName);
+ }
+ lWhFormProcureParam.setProcureDoc("");
+ lWhFormProcureParam.setWarehouseId(ckId);
+ lWhFormProcureParam.setProcureTime(DateUtil.getNowDate() + "");
+ lWhFormProcureParam.setBuyType(2);
+ }
+ // 鏌ヨ鍒嗙被id
+ BaseCategory baseCategory = baseCategoryService.getByCategoryByName(categoryThree);
+ if (baseCategory == null) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝姝ゅ垎绫讳笉瀛樺湪锛�" + categoryThree);
+ }
+ Long categoryId = baseCategory.getId();
+ // 涓嶅悓閲囬泦绫诲瀷锛屼笉鍚岀瓫閫�
+ Optional<LWhFormProcureGoodsInfoParam> optional = null;
+ if ("鑷噰".equals(goodsType)) {
+ optional = zcList.stream().filter(item -> item.getCategoryId().equals(categoryId)).findFirst();
+ } else if ("闆嗛噰".equals(goodsType)) {
+ optional = jcList.stream().filter(item -> item.getCategoryId().equals(categoryId)).findFirst();
+ }
+
+ Optional<LWhFormProcureGoodsInfoParam> optional1 = null;
+ if ("鑷噰".equals(goodsType)) {
+ optional1 = zcList.stream().filter(item -> item.getGoodsTemplateName().equals(goodsName)).findFirst();
+ } else if ("闆嗛噰".equals(goodsType)) {
+ optional1 = jcList.stream().filter(item -> item.getGoodsTemplateName().equals(goodsName)).findFirst();
+ }
+
+ // 鍝佺被 鍜� 鍟嗗搧鍚嶅畬鍏ㄤ竴鏍锋墠鍔犲叆
+ if (optional.isPresent() && optional1.isPresent()) {
+ LWhProcureModelParam lWhProcureModelParam = new LWhProcureModelParam();
+ lWhProcureModelParam.setCounts(StrUtil.isEmpty(num) ? 0 : Integer.valueOf(num));
+ lWhProcureModelParam.setPrice(new BigDecimal(price).multiply(new BigDecimal("100")).longValue());
+ lWhProcureModelParam.setBaseUnit(unit);
+
+
+ // 鏁版嵁绗簩灞�-鐗╁搧鐨刬d
+ BaseGoodsTemplate goodsTemplate = baseGoodsTemplateService.getByGoodsNameAndCategoryId(goodsName, categoryId);
+ if (goodsTemplate == null) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝姝ょ墿鍝佷笉瀛樺湪锛�" + goodsName);
+ }
+ BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
+ baseGoodsModels.setModelName(goodModelName);
+ baseGoodsModels.setGoodsTemplatesId(goodsTemplate.getId());
+ BaseGoodsModels byModelNameAndGoodsTemplatesId = baseGoodsModelsService.getByModelNameAndGoodsTemplatesId(baseGoodsModels);
+ if (byModelNameAndGoodsTemplatesId == null) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹�" + "鍝佸悕锛�" + goodsName + "锛岃鏍煎瀷鍙凤細" + goodModelName + "鏈壘鍒�");
+ }
+ lWhProcureModelParam.setBaseGoodsModelsId(byModelNameAndGoodsTemplatesId.getId());
+ optional.get().getModels().add(lWhProcureModelParam);
+ } else {
+ LWhFormProcureGoodsInfoParam lWhFormProcureGoodsInfoParam = new LWhFormProcureGoodsInfoParam();
+ // 鏁版嵁绗簩灞�-鐗╁搧涓夌骇鍒嗙被绗笁绾х殑id
+ lWhFormProcureGoodsInfoParam.setCategoryId(categoryId);
+ // 鏁版嵁绗簩灞�-鐗╁搧鐨刬d
+ BaseGoodsTemplate goodsTemplate = baseGoodsTemplateService.getByGoodsNameAndCategoryId(goodsName, categoryId);
+ if (goodsTemplate == null) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝姝ょ墿鍝佷笉瀛樺湪锛�" + goodsName);
+ }
+ lWhFormProcureGoodsInfoParam.setBaseGoodsTemplateId(goodsTemplate.getId());
+ // 鏁版嵁绗簩灞�-渚涘簲鍟�
+ lWhFormProcureGoodsInfoParam.setSupplier(supplierName);
+ // 鏁版嵁绗簩灞�-鐗╁搧鍚�
+ lWhFormProcureGoodsInfoParam.setGoodsTemplateName(goodsName);
+ // 鏁版嵁绗笁灞傛暟鎹�
+ List<LWhProcureModelParam> lWhProcureModelParams = new ArrayList<>();
+ LWhProcureModelParam lWhProcureModelParam = new LWhProcureModelParam();
+ lWhProcureModelParam.setCounts(StrUtil.isEmpty(num) ? 0 : Integer.valueOf(num));
+ BigDecimal multiply = new BigDecimal(price).multiply(new BigDecimal("100"));
+ lWhProcureModelParam.setPrice(multiply.longValue());
+ lWhProcureModelParam.setBaseUnit(unit);
+ BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
+ baseGoodsModels.setModelName(goodModelName);
+ baseGoodsModels.setGoodsTemplatesId(goodsTemplate.getId());
+ BaseGoodsModels byModelNameAndGoodsTemplatesId = baseGoodsModelsService.getByModelNameAndGoodsTemplatesId(baseGoodsModels);
+ if (byModelNameAndGoodsTemplatesId == null) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹�" + "鍝佸悕锛�" + goodsName + "锛岃鏍煎瀷鍙凤細" + goodModelName + "鏈壘鍒�");
+ }
+ lWhProcureModelParam.setBaseGoodsModelsId(byModelNameAndGoodsTemplatesId.getId());
+ lWhProcureModelParams.add(lWhProcureModelParam);
+ lWhFormProcureGoodsInfoParam.setModels(lWhProcureModelParams);
+ // 涓嶅悓閲囬泦绫诲瀷鍒颁笉鍚宭ist
+ if ("鑷噰".equals(goodsType)) {
+ zcList.add(lWhFormProcureGoodsInfoParam);
+ } else if ("闆嗛噰".equals(goodsType)) {
+ jcList.add(lWhFormProcureGoodsInfoParam);
+ }
+ }
+ }
+
+ /**
+ * 澶勭悊鍚庣殑鏁版嵁瀵煎叆
+ * @param analysisContext
+ */
+ @Override
+ public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+ lWhFormProcureParam.setProcureGoods(zcList);
+ // 閲囪喘鍗�-鑷噰
+ long zcId = IdUtil.generateId();
+ lWhFormProcureParam.setId(zcId);
+ String zcJsonString = JSONObject.toJSONString(lWhFormProcureParam);
+ logger.info("瀵煎叆閲囪喘鍗�(鑷噰)json鏁版嵁 --------------------");
+ logger.info(zcJsonString);
+ add(lWhFormProcureParam);
+
+ // 閲囪喘鍗�-闆嗛噰
+ long jcId = IdUtil.generateId();
+ lWhFormProcureParam.setId(jcId);
+ lWhFormProcureParam.setBuyType(1);
+ lWhFormProcureParam.setProcureGoods(jcList);
+ String jcJsonString = JSONObject.toJSONString(lWhFormProcureParam);
+ logger.info("瀵煎叆閲囪喘鍗�(闆嗛噰)json鏁版嵁 --------------------");
+ logger.info(jcJsonString);
+ add(lWhFormProcureParam);
+ // 鑷噰鍜岄泦閲囧叆搴�
+ income(zcId);
+ income(jcId);
+ }
+
+ @Override
+ public void onException(Exception exception, AnalysisContext analysisContext) throws Exception {
+ if (exception instanceof ExcelDataConvertException) {
+ ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException) exception;
+ Integer row = excelDataConvertException.getRowIndex() + 1;
+ Integer column = excelDataConvertException.getColumnIndex() + 1;
+ throw new ExcelAnalysisException("绗�" + row + "琛岋紝绗�" + column + "鍒楄В鏋愬紓甯革紝璇锋纭~鍐�");
+ } else {
+ throw new ExcelAnalysisException(exception.getMessage());
+ }
+ }
+ }).sheet(0).doRead();
+ }catch (ExcelAnalysisException e) {
+ return ResponseValue.error(e.getMessage());
+ }catch (RuntimeException e) {
+ e.printStackTrace();
+ return ResponseValue.error("绯荤粺閿欒");
+ } catch (Exception e) {
+ e.printStackTrace();
+ return ResponseValue.error("绯荤粺閿欒");
+ }
return ResponseValue.success("瀵煎叆鎴愬姛!");
}
diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java b/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java
index ba8e8dc..61409c5 100644
--- a/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java
+++ b/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java
@@ -1,6 +1,7 @@
package com.consum.base.controller;
import java.lang.reflect.Field;
+import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
@@ -10,10 +11,24 @@
import java.util.Set;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
+
+import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.EasyExcelFactory;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.excel.exception.ExcelAnalysisException;
+import com.alibaba.excel.exception.ExcelDataConvertException;
import com.alibaba.fastjson.JSONObject;
+import com.consum.base.pojo.*;
+import com.consum.base.pojo.excel.ImportProcureOrderTemplate;
+import com.consum.base.pojo.excel.LWhFormTransferTemplate;
+import com.consum.base.pojo.query.WarehouseQry;
+import com.consum.base.service.*;
+import com.consum.base.util.DateUtil;
import com.consum.base.util.ExcelStyleUtil;
+import com.consum.model.po.*;
import org.apache.commons.compress.utils.Lists;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.poi.ss.usermodel.Workbook;
@@ -27,10 +42,6 @@
import com.consum.base.core.type.TransferStatesType;
import com.consum.base.core.utils.CommonUtil;
import com.consum.base.core.utils.IdUtil;
-import com.consum.base.pojo.GoodsUseRecordVO;
-import com.consum.base.pojo.LWhFormTransferGoodsInfoParam;
-import com.consum.base.pojo.RecordUserInfoVO;
-import com.consum.base.pojo.UseRecordSkuVO;
import com.consum.base.pojo.dto.GoodsInfoDTO;
import com.consum.base.pojo.dto.UseRecordDTO;
import com.consum.base.pojo.excel.TransferExcelTemplate;
@@ -42,20 +53,7 @@
import com.consum.base.pojo.response.GoodsTemplateCountVO;
import com.consum.base.pojo.response.LWHFromTransferExtendVO;
import com.consum.base.pojo.response.TransferInfoVO;
-import com.consum.base.service.BaseWarehouseService;
-import com.consum.base.service.LGoodsUserRecordCoreService;
-import com.consum.base.service.LWhFormTransferService;
-import com.consum.base.service.LWhGoodsService;
-import com.consum.base.service.LWhProcureModelService;
-import com.consum.base.service.LWhProcureModelUserRecordService;
-import com.consum.base.service.LWhProcureModelUserService;
import com.consum.base.service.core.LWhFormTransferCoreService;
-import com.consum.model.po.BaseWarehouse;
-import com.consum.model.po.FinSysTenantUser;
-import com.consum.model.po.LWhFormTransfer;
-import com.consum.model.po.LWhProcureModel;
-import com.consum.model.po.LWhProcureModelUser;
-import com.consum.model.po.LWhProcureModelUserRecord;
import com.iplatform.model.po.S_user_core;
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.CollectionUtils;
@@ -68,6 +66,7 @@
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
+import org.springframework.web.multipart.MultipartFile;
/**
* @Description 璋冩嫧绠$悊
@@ -95,6 +94,14 @@
private LWhGoodsService lWhGoodsService;
@Autowired
private BaseWarehouseService baseWarehouseService;
+ @Autowired
+ private FinSysTenantDepartmentService departmentService;
+ @Autowired
+ private BaseCategoryService baseCategoryService;
+ @Autowired
+ private BaseGoodsTemplateService baseGoodsTemplateService;
+ @Autowired
+ private BaseGoodsModelsService baseGoodsModelsService;
/**
* @Description 鏂板
@@ -118,10 +125,69 @@
return ResponseValue.error("璋冩嫧鍗曚笉鑳戒负绌�");
}
long id = this.lWhFormTransferService.add(param, this.getSysInfo(), StrUtil.isEmpty(param.getProcureDoc()));
- if(id == -1L){
+ if (id == -1L) {
return ResponseValue.error("鎮ㄤ笉鏄簱绠″憳");
}
- if(id == -2L){
+ if (id == -2L) {
+ return ResponseValue.error("浠撳簱涓嶅瓨鍦�");
+ }
+
+ Integer transferBusinessType = param.getTransferBusinessType();
+ // 閮ㄩ棬鍒嗗彂涓氬姟闇�瑕佸鐞�
+ // 鎷嗗垎 鏂伴�昏緫
+ if (transferBusinessType == 1 && !StrUtil.isEmpty(param.getProcureDoc())) {
+ // 鍏堝嚭搴擄紝鍐嶅叆搴�
+ // 鍑哄簱鍓� 璁剧疆鍑哄簱浠撳簱
+ List<LWhProcureModel> modelByForm = lWhProcureModelService.getModelByForm(WhBusinessEnum.BUMENFENFA, id);
+ Set<Long> baseModelIds =
+ modelByForm.stream().map(LWhProcureModel::getBaseGoodsModelsId).collect(Collectors.toSet());
+
+ FinSysTenantUser sysTenantUser = this.getSysInfo();
+ String agencyId = sysTenantUser.getTenantId();
+ List<BaseWarehouse> baseWarehouseList =
+ baseWarehouseService.getBaseWareHouseList(Long.valueOf(agencyId), StatesType.NORMAL.getValue());
+ Set<Long> wareHouseIds = baseWarehouseList.stream().map(BaseWarehouse::getId).collect(Collectors.toSet());
+ // 閫氳繃璋冩嫧鍗曚腑鐨勫瀷鍙穒d鏌ヨ鍑鸿鍨嬪彿鐗╁搧鎵�鍦ㄧ殑浠撳簱浣嶇疆
+ List<GoodsInfoDTO> goodsInfoDTOS = lWhGoodsService.queryGoodsInfo(baseModelIds, wareHouseIds, null);
+ GoodsInfoDTO goodsInfoDTO = goodsInfoDTOS.stream().findFirst().orElse(null);
+ if (ObjectUtils.isEmpty(goodsInfoDTO)) {
+ return ResponseValue.error("璇ュ瀷鍙锋病鏈夊簱瀛樺彲浣跨敤");
+ }
+
+ Long wareHouseId = goodsInfoDTO.getWarehouseId();
+ String warehouseName = goodsInfoDTO.getWarehouseName();
+ LWhFormTransfer lWhFormTransfer = new LWhFormTransfer(id);
+ lWhFormTransfer.setOutWarehouseId(wareHouseId);
+ lWhFormTransfer.setOutWarehouseName(warehouseName);
+ lWhFormTransferService.update(lWhFormTransfer);
+ Long l = lWhFormTransferCoreService.doTransferOutPutNew(id, getCurrentUser(), WhBusinessEnum.BUMENFENFA);
+ if (l == -1L) {
+ return ResponseValue.error("浠撳簱鏁伴噺涓嶈冻");
+ }
+ lWhFormTransferCoreService.doTransferInPut(id, getCurrentUser(), param.getOperatorName());
+ }
+
+ return ResponseValue.success();
+ }
+
+
+ public ResponseValue add2(LWhFormTransferParam param) throws Exception {
+ S_user_core currentUser = this.getCurrentUser();
+ if (currentUser == null) {
+ return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
+ }
+ List<LWhFormTransferGoodsInfoParam> transferGoods = param.getTransferGoods();
+ if (CollectionUtils.isEmpty(transferGoods)) {
+ return ResponseValue.error("璋冩嫧鍗曚笉鑳戒负绌�");
+ }
+
+ FinSysTenantUser sysInfo = this.getSysInfo();
+
+ long id = this.lWhFormTransferService.add(param, sysInfo, true);
+ if (id == -1L) {
+ return ResponseValue.error("鎮ㄤ笉鏄簱绠″憳");
+ }
+ if (id == -2L) {
return ResponseValue.error("浠撳簱涓嶅瓨鍦�");
}
@@ -154,7 +220,7 @@
lWhFormTransfer.setOutWarehouseName(warehouseName);
lWhFormTransferService.update(lWhFormTransfer);
Long l = lWhFormTransferCoreService.doTransferOutPutNew(id, getCurrentUser(), WhBusinessEnum.BUMENFENFA);
- if(l == -1L){
+ if (l == -1L) {
return ResponseValue.error("浠撳簱鏁伴噺涓嶈冻");
}
lWhFormTransferCoreService.doTransferInPut(id, getCurrentUser(), param.getOperatorName());
@@ -409,7 +475,7 @@
if (type == 0) {
params = new TemplateExportParams("import/璋冩嫧鍏ュ簱鍗�.xls");
fileName = "璋冩嫧鍏ュ簱鍗�";
- }else if (type == 1) {
+ } else if (type == 1) {
params = new TemplateExportParams("import/璋冩嫧鍏ュ簱鍗�1.xls");
fileName = "璋冩嫧鍏ュ簱鍗�";
} else {
@@ -614,4 +680,330 @@
lWhFormTransferService.queryDepartmentTransferOrder();
return ResponseValue.success(transferInfoVO);
}
+
+ /**
+ * 鍒嗗彂鍗曞鍏�
+ *
+ * @param file
+ * @return
+ */
+ @ApiOperation(value = "鍒嗗彂鍗曞鍏�", notes = "鍒嗗彂鍗曞鍏�")
+ @PostMapping("/import2")
+ public ResponseValue import2(MultipartFile file) {
+ String originalFilename = file.getOriginalFilename();
+ // 鏂囦欢鏍煎紡鏍¢獙
+// if (!".xls".endsWith(originalFilename)) {
+// return ResponseValue.error("鏂囦欢鏍煎紡鏈夎!");
+// }
+ FinSysTenantUser sysInfo = this.getSysInfo();
+ if (sysInfo == null) {
+ return ResponseValue.error("褰撳墠鐧诲綍鐢ㄦ埛涓虹┖");
+ }
+ try {
+ EasyExcelFactory.read(file.getInputStream(), LWhFormTransferTemplate.class,
+ new AnalysisEventListener<LWhFormTransferTemplate>() {
+ /**
+ * 鍒嗗彂鍗曚富鏁版嵁
+ */
+ final List<LWhFormTransferGoodsInfoParam> list = Lists.newArrayList();
+
+ /**
+ * 鍒嗗彂鍗曠殑澶栧眰鐨勪富鏁版嵁
+ */
+ final LWhFormTransferParam lWhFormTransferParam = new LWhFormTransferParam();
+
+ /**
+ * 琛岀储寮�
+ */
+ Integer index = 0;
+
+ /**
+ * 琛ㄥご淇℃伅
+ * @param headMap
+ * @param context
+ */
+ @Override
+ public void invokeHeadMap(Map headMap, AnalysisContext context) {
+ // 楠岃瘉琛ㄥご鏁伴噺
+ logger.info("瑙f瀽鍒嗗彂鍗曠殑琛ㄥご闀垮害: {}", headMap.size());
+ if (headMap.size() != 15) {
+ throw new ExcelAnalysisException("涓婁紶鐨勬枃浠朵笉绗�!");
+ }
+ }
+
+ /**
+ * 瀵煎叆涓�(鏂囦欢鏁版嵁澶勭悊)
+ * @param data
+ * @param analysisContext
+ */
+ @Override
+ public void invoke(LWhFormTransferTemplate data, AnalysisContext analysisContext) {
+ index++;
+ String categoryOne = data.getCategoryOne();
+ String categoryTwo = data.getCategoryTwo();
+ String categoryThree = data.getCategoryThree();
+ if (StrUtil.isEmpty(categoryThree)) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鍝佺被鍚嶇О涓嶈兘涓虹┖锛�" + categoryThree);
+ }
+ String goodsName = data.getGoodsName();
+ if (StrUtil.isEmpty(goodsName)) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鍝佸悕涓嶈兘涓虹┖锛�" + goodsName);
+ }
+ String goodModelName = data.getGoodModelName();
+ if (StrUtil.isEmpty(goodModelName)) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝瑙勬牸鍨嬪彿涓嶈兘涓虹┖锛�" + goodModelName);
+ }
+ String unit = data.getUnit();
+ String type = data.getType();
+ if (StrUtil.isEmpty(type)) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝绠$悊鍒嗙被涓嶈兘涓虹┖锛�" + type);
+ }
+ String agencyName = data.getAgencyName();
+ if (StrUtil.isEmpty(agencyName)) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鍒涘缓鏈烘瀯涓嶈兘涓虹┖锛�" + agencyName);
+ }
+ //String warehouseName = data.getWarehouseName();
+ String supplierName = data.getSupplierName();
+ //String price = data.getPrice();
+ String num = data.getNum();
+ if (StrUtil.isEmpty(num)) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝棰嗙敤鏁伴噺涓嶈兘涓虹┖锛�" + num);
+ }
+ // 鐗╁搧绫诲瀷(鑷噰闆嗛噰)
+ //String goodsType = data.getGoodsType();
+ // 浣跨敤浜洪儴闂�
+ String userDepartment = data.getUserDepartment();
+ if (StrUtil.isEmpty(userDepartment)) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝浣跨敤浜洪儴闂ㄤ笉鑳戒负绌猴細" + userDepartment);
+ }
+ // 濉姤浜�
+ String reportedBy = data.getReportedBy();
+ if (StrUtil.isEmpty(reportedBy)) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝濉姤浜轰笉鑳戒负绌猴細" + reportedBy);
+ }
+ // 浣跨敤浜�
+ String user = data.getUser();
+ if (StrUtil.isEmpty(user)) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝浣跨敤浜轰笉鑳戒负绌猴細" + user);
+ }
+ // 鑱旂郴鐢佃瘽
+ String userContactPhone = data.getUserContactPhone();
+ if (StrUtil.isEmpty(userContactPhone)) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹紝鑱旂郴鐢佃瘽涓嶈兘涓虹┖锛�" + userContactPhone);
+ }
+ // 绗竴娆¤繘鏉ユ妸澶栧眰鐨勫�艰缃竴涓�
+ if (StrUtil.isEmpty(lWhFormTransferParam.getDepartmentName())) {
+ // 鏈烘瀯id (鏍规嵁 鏈烘瀯鍚嶇О鍜岄儴闂ㄥ悕绉� 鏌ユ壘瀵瑰簲鐨刬d)
+ FinSysTenantDepartment finSysTenantDepartment = departmentService.queryIdByTenDepName(agencyName, userDepartment);
+ if (finSysTenantDepartment == null) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹� " + "鏈烘瀯-閮ㄩ棬鏈壘鍒帮細[" + agencyName + "-" + userDepartment + "]");
+ }
+ lWhFormTransferParam.setTransferBusinessType(1);
+ lWhFormTransferParam.setDepartmentId(finSysTenantDepartment.getId());
+ lWhFormTransferParam.setDepartmentName(userDepartment);
+ lWhFormTransferParam.setOperatorName(reportedBy);
+ lWhFormTransferParam.setTel(0L);
+ lWhFormTransferParam.setCreateTime(DateUtil.getNowDate());
+ lWhFormTransferParam.setProcureDoc("");
+ lWhFormTransferParam.setOutAgencyId(finSysTenantDepartment.getTenantId());
+ }
+ // 鏌ヨ鍒嗙被id
+ BaseCategory baseCategory = baseCategoryService.getByCategoryByName(categoryThree);
+ if (baseCategory == null) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹�" + "姝ゅ垎绫绘湭鎵惧埌锛�" + categoryThree);
+ }
+ Long categoryId = baseCategory.getId();
+ // 涓嶅悓閲囬泦绫诲瀷锛屼笉鍚岀瓫閫�
+ Optional<LWhFormTransferGoodsInfoParam> optional = null;
+ // 绛涢�夌被鍨�
+ optional = list.stream().filter(item -> item.getBaseCategoryId().equals(categoryId)).findFirst();
+ // 绛涢�夌墿鍝佸悕
+ Optional<LWhFormTransferGoodsInfoParam> optional2 =
+ list.stream().filter(item -> item.getGoodsTemplateName().equals(goodsName)).findFirst();
+ // 鏁版嵁绗簩灞�-鐗╁搧鐨刬d
+ BaseGoodsTemplate goodsTemplate = baseGoodsTemplateService.getByGoodsNameAndCategoryId(goodsName, categoryId);
+ if (goodsTemplate == null) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹�" + "姝ょ墿鍝佹湭鎵惧埌锛�" + goodsName);
+ }
+ if (optional.isPresent() && optional2.isPresent()) {
+ // 鍐呭眰list(棰嗙敤浜�)
+ List<LWhTransferModelParam> models3 = optional.get().getModels();
+ // 鎵惧瀷鍙峰悕瀛椾竴鏍风殑
+ Optional<LWhTransferModelParam> optional3 =
+ models3.stream().filter(item -> item.getBaseGoodsModelsName().equals(goodModelName)).findFirst();
+ int counts = 0;
+ for (LWhTransferModelParam m : models3) {
+ int addNum = 0;
+ if (m.getNum() != null) {
+ addNum = m.getCounts();
+ }
+ counts += addNum;
+ }
+ // 鍚屼竴涓瀷鍙风殑
+ if (optional3.isPresent()) {
+ if ("A".equals(type)) {
+ LWhProcureModelUserParam lWhProcureModelUserParam = new LWhProcureModelUserParam();
+ lWhProcureModelUserParam.setGoodsNum(Integer.valueOf(num));
+ lWhProcureModelUserParam.setNowUserName(user);
+ lWhProcureModelUserParam.setNowUserPhone(new Long(userContactPhone));
+ Integer counts1 = optional3.get().getCounts();
+ Integer num1 = optional3.get().getNum();
+ optional3.get().setCounts(Integer.valueOf(num) + counts1);
+ optional3.get().setNum(Integer.valueOf(num) + num1);
+ optional3.get().getProcureModelUserList().add(lWhProcureModelUserParam);
+ } else {
+ Integer counts1 = optional3.get().getCounts();
+ Integer num1 = optional3.get().getNum();
+ optional3.get().setCounts(Integer.valueOf(num) + counts1);
+ optional3.get().setNum(Integer.valueOf(num) + num1);
+ }
+ } else {
+ // 姝ょ墿鍝佸彟澶栫殑瑙勬牸鍨嬪彿
+ LWhTransferModelParam lWhTransferModelParam = new LWhTransferModelParam();
+ // 妯℃澘鐨刬d
+ BaseGoodsModels selBaseGoodsModels = new BaseGoodsModels();
+ selBaseGoodsModels.setModelName(goodModelName);
+ selBaseGoodsModels.setGoodsTemplatesId(goodsTemplate.getId());
+ BaseGoodsModels selByModelNameAndGoodsTemplatesId = baseGoodsModelsService.getByModelNameAndGoodsTemplatesId(selBaseGoodsModels);
+ if (selByModelNameAndGoodsTemplatesId == null) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹�" + "鍝佸悕锛�" + goodsName + "锛岃鏍煎瀷鍙凤細" + goodModelName + "鏈壘鍒�");
+ }
+ lWhTransferModelParam.setBaseGoodsModelsId(selByModelNameAndGoodsTemplatesId.getId());
+ // 鍐呭眰list鐨勬暟閲忎箣鍜�
+ lWhTransferModelParam.setCounts(Integer.valueOf(num));
+ // 妯℃澘鍚嶇О
+ lWhTransferModelParam.setBaseGoodsModelsName(goodModelName);
+ List<LWhProcureModelUserParam> addLWhProcureModelUserParam = new ArrayList<>();
+ LWhProcureModelUserParam lWhProcureModelUserParam = new LWhProcureModelUserParam();
+ lWhProcureModelUserParam.setGoodsNum(Integer.valueOf(num));
+
+ // 鏌ヨ搴撳瓨鏁伴噺
+ Integer nowNum = selectAllNumber(lWhFormTransferParam.getOutAgencyId(), selByModelNameAndGoodsTemplatesId.getId());
+ if(nowNum<new Integer(num)){
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹�" + "鍝佸悕锛歔" + goodsName + "] 瑙勬牸鍨嬪彿锛歔" + goodModelName + "] 搴撳瓨鏁伴噺涓嶈冻锛歔"+nowNum+"]");
+ }
+ lWhProcureModelUserParam.setNowUserName(user);
+ lWhProcureModelUserParam.setNowUserPhone(new Long(userContactPhone));
+ addLWhProcureModelUserParam.add(lWhProcureModelUserParam);
+ lWhTransferModelParam.setProcureModelUserList(addLWhProcureModelUserParam);
+ optional.get().getModels().add(lWhTransferModelParam);
+ }
+ } else {
+ LWhFormTransferGoodsInfoParam lWhFormTransferGoodsInfoParam = new LWhFormTransferGoodsInfoParam();
+ // 鍒嗙被id
+ lWhFormTransferGoodsInfoParam.setBaseCategoryId(categoryId);
+ // 鏁版嵁绗簩灞�-鐗╁搧鐨刬d
+ //BaseGoodsTemplate goodsTemplate = baseGoodsTemplateService.getByGoodsNameAndCategoryId(goodsName, categoryId);
+ BaseGoodsModels selBaseGoodsModels = new BaseGoodsModels();
+ selBaseGoodsModels.setModelName(goodModelName);
+ selBaseGoodsModels.setGoodsTemplatesId(goodsTemplate.getId());
+ BaseGoodsModels selByModelNameAndGoodsTemplatesId = baseGoodsModelsService.getByModelNameAndGoodsTemplatesId(selBaseGoodsModels);
+ if (selByModelNameAndGoodsTemplatesId == null) {
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹� " + "鍝佸悕锛�" + goodsName + "锛岃鏍煎瀷鍙凤細" + goodModelName + "鏈壘鍒�");
+ }
+ // 鐗╁搧鐨刬d 锛氱埍鐜涚數鍔ㄨ溅
+ lWhFormTransferGoodsInfoParam.setBaseGoodsTemplateId(goodsTemplate.getId());
+ lWhFormTransferGoodsInfoParam.setGoodsTemplateName(goodsName);
+ // 鍐呭眰
+ LWhTransferModelParam lWhTransferModelParam = new LWhTransferModelParam();
+ // 瑙勬牸id
+ lWhTransferModelParam.setBaseGoodsModelsId(selByModelNameAndGoodsTemplatesId.getId());
+ // 鏂板鐨勬椂鍊欓粯璁や竴鏉�
+ lWhTransferModelParam.setCounts(new Integer(num));
+ lWhTransferModelParam.setNum(new Integer(num));
+ List<LWhProcureModelUserParam> lWhFormProcureGoodsInfoParam = new ArrayList<>();
+ LWhProcureModelUserParam lWhProcureModelUserParam = new LWhProcureModelUserParam();
+ lWhProcureModelUserParam.setGoodsNum(Integer.valueOf(num));
+
+ // 鏌ヨ搴撳瓨鏁伴噺
+ Integer nowNum = selectAllNumber(lWhFormTransferParam.getOutAgencyId(), selByModelNameAndGoodsTemplatesId.getId());
+ if(nowNum<new Integer(num)){
+ throw new ExcelAnalysisException("绗�" + index + "鏉℃暟鎹� " + "鍝佸悕锛歔" + goodsName + "] 瑙勬牸鍨嬪彿锛歔" + goodModelName + "] 搴撳瓨鏁伴噺涓嶈冻锛歔"+nowNum+"]");
+ }
+
+ lWhProcureModelUserParam.setNowUserName(user);
+ lWhProcureModelUserParam.setNowUserPhone(new Long(userContactPhone));
+ lWhFormProcureGoodsInfoParam.add(lWhProcureModelUserParam);
+ lWhTransferModelParam.setProcureModelUserList(lWhFormProcureGoodsInfoParam);
+ lWhTransferModelParam.setBaseGoodsModelsName(goodModelName);
+ List<LWhTransferModelParam> lWhTransferModelParams = new ArrayList<>();
+ lWhTransferModelParams.add(lWhTransferModelParam);
+ lWhFormTransferGoodsInfoParam.setModels(lWhTransferModelParams);
+ lWhFormTransferGoodsInfoParam.setType(type);
+ list.add(lWhFormTransferGoodsInfoParam);
+ }
+ }
+
+ /**
+ * 鍒嗗彂鍗曞鍏ヤ富鏂规硶
+ * @param analysisContext
+ */
+ @Override
+ public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+ lWhFormTransferParam.setTransferGoods(list);
+ long id = IdUtil.generateId();
+ //lWhFormTransferParam.setProcureDoc("[{\"fileType\":\"png\",\"id\":\"883654049218335\",\"name\":\"寰俊鎴浘_20240426143552.png\",\"url\":\"http://172.16.60.172:8083/lowConsum/file/2024/5/883654049218335.png\",\"path\":\"2024/5/883654049218335.png\",\"attSize\":6772}]");
+ lWhFormTransferParam.setProcureDoc("-");
+ lWhFormTransferParam.setId(id);
+ String jsonString = JSONObject.toJSONString(lWhFormTransferParam);
+ logger.info("瀵煎叆鍒嗗彂鍗昷son鏁版嵁 --------------------");
+ logger.info(jsonString);
+ // 鍒嗗彂鍗曟嵁
+ try {
+ ResponseValue responseValue = add2(lWhFormTransferParam);
+ logger.info(responseValue.toString());
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public void onException(Exception exception, AnalysisContext analysisContext) throws Exception {
+ if (exception instanceof ExcelDataConvertException) {
+ ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException) exception;
+ Integer row = excelDataConvertException.getRowIndex() + 1;
+ Integer column = excelDataConvertException.getColumnIndex() + 1;
+ throw new ExcelAnalysisException("绗�" + row + "琛岋紝绗�" + column + "鍒楄В鏋愬紓甯革紝璇锋纭~鍐�");
+ } else {
+ throw new ExcelAnalysisException(exception.getMessage());
+ }
+ }
+ }).sheet(0).doRead();
+ } catch (ExcelAnalysisException e) {
+ return ResponseValue.error(e.getMessage());
+ } catch (RuntimeException e) {
+ e.printStackTrace();
+ return ResponseValue.error("绯荤粺閿欒");
+ } catch (Exception e) {
+ e.printStackTrace();
+ return ResponseValue.error("绯荤粺閿欒");
+ }
+ return ResponseValue.success("瀵煎叆鎴愬姛!");
+ }
+
+
+ /**
+ * 鏌ヨ搴撳瓨Id
+ * @param agencyId
+ * @param baseGoodsModelsId
+ * @return
+ */
+ public Integer selectAllNumber(Long agencyId,Long baseGoodsModelsId) {
+ WarehouseQry warehouseQry = new WarehouseQry();
+ warehouseQry.setAgencyId(agencyId);
+ warehouseQry.setBaseGoodsModelsId(baseGoodsModelsId);
+ List<BaseWarehouse> baseWarehouseList =
+ baseWarehouseService.getBaseWareHouseList(agencyId, StatesType.NORMAL.getValue());
+ List<Long> warehouseIdList = baseWarehouseList.stream().map(BaseWarehouse::getId).collect(Collectors.toList());
+ Integer warehouseType = warehouseQry.getWarehouseType();
+ Integer states = warehouseQry.getStates();
+ Integer buyType = warehouseQry.getBuyType();
+ // 璋冩嫧鏃跺彧鏌ユ満鏋勭被鍨嬬殑闆嗛噰浠撳簱搴撳瓨
+ // 閮ㄩ棬鍒嗗彂鏃朵笉鍒嗘満鏋勫拰閮ㄩ棬锛屽洜涓鸿皟鎷ㄨ繘鏉ョ殑鐗╁搧涔熺畻鍦ㄥ簱瀛橀噷鍙槸绫诲瀷涓洪儴闂紝鍚屾牱妫�瑙嗘墍鏈変粨搴撹鍨嬪彿鐨勬暟閲�
+ int num = lWhGoodsService.queryGoodsModelInWareHouseNum(warehouseType, warehouseIdList, baseGoodsModelsId,
+ states, buyType);
+ return num;
+ }
+
}
diff --git a/consum-base/src/main/java/com/consum/base/listener/EasyExcelListener.java b/consum-base/src/main/java/com/consum/base/listener/EasyExcelListener.java
new file mode 100644
index 0000000..15dbb75
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/listener/EasyExcelListener.java
@@ -0,0 +1,39 @@
+package com.consum.base.listener;
+
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.excel.context.AnalysisContext;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class EasyExcelListener extends AnalysisEventListener<Map<Integer, String>> {
+ //琛ㄥご鏁版嵁锛堝瓨鍌ㄦ墍鏈夌殑琛ㄥご鏁版嵁锛�
+ private List<Map<Integer, String>> headList = new ArrayList<>();
+ //鏁版嵁浣�
+ private List<Map<Integer, String>> dataList = new ArrayList<>();
+
+
+ @Override//杩欓噷浼氫竴琛岃鐨勮繑鍥炲ご
+ public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
+ //瀛樺偍鍏ㄩ儴琛ㄥご鏁版嵁
+ System.out.println("1");
+ headList.add(headMap);
+ }
+
+ @Override// 澶勭悊姣忎竴琛屾暟鎹�
+ public void invoke(Map<Integer, String> data, AnalysisContext context) {
+ dataList.add(data);
+ }
+
+ @Override// 鍏ㄩ儴澶勭悊缁撴潫鎵ц
+ public void doAfterAllAnalysed(AnalysisContext context) {
+ }
+
+ public List<Map<Integer, String>> getHeadList() {
+ return headList;
+ }
+
+ public List<Map<Integer, String>> getDataList() {
+ return dataList;
+ }
+}
\ No newline at end of file
diff --git a/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsInfoParam.java b/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsInfoParam.java
index 8371567..f7dbc24 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsInfoParam.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsInfoParam.java
@@ -32,5 +32,8 @@
private Integer sort = null;
-
+ /**
+ * 鍒嗙被id
+ */
+ private Long categoryId;
}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/excel/ImportClassificationTemplate.java b/consum-base/src/main/java/com/consum/base/pojo/excel/ImportClassificationTemplate.java
new file mode 100644
index 0000000..ad3ee5f
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/excel/ImportClassificationTemplate.java
@@ -0,0 +1,26 @@
+package com.consum.base.pojo.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+
+/**
+ * 鍔熻兘鎻忚堪: 鍒嗙被妯℃澘
+ *
+ * @author lxk
+ * @date 2024/5/11 10:43
+ * @version 1.0
+ **/
+@Data
+public class ImportClassificationTemplate {
+
+ @ExcelProperty("涓�绾у垎绫�")
+ private String categoryOne;
+ @ExcelProperty("浜岀骇鍒嗙被")
+ private String categoryTwo;
+ @ExcelProperty("鍝佺被鍚嶇О")
+ private String categoryThree;
+ @ExcelProperty("绠$悊鍒嗙被")
+ private String type;
+
+}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/excel/ImportGoodsInfoTemplate.java b/consum-base/src/main/java/com/consum/base/pojo/excel/ImportGoodsInfoTemplate.java
index fb1b3a7..8347471 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/excel/ImportGoodsInfoTemplate.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/excel/ImportGoodsInfoTemplate.java
@@ -1,5 +1,6 @@
package com.consum.base.pojo.excel;
+import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@@ -12,22 +13,20 @@
*/
@Data
public class ImportGoodsInfoTemplate {
-
@ExcelProperty("涓�绾у垎绫�")
private String categoryOne;
@ExcelProperty("浜岀骇鍒嗙被")
private String categoryTwo;
- @ExcelProperty("涓夌骇鍒嗙被")
+ @ExcelProperty("鍝佺被鍚嶇О")
private String categoryThree;
- @ExcelProperty("鐗╁搧鍚嶇О")
+ @ExcelProperty("鍝佸悕")
private String goodsName;
@ExcelProperty("瑙勬牸鍨嬪彿")
private String goodModelName;
@ExcelProperty("鍗曚綅")
private String unit;
- @ExcelProperty("閲囪喘绫诲瀷")
- private String type;
+// @ExcelProperty("鐗╁搧绫诲瀷")
+// private String type;
@ExcelProperty("鎵�灞炴満鏋�")
private String agencyName;
-
}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/excel/ImportProcureOrderTemplate.java b/consum-base/src/main/java/com/consum/base/pojo/excel/ImportProcureOrderTemplate.java
index bb8e692..c6c559c 100644
--- a/consum-base/src/main/java/com/consum/base/pojo/excel/ImportProcureOrderTemplate.java
+++ b/consum-base/src/main/java/com/consum/base/pojo/excel/ImportProcureOrderTemplate.java
@@ -13,28 +13,33 @@
@Data
public class ImportProcureOrderTemplate {
- @ExcelProperty("鍏ュ簱鏈烘瀯")
- private String agencyName;
- @ExcelProperty("鍏ュ簱浠撳簱")
- private String warehouseName;
- @ExcelProperty("閲囪喘绫诲瀷")
- private String type;
- @ExcelProperty("鐗╁搧涓�绾у垎绫�")
+ @ExcelProperty("涓�绾у垎绫�")
private String categoryOne;
- @ExcelProperty("鐗╁搧浜岀骇鍒嗙被")
+ @ExcelProperty("浜岀骇鍒嗙被")
private String categoryTwo;
- @ExcelProperty("鐗╁搧涓夌骇鍒嗙被")
+ @ExcelProperty("鍝佺被鍚嶇О")
private String categoryThree;
- @ExcelProperty("鐗╁搧鍚嶇О")
+ @ExcelProperty("绠$悊鍒嗙被")
+ private String type;
+ @ExcelProperty("鍝佸悕")
private String goodsName;
@ExcelProperty("瑙勬牸鍨嬪彿")
private String goodModelName;
+ @ExcelProperty("鍗曚綅")
+ private String unit;
+ @ExcelProperty("鐗╁搧绫诲瀷")
+ private String goodsType;
+ @ExcelProperty("鎵�鍦ㄤ粨搴�")
+ private String warehouseName;
+// @ExcelProperty("鍒涘缓鏈烘瀯")
+// private String agencyName;
@ExcelProperty("渚涜揣鍟�")
private String supplierName;
- @ExcelProperty("鏁伴噺鍗曚綅")
- private String unit;
@ExcelProperty("鍗曚环(鍏�)")
private String price;
- @ExcelProperty("鍏ュ簱鏁伴噺")
+ @ExcelProperty("搴撳瓨鏁伴噺")
private String num;
+// @ExcelProperty("搴撶鍛�")
+// private String warehouseKeeper;
+
}
diff --git a/consum-base/src/main/java/com/consum/base/pojo/excel/LWhFormTransferTemplate.java b/consum-base/src/main/java/com/consum/base/pojo/excel/LWhFormTransferTemplate.java
new file mode 100644
index 0000000..8367d57
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/pojo/excel/LWhFormTransferTemplate.java
@@ -0,0 +1,53 @@
+package com.consum.base.pojo.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+/**
+ * 鍔熻兘鎻忚堪: 鍒嗗彂鍗曟ā鏉�
+ *
+ * @author lxk
+ * @version 1.0
+ * @date 2024/5/10 10:15
+ **/
+@Data
+public class LWhFormTransferTemplate {
+
+ @ExcelProperty("涓�绾у垎绫�")
+ private String categoryOne;
+ @ExcelProperty("浜岀骇鍒嗙被")
+ private String categoryTwo;
+ @ExcelProperty("鍝佺被鍚嶇О")
+ private String categoryThree;
+ @ExcelProperty("绠$悊鍒嗙被")
+ private String type;
+ @ExcelProperty("鍝佸悕")
+ private String goodsName;
+ @ExcelProperty("瑙勬牸鍨嬪彿")
+ private String goodModelName;
+ @ExcelProperty("鍗曚綅")
+ private String unit;
+// @ExcelProperty("鐗╁搧绫诲瀷")
+// private String goodsType;
+// @ExcelProperty("鎵�鍦ㄤ粨搴�")
+// private String warehouseName;
+ @ExcelProperty("鎵�灞炴満鏋�")
+ private String agencyName;
+ @ExcelProperty("渚涜揣鍟�")
+ private String supplierName;
+// @ExcelProperty("鍗曚环(鍏�)")
+// private String price;
+ @ExcelProperty("搴撶鍛�")
+ private String warehouseKeeper;
+ @ExcelProperty("浣跨敤浜�")
+ private String user;
+ @ExcelProperty("浣跨敤浜洪儴闂�")
+ private String userDepartment;
+ @ExcelProperty("浣跨敤浜鸿仈绯荤數璇�")
+ private String userContactPhone;
+ @ExcelProperty("棰嗙敤鏁伴噺")
+ private String num;
+ @ExcelProperty("濉姤浜�")
+ private String reportedBy;
+
+}
diff --git a/consum-base/src/main/java/com/consum/base/service/BaseCategoryService.java b/consum-base/src/main/java/com/consum/base/service/BaseCategoryService.java
index f71b12e..997b080 100644
--- a/consum-base/src/main/java/com/consum/base/service/BaseCategoryService.java
+++ b/consum-base/src/main/java/com/consum/base/service/BaseCategoryService.java
@@ -36,4 +36,19 @@
* @return
*/
BaseCategory getByCategoryByName(String categoryName);
+
+ /**
+ * 鏌ヨ鏈�澶х殑鎺掑簭鍙稡y id
+ * @param id 鍒嗙被id
+ * @return
+ */
+ int selIndexByPid(Long id);
+
+ /**
+ * 鐗╁搧鍒嗙被鍒楄〃鏌ヨ绮剧‘鏌ヨ
+ * @param baseCategoryParam1
+ * @return
+ */
+ GenericPager<BaseCategory> queryBaseCategoryList2(BaseCategoryParam baseCategoryParam1);
+
}
diff --git a/consum-base/src/main/java/com/consum/base/service/FinSysTenantDepartmentService.java b/consum-base/src/main/java/com/consum/base/service/FinSysTenantDepartmentService.java
index d77c8be..33e8002 100644
--- a/consum-base/src/main/java/com/consum/base/service/FinSysTenantDepartmentService.java
+++ b/consum-base/src/main/java/com/consum/base/service/FinSysTenantDepartmentService.java
@@ -63,5 +63,13 @@
List<FinSysTenantDepartment> queryDataList(FinSysTenantDepartmentParam finSysTenantDepartmentParam1);
+ /**
+ * 鏌ヨid by鏈烘瀯鍜岄儴闂ㄥ悕
+ * @param tenantName
+ * @param departmentName
+ * @return
+ */
+ FinSysTenantDepartment queryIdByTenDepName(String tenantName, String departmentName);
+
}
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java
index 27616a7..80e0c8b 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java
@@ -3,6 +3,7 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@@ -102,6 +103,42 @@
if (!StringUtils.isEmpty(param.getCategoryName())) {
sql.append(" and category_name like:category_name ");
paramts.put("category_name", StringUtils.CHAR_PERCENT + param.getCategoryName() + StringUtils.CHAR_PERCENT);
+ }
+ // 绫诲埆
+ if (!StringUtils.isEmpty(param.getClassification())) {
+ sql.append(" and classification =:classification ");
+ paramts.put("classification", param.getClassification());
+ }
+ // 鐘舵��
+ if (param.getStates() != null) {
+ sql.append(" and states =:states ");
+ paramts.put("states", param.getStates());
+ } else {
+ sql.append(" and states !=3 ");
+ }
+ sql.append(" ORDER BY ORDER_NUMBER,CREATE_TIME DESC ");
+ return selectSplit(sql.toString(), paramts, new BaseCategory());
+ }
+
+ /**
+ * 鐗╁搧鍒嗙被鍒楄〃鏌ヨ绮剧‘鏌ヨ
+ * @param param
+ * @return
+ */
+ public GenericPager<BaseCategory> queryBaseCategoryList2(BaseCategoryParam param) {
+ StringBuilder sql = new StringBuilder("SELECT * FROM base_category WHERE 1 = 1 ");
+ HashMap<String, Object> paramts = new HashMap<>();
+ // 鍒嗙被鍚嶇О
+ if (param.getFatherCategoryId() != null) {
+ sql.append("and father_category_id =:fatherCategoryId ");
+ paramts.put("fatherCategoryId", param.getFatherCategoryId());
+ } else {
+ sql.append("and levels =1 ");
+ }
+ // 鍒嗙被鍚嶇О
+ if (!StringUtils.isEmpty(param.getCategoryName())) {
+ sql.append(" and category_name =:category_name ");
+ paramts.put("category_name", param.getCategoryName());
}
// 绫诲埆
if (!StringUtils.isEmpty(param.getClassification())) {
@@ -236,4 +273,25 @@
BaseCategory baseCategory = this.get(sql.toString(), paramts, new BaseCategory());
return baseCategory;
}
+
+ /**
+ * 鏌ヨ鍒嗙被鍚岀骇鍒殑鏈�澶ф帓搴忓彿
+ * @param id 鍒嗙被
+ * @return
+ */
+ @Override
+ public int selIndexByPid(Long id) {
+ StringBuilder sql = new StringBuilder("SELECT max(ORDER_NUMBER) maxNum FROM base_category WHERE 1 = 1 ");
+ HashMap<String, Object> paramts = new HashMap<>();
+ // 鍒嗙被鍚嶇О
+ sql.append(" and FATHER_CATEGORY_ID =:FATHER_CATEGORY_ID ");
+ paramts.put("FATHER_CATEGORY_ID", id);
+ Map getMap = this.get(sql.toString(), paramts);
+ Object obj = getMap.get("maxNum");
+ if(obj!=null){
+ return new Integer(obj.toString());
+ }
+ return 0;
+ }
+
}
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/FinSysTenantDepartmentServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/FinSysTenantDepartmentServiceImpl.java
index 5121104..f017e97 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/FinSysTenantDepartmentServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/impl/FinSysTenantDepartmentServiceImpl.java
@@ -203,4 +203,19 @@
List<FinSysTenantDepartment> select = this.select(sql.toString(), paramts, new FinSysTenantDepartment());
return select;
}
+
+ /**
+ * 鏍规嵁閮ㄩ棬鍜屾満鏋勫悕鏌ユ壘瀵瑰簲鐨勯儴闂ㄤ俊鎭�
+ * @param tenantName
+ * @param departmentName
+ * @return
+ */
+ @Override
+ public FinSysTenantDepartment queryIdByTenDepName(String tenantName, String departmentName ) {
+ StringBuilder sql = new StringBuilder("SELECT * FROM fin_sys_tenant_department \n" +
+ "WHERE TENANT_ID = ( SELECT id FROM fin_sys_tenant WHERE NAME = '"+tenantName+"' LIMIT 1 ) AND NAME = '"+departmentName+"' LIMIT 1 ");
+ HashMap<String, Object> paramts = new HashMap<>();
+ return this.get(sql.toString(), paramts, new FinSysTenantDepartment());
+ }
+
}
diff --git a/consum-base/src/main/java/com/consum/base/util/DateUtil.java b/consum-base/src/main/java/com/consum/base/util/DateUtil.java
new file mode 100644
index 0000000..d91948b
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/util/DateUtil.java
@@ -0,0 +1,250 @@
+package com.consum.base.util;
+
+import org.apache.commons.lang3.StringUtils;
+
+import java.sql.Timestamp;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ * 鍔熻兘鎻忚堪: 鏃堕棿澶勭悊
+ *
+ * @author lxk
+ * @date 2024/4/9 10:34
+ * @version 1.0
+ **/
+public class DateUtil {
+ /**
+ * @author: hyf
+ * @create: 2023/4/26 0026
+ * @description: 鑾峰彇褰撳墠鏃堕棿
+ *
+ **/
+ public static Timestamp getNowTimestamp(){
+ return new Timestamp(System.currentTimeMillis());
+ }
+
+ /**
+ * 鑾峰彇褰撳墠鏃堕棿鐨刲ong鍊�
+ *
+ * @return 杩斿洖褰撳墠鏃堕棿鐨刲ong鍊硷細渚� 20230101101010
+ */
+ public static Long getNowDate() {
+ DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
+ long currentTimeMillis = System.currentTimeMillis();
+ Date date = new Date(currentTimeMillis);
+ String format = df.format(date);
+ return new Long(format);
+ }
+
+ /**
+ * 鎶�14浣嶇殑鏃堕棿long锛岃浆鍖栨椂闂村瓧绗︿覆
+ * @param dateLong long鏃堕棿14浣�
+ * @param format 瑕佽浆鐨勬椂闂存牸寮�
+ * @return
+ */
+ public static String getStrDateByLong(Long dateLong,String format) {
+ String dateStr = dateLong.toString();
+ DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
+ DateFormat df2 = new SimpleDateFormat(format);
+ try {
+ Date parse = df.parse(dateStr);
+ String format1 = df2.format(parse);
+ return format1;
+ } catch (ParseException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static Long DateToLong(Date date) {
+ DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
+ String format = df.format(date);
+ return new Long(format);
+ }
+
+ /**
+ * 鑾峰彇褰撳墠鏃跺垎
+ * @return
+ */
+ public static Long getNowTime4HHMM() {
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HHmm");
+ LocalTime localTime = LocalTime.now();
+ String format = localTime.format(formatter);
+ return Long.parseLong(format);
+ }
+
+ /**
+ * 鍒ゆ柇褰撳墠鏃堕棿鍦ㄦ煇涓尯闂�
+ * @param startTime
+ * @param endTime
+ * @return
+ */
+ public static Boolean betweenNowTime(Long startTime, Long endTime) {
+ Long nowTime4HHMM = DateUtil.getNowTime4HHMM();
+ if (startTime <= nowTime4HHMM && endTime >= nowTime4HHMM) {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * 鏃堕棿娣诲姞澶�
+ * @param time
+ * @param day
+ * @return
+ */
+ public static Long addDay(Long time, Long day) {
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+ LocalDateTime localDateTime = LocalDateTime.parse(time.toString(time), formatter);
+ LocalDateTime newTime = localDateTime.plusDays(day);
+ String format = newTime.format(formatter);
+ return Long.parseLong(format);
+ }
+
+ /**
+ * 鏃堕棿鍑忓皯澶�
+ * @param time
+ * @param day
+ * @return
+ */
+ public static Long subDay(Long time, Long day) {
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+ LocalDateTime localDateTime = LocalDateTime.parse(time.toString(time), formatter);
+ LocalDateTime newTime = localDateTime.minusDays(day);
+ String format = newTime.format(formatter);
+ return Long.parseLong(format);
+ }
+
+ private static final DateTimeFormatter dayFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");
+ private static final DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+ private static final SimpleDateFormat birthdayFormat = new SimpleDateFormat("yyyy-MM-dd");
+ /**
+ * 鏂规硶鎻忚堪: 鏃ユ湡绫诲瀷鏍煎紡杞崲
+ * eg锛�20240428163146 杞崲涓� 鑷畾涔夋棩鏈熸牸寮�
+ *
+ **/
+ public static String longToStr(Long time,String fmt) {
+ DateTimeFormatter defaultFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+ if(StringUtils.isNotBlank(fmt)){
+ defaultFormatter = DateTimeFormatter.ofPattern(fmt);
+ }
+ if(time.toString().length() == 8) {
+ LocalDate start = LocalDate.parse(time.toString(), dayFormatter);
+ return start.format(defaultFormatter);
+ } else {
+ LocalDateTime start = LocalDateTime.parse(time.toString(), timeFormatter);
+ return start.format(defaultFormatter);
+ }
+ }
+
+ /**
+ * 鏍规嵁鐢熸棩鑾峰彇骞撮緞
+ * eg锛氬嚭鐢熷勾鏈堟棩=2000-04-30锛涘綋鍓嶆椂闂�=2024-04-29锛涘垯age=24
+ * @param birthday 鍑虹敓鏃ユ湡
+ * @return
+ */
+ private static int getAgeByBirth(String birthday) {
+ int age = 0;
+ try {
+ Date date = birthdayFormat.parse(birthday);
+ Calendar now = Calendar.getInstance();
+ // 褰撳墠鏃堕棿
+ now.setTime(new Date());
+ Calendar birth = Calendar.getInstance();
+ birth.setTime(date);
+ //濡傛灉浼犲叆鐨勬椂闂达紝鍦ㄥ綋鍓嶆椂闂寸殑鍚庨潰锛岃繑鍥�0宀�
+ if (birth.after(now)) {
+ age = 0;
+ } else {
+ age = now.get(Calendar.YEAR) - birth.get(Calendar.YEAR);
+ if (now.get(Calendar.DAY_OF_YEAR) > birth.get(Calendar.DAY_OF_YEAR)) {
+ age += 1;
+ }
+ }
+ return age;
+ } catch (Exception e) {
+ e.getStackTrace();
+ return 0;
+ }
+ }
+
+ /**
+ * 鏍规嵁骞撮緞鑾峰彇鐢熸棩
+ * eg锛歛ge=24锛涘綋鍓嶆椂闂�=2024-04-30锛涘垯鍑虹敓骞存湀鏃�=2000-04-30锛�
+ * @param age 骞撮緞
+ * @return
+ */
+ public static LocalDate getBirthByAge(int age){
+ LocalDate localDate = LocalDate.now();
+ return localDate.minusYears(age);
+ }
+
+ /**
+ * 鑾峰彇褰撳墠鏃ユ湡
+ */
+ public static Long getNowTime(String fmt) {
+ if(StringUtils.isBlank(fmt)){
+ fmt = "yyyyMMddHHmmss";
+ }
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern(fmt);
+ if(fmt.length() == 8) {
+ LocalDate localTime = LocalDate.now();
+ String format = localTime.format(formatter);
+ return Long.parseLong(format);
+ } else {
+ LocalDateTime localTime = LocalDateTime.now();
+ String format = localTime.format(formatter);
+ return Long.parseLong(format);
+ }
+
+
+ }
+
+ /**
+ * 鍒ゆ柇褰撳墠鏃ユ湡鍦ㄦ煇涓尯闂�
+ * @param startDate 寮�濮嬫棩鏈�
+ * @param endDate 鎴鏃ユ湡
+ * @param fmt 鑷畾涔夋牸寮忥紱榛樿=yyyyMMddHHmmss
+ */
+ public static Boolean betweenNowDateTime(Long startDate, Long endDate,String fmt) {
+ Long nowDate = DateUtil.getNowTime(fmt);
+ if (startDate <= nowDate && endDate >= nowDate) {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * 鑾峰彇褰撳墠鏃堕棿鐨刲ong鍊�
+ * @param fmt 鑷畾涔夋牸寮�
+ * @return
+ */
+ public static Long getNowDateLong(String fmt) {
+ if(StringUtils.isBlank(fmt)) {
+ fmt = "yyyyMMddHHmmss";
+ }
+ DateFormat df = new SimpleDateFormat(fmt);
+ long currentTimeMillis = System.currentTimeMillis();
+ Date date = new Date(currentTimeMillis);
+ String format = df.format(date);
+ return new Long(format);
+ }
+
+ public static void main(String aaa[]){
+ //System.out.println(getAgeByBirth("2025-04-30"));
+
+// System.out.println(betweenNowDateTime(20240429135709L,20240429170909L,""));
+// System.out.println(getBirthByAge(23).toString());
+// System.out.println(longToStr(20240515L,"yyyy-MM-dd"));
+ System.out.println(getNowDateLong("yyyyMMdd"));
+ }
+
+
+}
diff --git "a/deploy-jar-single/src/main/resources/import/\345\210\206\345\217\221\345\257\274\345\205\245.xls" "b/deploy-jar-single/src/main/resources/import/\345\210\206\345\217\221\345\257\274\345\205\245.xls"
new file mode 100644
index 0000000..fb416ed
--- /dev/null
+++ "b/deploy-jar-single/src/main/resources/import/\345\210\206\345\217\221\345\257\274\345\205\245.xls"
Binary files differ
diff --git "a/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\344\277\241\346\201\257.xls" "b/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\344\277\241\346\201\257.xls"
index 9c7709e..9882375 100644
--- "a/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\344\277\241\346\201\257.xls"
+++ "b/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\344\277\241\346\201\257.xls"
Binary files differ
diff --git "a/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\344\277\241\346\201\257old.xls" "b/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\344\277\241\346\201\257old.xls"
new file mode 100644
index 0000000..c157c54
--- /dev/null
+++ "b/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\344\277\241\346\201\257old.xls"
Binary files differ
diff --git "a/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\345\210\206\347\261\273.xls" "b/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\345\210\206\347\261\273.xls"
new file mode 100644
index 0000000..a6820a6
--- /dev/null
+++ "b/deploy-jar-single/src/main/resources/import/\347\211\251\345\223\201\345\210\206\347\261\273.xls"
Binary files differ
diff --git "a/deploy-jar-single/src/main/resources/import/\351\207\207\350\264\255\345\257\274\345\205\245.xls" "b/deploy-jar-single/src/main/resources/import/\351\207\207\350\264\255\345\257\274\345\205\245.xls"
index 3a7ca55..91e1853 100644
--- "a/deploy-jar-single/src/main/resources/import/\351\207\207\350\264\255\345\257\274\345\205\245.xls"
+++ "b/deploy-jar-single/src/main/resources/import/\351\207\207\350\264\255\345\257\274\345\205\245.xls"
Binary files differ
diff --git "a/deploy-jar-single/src/main/resources/import/\351\207\207\350\264\255\345\257\274\345\205\245old.xls" "b/deploy-jar-single/src/main/resources/import/\351\207\207\350\264\255\345\257\274\345\205\245old.xls"
new file mode 100644
index 0000000..3a7ca55
--- /dev/null
+++ "b/deploy-jar-single/src/main/resources/import/\351\207\207\350\264\255\345\257\274\345\205\245old.xls"
Binary files differ
--
Gitblit v1.9.1