CollectionServiceImpl.java 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. package com.fdage.service.impl;
  2. import cn.hutool.core.io.FileUtil;
  3. import com.fdage.constant.ConfigConstant;
  4. import com.fdage.dao.base.TbCollectionMapper;
  5. import com.fdage.dao.base.TbCollectionTimeMapper;
  6. import com.fdage.dao.base.TbCollectionTypeMapper;
  7. import com.fdage.dao.cust.TbCollectionMapperCust;
  8. import com.fdage.dao.cust.TbCollectionTimeMapperCust;
  9. import com.fdage.dao.cust.TbCollectionTypeMapperCust;
  10. import com.fdage.dao.cust.TbExhibitionCollectionMapperCust;
  11. import com.fdage.pojo.TbCollection;
  12. import com.fdage.pojo.TbCollectionTime;
  13. import com.fdage.pojo.TbCollectionType;
  14. import com.fdage.request.RequestCollection;
  15. import com.fdage.respon.ResponCollection;
  16. import com.fdage.respon.ResponStatistics;
  17. import com.fdage.service.ICollectionService;
  18. import com.fdage.util.AjaxJson;
  19. import com.fdage.util.DateUtil;
  20. import com.fdage.util.ImportExeclUtil;
  21. import com.github.pagehelper.PageHelper;
  22. import com.github.pagehelper.util.StringUtil;
  23. import lombok.extern.slf4j.Slf4j;
  24. import org.apache.commons.lang3.StringUtils;
  25. import org.springframework.beans.BeanUtils;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.stereotype.Service;
  28. import org.springframework.web.multipart.MultipartFile;
  29. import java.io.File;
  30. import java.io.IOException;
  31. import java.util.*;
  32. /**
  33. * Created by Hb_zzZ on 2019/9/11.
  34. */
  35. @Slf4j
  36. @Service
  37. public class CollectionServiceImpl implements ICollectionService {
  38. @Autowired
  39. private TbCollectionMapper mapper;
  40. @Autowired
  41. private TbCollectionMapperCust mapperCust;
  42. @Autowired
  43. private TbCollectionTypeMapper typeMapper;
  44. @Autowired
  45. private TbCollectionTypeMapperCust typeMapperCust;
  46. @Autowired
  47. private TbCollectionTimeMapper timeMapper;
  48. @Autowired
  49. private TbCollectionTimeMapperCust timeMapperCust;
  50. @Autowired
  51. private TbExhibitionCollectionMapperCust exhibitionCollectionMapperCust;
  52. @Autowired
  53. ConfigConstant configConstant;
  54. @Override
  55. public List<TbCollectionType> typeList(RequestCollection bo) {
  56. return mapperCust.typeList(bo);
  57. }
  58. @Override
  59. public List<TbCollectionTime> timeList() {
  60. return mapperCust.timeList();
  61. }
  62. @Override
  63. public int insert(TbCollection bo) {
  64. return mapper.insertSelective(bo);
  65. }
  66. @Override
  67. public int update(TbCollection bo) {
  68. return mapper.updateByPrimaryKeySelective(bo);
  69. }
  70. @Override
  71. public ResponCollection findById(Long id) {
  72. TbCollection collection = mapper.selectByPrimaryKey(id);
  73. if(collection == null){
  74. return null;
  75. }
  76. ResponCollection result = new ResponCollection();
  77. BeanUtils.copyProperties(collection, result);
  78. TbCollectionType type = typeMapper.selectByPrimaryKey(collection.getTypeId());
  79. if(type != null){
  80. result.setTypeName(type.getName());
  81. }
  82. TbCollectionTime time = timeMapper.selectByPrimaryKey(collection.getTimeId());
  83. if(time != null){
  84. result.setTimeName(time.getName());
  85. }
  86. if(collection.getDiscoveryTime() != null){
  87. result.setDiscoveryTime(String.valueOf(collection.getDiscoveryTime().getTime()));
  88. }
  89. if(collection.getRepairTime() != null){
  90. result.setRepairTime(String.valueOf(collection.getRepairTime().getTime()));
  91. }
  92. mapperCust.addOpenNumById(id);
  93. return result;
  94. }
  95. @Override
  96. public List<ResponCollection> findList(RequestCollection bo) {
  97. if(bo == null){
  98. bo = new RequestCollection();
  99. bo.setState(0);
  100. return mapperCust.findList(bo);
  101. }
  102. int pageNum = bo.getPageNum() == 0? 1: bo.getPageNum();
  103. int pageSize = bo.getPageSize() == 0? 10: bo.getPageSize();
  104. PageHelper.startPage(pageNum, pageSize);
  105. return mapperCust.findList(bo);
  106. }
  107. @Override
  108. public int addLikeNumById(Long id) {
  109. return mapperCust.addLikeNumById(id);
  110. }
  111. @Override
  112. public AjaxJson importCollection(String fileUrl) {
  113. TbCollection collection = null;
  114. TbCollectionType collectionType = null;
  115. TbCollectionTime collectionTime = null;
  116. StringBuilder error = new StringBuilder();
  117. StringBuilder errorNum = new StringBuilder("");
  118. ImportExeclUtil poi = new ImportExeclUtil();
  119. List<List<String>> list = poi.read(fileUrl);
  120. if (list != null) {
  121. for (int i = 0; i < list.size(); i++) {
  122. List<String> cellList = list.get(i);
  123. if(i == 0){
  124. continue;
  125. }
  126. // if(cellList.size() < 7){
  127. if(cellList.size() < 6){
  128. return AjaxJson.failure("导入数据根式不正常");
  129. }
  130. if(StringUtil.isEmpty(cellList.get(0).toString().trim()) ||
  131. StringUtil.isEmpty(cellList.get(1).toString().trim()) ||
  132. StringUtil.isEmpty(cellList.get(2).toString().trim()) ||
  133. StringUtil.isEmpty(cellList.get(3).toString().trim()) ||
  134. StringUtil.isEmpty(cellList.get(4).toString().trim())){
  135. errorNum.append(cellList.get(0).toString().trim()).append(";");
  136. continue;
  137. }
  138. collection = mapperCust.findByName(cellList.get(1).toString().trim());
  139. collectionType = typeMapperCust.findByName(cellList.get(2).toString().trim());
  140. collectionTime = timeMapperCust.findByName(cellList.get(3).toString().trim());
  141. if(collectionType == null || collectionTime == null){
  142. errorNum.append(cellList.get(0).toString().trim()).append(";");
  143. continue;
  144. }
  145. if(collection == null){
  146. collection = new TbCollection();
  147. collection.setName(cellList.get(1).toString().trim());
  148. collection.setTypeId(collectionType.getId());
  149. collection.setTimeId(collectionTime.getId());
  150. collection.setNum(cellList.get(4).toString().trim());
  151. collection.setDescription(cellList.get(5).toString().trim());
  152. collection.setCreateTime(new Date());
  153. mapper.insertSelective(collection);
  154. continue;
  155. }
  156. collection.setName(cellList.get(1).toString().trim());
  157. collection.setTypeId(collectionType.getId());
  158. collection.setTimeId(collectionTime.getId());
  159. collection.setNum(cellList.get(4).toString().trim());
  160. collection.setDescription(cellList.get(5).toString().trim());
  161. mapper.updateByPrimaryKeySelective(collection);
  162. }
  163. }
  164. if(StringUtil.isNotEmpty(errorNum.toString())){
  165. error.append("序号").append(errorNum.toString()).append("内容导入失败");
  166. return AjaxJson.failure(error.toString());
  167. }
  168. return AjaxJson.success();
  169. }
  170. @Override
  171. public List<ResponCollection> searchCollection(RequestCollection bo) {
  172. return mapperCust.searchListByName(bo);
  173. }
  174. @Override
  175. public int addSearchNum(Long id) {
  176. return mapperCust.addSearchNumById(id);
  177. }
  178. @Override
  179. public int addDownloadNum(Long id) {
  180. return mapperCust.addDownloadNumById(id);
  181. }
  182. @Override
  183. public ResponStatistics collectionTotal() {
  184. return mapperCust.collectionTotal();
  185. }
  186. @Override
  187. public List<ResponCollection> findListOrderBy(Map<String, String> map) {
  188. return mapperCust.findListOrderBy(map);
  189. }
  190. @Override
  191. public List<Map<String, Object>> typeTotal() {
  192. return mapperCust.typeTotal();
  193. }
  194. @Override
  195. public int deleteById(Long id) {
  196. exhibitionCollectionMapperCust.deleteByCollectionId(id);
  197. return mapper.deleteByPrimaryKey(id);
  198. }
  199. @Override
  200. public AjaxJson uploadCode(MultipartFile file, String code) {
  201. if(file == null){
  202. return AjaxJson.failure("参数不能为空");
  203. }
  204. // 拦截非法文件
  205. List<String> legalSuffix = Arrays.asList("obj","png","ab");
  206. String originalFilename = file.getOriginalFilename();
  207. String suffix = StringUtils.substringAfterLast(originalFilename, ".");
  208. suffix = StringUtils.lowerCase(suffix);
  209. if (!legalSuffix.contains(suffix)){
  210. return AjaxJson.failure(3001, "非法文件");
  211. }
  212. String filePath = "/collection/unity/" + code +"/" + originalFilename;
  213. String savePath = configConstant.serverBasePath + filePath;
  214. try {
  215. FileUtil.writeFromStream(file.getInputStream(), savePath);
  216. log.info("图片地址:" + savePath);
  217. } catch (IOException e) {
  218. e.printStackTrace();
  219. }
  220. return AjaxJson.success((Object)filePath);
  221. }
  222. @Override
  223. public AjaxJson addVisit(Long id) {
  224. mapper.addVisit(id);
  225. return AjaxJson.success();
  226. }
  227. @Override
  228. public Long countVisit() {
  229. return mapper.countVisit();
  230. }
  231. public static void main(String[] args) {
  232. CollectionServiceImpl service = new CollectionServiceImpl();
  233. service.importCollection("F:\\文档\\下载\\高淳文物导入模板.xlsx");
  234. }
  235. }