diff --git a/shandan-system/src/main/java/com/keyware/shandan/system/controller/SysFileController.java b/shandan-system/src/main/java/com/keyware/shandan/system/controller/SysFileController.java index 034f988..7259535 100644 --- a/shandan-system/src/main/java/com/keyware/shandan/system/controller/SysFileController.java +++ b/shandan-system/src/main/java/com/keyware/shandan/system/controller/SysFileController.java @@ -4,27 +4,28 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.ZipUtil; -import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.keyware.shandan.bianmu.service.DataLabelsService; import com.keyware.shandan.common.controller.BaseController; import com.keyware.shandan.common.entity.Result; import com.keyware.shandan.common.util.FileDownload; -import com.keyware.shandan.common.util.PoiFileReadUtil; import com.keyware.shandan.frame.properties.CustomProperties; import com.keyware.shandan.system.constants.FormTypeEnum; -import com.keyware.shandan.system.entity.SysFile; -import com.keyware.shandan.system.entity.SysFileChunk; -import com.keyware.shandan.system.entity.SysFormConfig; -import com.keyware.shandan.system.entity.SysSetting; +import com.keyware.shandan.system.entity.*; +import com.keyware.shandan.system.service.SysDictService; import com.keyware.shandan.system.service.SysFileService; import com.keyware.shandan.system.service.SysFormConfigService; import com.keyware.shandan.system.service.SysSettingService; import com.keyware.shandan.system.utils.DictUtil; import com.keyware.shandan.system.utils.FileChunkUploadUtil; import lombok.val; +import net.sourceforge.pinyin4j.PinyinHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.Assert; +import org.springframework.util.ObjectUtils; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; @@ -32,12 +33,11 @@ import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLConnection; +import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.StreamSupport; /** *

@@ -63,9 +63,26 @@ public class SysFileController extends BaseController uploadChunk(MultipartFile file, SysFile fileInfo, SysFileChunk fileChunk) throws Exception { + //自动编号,每天从一开始 + String curDate = new SimpleDateFormat("yyyyMMdd").format(new Date()); + if("".equals(LAST_DATE) || curDate.compareTo(LAST_DATE) > 0){ + LAST_DATE = curDate; + counter = new Counter(); + } + fileInfo.setFileCode(createFileCode(fileInfo)); return Result.of(FileChunkUploadUtil.uploadChunk(file, fileInfo, fileChunk)); - } /** @@ -193,14 +222,163 @@ public class SysFileController extends BaseController mergerChunk(SysFile file) throws Exception { - //根据文件属性进行编码 - - - System.out.println(file); FileChunkUploadUtil.mergeChunk(file, sysFile -> sysFileService.save(sysFile)); return Result.of(sysFileService.autoCreateDirAndUpdateFile(file)); } + /** + * 生成文件编码 + * + * @param file 文件信息 + * @return 结果 + */ + @PostMapping("/upload/file/code") + public Result fileCode(SysFile file) { + return Result.of(createFileCode(file)); + } + + /** + * 生成文件编码 + * + * @param ext 文件后缀 + * @return 结果 + */ + @GetMapping("/upload/file/ext") + public Result initFileData(String ext) { + QueryWrapper qw = new QueryWrapper(); + qw.eq("FILE_TYPE",ext); + qw.orderByDesc("CREATE_TIME"); + qw.last("limit 1"); + SysFile one = sysFileService.getOne(qw); + return Result.of(one); + } + + /** + * 生成文件编码工具 + * @param file + * @return + */ + public synchronized String createFileCode(SysFile file){ + //根据文件属性进行编码 + StringBuilder sb = new StringBuilder(); + //日期 + if(!ObjectUtils.isEmpty(file.getInputDate())) { + sb.append(new SimpleDateFormat("yyyyMMdd").format(file.getInputDate())).append("+"); + }else{ + sb.append(new SimpleDateFormat("yyyyMMdd").format(new Date())).append("+"); + } + //文件密级 + if(!ObjectUtils.isEmpty(file.getSecretLevel())){ + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("DICT_CODE", file.getSecretLevel()); + qw.eq("TYPE_ID","secret_level"); + List dictCode = sysDictService.list(qw); + if(dictCode.size()>0){ + sb.append(pinyinHelper(dictCode.get(0).getDictName(),false)).append("+"); + } + }else{ + sb.append("0").append("+"); + } + //数据类型 + if(!StringUtils.isEmpty(file.getDataType())){ + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("DICT_CODE", file.getDataType()); + qw.eq("TYPE_ID","data_type"); + List dictCode = sysDictService.list(qw); + if(dictCode.size()>0){ + sb.append(pinyinHelper(dictCode.get(0).getDictName(),true)).append("+"); + } + }else{ + sb.append("0").append("+"); + } + //任务代号 + if(!StringUtils.isEmpty(file.getTaskCode())){ + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("DICT_CODE", file.getTaskCode()); + qw.eq("TYPE_ID","task_code"); + List dictCode = sysDictService.list(qw); + if(dictCode.size()>0){ + sb.append(pinyinHelper(dictCode.get(0).getDictName(),true).replace(" ","-")).append("+"); + } + }else{ + sb.append("0").append("+"); + } + //单位 + if(!StringUtils.isEmpty(file.getTroopCode())){ + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("DICT_CODE", file.getTroopCode()); + qw.eq("TYPE_ID","troop_code"); + List dictCode = sysDictService.list(qw); + if(dictCode.size()>0){ + sb.append(pinyinHelper(dictCode.get(0).getDictName(),true)).append("+"); + } + }else{ + sb.append("0").append("+"); + } + //装备型号 + if(!StringUtils.isEmpty(file.getEquipmentModel())){ + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("DICT_CODE", file.getEquipmentModel()); + qw.eq("TYPE_ID","equipment_model"); + List dictCode = sysDictService.list(qw); + if(dictCode.size()>0){ + sb.append(pinyinHelper(dictCode.get(0).getDictName(),true)).append("+"); + } + }else{ + sb.append("0").append("+"); + } + //资料类型,文件后缀大写 + if(!StringUtils.isEmpty(file.getFileFullName())){ + String fullName = file.getFileFullName(); + sb.append(fullName.substring(fullName.lastIndexOf(".")+1).toUpperCase()).append("+"); + }else{ + sb.append("0").append("+"); + } + if(!StringUtils.isEmpty(file.getFileNumbers())){ + JSONArray objects = JSONArray.parseArray(file.getFileNumbers()); + for(int i=0;i