6
jinlin
2023-12-03 c8d8a511f45c96ed3a5123a88e48de2ffdbf632a
6
15个文件已修改
2个文件已添加
1个文件已删除
442 ■■■■ 已修改文件
core/src/main/java/com/zt/life/export/service/WordFileService.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
core/src/main/java/com/zt/life/sys/service/SysOssConfigService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/model/ItemCirculatOrder.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/test/service/testService.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/project/controller/EnvironController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/project/model/Environ.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/project/service/EnvironService.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/packages/i18n/zh-CN.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/components/config-uploader/src/config-uploader.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/project/Environ-AddOrUpdate.vue 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/sys/user-add-or-update.vue 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zt/common/src/main/java/com/zt/core/oss/service/ISysOssConfigService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zt/common/src/main/java/com/zt/core/oss/service/ISysOssService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zt/common/src/main/java/com/zt/core/sys/model/SysUser.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zt/common/src/main/java/com/zt/life/sys/dto/OssDto.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zt/core/src/main/java/com/zt/modules/oss/cloud/LocalStorageService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zt/core/src/main/java/com/zt/modules/sys/controller/SysUserController.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zt/core/src/main/java/com/zt/modules/sys/service/SysUserService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
core/src/main/java/com/zt/life/export/service/WordFileService.java
@@ -8,6 +8,8 @@
import com.deepoove.poi.policy.HackLoopTableRenderPolicy;
import com.zt.life.export.dto.WordFile;
import com.zt.life.oss.OssEncryptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -23,6 +25,10 @@
    @Value("${zt.oss.local-path}")
    private String localPath;
    @Autowired
    private OssEncryptService ossEncryptService;
    public void exportWordFile(HttpServletRequest request, Object dataObj, WordFile wordFile, HttpServletResponse response) throws UnsupportedEncodingException, FileNotFoundException {
        // 数据map集合
        Map<String, Object> wordData = new HashMap<>();
@@ -32,7 +38,7 @@
        this.formatWordData(dataObj, wordData, builder);
        config = builder.build();
        File fl = new File(localPath+"/template/"+wordFile.getModulePath());
        File fl = new File(localPath + "/template/" + wordFile.getModulePath());
        FileInputStream fs = new FileInputStream(fl);
        XWPFTemplate template;
        if (config != null) {
@@ -55,17 +61,24 @@
                formatWordData(staticFieldValue, wordData, builder);
            } else {
                if (field.getType().getName().equals("java.util.List")) {
                   builder.bind(fieldName, new HackLoopTableRenderPolicy());
                    builder.bind(fieldName, new HackLoopTableRenderPolicy());
                } else if (staticFieldValue != null) {
                    String valStr = staticFieldValue.toString();
                    if (valStr.contains("签名图片:")) {
                        valStr = valStr.replace("签名图片:", "");
                        staticFieldValue = new PictureRenderData(80, 100, "d://" + valStr);
                        /*put("localbyte", new PictureRenderData(80, 100, ".png", new FileInputStream("./logo.png")));*/
                    if (valStr.contains("文件图片:")) {
                        valStr = valStr.replace("文件图片:", "");
                        File file = new File(valStr);
                        if (file.exists()) {
                            try (InputStream in = ossEncryptService.decrypt(file)) {
                                staticFieldValue = new PictureRenderData(500, 500, ".png", in);
                                /*staticFieldValue = new PictureRenderData(80, 100, "d://" + valStr);*/
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                        if (wordData.get(fieldName) == null)
                            wordData.put(fieldName, staticFieldValue);
                    }
                }
                if (wordData.get(fieldName) == null)
                    wordData.put(fieldName, staticFieldValue);
            }
        }
    }
core/src/main/java/com/zt/life/sys/service/SysOssConfigService.java
@@ -10,6 +10,7 @@
import com.zt.common.service.BaseService;
import com.zt.common.utils.CacheUtils;
import com.zt.common.utils.UUIDUtil;
import com.zt.core.oss.service.ISysOssConfigService;
import com.zt.core.oss.service.ISysOssService;
import com.zt.life.core.constant.Cache;
import com.zt.life.sys.dao.SysOssConfigDao;
@@ -32,7 +33,7 @@
 * @since 1.0.0 2020-08-25
 */
@Service
public class SysOssConfigService extends BaseService<SysOssConfigDao, SysOssConfig> {
public class SysOssConfigService extends BaseService<SysOssConfigDao, SysOssConfig> implements ISysOssConfigService {
    @Autowired
    private OssExMapper ossExMapper;
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/model/ItemCirculatOrder.java
@@ -91,5 +91,9 @@
    @ApiModelProperty(value = "物品编号")
    private String softwareIdentity;
    @TableField(exist = false)
    @ApiModelProperty(value = "其他要求")
    private String itemRequireStr;
}
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/test/service/testService.java
File was deleted
modules/mainPart/src/main/java/com/zt/life/modules/project/controller/EnvironController.java
@@ -28,6 +28,7 @@
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.*;
import java.text.SimpleDateFormat;
@@ -78,12 +79,6 @@
    @ApiOperation("信息")
    public Result<EnvironDto> getDto(Long environId, Long  projectId) {
        EnvironDto data = environService.getDto(environId, projectId);
        if (environId != null) {
            OssDto ossDto = sysOssConfigService.getOssByBusiType(environId, "test_environt_diagram");
            if (ossDto != null) {
                data.setFiles(ossDto);
            }
        }
        return Result.ok(data);
    }
@@ -124,4 +119,11 @@
        return Result.ok();
    }
    @GetMapping("exportEnviron")
    @ApiOperation("打印测试环境建立确认表")
    @LogOperation("打印测试环境建立确认表")
    public void exportEnviron(Long id, HttpServletRequest request, HttpServletResponse response) {
        environService.exportEnviron(id, request, response);
    }
}
modules/mainPart/src/main/java/com/zt/life/modules/project/model/Environ.java
@@ -83,4 +83,7 @@
    @ApiModelProperty(value = "版本")
    private String softwareIdentity;
    @TableField(exist = false)
    @ApiModelProperty(value = "是否进行环境病毒查杀")
    private String isVirusScanStr;
}
modules/mainPart/src/main/java/com/zt/life/modules/project/service/EnvironService.java
@@ -1,21 +1,38 @@
package com.zt.life.modules.project.service;
import com.zt.common.service.BaseService;
import com.zt.core.sys.dto.DictDto;
import com.zt.core.sys.dto.DictItemDto;
import com.zt.core.sys.dto.DictLeafDto;
import com.zt.life.export.dto.WordFile;
import com.zt.life.export.service.WordFileService;
import com.zt.life.modules.mainPart.utils.GetShowDictList;
import com.zt.life.modules.project.dao.EnvironDao;
import com.zt.life.modules.project.dto.EnvironDto;
import com.zt.life.modules.project.dto.SoftwareTestOrderDto;
import com.zt.life.modules.project.model.*;
import com.zt.life.modules.sysBaseInfo.model.TestAgencyInfo;
import com.zt.life.modules.sysBaseInfo.service.TestAgencyInfoService;
import com.zt.life.sys.dto.OssDto;
import com.zt.life.sys.service.SysOssConfigService;
import com.zt.modules.coderule.service.SysCodeRuleService;
import com.zt.modules.oss.cloud.LocalStorageService;
import com.zt.modules.oss.model.SysOss;
import com.zt.modules.oss.service.SysOssService;
import com.zt.modules.sys.service.SysDictTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.zt.common.db.query.QueryFilter;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -34,7 +51,10 @@
    private EnvironHardwareResourcesService environHardwareResourcesService;
    @Autowired
    private SoftwareTestOrderService softwareTestOrderService;
    private GetShowDictList getShowDictList;
    @Autowired
    private WordFileService wordFileService;
    @Autowired
    private SysCodeRuleService sysCodeRuleService;
@@ -54,10 +74,16 @@
    @Autowired
    private SysOssService sysOssService;
    @Autowired
    private LocalStorageService localStorageService;
    @Value("${zt.oss.local-path}")
    private String localPath;
    public EnvironDto getDto(Long environId, Long projectId) {
        EnvironDto data = new EnvironDto();
        if (environId != null) {
            data.setId(environId);
            Environ environ = this.get(environId);
            data.setEnviron(environ);
            data.setTestAgencyInfo(testAgencyInfoService.get(environId));
@@ -72,7 +98,7 @@
            List<EnvironAnalysis> environAnalysesList = environAnalysisService.getList(environId);
            data.setEnvironAnalysisList(environAnalysesList);
        } else {
            Environ environ =new Environ();
            Environ environ = new Environ();
            data.setEnviron(environ);
        }
        if (projectId != null) {
@@ -81,6 +107,12 @@
        }
        if (data.getTestAgencyInfo() == null)
            data.setTestAgencyInfo(testAgencyInfoService.get(10000L));
        if (environId != null) {
            OssDto ossDto = sysOssConfigService.getOssByBusiType(environId, "test_environt_diagram");
            if (ossDto != null) {
                data.setFiles(ossDto);
            }
        }
        return data;
    }
@@ -113,7 +145,7 @@
            String year = sdf.format(new Date());
            Map<String, String> map = new HashMap<>();
            map.put("funCode", "environ");
            map.put("projectId",environDto.getProjectId().toString());
            map.put("projectId", environDto.getProjectId().toString());
            environDto.getEnviron().setYear(year);
            environDto.getEnviron().setProjectId(environDto.getProjectId());
            environDto.getEnviron().setCode(sysCodeRuleService.getNewCode(map));
@@ -167,4 +199,42 @@
        sysOssConfigService.updateOss(environDto.getEnviron().getId(), environDto.getFiles());// 保存附件
        return true;
    }
    public void exportEnviron(Long id, HttpServletRequest request, HttpServletResponse response) {
        try {
            EnvironDto dataObj = this.getDto(id, null);
            String imagePath = "文件图片:"+getFirstImagePath(dataObj.getFiles());
            dataObj.getEnviron().setTestEnvirontDiagram(imagePath);
            //通用字典列表字符串生成
            String isVirusScanStr = getShowDictList.getShowDictList(dataObj.getEnviron().getIsVirusScan(), "is_or_not", false);
            dataObj.getEnviron().setIsVirusScanStr(isVirusScanStr);
            WordFile wordFile = new WordFile();
            wordFile.setModulePath("测试环境建立确认表.docx");
            wordFile.setWordName(dataObj.getProject().getSoftwareName() + "_测试环境建立确认表.docx");
            wordFileService.exportWordFile(request, dataObj, wordFile, response);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
    public String getFirstImagePath(OssDto oss) {
        String filePath = "";
        if (oss != null) {
            if (oss.getGroups().size() > 0) {
                OssDto.OssFieldGroupDto group = oss.getGroups().get(0);
                if (group.getFields().size() > 0) {
                    OssDto.OssFieldDto field = group.getFields().get(0);
                    if (field.getFiles().size() > 0) {
                        com.zt.core.oss.dto.OssDto file = field.getFiles().get(0);
                        SysOss sysOss = sysOssService.get(file.getId());
                        filePath = localPath+sysOss.getPath();
                    }
                }
            }
        }
        return filePath;
    }
}
web/packages/i18n/zh-CN.js
@@ -128,6 +128,7 @@
t.user.title = '用户信息'
t.user.username = '用户名'
t.user.avatar = '头像'
t.user.sign = '签名'
t.user.deptName = '所属部门'
t.user.dept = '用户部门'
t.user.nickName = '昵称'
web/src/components/config-uploader/src/config-uploader.vue
@@ -82,13 +82,13 @@
      fields() {
        let arr = []
        if (this.dataForm.files && this.dataForm.files.groups) {
          console.log(this.dataForm,"fields this.dataForm")
          this.dataForm.files.groups.forEach(group => {
            group.fields.forEach(field => {
              let arrType = []
              if (field.fileTypes) {
                arrType = field.fileTypes.split(',')
              }
              //this.$set(field, 'fileTypeArr', arrType)
              field.fileTypeArr = arrType
              arr.push(field)
            })
web/src/views/modules/project/Environ-AddOrUpdate.vue
@@ -211,10 +211,16 @@
        </div>
      </div>
    </el-form>
    <template v-slot:footer>
      <el-button v-if="dataForm.disabled" type="primary" @click="print()">打印</el-button>
    </template>
  </zt-dialog>
</template>
<script>
  import qs from "qs";
  import Cookies from "js-cookie";
  export default {
    data() {
      return {
@@ -251,11 +257,11 @@
    },
    methods: {
      init(id, row) {
        console.log(row, 'row')
        this.dataForm.id = row.id
        this.dataForm.projectId = row.projectId
        // this.dataForm.disabled
        this.dataForm.disabled
        this.getInfo()
        this.getImageUrl()
        console.log(this.dataForm.id, this.dataForm.projectId, 'params params')
      },
      // 获取信息
@@ -265,11 +271,13 @@
          projectId: this.dataForm.projectId
        }
        let res = await this.$http.get(`/project/Environ/getDto`, {params: params})
        this.dataForm = {
          ...this.dataForm,
          ...res.data
        if (res.data) {
          this.dataForm = {
            ...this.dataForm,
            ...res.data
          }
          this.getImageUrl()
        }
        console.log(this.dataForm, 'this.dataForm')
      },
      indexFormat(index) {
        return index += 1
@@ -295,27 +303,36 @@
          tableBody.scrollTop = tableBody.scrollHeight;
        })
      },
      getImageUrl() {
        let pictureId = this.getFirstImageId(this.dataForm.files, 'test_environt_diagram')
        this.dataForm.url = `${window.SITE_CONFIG['apiURL']}/sys/oss/content2?fileId=${pictureId}`
        console.log(this.dataForm.url, ' this.dataForm.url')
      },
      getFirstImageId(oss) {
        console.log(oss, ' getFirstImageId(oss)')
        let fileId = 0
        if (oss != null) {
          if (oss.groups.length > 0) {
            let group = oss.groups[0]
            if (group.fields.length > 0) {
              let field = group.fields[0]
              if (field.files.length > 0) {
                let file = field.files[0]
                fileId = file.id
              }
            }
          }
        }
        return fileId
       getImageUrl() {
         let pictureId = this.getFirstImageId(this.dataForm.files)
         this.dataForm.url = `${window.SITE_CONFIG['apiURL']}/sys/oss/content2?fileId=${pictureId}`
         console.log(this.dataForm.url, ' this.dataForm.url')
       },
       getFirstImageId(oss) {
         console.log(oss, ' getFirstImageId(oss)')
         let fileId = 0
         if (oss != null) {
           if (oss.groups.length > 0) {
             let group = oss.groups[0]
             if (group.fields.length > 0) {
               let field = group.fields[0]
               if (field.files.length > 0) {
                 let file = field.files[0]
                 fileId = file.id
               }
             }
           }
         }
         return fileId
       },
      async print() {
        console.log(this.dataForm)
        let params = qs.stringify({
          token: Cookies.get('token'),
          id: this.dataForm.id
        })
        let apiURL = `/project/Environ/exportEnviron/`
        window.location.href = `${window.SITE_CONFIG['apiURL']}${apiURL}?${params}`
      },
      // 表单提交
      async formSubmit() {
web/src/views/modules/sys/user-add-or-update.vue
@@ -6,9 +6,13 @@
          <template slot="title">
            <el-tag>{{ $t('user.title') }}</el-tag>
          </template>
          <el-form-item prop="avatar" :label="$t('user.avatar')">
            <zt-uploader v-model="dataForm.avatar" crop :size="60"/>
          </el-form-item>
            <config-uploader busi-type="users" model-name="dataForm" :dataForm="dataForm"
                             @getImageUrl="getImageUrl"
                             v-model="dataForm.files"/>
            <div v-if="dataForm.url" >
              <el-image :src="dataForm.url" v-for="url in dataForm.url" :key="url[0,1]"></el-image>
            </div>
          <zt-form-item prop="username" :label="$t('user.username')" rules="required">
            <el-input v-model="dataForm.username" :placeholder="$t('user.username')"></el-input>
          </zt-form-item>
@@ -102,6 +106,7 @@
          register:0,
          teamgroupIds:'',
          shipIds: '',
          url: []
        }
      }
    },
@@ -140,6 +145,8 @@
            ...this.dataForm,
            ...res.data
          }
          this.getImageUrl()
          console.log(this.dataForm,"getInfo this.dataForm ")
        }
      },
      onDeptSelect(data, isChange) {
@@ -155,6 +162,36 @@
          this.dataForm.postIdList = []
        }
      },
      getImageUrl() {
        let pictureId=[];
        pictureId = this.getFirstImageId(this.dataForm.files)
        for (let i=0;i<=pictureId.length;i++){
          pictureId=pictureId[i]
          this.dataForm.url[i] = `${window.SITE_CONFIG['apiURL']}/sys/oss/content2?fileId=${pictureId}`
          console.log(this.dataForm.url[i], ' this.dataForm.url')
        }
      },
      getFirstImageId(oss) {
        console.log(oss, ' getFirstImageId(oss)')
        let fileId = []
        if (oss != null) {
          if (oss.groups.length > 0) {
            let group1 = oss.groups[0]
            let group2 = oss.groups[0]
            if (group1.fields.length > 0 ||group2.fields.length > 0 ) {
              let field1 = group1.fields[0]
              let field2 = group2.fields[0]
              if (field1.files.length > 0 || field2.files.length > 0) {
                let file1 = field1.files[0]
                let file2 = field2.files[0]
                fileId[0]=file1.id
                fileId[1]=file2.id
              }
            }
          }
        }
        return fileId
      },
      // 表单提交
      async formSubmit() {
        this.dataForm.companyId = this.companyId
zt/common/src/main/java/com/zt/core/oss/service/ISysOssConfigService.java
New file
@@ -0,0 +1,6 @@
package com.zt.core.oss.service;
public interface ISysOssConfigService {
    void updateOss(Long busiId, com.zt.life.sys.dto.OssDto dto);
    com.zt.life.sys.dto.OssDto getOssByBusiType(Long busiId, String busiType);
}
zt/common/src/main/java/com/zt/core/oss/service/ISysOssService.java
@@ -11,6 +11,7 @@
    void setOssField(BaseEntity entity);
    void updateBusiInfo(BaseEntity entity);
    void updateBusiInfo(Long busiId, String busiType, String busiTypeName, String busiField, String busiFieldName,
zt/common/src/main/java/com/zt/core/sys/model/SysUser.java
@@ -18,12 +18,13 @@
import com.zt.common.annotation.OssField;
import com.zt.common.entity.BusiEntity;
import com.zt.common.validator.group.DefaultGroup;
import com.zt.core.oss.dto.OssDto;
import com.zt.life.sys.dto.OssDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Range;
import org.springframework.context.annotation.Lazy;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.Email;
@@ -42,6 +43,7 @@
@EqualsAndHashCode(callSuper = false)
@TableName("SYS_USER")
public class SysUser extends BusiEntity {
    private static final long serialVersionUID = 1L;
    @TableField(exist = false)
    @ApiModelProperty(value = "用户名", required = false)
@@ -147,7 +149,7 @@
    @OssField("用户头像")
    @ApiModelProperty(value = "用户头像")
    @TableField(exist = false)
    private OssDto avatar;
    private OssDto files;
    @ApiModelProperty(value = "岗位ID列表")
    @TableField(exist = false)
zt/common/src/main/java/com/zt/life/sys/dto/OssDto.java
New file
@@ -0,0 +1,112 @@
package com.zt.life.sys.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
/**
 * SYS_OSS_CONFIG
 *
 * @author zt generator
 * @since 1.0.0 2020-08-25
 */
@Data
public class OssDto implements Serializable, Cloneable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "模块分类")
    private String busiType;
    @ApiModelProperty(value = "模块名称")
    private String busiTypeName;
    @ApiModelProperty(value = "分组")
    private List<OssFieldGroupDto> groups = new ArrayList<>();
    public OssDto() {
    }
    public OssDto(String busiType, String busiTypeName) {
        this.busiType = busiType;
        this.busiTypeName = busiTypeName;
    }
    @Override
    public OssDto clone() throws CloneNotSupportedException {
        OssDto dto = (OssDto) super.clone();
        List<OssFieldGroupDto> list = new ArrayList<>();
        for (OssFieldGroupDto group : groups) {
            list.add(group.clone());
        }
        dto.setGroups(list);
        return dto;
    }
    @Data
    public static class OssFieldGroupDto implements Serializable, Cloneable {
        @ApiModelProperty(value = "字段所属分组")
        private String busiFieldGroup;
        @ApiModelProperty(value = "字段")
        private List<OssFieldDto> fields = new ArrayList<>();
        public OssFieldGroupDto() {
        }
        public OssFieldGroupDto(String busiFieldGroup) {
            this.busiFieldGroup = busiFieldGroup;
        }
        @Override
        public OssFieldGroupDto clone() throws CloneNotSupportedException {
            OssFieldGroupDto dto = (OssFieldGroupDto) super.clone();
            List<OssFieldDto> list = new ArrayList<>();
            for (OssFieldDto field : fields) {
                list.add(field.clone());
            }
            dto.setFields(list);
            return dto;
        }
    }
    @Data
    public static class OssFieldDto implements Serializable, Cloneable {
        @ApiModelProperty(value = "字段")
        private String busiField;
        @ApiModelProperty(value = "字段名称")
        private String busiFieldName;
        @ApiModelProperty(value = "可上传文件类型")
        private String accept;
        @ApiModelProperty(value = "可上传文件后缀")
        private String fileTypes;
        @ApiModelProperty(value = "文件大小限制(MB)")
        private BigDecimal fileSize;
        @ApiModelProperty(value = "文件个数")
        private Integer fileLimit;
        @ApiModelProperty(value = "排序")
        private Integer sort;
        @ApiModelProperty(value = "是否必填")
        private Boolean isRequired;
        @ApiModelProperty(value = "字段")
        private List<com.zt.core.oss.dto.OssDto> files = new ArrayList<>();
        @Override
        public OssFieldDto clone() throws CloneNotSupportedException {
            OssFieldDto dto = (OssFieldDto) super.clone();
            dto.setFiles(new ArrayList<>());
            return dto;
        }
    }
}
zt/core/src/main/java/com/zt/modules/oss/cloud/LocalStorageService.java
@@ -237,7 +237,6 @@
            is.close();
            out.flush();
            out.close();
        }
    }
}
zt/core/src/main/java/com/zt/modules/sys/controller/SysUserController.java
@@ -26,8 +26,10 @@
import com.zt.common.validator.group.UpdateGroup;
import com.zt.core.context.User;
import com.zt.core.context.UserContext;
import com.zt.core.oss.service.ISysOssConfigService;
import com.zt.core.security.Md5Utils;
import com.zt.core.sys.model.SysUser;
import com.zt.life.sys.dto.OssDto;
import com.zt.modules.sys.dto.MapDto;
import com.zt.modules.sys.dto.PasswordDto;
import com.zt.modules.sys.dto.UserRoleDto;
@@ -65,7 +67,8 @@
    private SysPostUserService sysPostUserService;
    @Autowired
    private SysJobUserService sysJobUserService;
    @Autowired
    private ISysOssConfigService sysOssConfigService;
    @Autowired
    private SysMapService sysMapService;
@@ -101,7 +104,12 @@
    @RequiresPermissions("sys:user:info")
    public Result<SysUser> get(@PathVariable("id") Long id) {
        SysUser data = sysUserService.get(id);
        if (data != null) {
            OssDto ossDto= sysOssConfigService.getOssByBusiType(data.getId() , "users");
            if (ossDto != null) {
                data.setFiles(ossDto);
            }
        }
        // 用户岗位列表
        data.setPostIdList(sysPostUserService.getUserPosts(id).stream().map(post -> post.getId())
                .collect(Collectors.toList()));
zt/core/src/main/java/com/zt/modules/sys/service/SysUserService.java
@@ -21,11 +21,14 @@
import com.zt.common.utils.TreeUtils;
import com.zt.core.context.User;
import com.zt.core.context.UserContext;
import com.zt.core.oss.service.ISysOssConfigService;
import com.zt.core.oss.service.ISysOssService;
import com.zt.core.security.BCryptPasswordEncoder;
import com.zt.core.security.Md5Utils;
import com.zt.core.sys.model.SysDept;
import com.zt.core.sys.model.SysUser;
import com.zt.core.sys.service.ISysUserService;
import com.zt.life.sys.dto.OssDto;
import com.zt.modules.sys.dao.SysUserDao;
import com.zt.modules.sys.dto.RoleDto;
import com.zt.modules.sys.dto.UserTreeDto;
@@ -34,6 +37,7 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -60,6 +64,9 @@
    private SysParamsService paramsService;
    @Autowired
    SysMapService sysMapService;
    @Autowired
    private ISysOssConfigService sysOssConfigService;
    public List<SysUser> page(QueryFilter queryFilter) {
@@ -159,6 +166,7 @@
        entity.setCompanyId(sysDeptService.getCompanyIdByDeptId(entity.getDeptId()));
        // 保存用户
        sysOssConfigService.updateOss(entity.getId(), entity.getFiles());
        super.insert(entity);
        sysPostUserService.saveOrUpdate(entity.getId(), entity.getPostIdList());
@@ -171,6 +179,7 @@
    public void update(SysUser entity) {
        // 更新用户
        entity.setCompanyId(sysDeptService.getCompanyIdByDeptId(entity.getDeptId()));
        sysOssConfigService.updateOss(entity.getId(), entity.getFiles());
        super.update(entity);
        // 保存岗位用户关系