From 6d93d570f56569bc3567e9f78342ad15f11b6f1e Mon Sep 17 00:00:00 2001 From: 76164 <761646706@qq.com> Date: Thu, 25 Jul 2024 15:56:07 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E4=BB=B6=E6=A8=A1=E5=9D=97=E5=89=8D?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sgzb-modules/sgzb-base/pom.xml | 5 +- .../base/controller/MaPartTypeController.java | 127 ++++++++++++------ .../bonus/sgzb/base/domain/MaPartType.java | 2 + .../sgzb/base/service/IPartTypeService.java | 5 + .../service/impl/MaPartTypeServiceImpl.java | 57 +++++++- .../src/main/resources/template/template.xlsx | Bin 0 -> 10512 bytes .../material/SecondaryWarehouseMapper.xml | 2 +- sgzb-ui/src/api/system/upload.js | 19 +++ .../secondStore/secondStore.vue | 13 +- sgzb-ui/src/views/system/user/index.vue | 22 +-- .../warehouseManage/machinery/parts/index.vue | 56 ++++++-- 11 files changed, 231 insertions(+), 77 deletions(-) create mode 100644 sgzb-modules/sgzb-base/src/main/resources/template/template.xlsx diff --git a/sgzb-modules/sgzb-base/pom.xml b/sgzb-modules/sgzb-base/pom.xml index 67ee6982..39f009a8 100644 --- a/sgzb-modules/sgzb-base/pom.xml +++ b/sgzb-modules/sgzb-base/pom.xml @@ -23,6 +23,9 @@ spring-cloud-starter-alibaba-nacos-discovery + + + com.alibaba.cloud @@ -117,4 +120,4 @@ - \ No newline at end of file + diff --git a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/controller/MaPartTypeController.java b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/controller/MaPartTypeController.java index 6bf802a2..9a175038 100644 --- a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/controller/MaPartTypeController.java +++ b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/controller/MaPartTypeController.java @@ -1,19 +1,30 @@ package com.bonus.sgzb.base.controller; import com.bonus.sgzb.base.domain.MaPartType; +import com.bonus.sgzb.base.service.ExcelService; import com.bonus.sgzb.base.service.IPartTypeService; import com.bonus.sgzb.common.core.utils.poi.ExcelUtil; import com.bonus.sgzb.common.core.web.controller.BaseController; import com.bonus.sgzb.common.core.web.domain.AjaxResult; -import com.bonus.sgzb.common.core.web.page.TableDataInfo; import com.bonus.sgzb.common.security.utils.SecurityUtils; -import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.net.URLConnection; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.List; +import java.util.Map; ; @@ -32,25 +43,32 @@ public class MaPartTypeController extends BaseController { @Autowired private IPartTypeService maPartTypeService; + @Autowired + private ExcelService excelService; + + private static final String UPLOAD_DIR = "D:/work/wcy"; + + /** * 查询配件类型列表 + * * @param maPartType * @return */ @GetMapping("/list") - public AjaxResult list(MaPartType maPartType) - { + public AjaxResult list(MaPartType maPartType) { List list = maPartTypeService.selectMaPartList(maPartType); return AjaxResult.success(list); } /** * 新增配件管理 + * * @param maPartType * @return */ @PostMapping - public AjaxResult add(@Validated @RequestBody MaPartType maPartType){ + public AjaxResult add(@Validated @RequestBody MaPartType maPartType) { if (!maPartTypeService.checkPaNameUnique(maPartType)) { return error("新增配件名称'" + maPartType.getPaName() + "'失败,配件名称已存在"); } @@ -60,53 +78,84 @@ public class MaPartTypeController extends BaseController { /** * 导出配件类型管理 + * * @param response * @param maPartType */ @PostMapping("/export") - public void export(HttpServletResponse response, MaPartType maPartType) - { + public void export(HttpServletResponse response, MaPartType maPartType) { List list = maPartTypeService.selectMyPartTypeList(maPartType); ExcelUtil util = new ExcelUtil(MaPartType.class); util.exportExcel(response, list, "配件类型管理数据"); } - /** - * 删除配件管理类型 - * @param paId - * @return - */ - @DeleteMapping("/{paId}") - public AjaxResult delete(@PathVariable("paId") Long paId){ - if (maPartTypeService.hasChildBypaId(paId)) - { - return warn("存在下级仓库列表,不允许删除"); + @PostMapping("/readExcel") + public AjaxResult readExcelFile(@RequestParam("file") MultipartFile file) throws IOException { + // 创建上传目录,如果不存在的话 + File dir = new File(UPLOAD_DIR); + if (!dir.exists()) { + dir.mkdirs(); } - return toAjax(maPartTypeService.deletePaById(paId)); + + // 获取文件名 + String fileName = file.getOriginalFilename(); + + // 定义文件路径 + Path filePath = Paths.get(UPLOAD_DIR, fileName); + + // 保存文件 + file.transferTo(filePath.toFile()); + + Map>> stringMapMap = excelService.readExcelFile(filePath.toString()); + return AjaxResult.success(); } - /** - * 根据id获取数据 - * @param paId - * @return - */ - @GetMapping("/{paId}") - public AjaxResult getById(@PathVariable("paId") Long paId){ - MaPartType bean = maPartTypeService.getById(paId); - return AjaxResult.success(bean); - } - - /** - * 根据id修改数据 - * @param maPartType - * @return - */ - @PostMapping("/updateById") - public AjaxResult updateById(@RequestBody MaPartType maPartType){ - maPartType.setUpdateBy(SecurityUtils.getUsername()); - return toAjax(maPartTypeService.updateById(maPartType)); + @PostMapping("/downLoad") + public void downLoadExcelFile() throws IOException { + HttpServletResponse resp = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse(); + maPartTypeService.downLoadTemplate(resp); } -} + /** + * poi + * 删除配件管理类型 + * + * @param paId + * @return + */ + @DeleteMapping("/{paId}") + public AjaxResult delete (@PathVariable("paId") Long paId){ + if (maPartTypeService.hasChildBypaId(paId)) { + return warn("存在下级仓库列表,不允许删除"); + } + return toAjax(maPartTypeService.deletePaById(paId)); + } + + /** + * 根据id获取数据 + * + * @param paId + * @return + */ + @GetMapping("/{paId}") + public AjaxResult getById (@PathVariable("paId") Long paId){ + MaPartType bean = maPartTypeService.getById(paId); + return AjaxResult.success(bean); + } + + /** + * 根据id修改数据 + * + * @param maPartType + * @return + */ + @PostMapping("/updateById") + public AjaxResult updateById (@RequestBody MaPartType maPartType){ + maPartType.setUpdateBy(SecurityUtils.getUsername()); + return toAjax(maPartTypeService.updateById(maPartType)); + } + + + } diff --git a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/domain/MaPartType.java b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/domain/MaPartType.java index 16515b46..495c4646 100644 --- a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/domain/MaPartType.java +++ b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/domain/MaPartType.java @@ -88,5 +88,7 @@ public class MaPartType extends BaseEntity { private String firstLevel; + + } diff --git a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/IPartTypeService.java b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/IPartTypeService.java index 34e844aa..42762b63 100644 --- a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/IPartTypeService.java +++ b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/IPartTypeService.java @@ -3,6 +3,8 @@ package com.bonus.sgzb.base.service; import com.bonus.sgzb.base.domain.MaPartType; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.List; /** @@ -58,6 +60,9 @@ public interface IPartTypeService { MaPartType getById(Long paId); int updateById(MaPartType maPartType); + + + void downLoadTemplate(HttpServletResponse resp) throws IOException; } diff --git a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/impl/MaPartTypeServiceImpl.java b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/impl/MaPartTypeServiceImpl.java index 64d4c25b..fbf5648d 100644 --- a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/impl/MaPartTypeServiceImpl.java +++ b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/impl/MaPartTypeServiceImpl.java @@ -5,10 +5,20 @@ import com.bonus.sgzb.base.mapper.MaPartTypeMapper; import com.bonus.sgzb.base.service.IPartTypeService; import com.bonus.sgzb.common.core.constant.UserConstants; import com.bonus.sgzb.common.core.utils.StringUtils; +import org.apache.commons.io.IOUtils; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.system.ApplicationHome; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; -import java.util.List; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.*; /** * 配件类型管理ma_part_type(MaPartType)表服务实现类 @@ -21,8 +31,10 @@ public class MaPartTypeServiceImpl implements IPartTypeService { @Autowired private MaPartTypeMapper maPartTypeMapper; + /** * 校验配件名称唯一性 + * * @param maPartType * @return */ @@ -30,8 +42,7 @@ public class MaPartTypeServiceImpl implements IPartTypeService { public boolean checkPaNameUnique(MaPartType maPartType) { Long paId = StringUtils.isNull(maPartType.getPaId()) ? -1L : maPartType.getPaId(); MaPartType info = maPartTypeMapper.checkPartNameUnique(maPartType.getPaId()); - if (StringUtils.isNotNull(info) && info.getPaId().longValue() != paId.longValue()) - { + if (StringUtils.isNotNull(info) && info.getPaId().longValue() != paId.longValue()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; @@ -39,6 +50,7 @@ public class MaPartTypeServiceImpl implements IPartTypeService { /** * 新增配件管理 + * * @param maPartType * @return */ @@ -50,6 +62,7 @@ public class MaPartTypeServiceImpl implements IPartTypeService { /** * 查询配件类型列表 + * * @param maPartType * @return */ @@ -60,6 +73,7 @@ public class MaPartTypeServiceImpl implements IPartTypeService { /** * 导出配件管理类型 + * * @param maPartType * @return */ @@ -70,6 +84,7 @@ public class MaPartTypeServiceImpl implements IPartTypeService { /** * 查询是否含有子集 + * * @param paId * @return */ @@ -81,6 +96,7 @@ public class MaPartTypeServiceImpl implements IPartTypeService { /** * 删除配件类型 + * * @param paId * @return */ @@ -98,5 +114,38 @@ public class MaPartTypeServiceImpl implements IPartTypeService { public int updateById(MaPartType maPartType) { return maPartTypeMapper.updateById(maPartType); } -} + @Override + public void downLoadTemplate(HttpServletResponse response) throws IOException { + //模板名称 + String templateName = "template.xlsx"; + OutputStream out = null; + InputStream input =null; + try { + ApplicationHome h = new ApplicationHome(getClass()); + String dirPath = h.getSource().toString(); + String fileName = dirPath+"/template/"+templateName; + File outFile = new File(fileName); + input = new BufferedInputStream(new FileInputStream(outFile)); + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-Type", "application/vnd.ms-excel"); + response.setHeader("Content-Disposition", + "attachment;filename=" + new String((templateName).getBytes(), "iso-8859-1")); + response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); + out = response.getOutputStream(); + byte[] buffer = new byte[1024]; // 缓冲区 + int bytesToRead = -1; + // 通过循环将读入内容输出到浏览器中 + while ((bytesToRead = input.read(buffer)) != -1) { + out.write(buffer, 0, bytesToRead); + } + } catch (IOException e) { + throw new IOException("模板下载失败"); + } finally { + IOUtils.closeQuietly(input); + IOUtils.closeQuietly(out); + } + } + + +} diff --git a/sgzb-modules/sgzb-base/src/main/resources/template/template.xlsx b/sgzb-modules/sgzb-base/src/main/resources/template/template.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..157483b22b7f5a01122a2ed8770d2922c7e2a07d GIT binary patch literal 10512 zcmeHtWmufcvnTHE!QBGECAho0TX1)GcZcBa!GgOx1P$&G+$Bf|utRe1IVaq+|7Z8> zKHDGqoq4CE`&Zr7HC-hq2?_=S^wL6Pw)kG2|J|Sg9}I0i$l2T2I?%}h$j|^Upnj3v z!@50l0s{frfB*p@{gX`J*7lvNm1So97YR@Xw4hu6Go+fTgP737R5bqnD7EUAm{d+H zJ#y&g`P}d7D@{nApsF2F{xSN-AWqaRb}sP_?4A^)=@m!eEJ%~==~q+Tu}sxV=mYN@ zyldGBa2ABGN*$y&BGdR3-1IQTg5n{l~p)G;?yKG?H%rjW8*Qa|9k`Zk%aR~g3oVUD;>hhWtbg=Po zTjCcMH3XBwI#RWL%?BrvpebvEi{MS|{c_zxuLd(#sRA2V_o84#)Wg49(cp1tyA=@f z>SV94lb1xf8;PpBsE2|K*1VmTcv)cWXAyEGf-AG4Y9u<9TizN1q= z1*tag*dk;mAP1)5STnVZ!ae)x4n}y~f!1x=jB*MXS3~6^W)QuUBL=>uN!JeuEi|zu z27QUTt2O$_%mu%#chCrUebOfAx0_~-3$_;njlNVwu;pD2!`y?SdY0tG*l`L{VprD7 zz=Ytz7-*(vwrK@-%SYYRw|iYV8Sj<15y@AW2e?fnFUVw0+bzgHtlx_B;ur+}r1Dl@ z=S3(Uh~jZ315zIJ);Rsiq10@~w}xBh8TW1%{D~G#0d6X#x{G^=lIDZ%l+4K0@lB;p zZa4}@%rH%nnRKOkGLwJ~tfzg{)hw9O_Ki=Nn^bMuH=0qbLX$q!9BljNpXZ0De}c@d zw_-#M02vtoGU^{7J2^PoSiQhp7$+?oz=srkM*bA?Wlf)V1csSUF*zO!F-@%*8$?pF z=M=@cly%_wl(ilkQRkZ7jbeg}DWP0v2MED{v0a6VlqZ<4M5M8OsqoxP(;XRXV6LnJ zvO)+Zrl(8U*(-@l${j7?BnTKGR|@8KE?P2Bsur_`wId=)l7oAAsl|SYXw}J!1ZH(i zfii+}fUP7oYIYi@)AoE!6aQE@uEJWzxo8Prv^bqC`07ZhsT%Lz<$_z|j{@uwGun1TCW#WK$=xT zi(BBiU2%x1;%@a&iO20y%N>m@k{5tZ)Y{8iF}|LknEgUaHuss)MB!uX6p5NU+w+~i zip7qoWb^*{2MxMhb_^EBO+~FrR+?Uc!L`l z9!GT=jD!207|t70eOK!5CWSk{_wmI|Jvg>VP>n4t-Xpbeqzs zc%QI;###uDC#mFa*rkm8#qJaA*Os$+FcY9&(RSG83^+Q zvqLSy%I{t(Z1@IAT7;O3k*+ZEY6WH-%tu@U3v2eZpR z*q(I?rI7Dqb)e{*&8KdQ_}Gq~U3(fkN}r>-s=nQwFy+9@eOQrQdsvLj<8bWXI@Zq` z+XB@XlMR)H2bpmRy+-+LiezdUvad~?JRkZ*wzY}P&?KZM>0Y>}9*jpkfW6#c8eX}8 z(ZNuQUPy)lqm(R^KU|Ovx4a&TGUM2b^HxTc#~{+$rmk0TCfeE61sMCI(7sr1y#?gL zd!9Y)l@4O`PhI8xuvyS6q*h>S3Y+#LriD>VQta#I@Qc*dcNk~ZGxxlII-HLfvAlf% zhZ6+Y691cp%=l{|C&=5R(<2S8Q=D+BdDD?wq(#G&6bVh;(3fhoo-F!-mM`#3bR;@w zdqYU1QF&3)-FdFWJZC5t@Dem&X1|9ewW4LwpuA%O z^VanK8GE~bn+r;a0nLimMq$Qigs9WBVDBoI8!@X z-?BU0jeaTw(FrbQ@aLKhI|r#}g~^Zv7MyX9kR}3@^+W$+P$*`l z-fyXqRibJEb0k4QycB$Pq{;V3?nO4DAuDbwf+UD(b0t2X(pvmYJl7ul9#!S6M5ppb z4c(O9Gozt%F7~(_Xc~deO!iex8zvcjJed7i&VHr%i1S8(O-W1Fu0b%|Aua#i5_(?L z^tbq0h`8O2o$Oma$iWQ9jkDQxSI#_xYiewV>kr*{?w1Nvgs%Qpq7rcZ7a&Q`K>yd4 zXZrt^|9{8w|9;TDMAm?l(9zV$%IH;OefNZm6a@hUl!Eg+7Ws?p7xAy-?L>Xu28RXL zM|8`l`qax}np|6vHZzS`UH?dhWpNTeGs0o7--TyUrnOCad7G59kI#c&pzYk(S3DgI zWjj0fgDITZGl=f8%SQ)?+!GZ)Utwhj6Q7@tkB>hr_O=Q+kp&-w#74G@RJnC8kixup z3hXAYt*=}6=D0}FqeD_IQkdJR;?@eIZr58w=at2X{q?+P=Iv%+lO*OoCKn*~s%7m# zhv{4Q2?wILh3lD7o&!%tElk@N*0iAMV|!2zAjh`zV9RIc?D0NbUw#tpT=4?(SrZw^ z@AZ{0FTg)f-8Vz%Q#Y;dwNobfrqqzi_mINEt;hBa(#u}dEmXf$FYiEkY*2HlsVQ)N zMp%kgO;c^2CEHQEMUP#Fl}ng@C{?AkejunKqXU?pCFaPH<3xs~*aT?dmS6F$WSntD ztBREoGc4f)yKJj=sjB(A4n7|vnO%`jvt?`w>NN78H8J(?e`*-jH#8q_zz=O5IoxSj z)UN6{okJL2d~&!u4H_{2(vKrIWXhE#Xc6MvO7$I=am%t5tpnn`UIHdNmk|4Mf0{;w zOC`d9wx_XqAA}F|jS91fd0H&;4N=N6J2q4}3uv2+t^NSQy}h;AmB2J6v%K_KFPNag z*nYeB&B>98?BtP24B{C#ciV06=Ho-iZAW8WM$j@lLO86h*W)mO?uu|H@BQU$@5IPO zP3ZIYR>%pTr#f7yH_Qq9{d+M!9zX8-^J8?qud2a1sLpes&SpZz9HVe^xbgk02k0xm z84}7g<`EbimUj_Nz9U+d&joE`?JtL$C$7A(hM~ka>KaX0jxKMPlR~52^dyVK-9XqY z?-wowt~AvFhrOk+lN;BP3UA_$yd8CIv^#EUU=q(UH|9TB=)gk}9n%i}5Cn>X8gz|I zfU1zUN-KfadMc-DJ1h#bnpYBJRx19(aRY4Ha*8#oi*AN7vwJq$%Go*(!^B9#Ce8~J z8rn}i?A)sdmq}*;H7K7k-V670UU!uNdNTB4I!tHikr;Ru0@QX16RARSMe{qpb^nvjE^Az>KdK_liWgYk$VS{~~Vc8QT{ZtM`@V@P{AqVTDAsz&E{r^cb)kh~kN zxve$|TTKsl0=5AV(PFhgQ%tDxTce|aoEOXKHOS;eBYfg6)J{U%oz%;b0;>(UYe^?X zjnL_8>X()TRC5uw&pjyZK@=D7{K`|-^VXF2UC@^vCRF!@n>}xw+*HDIC60poZkCF! zqA^(4NJi9TrQbADOP|r|gJL`D%T+O%$i@@&#UtT6k%NLlVnSKY5q8gtDh0J8QA{?f za!ZrOQXTN+1xm8hrEMxKVI#J8))aqf;R#t7A^N*fBAudKFGsPf!jhMow{JVDJV(yDXHV}|i4C_q7dQ^V&kLra6ExFl48Mmr zHYB&a`h(IT;-W{rMJ(7=Oo70xea}mYMP|gnNCvqg1Rlc6nQOot+!|i`hPElQPh8l! z9{iZ`tUc;u4OEsJbP1lcC0M<;`WQzZm_`_mGVe3}uAx!;0IluZp6 zsHq3&-3=B1akf;F(4+Hr zc74xiXh^k>a7c6Pmt+X2-A*ARk{PX#nW9OcT|q0*g1AyaLUeqav`XpXt}Hc@9Y@_y z|CC*tcZ=HOulB|q@y=G9hJHGA`npMuD1mz z>luTkDd~*jlRdrQ=CE7iV1Gdqm8r4txgJl`)cpK-3N0vC-Z_>bnt?Y3-DhkoV0mMo z_HI$HC$X*$-gH~`&+vxr(R(WqaOS1R0|CMRKI9x6-7Jk9USgVAt&^B#u{Y1reb0K$ z{)nO46wy}=jf>M?Dhm@392Fu0!AdU4$18(S_i&4k*A5Bu)ER4^Anbz_U_6b5D?NFSLH^Kahyh-F18Zay8~Uu-4(d;*`YMz-!y4BS>qF zq11m`-_|h0X<4$~Ze;yc$p}fUyKxc=HJ_4gi{8;9wsaZvE!?n&~%Rl>}6W=blmugPCc*g^@3e^(i?Uy6R zjAZUY{m*&#H+Uhg#g(U)x53)AIB4VT#OpSmG<9)4&F(z#j%JWgV)w^Wp9kiuNeQrt7pgsT(n>zP5F>z|jA-;a_q=F@>+jYP1@ z#)@b+ikZMn$1?REGwe-%;WHYhNu7nUJ8f&>i#H>Z3GJHRvi0|T1H){ibPMBf@{I~3 z?RuR{n}fuAwDwdXi1q_!wmuddM8p;RGMxT*awY%f8~@ZE>YaW~j9`n(u8(h6bk!y| zdw>R1qmKr94;8{9n>I$qS>Y}~m(Nmd^8yDOWq#1F9d=s=I=+vpmo)R**Q5~6oJ+I> z1D$YM5{l?0$J-HZ25)h%75|1G$d;kA%+sL1pqop=2~U-w+$^O2#W)jTIGIqAZPVtx z^D1RR=gyG1%FUPECwoI+#8M}5qr~!k-E~13P9^-nQs`>CFjS3Yu ziT<5Yx`3bVr7BhXIU@Q~a+wXCU|XMd>?^d&k3{UIs0b4~Nts3u&3hxiRgsQ~JxTOP zL2^f&eMv$Oc{8jlo)Y&nDX_U^BMp;0>M;BtLKjui}G& zsveh8RwRb5wKIRlnJ1f1F$;%l&w!cDNh=!GBg4fCb6o1rTXXhW;|{sXboI#6 z$DIzm4G(>2<1f+{nWa>Us?pKsnK0Ke3;`OP)buPQw17euZa^aTk0cU8yQ+@k-5ED0 z$r~~zAs#X%$!jW)va*4)*k{1+6(bIgzmAt+vNE9#>zh_eD{m;e#%#u&2^1D;*#|Pa zr+!peQVe{`vaX%56FZvIGzR$iiSTH`5C`;qU~%Op z(Od3gLz89u%wC=O)9$i{6G)ke^03B@ug0*8gPG6`5UVV)1FD~Yc-{7a-79f$f}-Co zzN0Pv`BS6-vh%v=4BYu`POG|DeS2M*BWRCC2~2O&wcbu|siWkW2K#JItL2=4@>g~7 z=Xe(tjOR1BR>%gM=?b;Bs+7@FEwK;NU*;q~Bq9Nma1r%DODjY3U`#K9pkQ25acOEX zW%qojVVS|ox+_l|I6oICWB3-S-h^)7YhWh{lS+g6O;j+YX;e9oIT@9LybP+$M8yso zlqRuCZ$|4_Ig~}VG z5oJF1uc+Vyf4ryVZo2)}ctfZazrV+;3+Mp+cCL-qcy(hoC*4gioyKnCjh@y^M|-8| zVcQ4js*~?4xGA^DCfT3W+rfS*y_g=chzZ8rSw!L1$fVOXv(tHhs^yfFbw}=W!Mi&_ zu6Nw5egOk}B8Cmprn+HGpGZX-1az3JOY%)7#} zV6Qk+h4D|kZ9qiZo&5qsYB4jDjRxdqB4UkanBG|8B-?Z{;<|My1%`)2*o@d)%#QO< zXkR+dbh$hko@Tej5ZfdZT+K#WXs4#l?>8w-^dEJVx| zKHU@~G|5bga?!m8o(?h;5t9GFz%g_PVh=i|LN<~KI()GA84Vek-YGFI^#$ax;Fc!)7G|o^c}g$J8P_0x2FaHcM~iY~CHB_4qtI6rHz6^A88AU%MRC~j zE{*8&pC2NFLup5;%?+?bz`AKq9G3aGk3KFkCQ3$iiqhV**oAyJLG~WE_%jLxzHLAk zU-*Pjl`Si=v82KnxqDD8a-3#7G27JJjHpm8!Eh~Tm8~%i6b4v=lNLA?b{yo|Y7e;{ z^4~u%(7n}9*iTAAj|+DjKM;TA^k(yoDkDDC5WBapW@!W zSinD@ZQz`ngtzWz!=dJVV)cpw&m(AXpK0C(PZSp18MKL2&C<&dpqJ^W1g>d$iuE=P z7^A#{WP<^}G{d_&L4#+RB4$iUZe#GB&)86X^Fv0^%fzQqV||(Jdz6NLV}pL;@uf(6 zTWg~{Yg(&^hjDujX4;v6-Y^AhV|2v8EDx+&iG|b6fxyCn4s!#UrImYvKf~A6ux6*i&8$s+ zMX^>f-GJ04AQJ>gZSGpvx>FL1yCZpmc==XyI)kPgwkDvrABiWsUr?{P&qjc&t{Z%r) z_jnnIdcI=R3ZW{cO6W$89%*fTL@KD9HJL%?OFrvPAa$rSiNz02o}Q=eH(R@E82c28 zX_Cl#F8g|YLd1&i5P+X*A|Mqb>vD+;gV1QYs-(8l&$mN_NoGe8sdSN$pztVgZxhBKQdXIlhAEeM9~~m@ zYIZ5luh+WjFt^{>1~1<$Or36$mB!VTwI`!*sC~+`9kK$H$z(@^=O#Ke4qT!UA@ufg zczhtpPtyaEqf6BRA-Y9Ud(<}QW-Yh7Ge`4Y)pY+y5BwAON#o%XikO6H92d2r^jm{n zjf3@6fn4L@=vl_@lD*pyzU|LHEFwM9E-dwma{fcArP z{cb#kgn4SJKC$Gq)!pIeCdKJ2|pZP>^ z4*kT}?e4$rCA)FbYutDc)~HJt|$NaWhEQxV+Q2`s3&x=5oRhW#K*7%GK`h z{c?!UugmLyzrqAuQ3C1O8(F^2(Rr{tw><-XTL|d_d;0_KOxaak2LUW=X6NB zpd&9j(h(m^8+!SsNIg%IqsFVBbhPu!(|m1#j7h!UO<(skY{gk6)L|%!Zu57N_vf=2 za_*2n_jFZT^%pB|p9OVOvh4wDJ-jq{2n^WeN?dwJ8mH~4Fv%FgNtIwWb)Y22m(9r{ zT>PH*14#gDyS1G4$fd|YHolxRSN|Gys7EV=9eYsQy^T%T(f9^;YQEqE)7x)KahXn* zvFMQjp7{%%NZ*AaAl^^dJMoO3xk!YRR~Xa63u^_XD2A`>Xm#4rqz-Dy5QLNEe7WbF znc3^uup z6_6>y20Q^C={MOwH{vgJ+Y?63d+CvcZ-br!QoLxF%><$2YN>)Om#;wsxxJAz8Pg7W zeb&1pnu0g1rC9w_`ERqPgdcik=ga8ezPg$ah8f81+v_q{GM?MHd$~dgTWafTo=tZ7 zf`uGESw9C?7&Qwy%_N|pi$a+1dKa_ousA0ZujeO-9|)SLkH{UY?V4!j%51xS>eYoG zGEO^G!-5(#fIVcs-ul_uKsQQ0h?(uqKF z#JEOu2D#EQYLEz?WLkv-$flb>p*}=6xS-CnK0Y!e@aaiu(!nf`Q!QSI{KCq3a95g& zVKusw8nDQ^GUk~`FDV_4TbgddNR%X&*w5&MIPg_f5D7`3QYA}z1K~(3pnH_ClOT#m zU6WGQ?HGQ+-Xoc@Obp;_XU=C$b>zO#nQ|7@n;X#f3{?V`Z3XKV6!_GJ!`trqUq(`F zE2#^iz9rH{F6BG21}0K(W79~4uo(ti1O&S8x^xwtM&(@;`Ww=Cx}v99+8XUFXoh6K z6%HyREY!K_NDxLf7eOhMXsYCJM3Z)hpm=i;7)c)GzV}R**IrFwAJlVl*wyJ}9La#z zRl$YbEFyY+W_QTEdQQ6%-JzSm_^FT}s~QT&tbzlx?_L-e}#=Wp&3>%O zy=H%1)$%v{cYtsHoBgjEm;W^Bm)ecr?Pbz(fPettiT)GApD39T{lj&=9_VWy_oC-F zO0oZB`yU?fwVc<{+uw4YaQ{7)doAJh_2u6Zcu{^!`0FzB|9tKmfMf8lEZ%F4uhV^h zYxMgk+uzB**8*P0XnzZU$N#1GpRoO>LBAB={BAE6w)<`27v{f8asFJ}uZwYBcz;_h z^MCOEU7GWH_^&G={+414`PcCOYXrX@zv?3X&!y-A)*%4=f6U{TlwUb^IZ5zejsq2N OOe6rtY(n~?{eJ=XYaycm literal 0 HcmV?d00001 diff --git a/sgzb-modules/sgzb-material/src/main/resources/mapper/material/SecondaryWarehouseMapper.xml b/sgzb-modules/sgzb-material/src/main/resources/mapper/material/SecondaryWarehouseMapper.xml index a06434ca..35ec6a13 100644 --- a/sgzb-modules/sgzb-material/src/main/resources/mapper/material/SecondaryWarehouseMapper.xml +++ b/sgzb-modules/sgzb-material/src/main/resources/mapper/material/SecondaryWarehouseMapper.xml @@ -204,7 +204,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" left join ma_type mt on rd.type_id = mt.type_id left join ma_type mt2 on mt.parent_id = mt2.type_id left join sys_user su on rd.out_name = su.user_id - where 1=1 + where rd.type = 1 and mt2.type_id = #{typeId} diff --git a/sgzb-ui/src/api/system/upload.js b/sgzb-ui/src/api/system/upload.js index 4560e702..7b26e643 100644 --- a/sgzb-ui/src/api/system/upload.js +++ b/sgzb-ui/src/api/system/upload.js @@ -23,6 +23,25 @@ export function fileUpLoad(param){ }) } +// excel文件上传 +export function excelUpLoad(param){ + const formData = new FormData() + formData.append('file', param.file) + return request({ + url: '/base/maPartType/readExcel', + method: 'post', + data: formData, + }) +} + +// excel文件下载 +export function downloadExcel(param){ + return request({ + url: '/base/maPartType/downLoad', + method: 'post', + param + }) +} diff --git a/sgzb-ui/src/views/claimAndRefund/secondStore/secondStore.vue b/sgzb-ui/src/views/claimAndRefund/secondStore/secondStore.vue index 9471c366..72c9b3af 100644 --- a/sgzb-ui/src/views/claimAndRefund/secondStore/secondStore.vue +++ b/sgzb-ui/src/views/claimAndRefund/secondStore/secondStore.vue @@ -310,7 +310,7 @@ @@ -427,14 +427,14 @@ width="1200px" append-to-body > - - + –> @@ -465,8 +465,7 @@ >重置 - - + --> 删除 - - - - - - - - - - - + + 导入 + 下载导入模板 @@ -265,6 +266,8 @@ accept=".xlsx, .xls" :limit="1" :file-list="fileList" + :on-remove="handleRemoveExcel" + :on-exceed="excelExceed" > 点击上传 @@ -308,7 +311,7 @@ import { updatePartTypeById, delPartType, } from '@/api/store/tools' -import { fileUpLoad } from '@/api/system/upload' +import { excelUpLoad, downloadExcel } from '@/api/system/upload' import Treeselect from '@riophae/vue-treeselect' import '@riophae/vue-treeselect/dist/vue-treeselect.css' @@ -384,7 +387,7 @@ export default { isEdit: false, // excel文件列表 fileList: [], - excelList: {} + excelList: undefined } }, created() { @@ -393,25 +396,50 @@ export default { methods: { /** 确认上传excel */ confirmUpload() { - console.log(this.fileList) - fileUpLoad(this.excelList).then(res => { - console.log(res) - if (res.code == 200) { - this.$modal.msgSuccess(res.msg) - this.openUpload = false - this.reset() - this.getList() + if (this.excelList != undefined) { + let ifSize = this.excelList.file.size / 1024 / 1024 < 20; + if (!ifSize) { + this.$modal.msgError('上传文件大于20M,请重新选择文件上传!') } else { - this.$modal.msgError(res.msg) + console.log(this.excelList) + excelUpLoad(this.excelList).then(res => { + console.log(res) + if (res.code == 200) { + this.$modal.msgSuccess(res.msg) + this.openUpload = false + this.reset() + this.getList() + } else { + this.$modal.msgError(res.msg) + } + }).catch(err => { + console.log(err) + }) } - }).catch(err => { - console.log(err) - }) + } else { + this.$modal.msgError('请选择上传文件!') + } + }, + /** 点击下载excel导入模板 */ + downloadExcelTemplate() { + this.download( + 'base/maPartType/downLoad', + {}, + `配件模板.xlsx`, + ) }, /** 上传excel文件 */ uploadExcel(obj) { this.excelList = obj }, + /** 移除excel文件 */ + handleRemoveExcel() { + this.excelList = undefined + }, + /** 上传的excel数超出限制 */ + excelExceed(files, fileList) { + this.$modal.msgError('上传的excel文件数量超出限制!') + }, /** 上传excel文件前 */ beforeExcelUpload(file) { console.log(file)