Browse Source

专业库管理

sunhh 2 years atrás
parent
commit
79353845fd

+ 30 - 0
purchase-admin/src/main/java/com/ozs/web/controller/base/BaseProfessionalController.java

@@ -5,12 +5,21 @@ import com.ozs.base.domain.vo.BaseProfessionalVo;
 import com.ozs.base.service.BaseProfessionalService;
 import com.ozs.common.core.controller.BaseController;
 import com.ozs.common.core.domain.AjaxResult;
+import com.ozs.common.core.domain.entity.SysUser;
+import com.ozs.common.exception.ServiceException;
 import com.ozs.common.utils.StringUtils;
+import com.ozs.common.utils.poi.ExcelUtil;
+import com.ozs.system.domain.SysConfig;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedInputStream;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -67,4 +76,25 @@ public class BaseProfessionalController extends BaseController {
         List<BaseProfessionalVo> baseSupplierList = baseProfessionalService.selectBaseProfessional(baseProfessionalVo);
         return success(baseSupplierList);
     }
+
+    @ApiOperation(value = "导入专业库", notes = "导入表格")
+    @PostMapping("/importBaseProfessional")
+    public AjaxResult importBaseProfessional(MultipartFile file) throws Exception {
+        ExcelUtil<BaseProfessional> util = new ExcelUtil<BaseProfessional>(BaseProfessional.class);
+        List<BaseProfessional> baseProfessionalList = util.importExcel(file.getInputStream());
+        if (StringUtils.isNull(baseProfessionalList) || baseProfessionalList.size() == 0) {
+            throw new ServiceException("导入专业库数据不能为空!");
+        }
+        // String operName = getUsername();
+        String message = baseProfessionalService.importBaseProfessional(baseProfessionalList);
+        return success(message);
+    }
+
+    @ApiOperation("导出专业库")
+    @PostMapping("/exportBaseProfessional")
+    public void exportBaseProfessional(HttpServletResponse response, BaseProfessional baseProfessional) {
+        List<BaseProfessional> list = baseProfessionalService.selectBaseProfessional(baseProfessional);
+        ExcelUtil<BaseProfessional> util = new ExcelUtil<BaseProfessional>(BaseProfessional.class);
+        util.exportExcel(response, list, "参数数据");
+    }
 }

+ 2 - 2
purchase-admin/src/main/resources/application-dev.yml

@@ -9,8 +9,8 @@ purchase:
   # 实例演示开关
   demoEnabled: true
   # 文件路径 示例( Windows配置D:/purchase/uploadPath,Linux配置 /home/purchase/uploadPath)
-  profile: C:/purchase/uploadPath
-#  profile: /Users/sunhuanhuan/Documents/project/106/文档/purchase/uploadPath
+  #  profile: C:/purchase/uploadPath
+  profile: /Users/sunhuanhuan/Documents/project/106/文档/purchase/uploadPath
   # 获取ip地址开关
   addressEnabled: false
   # 验证码类型 math 数组计算 char 字符验证

+ 41 - 41
purchase-admin/src/main/resources/logback.xml

@@ -1,32 +1,32 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
     <!-- 日志存放路径 -->
-    <property name="log.path" value="/home/purchase/logs" />
-
+    <!--    <property name="log.path" value="/home/purchase/logs" />-->
+    <property name="log.path" value="/Users/sunhuanhuan/Documents/project/106/文档/purchase/logs"/>
     <!-- 日志输出格式 -->
-	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
+    <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
 
-	<!-- 控制台输出 -->
-	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
-		<encoder>
-			<pattern>${log.pattern}</pattern>
-		</encoder>
-	</appender>
+    <!-- 控制台输出 -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
 
-	<!-- 系统日志输出 -->
-	<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
-	    <file>${log.path}/sys-info.log</file>
+    <!-- 系统日志输出 -->
+    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/sys-info.log</file>
         <!-- 循环政策:基于时间创建日志文件 -->
-		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
             <!-- 日志文件名格式 -->
-			<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
-			<!-- 日志最大的历史 60天 -->
-			<maxHistory>60</maxHistory>
-		</rollingPolicy>
-		<encoder>
-			<pattern>${log.pattern}</pattern>
-		</encoder>
-		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!-- 日志最大的历史 60天 -->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
             <!-- 过滤的级别 -->
             <level>INFO</level>
             <!-- 匹配时的操作:接收(记录) -->
@@ -34,16 +34,16 @@
             <!-- 不匹配时的操作:拒绝(不记录) -->
             <onMismatch>DENY</onMismatch>
         </filter>
-	</appender>
+    </appender>
 
-	<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
-	    <file>${log.path}/sys-error.log</file>
+    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/sys-error.log</file>
         <!-- 循环政策:基于时间创建日志文件 -->
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
             <!-- 日志文件名格式 -->
             <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
-			<!-- 日志最大的历史 60天 -->
-			<maxHistory>60</maxHistory>
+            <!-- 日志最大的历史 60天 -->
+            <maxHistory>60</maxHistory>
         </rollingPolicy>
         <encoder>
             <pattern>${log.pattern}</pattern>
@@ -51,16 +51,16 @@
         <filter class="ch.qos.logback.classic.filter.LevelFilter">
             <!-- 过滤的级别 -->
             <level>ERROR</level>
-			<!-- 匹配时的操作:接收(记录) -->
+            <!-- 匹配时的操作:接收(记录) -->
             <onMatch>ACCEPT</onMatch>
-			<!-- 不匹配时的操作:拒绝(不记录) -->
+            <!-- 不匹配时的操作:拒绝(不记录) -->
             <onMismatch>DENY</onMismatch>
         </filter>
     </appender>
 
-	<!-- 用户访问日志输出  -->
+    <!-- 用户访问日志输出  -->
     <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
-		<file>${log.path}/sys-user.log</file>
+        <file>${log.path}/sys-user.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
             <!-- 按天回滚 daily -->
             <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
@@ -72,22 +72,22 @@
         </encoder>
     </appender>
 
-	<!-- 系统模块日志级别控制  -->
-	<logger name="com.ozs" level="info" />
-	<!-- Spring日志级别控制  -->
-	<logger name="org.springframework" level="warn" />
+    <!-- 系统模块日志级别控制  -->
+    <logger name="com.ozs" level="info"/>
+    <!-- Spring日志级别控制  -->
+    <logger name="org.springframework" level="warn"/>
 
-	<root level="info">
-		<appender-ref ref="console" />
-	</root>
+    <root level="info">
+        <appender-ref ref="console"/>
+    </root>
 
-	<!--系统操作日志-->
+    <!--系统操作日志-->
     <root level="info">
-        <appender-ref ref="file_info" />
-        <appender-ref ref="file_error" />
+        <appender-ref ref="file_info"/>
+        <appender-ref ref="file_error"/>
     </root>
 
-	<!--系统用户操作日志-->
+    <!--系统用户操作日志-->
     <logger name="sys-user" level="info">
         <appender-ref ref="sys-user"/>
     </logger>

+ 0 - 1
purchase-system/src/main/java/com/ozs/base/domain/BaseProfessional.java

@@ -6,7 +6,6 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.util.List;
 
 @Data
 @TableName("base_professional")

+ 9 - 0
purchase-system/src/main/java/com/ozs/base/mapper/BaseProfessionalMapper.java

@@ -19,8 +19,17 @@ public interface BaseProfessionalMapper extends BaseMapper<BaseProfessional> {
     List<BaseProfessional> selectoneGradeList(String professionalCode);
 
     List<BaseProfessional> selectBaseProfessional(BaseProfessionalVo baseProfessionalVo);
+    List<BaseProfessional> selectBaseProfessional(BaseProfessional baseProfessional);
 
     int countByParentCode(@Param("professionalCode") String professionalCode);
 
     List<BaseProfessional> selectByParentCode(String professionalCode);
+
+    List<BaseProfessional> selectProfessional(BaseProfessional baseProfessional);
+
+    List<BaseProfessional> selectByProfessionalCode(BaseProfessional baseProfessional);
+
+    List<BaseProfessional> selectByProfessionalName(BaseProfessional baseProfessional);
+
+    List<BaseProfessional> selectByParentCodes(BaseProfessional baseProfessional);
 }

+ 3 - 0
purchase-system/src/main/java/com/ozs/base/service/BaseProfessionalService.java

@@ -8,6 +8,9 @@ import java.util.List;
 
 public interface BaseProfessionalService extends IService<BaseProfessional> {
     List<BaseProfessionalVo> selectBaseProfessional(BaseProfessionalVo baseProfessional);
+    List<BaseProfessional> selectBaseProfessional(BaseProfessional baseProfessional);
 
     void deleteIds(List<Integer> deleteIds);
+
+    String importBaseProfessional(List<BaseProfessional> userList);
 }

+ 50 - 1
purchase-system/src/main/java/com/ozs/base/service/impl/BaseProfessionalServiceImpl.java

@@ -6,12 +6,15 @@ import com.ozs.base.domain.vo.BaseProfessionalVo;
 import com.ozs.base.mapper.BaseProfessionalMapper;
 import com.ozs.base.service.BaseProfessionalService;
 import com.ozs.common.core.domain.entity.SysDictType;
+import com.ozs.common.core.domain.entity.SysUser;
 import com.ozs.common.exception.ServiceException;
 import com.ozs.common.utils.DictUtils;
 import com.ozs.common.utils.bean.BeanUtils;
+import com.ozs.common.utils.bean.BeanValidators;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.validation.Validator;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -20,10 +23,12 @@ public class BaseProfessionalServiceImpl extends ServiceImpl<BaseProfessionalMap
 
     @Autowired
     private BaseProfessionalMapper baseProfessionalMapper;
+    @Autowired
+    protected Validator validator;
 
     @Override
     public void deleteIds(List<Integer> deleteIds) {
-        for (Integer  deleteId : deleteIds) {
+        for (Integer deleteId : deleteIds) {
             BaseProfessional baseProfessional = baseProfessionalMapper.selectById(deleteId);
             List<BaseProfessional> baseProfessionalList = baseProfessionalMapper.selectByParentCode(baseProfessional.getProfessionalCode());
 //            int ii = baseProfessionalMapper.countByParentCode(baseProfessional.getProfessionalCode());
@@ -34,6 +39,44 @@ public class BaseProfessionalServiceImpl extends ServiceImpl<BaseProfessionalMap
         }
     }
 
+    @Override
+    public String importBaseProfessional(List<BaseProfessional> userList) {
+        int successNum = 0;
+        int failureNum = 0;
+        StringBuilder successMsg = new StringBuilder();
+        StringBuilder failureMsg = new StringBuilder();
+        for (BaseProfessional baseProfessional : userList) {
+            try {
+                // 判断编码是否存在
+                List<BaseProfessional> professionalCode = baseProfessionalMapper.selectByProfessionalCode(baseProfessional);
+                List<BaseProfessional> professionalName = baseProfessionalMapper.selectByProfessionalName(baseProfessional);
+                //List<BaseProfessional> parentCode = baseProfessionalMapper.selectByParentCodes(baseProfessional);
+                if (professionalCode.size() > 0 || professionalName.size() > 0) {
+                    failureNum++;
+                    failureMsg.append("<br/>" + failureNum + "、编码或专业名称" + baseProfessional.getProfessionalCode() + "、" + baseProfessional.getProfessionalName() + " 已存在");
+                } else {
+                    // bean对象属性认证
+                    BeanValidators.validateWithException(validator, baseProfessional);
+                    baseProfessionalMapper.insert(baseProfessional);
+                    successNum++;
+                    successMsg.append("<br/>" + successNum + "、专业名称 " + baseProfessional.getProfessionalName() + " 导入成功");
+                }
+            } catch (Exception e) {
+                failureNum++;
+                String msg = "<br/>" + failureNum + "、专业名称 " + baseProfessional.getProfessionalName() + " 导入失败:";
+                failureMsg.append(msg + e.getMessage());
+                log.error(msg, e);
+            }
+        }
+        if (failureNum > 0) {
+            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
+            throw new ServiceException(failureMsg.toString());
+        } else {
+            successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
+        }
+        return successMsg.toString();
+    }
+
     @Override
     public List<BaseProfessionalVo> selectBaseProfessional(BaseProfessionalVo baseProfessionalVo) {
         List<BaseProfessional> allList = baseProfessionalMapper.selectBaseProfessional(baseProfessionalVo);
@@ -43,6 +86,12 @@ public class BaseProfessionalServiceImpl extends ServiceImpl<BaseProfessionalMap
         return treeList;
     }
 
+    @Override
+    public List<BaseProfessional> selectBaseProfessional(BaseProfessional baseProfessional) {
+        List<BaseProfessional> allList = baseProfessionalMapper.selectBaseProfessional(baseProfessional);
+        return allList;
+    }
+
     /**
      * 构建树形结构
      *

+ 53 - 0
purchase-system/src/main/resources/mapper/base/BaseProfessionalMapper.xml

@@ -28,6 +28,21 @@
         </where>
     </select>
 
+    <select id="selectBaseProfessional" parameterType="com.ozs.base.domain.BaseProfessional" resultMap="BaseProfessionalResult">
+        select * from base_professional
+        <where>
+            <if test="professionalName != null and professionalName != ''">
+                professional_name like '% +' #{professionalName} '+ %',
+            </if>
+            <if test="professionalCode != null and professionalCode != ''">
+                professional_code = #{professionalCode},
+            </if>
+            <if test="professionalGrade != null and professionalGrade != ''">
+                professional_grade = #{professionalGrade}
+            </if>
+        </where>
+    </select>
+
     <select id="selectoneGradeList" parameterType="com.ozs.base.domain.BaseProfessional" resultMap="BaseProfessionalResult">
         select * from base_professional where professional_code = #{professionalCode}
     </select>
@@ -40,4 +55,42 @@
         select * from base_professional where parent_code = #{professionalCode}
     </select>
 
+    <select id="selectProfessional" parameterType="com.ozs.base.domain.BaseProfessional" resultMap="BaseProfessionalResult">
+        select * from base_professional
+        <where>
+            <if test="professionalName != null and professionalName != ''">
+                professional_name = #{professionalName},
+            </if>
+            <if test="professionalCode != null and professionalCode != ''">
+                parent_code = #{professionalCode},
+            </if>
+        </where>
+    </select>
+
+    <select id="selectByProfessionalCode" parameterType="com.ozs.base.domain.BaseProfessional" resultMap="BaseProfessionalResult">
+        select * from base_professional
+        <where>
+            <if test="professionalCode != null and professionalCode != ''">
+                professional_code = #{professionalCode}
+            </if>
+        </where>
+    </select>
+
+    <select id="selectByProfessionalName" parameterType="com.ozs.base.domain.BaseProfessional" resultMap="BaseProfessionalResult">
+        select * from base_professional
+        <where>
+            <if test="professionalName != null and professionalName != ''">
+                professional_name = #{professionalName}
+            </if>
+        </where>
+    </select>
+
+    <select id="selectByParentCodes" parameterType="com.ozs.base.domain.BaseProfessional" resultMap="BaseProfessionalResult">
+        select * from base_professional
+        <where>
+            <if test="parentCode != null and parentCode != ''">
+                parent_code = #{parentCode}
+            </if>
+        </where>
+    </select>
 </mapper>