MouldFileServiceImpl.java 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767
  1. package com.hssx.cloudmodel.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.github.pagehelper.PageHelper;
  4. import com.github.pagehelper.PageInfo;
  5. import com.hssx.cloudmodel.constant.Constant;
  6. import com.hssx.cloudmodel.entity.*;
  7. import com.hssx.cloudmodel.entity.vo.MouldFileVO;
  8. import com.hssx.cloudmodel.entity.vo.UserVO;
  9. import com.hssx.cloudmodel.mapper.*;
  10. import com.hssx.cloudmodel.service.MouldFileService;
  11. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  12. import com.hssx.cloudmodel.util.*;
  13. import org.apache.commons.lang3.StringUtils;
  14. import org.springframework.stereotype.Service;
  15. import org.springframework.web.bind.annotation.RequestParam;
  16. import org.springframework.web.multipart.MultipartFile;
  17. import javax.annotation.Resource;
  18. import javax.servlet.ServletOutputStream;
  19. import javax.servlet.http.HttpServletRequest;
  20. import javax.servlet.http.HttpServletResponse;
  21. import java.io.*;
  22. import java.net.URLEncoder;
  23. import java.text.DateFormat;
  24. import java.text.ParseException;
  25. import java.text.SimpleDateFormat;
  26. import java.time.LocalDateTime;
  27. import java.time.format.DateTimeFormatter;
  28. import java.util.*;
  29. import java.util.stream.Collectors;
  30. import java.util.zip.ZipEntry;
  31. import java.util.zip.ZipOutputStream;
  32. /**
  33. * <p>
  34. * 服务实现类
  35. * </p>
  36. *
  37. * @author 吴涛涛
  38. * @since 2019-08-07
  39. */
  40. @Service
  41. public class MouldFileServiceImpl extends ServiceImpl<MouldFileMapper, MouldFile> implements MouldFileService {
  42. @Resource
  43. UserMapper userMapper;
  44. @Resource
  45. MouldFileMapper mouldFileMapper;
  46. @Resource
  47. MouldOperationDynamicsMapper mouldOperationDynamicsMapper;
  48. @Resource
  49. ProjectMapper projectMapper;
  50. @Resource
  51. MouldMapper mouldMapper;
  52. @Resource
  53. ProjectUserMapper projectUserMapper;
  54. @Resource
  55. ProjectApproveMapper projectApproveMapper;
  56. @Resource
  57. PartMapper partMapper;
  58. @Resource
  59. NewsNoticeMapper newsNoticeMapper;
  60. @Resource
  61. NewsNoticeUserMapper newsNoticeUserMapper;
  62. @Override
  63. public HttpRespMsg addFile(UserVO userVO, Integer blongType, MultipartFile file, MultipartFile file2, String path) {
  64. HttpRespMsg msg = new HttpRespMsg();
  65. User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", userVO.getToken()));
  66. Mould mould = mouldMapper.selectById(userVO.getMouldId());
  67. if (user != null) {
  68. if (file != null && !file.isEmpty()) {
  69. MouldFile projectFile = new MouldFile();
  70. projectFile.setUplodtorId(user.getId());
  71. projectFile.setUploadtor(user.getUsername());
  72. projectFile.setModelId(userVO.getMouldId());
  73. File dir = null;
  74. dir = new File(path);
  75. // D://cloud/upload 文件上传后所存储的位置,部署到服务器上时配置服务器地址即可
  76. if (!dir.exists()) {
  77. dir.mkdirs();
  78. }
  79. String fileName = "";
  80. if (file != null && !file.isEmpty()) {
  81. fileName = file.getOriginalFilename();
  82. projectFile.setFileName(fileName);
  83. projectFile.setFileSize(FileUtil.getReadableFileSize(file.getSize()));
  84. System.out.println("上传文件名称" + file.getName() + ", dir = " + dir.getAbsolutePath());
  85. int pos = fileName.lastIndexOf(".");
  86. String rand = UUID.randomUUID().toString().replaceAll("-", "");
  87. String sufix = fileName.substring(pos);
  88. fileName = rand + sufix;
  89. projectFile.setFileType(sufix);//文件后缀
  90. projectFile.setFileUrl("/upload/" + fileName);
  91. projectFile.setBlongType(blongType);
  92. Mould mou = mouldMapper.selectById(userVO.getMouldId());
  93. Project project = projectMapper.selectById(mou.getProjectId());
  94. Integer count = projectApproveMapper.selectCount(new QueryWrapper<ProjectApprove>().eq("approver_id", user.getId()).eq("project_id", project.getId()));
  95. if(count>0){
  96. if (user.getSubordinateType() == 0) {
  97. //上传人为资产方审批人,自动审核通过
  98. projectFile.setState(1);
  99. } else if (user.getSubordinateType() == 1) {
  100. //上传人为生产方,自动审核通过
  101. projectFile.setState(2);
  102. } else {
  103. projectFile.setState(0);
  104. }
  105. }else{
  106. projectFile.setState(0);
  107. }
  108. File saveFile = new File(dir, fileName);
  109. try {
  110. saveFile.createNewFile();
  111. file.transferTo(saveFile);
  112. } catch (IOException e) {
  113. e.printStackTrace();
  114. projectFile = null;
  115. } catch (Exception e) {
  116. e.printStackTrace();
  117. projectFile = null;
  118. }
  119. //模具报废情况下,设置files2
  120. if (blongType == 5 && file2 != null && !file2.isEmpty()) {
  121. String fileName2 = file2.getOriginalFilename();
  122. projectFile.setFileName2(fileName2);
  123. projectFile.setFileSize2(FileUtil.getReadableFileSize(file2.getSize()));
  124. System.out.println("上传文件2名称" + file2.getName() + ", dir = " + dir.getAbsolutePath());
  125. pos = fileName2.lastIndexOf(".");
  126. rand = UUID.randomUUID().toString().replaceAll("-", "");
  127. sufix = fileName2.substring(pos);
  128. fileName2 = rand + sufix;
  129. projectFile.setFileType2(sufix);//文件后缀
  130. projectFile.setFileUrl2("/upload/" + fileName2);
  131. File saveFile2 = new File(dir, fileName2);
  132. try {
  133. saveFile2.createNewFile();
  134. file2.transferTo(saveFile2);
  135. } catch (IOException e) {
  136. e.printStackTrace();
  137. projectFile = null;
  138. } catch (Exception e) {
  139. e.printStackTrace();
  140. projectFile = null;
  141. }
  142. }
  143. //零件文档时存上零件id
  144. if (blongType == 1 && null != userVO.getPartId()) {
  145. projectFile.setPartId(userVO.getPartId());
  146. }
  147. //上传零件文档和上传模具文档的时候需要区分是否为2D或者3D
  148. if (userVO.getDwgType() != null) {
  149. projectFile.setDwgType(userVO.getDwgType());
  150. }
  151. mouldFileMapper.insert(projectFile);
  152. //添加上传记录
  153. MouldOperationDynamics dynamics = new MouldOperationDynamics();
  154. dynamics.setContent(Constant.UPLOAD);
  155. dynamics.setFileName(file.getOriginalFilename());
  156. dynamics.setOperatorId(user.getId());
  157. dynamics.setFileId(projectFile.getId());
  158. dynamics.setOperatorName(user.getUsername());
  159. dynamics.setMouldId(userVO.getMouldId());
  160. dynamics.setBelongType(blongType);
  161. mouldOperationDynamicsMapper.insert(dynamics);
  162. //添加消息通知记录
  163. if (mould.getProjectId() != null) {
  164. List<ProjectApprove> projectApproves = projectApproveMapper.selectList(new QueryWrapper<ProjectApprove>().eq("project_id", project.getId()));
  165. String content = "";
  166. for (ProjectApprove projectApprove : projectApproves) {
  167. NewsNotice newsNotice = new NewsNotice();
  168. newsNotice.setRefId(projectFile.getModelId());
  169. newsNotice.setProjectId(project.getId());
  170. newsNotice.setProjectName(project.getProjectName()+"-"+mould.getModelName());
  171. newsNotice.setNoticeType(Constant.APPROVEL_TYPE);
  172. if (blongType == 0) {
  173. content = "模具文档";
  174. } else if (blongType == 1) {
  175. content = "零件文档";
  176. } else if (blongType == 2) {
  177. content = "试模验收文档";
  178. } else if (blongType == 3) {
  179. content = "保养方案文档";
  180. } else if (blongType == 5) {
  181. content = "模具报废文档";
  182. }
  183. newsNotice.setContent("有新的" + content + ",待您审批。");
  184. newsNoticeMapper.insert(newsNotice);
  185. NewsNoticeUser newsNoticeUser = new NewsNoticeUser();
  186. newsNoticeUser.setUserId(user.getId());
  187. newsNoticeUser.setNewsId(newsNotice.getId());
  188. newsNoticeUserMapper.insert(newsNoticeUser);
  189. }
  190. }
  191. }
  192. msg.data = projectFile;
  193. } else {
  194. //模具更新操作
  195. MouldFile projectFile = new MouldFile();
  196. projectFile.setUplodtorId(user.getId());
  197. projectFile.setUploadtor(user.getUsername());
  198. projectFile.setModelId(userVO.getMouldId());
  199. projectFile.setBlongType(blongType);
  200. mouldFileMapper.insert(projectFile);
  201. //添加上传记录
  202. // MouldOperationDynamics dynamics = new MouldOperationDynamics();
  203. // dynamics.setContent(Constant.UPDATE);
  204. // dynamics.setOperatorId(user.getId());
  205. // dynamics.setOperatorName(user.getUsername());
  206. // dynamics.setMouldId(userVO.getMouldId());
  207. // dynamics.setBelongType(blongType);
  208. // mouldOperationDynamicsMapper.insert(dynamics);
  209. Project project = projectMapper.selectOne(new QueryWrapper<Project>().eq("id", mould.getProjectId()));
  210. List<ProjectApprove> projectApproves = projectApproveMapper.selectList(new QueryWrapper<ProjectApprove>().eq("project_id", project.getId()));
  211. String content = "";
  212. for (ProjectApprove projectApprove : projectApproves) {
  213. NewsNotice newsNotice = new NewsNotice();
  214. newsNotice.setRefId(projectFile.getModelId());
  215. newsNotice.setProjectId(project.getId());
  216. newsNotice.setProjectName(project.getProjectName()+"-"+mould.getModelName());
  217. newsNotice.setNoticeType(Constant.APPROVEL_TYPE);
  218. if (blongType == 4) {
  219. content = "模具更新";
  220. }
  221. newsNotice.setContent("有新的" + content + "申请记录,待您审批。");
  222. newsNoticeMapper.insert(newsNotice);
  223. NewsNoticeUser newsNoticeUser = new NewsNoticeUser();
  224. newsNoticeUser.setUserId(user.getId());
  225. newsNoticeUser.setNewsId(newsNotice.getId());
  226. newsNoticeUserMapper.insert(newsNoticeUser);
  227. }
  228. }
  229. } else {
  230. msg.setError("当前用户不存在或者未登录");
  231. }
  232. return msg;
  233. }
  234. @Override
  235. public HttpRespMsg check(Integer mouldFileId, Integer isPass, UserVO userVO) {
  236. HttpRespMsg msg = new HttpRespMsg();
  237. User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", userVO.getToken()));
  238. MouldFile mf = new MouldFile();
  239. mf.setId(mouldFileId);
  240. MouldFile oldData = mouldFileMapper.selectById(mouldFileId);
  241. Mould md = mouldMapper.selectById(oldData.getModelId());
  242. String approverNames = projectApproveMapper.selectList(new QueryWrapper<ProjectApprove>().eq("project_id", md.getProjectId()))
  243. .stream().map(ProjectApprove::getApproverName).collect(Collectors.joining(","));
  244. MouldOperationDynamics dynamics = new MouldOperationDynamics();
  245. if (user != null) {
  246. if (user.getSubordinateType() == 0) {
  247. //资产方
  248. if (isPass == 1) {
  249. if (oldData.getState() == 2) {//生产方也审核通过了
  250. mf.setState(3);
  251. //审批通过
  252. dynamics.setIsPass(1);
  253. //模具更新的审批
  254. if (oldData.getBlongType() == 5) {
  255. //将模具修改为已报废
  256. Mould mould = new Mould();
  257. mould.setId(oldData.getModelId());
  258. mould.setState(4 + "");//4已报废状态
  259. mouldMapper.updateById(mould);
  260. }
  261. } else {
  262. mf.setState(1);
  263. dynamics.setIsPass(1);
  264. }
  265. } else {
  266. mf.setState(-1);
  267. dynamics.setIsPass(0);
  268. }
  269. mouldFileMapper.updateById(mf);
  270. if (oldData.getBlongType() == 4) {
  271. if(mf.getState()==3){
  272. Integer count = mouldOperationDynamicsMapper.selectCount(new QueryWrapper<MouldOperationDynamics>().eq("belongType", 4).eq("is_pass", 1).eq("mould_id", oldData.getModelId()));
  273. if(count == 0){
  274. dynamics.setMouldId(oldData.getModelId());
  275. dynamics.setApplicantName(oldData.getUploadtor());
  276. dynamics.setApplicantId(oldData.getUplodtorId());
  277. dynamics.setBelongType(oldData.getBlongType());
  278. dynamics.setContent(Constant.APPROVAL);
  279. dynamics.setOperatorName(approverNames);
  280. dynamics.setIsPass(1);
  281. mouldOperationDynamicsMapper.insert(dynamics);
  282. }
  283. }else if(mf.getState() < 0){
  284. Integer count = mouldOperationDynamicsMapper.selectCount(new QueryWrapper<MouldOperationDynamics>().eq("belongType", 4).eq("is_pass", 0).eq("mould_id", oldData.getModelId()));
  285. if(count == 0){
  286. dynamics.setMouldId(oldData.getModelId());
  287. dynamics.setApplicantName(oldData.getUploadtor());
  288. dynamics.setApplicantId(oldData.getUplodtorId());
  289. dynamics.setBelongType(oldData.getBlongType());
  290. dynamics.setContent(Constant.APPROVAL);
  291. dynamics.setOperatorName(approverNames);
  292. mouldOperationDynamicsMapper.insert(dynamics);
  293. }
  294. }
  295. } else {
  296. //添加审批记录
  297. dynamics.setMouldId(oldData.getModelId());
  298. dynamics.setBelongType(oldData.getBlongType());
  299. dynamics.setFileId(oldData.getId());
  300. if (null != oldData.getFileName2()) {
  301. dynamics.setFileName(oldData.getFileName() + "," + oldData.getFileName2());
  302. } else {
  303. dynamics.setFileName(oldData.getFileName());
  304. }
  305. dynamics.setOperatorId(user.getId());
  306. dynamics.setOperatorName(user.getUsername());
  307. dynamics.setContent(Constant.APPROVAL);
  308. mouldOperationDynamicsMapper.insert(dynamics);
  309. }
  310. } else if (user.getSubordinateType() == 1) {
  311. //生产方
  312. if (isPass == 1) {
  313. if (oldData.getState() == 1) {//资产方也审核通过了
  314. mf.setState(3);
  315. dynamics.setIsPass(1);
  316. //将模具修改为已报废
  317. if (oldData.getBlongType() == 5) {
  318. Mould mould = new Mould();
  319. mould.setId(oldData.getModelId());
  320. mould.setState(4 + "");//4已报废状态
  321. mouldMapper.updateById(mould);
  322. }
  323. } else {
  324. mf.setState(2);
  325. dynamics.setIsPass(1);
  326. }
  327. } else {
  328. mf.setState(-2);
  329. dynamics.setIsPass(0);
  330. }
  331. mouldFileMapper.updateById(mf);
  332. if (oldData.getBlongType() == 4) {
  333. if(mf.getState()==3){
  334. Integer count = mouldOperationDynamicsMapper.selectCount(new QueryWrapper<MouldOperationDynamics>().eq("belongType", 4).eq("is_pass", 1).eq("mould_id", oldData.getModelId()));
  335. if(count == 0){
  336. dynamics.setMouldId(oldData.getModelId());
  337. dynamics.setApplicantName(oldData.getUploadtor());
  338. dynamics.setApplicantId(oldData.getUplodtorId());
  339. dynamics.setBelongType(oldData.getBlongType());
  340. dynamics.setContent(Constant.APPROVAL);
  341. dynamics.setOperatorName(approverNames);
  342. dynamics.setIsPass(1);
  343. mouldOperationDynamicsMapper.insert(dynamics);
  344. }
  345. }else if(mf.getState() < 0){
  346. Integer count = mouldOperationDynamicsMapper.selectCount(new QueryWrapper<MouldOperationDynamics>().eq("belongType", 4).eq("is_pass", 0).eq("mould_id", oldData.getModelId()));
  347. if(count == 0){
  348. dynamics.setMouldId(oldData.getModelId());
  349. dynamics.setApplicantName(oldData.getUploadtor());
  350. dynamics.setApplicantId(oldData.getUplodtorId());
  351. dynamics.setBelongType(oldData.getBlongType());
  352. dynamics.setContent(Constant.APPROVAL);
  353. dynamics.setOperatorName(approverNames);
  354. mouldOperationDynamicsMapper.insert(dynamics);
  355. }
  356. }
  357. }else{
  358. //添加审批记录
  359. dynamics.setMouldId(oldData.getModelId());
  360. dynamics.setBelongType(oldData.getBlongType());
  361. dynamics.setFileId(oldData.getId());
  362. if (null != oldData.getFileName2()) {
  363. dynamics.setFileName(oldData.getFileName() + "," + oldData.getFileName2());
  364. } else {
  365. dynamics.setFileName(oldData.getFileName());
  366. }
  367. dynamics.setOperatorId(user.getId());
  368. dynamics.setOperatorName(user.getUsername());
  369. dynamics.setContent(Constant.APPROVAL);
  370. mouldOperationDynamicsMapper.insert(dynamics);
  371. }
  372. } else {
  373. msg.setError("只有生产方和资产方才能审核, subordinteType = " + user.getSubordinateType() + ", 无效!");
  374. }
  375. }
  376. return msg;
  377. }
  378. @Override
  379. public HttpRespMsg dowloadFile(MouldFile projectFile, String token) {
  380. HttpRespMsg msg = new HttpRespMsg();
  381. User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", token));
  382. //添加上传记录
  383. MouldFile file = mouldFileMapper.selectById(projectFile.getId());
  384. MouldOperationDynamics dynamics = new MouldOperationDynamics();
  385. dynamics.setContent(Constant.DOWNLOAD);
  386. dynamics.setFileName(file.getFileName());
  387. dynamics.setOperatorId(user.getId());
  388. dynamics.setOperatorName(user.getUsername());
  389. dynamics.setMouldId(file.getModelId());
  390. dynamics.setFileId(file.getId());
  391. dynamics.setBelongType(file.getBlongType());
  392. mouldOperationDynamicsMapper.insert(dynamics);
  393. return msg;
  394. }
  395. @Override
  396. public HttpRespMsg getAllFileList(int mouldId, UserVO userVO) {
  397. List<HashMap> dataList = new ArrayList<HashMap>();
  398. int maxBlongType = 5;
  399. for (int i = 0; i <= maxBlongType; i++) {
  400. HashMap<String, Object> data = new HashMap<>();
  401. data.put("blongType", i);
  402. List<MouldFile> list = mouldFileMapper.selectList(new QueryWrapper<MouldFile>().eq("model_id", mouldId).eq("blong_type", i).orderByDesc("id"));
  403. data.put("list", list);
  404. dataList.add(data);
  405. }
  406. HttpRespMsg msg = new HttpRespMsg();
  407. msg.data = dataList;
  408. return msg;
  409. }
  410. @Override
  411. public HttpRespMsg getFileList(int mouldId, Integer blongType, UserVO userVO) {
  412. HttpRespMsg msg = new HttpRespMsg();
  413. User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", userVO.getToken()));
  414. List<MouldFile> list = new ArrayList<>();
  415. List<Integer> ids = new ArrayList<>();
  416. // if(blongType == 4){
  417. // List<Integer> recursion = recursion(mouldId, ids);
  418. // list = mouldFileMapper.selectList(new QueryWrapper<MouldFile>().in("model_id", recursion).orderByDesc("id"));
  419. // }else{
  420. list = mouldFileMapper.selectList(new QueryWrapper<MouldFile>().eq("model_id", mouldId).eq("blong_type", blongType).orderByDesc("id"));
  421. // }
  422. msg.data = list;
  423. return msg;
  424. }
  425. @Override
  426. public HttpRespMsg delFile(MouldFile mouldFile) {
  427. HttpRespMsg msg = new HttpRespMsg();
  428. msg.data = mouldFileMapper.deleteById(mouldFile.getId());
  429. return msg;
  430. }
  431. @Override
  432. public HttpRespMsg getListByUserAndProjectId(UserVO userVO, PageUtil page) {
  433. HttpRespMsg msg = new HttpRespMsg();
  434. List<Integer> proIds = new ArrayList<>();
  435. proIds.add(-1);
  436. List<MouldFileVO> list = new ArrayList<>();
  437. User currentUser = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", userVO.getToken()));
  438. PageHelper.startPage(page.getPageNum(), page.getPageSize());
  439. if (currentUser != null) {
  440. if (Constant.SYS_ID == currentUser.getParentId()) {
  441. //此时是admin,查询他所创建的项目
  442. QueryWrapper<Project> qw = new QueryWrapper<>();
  443. List<Project> projects = projectMapper.selectList(qw.eq("creator_id", currentUser.getId()));
  444. for (Project pro : projects) {
  445. proIds.add(pro.getId());
  446. }
  447. list = mouldFileMapper.getFileListByProjectId(userVO, proIds);
  448. } else if (Constant.SYS_PARENT_ID == currentUser.getParentId()) {
  449. //系统管理员
  450. List<Project> projects = projectMapper.selectList(new QueryWrapper<Project>());
  451. for (Project pro : projects) {
  452. proIds.add(pro.getId());
  453. }
  454. list = mouldFileMapper.getFileListByProjectId(userVO, proIds);
  455. } else {
  456. QueryWrapper<Project> qw = new QueryWrapper<>();
  457. qw.eq("manager_id", userVO.getId());
  458. List<Project> projects = projectMapper.selectList(qw);
  459. if (projects.size() > 0) {
  460. for (Project project : projects) {
  461. proIds.add(project.getId());
  462. }
  463. }
  464. // //充当普通人员参与的项目
  465. List<ProjectUser> projectUsers = projectUserMapper.selectList(new QueryWrapper<ProjectUser>().eq("user_id", currentUser.getId()));
  466. if (projectUsers.size() > 0) {
  467. for (ProjectUser projectUser : projectUsers) {
  468. proIds.add(projectUser.getProjectId());
  469. }
  470. }
  471. //充当审批人员参与的项目
  472. List<ProjectApprove> projectss = projectApproveMapper.selectList(new QueryWrapper<ProjectApprove>().eq("approver_id", currentUser.getId()));
  473. if (projectss.size() > 0) {
  474. for (ProjectApprove projectUser : projectss) {
  475. proIds.add(projectUser.getProjectId());
  476. }
  477. }
  478. list = mouldFileMapper.getFileListByProjectId(userVO, proIds);
  479. }
  480. PageInfo<MouldFileVO> pageInfos = new PageInfo<>(list);
  481. msg.data = pageInfos;
  482. } else {
  483. msg.setError("用户不存在或者未登录");
  484. }
  485. return msg;
  486. }
  487. @Override
  488. public HttpRespMsg dowloadFileList(UserVO userVO, HttpServletRequest request, HttpServletResponse response, String downloadPath, String path) throws IOException {
  489. HttpRespMsg msg = new HttpRespMsg();
  490. if (null != userVO.getIds()) {
  491. List<Integer> ids = ListUtil.convertIntegerIdsArrayToList(userVO.getIds());
  492. for (Integer id : ids) {
  493. Mould mould = mouldMapper.selectById(id);
  494. List<MouldFile> mouldFiles = mouldFileMapper.selectList(new QueryWrapper<MouldFile>().eq("model_id", id).eq("state", 3));
  495. feedBackDirectMultiDownload(request, response, downloadPath, mould, mouldFiles, path);
  496. }
  497. }
  498. return msg;
  499. }
  500. @Override
  501. public HttpRespMsg addPartFile(UserVO userVO, String path, MultipartFile[] files) {
  502. HttpRespMsg msg = new HttpRespMsg();
  503. User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", userVO.getToken()));
  504. if (user != null) {
  505. List<Part> partLists = partMapper.selectList(new QueryWrapper<Part>().eq("mould_id", userVO.getMouldId()));
  506. for (MultipartFile file : files) {
  507. MouldFile partFile = new MouldFile();
  508. partFile.setModelId(userVO.getMouldId());
  509. partFile.setBlongType(1);
  510. File dir = null;
  511. dir = new File(path);
  512. // D://cloud/upload 文件上传后所存储的位置,部署到服务器上时配置服务器地址即可
  513. if (!dir.exists()) {
  514. dir.mkdirs();
  515. }
  516. String fileName = "";
  517. // if (!file.isEmpty()) {
  518. fileName = file.getOriginalFilename();
  519. String fileNamePrex = fileName.substring(0, fileName.lastIndexOf("."));
  520. String[] split = fileNamePrex.split("\\+");
  521. System.out.println("split" + split);
  522. for (Part part : partLists) {
  523. if (part.getPartNo().equals(split[0])) {
  524. partFile.setPartId(part.getId());
  525. if (Constant.PART_FILE_2D.equals(split[1])) {
  526. MouldFile mouldFile = mouldFileMapper.selectOne(new QueryWrapper<MouldFile>().eq("part_id", part.getId()).eq("dwg_type", 0));
  527. if (mouldFile != null) {
  528. //把之前的文件删除
  529. mouldFileMapper.deleteById(mouldFile);
  530. }
  531. partFile.setDwgType(0);
  532. } else if (Constant.PART_FILE_3D.equals(split[1])) {
  533. MouldFile mouldFile = mouldFileMapper.selectOne(new QueryWrapper<MouldFile>().eq("part_id", part.getId()).eq("dwg_type", 1));
  534. if (mouldFile != null) {
  535. //把之前的文件删除
  536. mouldFileMapper.deleteById(mouldFile);
  537. }
  538. partFile.setDwgType(1);
  539. }
  540. }
  541. }
  542. partFile.setFileName(fileName);
  543. partFile.setFileSize(FileUtil.getReadableFileSize(file.getSize()));
  544. System.out.println("上传文件名称" + file.getName() + ", dir = " + dir.getAbsolutePath());
  545. int pos = fileName.lastIndexOf(".");
  546. String rand = UUID.randomUUID().toString().replaceAll("-", "");
  547. String sufix = fileName.substring(pos);
  548. fileName = rand + sufix;
  549. partFile.setFileType(sufix);//文件后缀
  550. partFile.setFileUrl("/upload/" + fileName);
  551. partFile.setUplodtorId(user.getId());
  552. partFile.setUploadtor(user.getUsername());
  553. File saveFile = new File(dir, fileName);
  554. mouldFileMapper.insert(partFile);
  555. try {
  556. saveFile.createNewFile();
  557. file.transferTo(saveFile);
  558. } catch (IOException e) {
  559. e.printStackTrace();
  560. partFile = null;
  561. } catch (Exception e) {
  562. e.printStackTrace();
  563. partFile = null;
  564. }
  565. //添加上传记录
  566. MouldOperationDynamics dynamics = new MouldOperationDynamics();
  567. dynamics.setContent(Constant.UPLOAD);
  568. dynamics.setFileName(file.getOriginalFilename());
  569. dynamics.setOperatorId(user.getId());
  570. dynamics.setOperatorName(user.getUsername());
  571. dynamics.setMouldId(userVO.getMouldId());
  572. mouldOperationDynamicsMapper.insert(dynamics);
  573. // }
  574. msg.data = partFile;
  575. }
  576. } else {
  577. msg.setError("用户不存在或者未登录");
  578. }
  579. return msg;
  580. }
  581. @Override
  582. public HttpRespMsg downloadFileListExcel(UserVO userVO, HttpServletResponse response,String downloadPath) throws ParseException {
  583. HttpRespMsg msg = new HttpRespMsg();
  584. List<List<String>> list = new ArrayList<List<String>>();
  585. //标题
  586. List<String> titleList = new ArrayList<String>();
  587. titleList.add("文件名");
  588. titleList.add("下载者姓名");
  589. titleList.add("文件类型");
  590. titleList.add("下载时间");
  591. list.add(titleList);
  592. QueryWrapper<MouldOperationDynamics> qw = new QueryWrapper<MouldOperationDynamics>();
  593. qw.eq("content", Constant.DOWNLOAD);
  594. String start = userVO.getStartTime().replace("Z", " UTC");//是空格+UTC
  595. String end = userVO.getEndTime().replace("Z", " UTC");//是空格+UTC
  596. DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  597. Date date1 = df.parse(start);
  598. System.out.println(date1);
  599. Date date2 = df.parse(end);
  600. System.out.println(date2);
  601. // SimpleDateFormat df1 = new SimpleDateFormat ("EEE MMM dd HH:mm:ss Z yyyy", Locale.CHINA);
  602. Calendar calendar=new GregorianCalendar();
  603. calendar.setTime(date1);
  604. calendar.add(calendar.DATE,-1);//把日期往后增加一天.整数往后推,负数往前移动 date=calendar.getTime();
  605. Date startDate1 = calendar.getTime();
  606. calendar.setTime(date2);
  607. calendar.add(calendar.DATE,-1);
  608. // Date startDate = df1.parse(date1.toString());
  609. Date endDate2 = calendar.getTime();
  610. // Date endDate = df1.parse(date2.toString());
  611. SimpleDateFormat dateSdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  612. SimpleDateFormat dateSdf = new SimpleDateFormat("yyyy-MM-dd");
  613. SimpleDateFormat dateSdf2 = new SimpleDateFormat("yyyy年MM月dd+HH时mm分ss秒");
  614. String startDate = dateSdf.format(startDate1);
  615. String endDate = dateSdf.format(endDate2);
  616. List<MouldOperationDynamics> mouldOperationDynamics = new ArrayList<>();
  617. if (userVO.getStartTime() != null && userVO.getEndTime() != null) {
  618. mouldOperationDynamics = mouldOperationDynamicsMapper.selectOperationDynamicsList(startDate,endDate,userVO);
  619. }
  620. for (MouldOperationDynamics dynamic : mouldOperationDynamics) {
  621. List<String> rowList = new ArrayList<String>();
  622. //文件名
  623. rowList.add(dynamic.getFileName());
  624. //操作者名字
  625. rowList.add(dynamic.getOperatorName());
  626. //文件类型
  627. if (dynamic.getBelongType() == 0) {
  628. rowList.add("模具文档");
  629. } else if (dynamic.getBelongType() == 1) {
  630. rowList.add("零件文档");
  631. } else if (dynamic.getBelongType() == 2) {
  632. rowList.add("试模验收");
  633. } else if (dynamic.getBelongType() == 3) {
  634. rowList.add("保养方案");
  635. } else if (dynamic.getBelongType() == 4) {
  636. rowList.add("模具更新");
  637. } else if (dynamic.getBelongType() == 5) {
  638. rowList.add("模具报废");
  639. }
  640. //下载时间
  641. rowList.add(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(dynamic.getIndate())
  642. );
  643. list.add(rowList);
  644. }
  645. Mould mould = mouldMapper.selectById(userVO.getMouldId());
  646. msg.data = ExcelUtil.exportGeneralExcelByTitleAndList(response, mould.getModelNo() + mould.getModelName()+dateSdf2.format(new Date()), list,downloadPath);
  647. return msg;
  648. }
  649. @Override
  650. public HttpRespMsg mouldUpdateCheck(UserVO userVO) {
  651. HttpRespMsg msg = new HttpRespMsg();
  652. User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", userVO.getToken()));
  653. boolean isCanCreate = false;
  654. if (user == null) {
  655. msg.setError("用户不存在或者未登录");
  656. return msg;
  657. }else{
  658. MouldOperationDynamics dynamics = mouldOperationDynamicsMapper.selectOne(new QueryWrapper<MouldOperationDynamics>().eq("belongType", 4).eq("mould_id", userVO.getMouldId()).orderByDesc("id"));
  659. if(null != dynamics){
  660. if(0 == dynamics.getIsPass()){
  661. isCanCreate = true;
  662. }
  663. }else{
  664. isCanCreate = true;
  665. }
  666. }
  667. msg.data = isCanCreate;
  668. return msg;
  669. }
  670. public Map<String, Object> feedBackDirectMultiDownload(HttpServletRequest request, HttpServletResponse response, String downloadPath, Mould vo, List<MouldFile> mouldFiles, String oldFilePath) throws IOException {
  671. //压缩文件初始设置
  672. String path = downloadPath;
  673. String base_name = vo.getModelNo() + vo.getModelName();
  674. String fileZip = base_name + ".zip"; // 拼接zip文件
  675. String filePath = path + "\\" + fileZip;//之后用来生成zip文件
  676. //mouldFiles为根据前台传过来的信息,通过数据库查询所得出的pdf文件路径集合(具体到后缀),此处省略
  677. File[] files = new File[mouldFiles.size()];//
  678. for (int i = 0; i < mouldFiles.size(); i++) {
  679. files[i] = new File(oldFilePath + mouldFiles.get(i).getFileUrl());//获取所有需要下载的pdf
  680. }
  681. // 创建临时压缩文件
  682. try {
  683. BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
  684. ZipOutputStream zos = new ZipOutputStream(bos);
  685. ZipEntry ze = null;
  686. for (int i = 0; i < files.length; i++) {//将所有需要下载的pdf文件都写入临时zip文件
  687. BufferedInputStream bis = new BufferedInputStream(new FileInputStream(files[i]));
  688. ze = new ZipEntry(mouldFiles.get(i).getFileName());
  689. zos.putNextEntry(ze);
  690. int s = -1;
  691. while ((s = bis.read()) != -1) {
  692. zos.write(s);
  693. }
  694. bis.close();
  695. }
  696. zos.flush();
  697. zos.close();
  698. } catch (IOException e) {
  699. e.printStackTrace();
  700. }
  701. //以上,临时压缩文件创建完成
  702. //进行浏览器下载
  703. //获得浏览器代理信息
  704. final String userAgent = request.getHeader("USER-AGENT");
  705. //判断浏览器代理并分别设置响应给浏览器的编码格式
  706. String finalFileName = null;
  707. if (StringUtils.contains(userAgent, "MSIE") || StringUtils.contains(userAgent, "Trident")) {//IE浏览器
  708. finalFileName = URLEncoder.encode(fileZip, "UTF8");
  709. System.out.println("IE浏览器");
  710. } else if (StringUtils.contains(userAgent, "Mozilla")) {//google,火狐浏览器
  711. finalFileName = new String(fileZip.getBytes(), "ISO8859-1");
  712. } else {
  713. finalFileName = URLEncoder.encode(fileZip, "UTF8");//其他浏览器
  714. }
  715. response.setContentType("application/x-download");//告知浏览器下载文件,而不是直接打开,浏览器默认为打开
  716. response.setHeader("Content-Disposition", "attachment;filename=\"" + finalFileName + "\"");//下载文件的名称
  717. ServletOutputStream servletOutputStream = response.getOutputStream();
  718. DataOutputStream temps = new DataOutputStream(
  719. servletOutputStream);
  720. DataInputStream in = new DataInputStream(new FileInputStream(filePath));//浏览器下载文件的路径
  721. byte[] b = new byte[2048];
  722. File reportZip = new File(filePath);//之后用来删除临时压缩文件
  723. try {
  724. while ((in.read(b)) != -1) {
  725. temps.write(b);
  726. }
  727. temps.flush();
  728. } catch (Exception e) {
  729. e.printStackTrace();
  730. } finally {
  731. if (temps != null) temps.close();
  732. if (in != null) in.close();
  733. if (reportZip != null) reportZip.delete();//删除服务器本地产生的临时压缩文件
  734. servletOutputStream.close();
  735. }
  736. return null;
  737. }
  738. }