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