MouldFileServiceImpl.java 40 KB

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