PrintDevServiceImpl.java 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563
  1. package jnpf.base.service.impl;
  2. import cn.hutool.core.collection.CollectionUtil;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.baomidou.mybatisplus.core.metadata.IPage;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.google.common.collect.Lists;
  8. import jnpf.base.UserInfo;
  9. import jnpf.base.entity.*;
  10. import jnpf.base.mapper.PrintDevMapper;
  11. import jnpf.base.model.dataset.DataSetForm;
  12. import jnpf.base.model.dataset.DataSetInfo;
  13. import jnpf.base.model.dataset.DataSetPagination;
  14. import jnpf.base.model.dataset.TableTreeModel;
  15. import jnpf.base.model.print.*;
  16. import jnpf.base.model.vo.PrintDevVO;
  17. import jnpf.base.service.*;
  18. import jnpf.base.util.dataSet.DataSetSwapUtil;
  19. import jnpf.constant.AuthorizeConst;
  20. import jnpf.constant.CodeConst;
  21. import jnpf.constant.MsgCode;
  22. import jnpf.emnus.DataSetTypeEnum;
  23. import jnpf.exception.DataException;
  24. import jnpf.flowable.entity.RecordEntity;
  25. import jnpf.permission.entity.AuthorizeEntity;
  26. import jnpf.permission.entity.UserEntity;
  27. import jnpf.permission.model.user.UserRelationIds;
  28. import jnpf.permission.service.AuthorizeService;
  29. import jnpf.permission.service.CodeNumService;
  30. import jnpf.permission.service.UserService;
  31. import jnpf.util.JsonUtil;
  32. import jnpf.util.RandomUtil;
  33. import jnpf.util.StringUtil;
  34. import jnpf.util.UserProvider;
  35. import jnpf.util.context.RequestContext;
  36. import jnpf.util.enums.DictionaryDataEnum;
  37. import jnpf.util.treeutil.SumTree;
  38. import jnpf.util.treeutil.newtreeutil.TreeDotUtils;
  39. import jnpf.workflow.service.TaskApi;
  40. import org.apache.commons.collections4.CollectionUtils;
  41. import org.springframework.beans.factory.annotation.Autowired;
  42. import org.springframework.stereotype.Service;
  43. import org.springframework.transaction.annotation.Transactional;
  44. import java.util.*;
  45. import java.util.stream.Collectors;
  46. /**
  47. * 打印模板-服务实现类
  48. *
  49. * @author JNPF开发平台组 YY
  50. * @version V3.2.0
  51. * @copyright 引迈信息技术有限公司
  52. * @date 2019年9月30日
  53. */
  54. @Service
  55. public class PrintDevServiceImpl extends SuperServiceImpl<PrintDevMapper, PrintDevEntity> implements PrintDevService {
  56. @Autowired
  57. private PrintVersionService printVersionService;
  58. @Autowired
  59. private DictionaryDataService dictionaryDataService;
  60. @Autowired
  61. private DictionaryTypeService dictionaryTypeService;
  62. @Autowired
  63. private UserService userService;
  64. @Autowired
  65. private DataSetService dataSetService;
  66. @Autowired
  67. private TaskApi taskApi;
  68. @Autowired
  69. private DataSetSwapUtil dataSetSwapUtil;
  70. @Autowired
  71. private AuthorizeService authorizeService;
  72. @Autowired
  73. private DataInterfaceService dataInterfaceService;
  74. @Autowired
  75. private CodeNumService codeNumService;
  76. @Autowired
  77. private SystemService systemService;
  78. @Override
  79. public List<PrintDevEntity> getList(PaginationPrint paginationPrint) {
  80. QueryWrapper<PrintDevEntity> queryWrapper = new QueryWrapper<>();
  81. if (StringUtil.isNotEmpty(paginationPrint.getKeyword())) {
  82. queryWrapper.lambda().and(
  83. t -> t.like(PrintDevEntity::getFullName, paginationPrint.getKeyword())
  84. .or().like(PrintDevEntity::getEnCode, paginationPrint.getKeyword())
  85. );
  86. }
  87. if (StringUtil.isNotEmpty(paginationPrint.getCategory())) {
  88. queryWrapper.lambda().eq(PrintDevEntity::getCategory, paginationPrint.getCategory());
  89. }
  90. if (paginationPrint.getState() != null) {
  91. queryWrapper.lambda().eq(PrintDevEntity::getState, paginationPrint.getState());
  92. }
  93. if (StringUtil.isNotEmpty(paginationPrint.getSystemId())) {
  94. queryWrapper.lambda().eq(PrintDevEntity::getSystemId, paginationPrint.getSystemId());
  95. }
  96. queryWrapper.lambda().orderByAsc(PrintDevEntity::getSortCode).orderByDesc(PrintDevEntity::getCreatorTime);
  97. Page<PrintDevEntity> page = new Page<>(paginationPrint.getCurrentPage(), paginationPrint.getPageSize());
  98. IPage<PrintDevEntity> iPage = this.page(page, queryWrapper);
  99. return paginationPrint.setData(iPage.getRecords(), page.getTotal());
  100. }
  101. @Override
  102. public List<PrintDevEntity> getListByIds(List<String> idList) {
  103. if (CollectionUtil.isEmpty(idList)) return Collections.EMPTY_LIST;
  104. QueryWrapper<PrintDevEntity> queryWrapper = new QueryWrapper<>();
  105. List<List<String>> lists = Lists.partition(idList, 1000);
  106. for (List<String> list : lists) {
  107. queryWrapper.lambda().in(PrintDevEntity::getId, list).or();
  108. }
  109. List<PrintDevEntity> list = this.list(queryWrapper);
  110. return list;
  111. }
  112. @Override
  113. public List<PrintDevEntity> getListByCreUser(String creUser) {
  114. QueryWrapper<PrintDevEntity> queryWrapper = new QueryWrapper<>();
  115. queryWrapper.lambda().eq(PrintDevEntity::getVisibleType, 2);
  116. queryWrapper.lambda().eq(PrintDevEntity::getCreatorUserId, creUser);
  117. return this.list(queryWrapper);
  118. }
  119. @Override
  120. public void create(PrintDevFormDTO dto) {
  121. PrintDevEntity entity = JsonUtil.getJsonToBean(dto, PrintDevEntity.class);
  122. UserInfo userInfo = UserProvider.getUser();
  123. // 校验
  124. this.creUpdateCheck(entity, true, true);
  125. String id = StringUtil.isNotEmpty(entity.getId()) ? entity.getId() : RandomUtil.uuId();
  126. entity.setId(id);
  127. entity.setState(0);
  128. entity.setCreatorUserId(userInfo.getUserId());
  129. entity.setCreatorTime(new Date());
  130. entity.setLastModifyUserId(null);
  131. entity.setLastModifyTime(null);
  132. if (StringUtil.isEmpty(entity.getEnCode())) {
  133. entity.setEnCode(codeNumService.getCodeFunction(() -> codeNumService.getCodeOnce(CodeConst.DY), code -> this.isExistByEnCode(code, null)));
  134. }
  135. this.setIgnoreLogicDelete().removeById(entity.getId());
  136. this.setIgnoreLogicDelete().saveOrUpdate(entity);
  137. this.clearIgnoreLogicDelete();
  138. dto.setId(id);
  139. List<PrintVersionEntity> list = printVersionService.getList(id);
  140. if (CollectionUtils.isEmpty(list)) {
  141. printVersionService.create(dto);
  142. }
  143. }
  144. @Override
  145. public PrintDevInfoVO getVersionInfo(String versionId) {
  146. PrintVersionEntity versionEntity = printVersionService.getById(versionId);
  147. PrintDevEntity entity = this.getById(versionEntity.getTemplateId());
  148. PrintDevInfoVO vo = JsonUtil.getJsonToBean(entity, PrintDevInfoVO.class);
  149. vo.setVersionId(versionId);
  150. vo.setPrintTemplate(versionEntity.getPrintTemplate());
  151. vo.setConvertConfig(versionEntity.getConvertConfig());
  152. vo.setGlobalConfig(versionEntity.getGlobalConfig());
  153. List<DataSetEntity> list = dataSetService.getList(new DataSetPagination(DataSetTypeEnum.PRINT_VER.getCode(), versionId));
  154. List<DataSetInfo> dataSetInfoList = new ArrayList<>();
  155. if (CollectionUtils.isNotEmpty(list)) {
  156. for (DataSetEntity item : list) {
  157. DataSetInfo bean = JsonUtil.getJsonToBean(item, DataSetInfo.class);
  158. try {
  159. SumTree<TableTreeModel> printTableFields = dataSetService.getTabFieldStruct(item);
  160. bean.setChildren(printTableFields.getChildren());
  161. dataSetInfoList.add(bean);
  162. } catch (Exception e) {
  163. e.printStackTrace();
  164. }
  165. if (Objects.equals(item.getType(), 3)) {
  166. DataInterfaceEntity info = dataInterfaceService.getInfo(item.getInterfaceId());
  167. if (info != null) {
  168. bean.setTreePropsName(info.getFullName());
  169. }
  170. }
  171. }
  172. }
  173. vo.setDataSetList(dataSetInfoList);
  174. return vo;
  175. }
  176. @Override
  177. @Transactional
  178. public void saveOrRelease(PrintDevUpForm form) {
  179. PrintDevEntity entity = this.getById(form.getId());
  180. PrintVersionEntity versionNew = printVersionService.getById(form.getVersionId());
  181. //已归档
  182. boolean isDossier = false;
  183. if (Objects.equals(versionNew.getState(), 2) || Objects.equals(versionNew.getState(), 1)) {
  184. isDossier = !isDossier;
  185. }
  186. //发布
  187. if (Objects.equals(form.getType(), 1)) {
  188. //修改版本状态
  189. if (StringUtil.isNotEmpty(form.getVersionId())) {
  190. PrintVersionEntity info = printVersionService.getList(form.getId()).stream().filter(t -> Objects.equals(t.getState(), 1)).findFirst().orElse(null);
  191. if (info != null) {
  192. // 变更归档状态,排序码
  193. info.setSortCode(0L);
  194. info.setState(2);
  195. printVersionService.updateById(info);
  196. }
  197. versionNew.setState(1);
  198. versionNew.setSortCode(1L);
  199. //已发布
  200. if (Objects.equals(entity.getState(), 0)) {
  201. entity.setState(1);
  202. }
  203. }
  204. }
  205. //已归档不修改设计内容和数据集内容
  206. if (!isDossier) {
  207. versionNew.setPrintTemplate(form.getPrintTemplate());
  208. versionNew.setConvertConfig(form.getConvertConfig());
  209. versionNew.setGlobalConfig(form.getGlobalConfig());
  210. //数据集创建
  211. String versionId = versionNew.getId();
  212. List<DataSetForm> dataSetList = form.getDataSetList() != null ? form.getDataSetList() : new ArrayList<>();
  213. dataSetService.create(dataSetList, DataSetTypeEnum.PRINT_VER.getCode(), versionId);
  214. }
  215. printVersionService.updateById(versionNew);
  216. entity.setLastModifyTime(new Date());
  217. entity.setLastModifyUserId(UserProvider.getUser().getUserId());
  218. this.updateById(entity);
  219. }
  220. @Override
  221. public List<PrintDevVO> getTreeModel(String category) {
  222. SystemEntity systemEntity = systemService.getInfoByEnCode(RequestContext.getAppCode());
  223. QueryWrapper<PrintDevEntity> query = new QueryWrapper<>();
  224. if (StringUtil.isNotEmpty(category)) {
  225. query.lambda().eq(PrintDevEntity::getCategory, category);
  226. }
  227. query.lambda().eq(PrintDevEntity::getSystemId, systemEntity.getId());
  228. query.lambda().eq(PrintDevEntity::getState, 1);
  229. query.lambda().orderByAsc(PrintDevEntity::getSortCode).orderByDesc(PrintDevEntity::getCreatorTime);
  230. List<PrintDevEntity> printEntityList = this.list(query);
  231. return setTreeModel(printEntityList);
  232. }
  233. private List<PrintDevVO> setTreeModel(List<PrintDevEntity> printEntityList) {
  234. //数据字典缺失
  235. DictionaryTypeEntity DictionaryType = dictionaryTypeService.getInfoByEnCode(DictionaryDataEnum.SYSTEM_PRINTDEV.getDictionaryTypeId());
  236. if (DictionaryType == null) {
  237. throw new DataException(MsgCode.PRI002.get());
  238. }
  239. List<DictionaryDataEntity> dicDataList = dictionaryDataService.
  240. getList(DictionaryType.getId());
  241. List<PrintDevTreeModel> modelAll = new LinkedList<>();
  242. //设置树形主节点(不显示没有子集的)
  243. for (DictionaryDataEntity dicEntity : dicDataList) {
  244. PrintDevTreeModel model = new PrintDevTreeModel();
  245. model.setFullName(dicEntity.getFullName());
  246. model.setId(dicEntity.getId());
  247. Long num = printEntityList.stream().filter(t -> t.getCategory().equals(dicEntity.getId())).count();
  248. //编码底下存在的子节点总数
  249. if (num > 0) {
  250. model.setNum(Integer.parseInt(num.toString()));
  251. modelAll.add(model);
  252. }
  253. }
  254. List<String> userId = new ArrayList<>();
  255. printEntityList.forEach(t -> {
  256. userId.add(t.getCreatorUserId());
  257. if (StringUtil.isNotEmpty(t.getLastModifyUserId())) {
  258. userId.add(t.getLastModifyUserId());
  259. }
  260. });
  261. List<UserEntity> userList = userService.getUserName(userId);
  262. //设置子节点分支
  263. for (PrintDevEntity printEntity : printEntityList) {
  264. DictionaryDataEntity dicDataEntity = dicDataList.stream()
  265. .filter(t -> t.getId().equals(printEntity.getCategory())).findFirst().orElse(null);
  266. //如果字典存在则装入容器
  267. PrintDevTreeModel model = JsonUtil.getJsonToBean(printEntity, PrintDevTreeModel.class);
  268. if (dicDataEntity != null) {
  269. //创建者
  270. UserEntity creatorUser = userList.stream().filter(t -> t.getId().equals(model.getCreatorUser())).findFirst().orElse(null);
  271. model.setCreatorUser(creatorUser != null ? creatorUser.getRealName() + "/" + creatorUser.getAccount() : "");
  272. //修改人
  273. UserEntity lastmodifyuser = userList.stream().filter(t -> t.getId().equals(model.getLastModifyUser())).findFirst().orElse(null);
  274. model.setLastModifyUser(lastmodifyuser != null ? lastmodifyuser.getRealName() + "/" + lastmodifyuser.getAccount() : "");
  275. model.setParentId(dicDataEntity.getId());
  276. modelAll.add(model);
  277. }
  278. }
  279. List<SumTree<PrintDevTreeModel>> trees = TreeDotUtils.convertListToTreeDot(modelAll);
  280. List<PrintDevVO> list = JsonUtil.getJsonToList(trees, PrintDevVO.class);
  281. return list;
  282. }
  283. @Override
  284. public void creUpdateCheck(PrintDevEntity printDevEntity, Boolean fullNameCheck, Boolean encodeCheck) {
  285. String fullName = printDevEntity.getFullName();
  286. String encode = printDevEntity.getEnCode();
  287. // 名称长度验证
  288. if (fullName.length() > 80) {
  289. throw new DataException(MsgCode.EXIST005.get());
  290. }
  291. QueryWrapper<PrintDevEntity> query = new QueryWrapper<>();
  292. //重名验证
  293. if (fullNameCheck) {
  294. query.lambda().eq(PrintDevEntity::getFullName, fullName);
  295. query.lambda().eq(PrintDevEntity::getSystemId, printDevEntity.getSystemId());
  296. if (this.list(query).size() > 0) {
  297. throw new DataException(MsgCode.EXIST003.get());
  298. }
  299. }
  300. //编码验证
  301. if (encodeCheck) {
  302. query.clear();
  303. query.lambda().eq(PrintDevEntity::getEnCode, encode);
  304. if (this.list(query).size() > 0) {
  305. throw new DataException(MsgCode.EXIST002.get());
  306. }
  307. }
  308. }
  309. @Override
  310. public Boolean isExistByEnCode(String enCode, String id) {
  311. if (StringUtil.isEmpty(enCode)) return false;
  312. QueryWrapper<PrintDevEntity> queryWrapper = new QueryWrapper<>();
  313. queryWrapper.lambda().eq(PrintDevEntity::getEnCode, enCode);
  314. if (!StringUtil.isEmpty(id)) {
  315. queryWrapper.lambda().ne(PrintDevEntity::getId, id);
  316. }
  317. return this.count(queryWrapper) > 0;
  318. }
  319. @Override
  320. public List<PrintOption> getPrintTemplateOptions(List<String> ids) {
  321. QueryWrapper<PrintDevEntity> wrapper = new QueryWrapper<>();
  322. wrapper.lambda().in(PrintDevEntity::getId, ids);
  323. List<PrintDevEntity> list = this.list(wrapper);
  324. List<PrintOption> options = JsonUtil.getJsonToList(list, PrintOption.class);
  325. return options;
  326. }
  327. @Override
  328. @Transactional
  329. public String importData(PrintDevInfoVO infoVO, Integer type) {
  330. PrintDevEntity entity = JsonUtil.getJsonToBean(infoVO, PrintDevEntity.class);
  331. StringJoiner stringJoiner = new StringJoiner("、");
  332. //id为空切名称不存在时
  333. QueryWrapper<PrintDevEntity> queryWrapper = new QueryWrapper<>();
  334. queryWrapper.lambda().eq(PrintDevEntity::getId, entity.getId());
  335. if (this.getById(infoVO.getId()) != null) {
  336. if (Objects.equals(type, 0)) {
  337. stringJoiner.add("ID");
  338. } else {
  339. entity.setId(RandomUtil.uuId());
  340. }
  341. }
  342. queryWrapper = new QueryWrapper<>();
  343. queryWrapper.lambda().eq(PrintDevEntity::getEnCode, entity.getEnCode());
  344. if (this.count(queryWrapper) > 0) {
  345. stringJoiner.add(MsgCode.IMP009.get());
  346. }
  347. queryWrapper = new QueryWrapper<>();
  348. queryWrapper.lambda().eq(PrintDevEntity::getFullName, entity.getFullName());
  349. queryWrapper.lambda().eq(PrintDevEntity::getSystemId, entity.getSystemId());
  350. if (this.count(queryWrapper) > 0) {
  351. stringJoiner.add(MsgCode.IMP008.get());
  352. }
  353. if (stringJoiner.length() > 0 && ObjectUtil.equal(type, 1)) {
  354. String copyNum = UUID.randomUUID().toString().substring(0, 5);
  355. entity.setFullName(entity.getFullName() + ".副本" + copyNum);
  356. entity.setEnCode(entity.getEnCode() + copyNum);
  357. } else if (ObjectUtil.equal(type, 0) && stringJoiner.length() > 0) {
  358. return stringJoiner.toString() + MsgCode.IMP007.get();
  359. }
  360. entity.setState(0);
  361. entity.setCreatorTime(new Date());
  362. entity.setCreatorUserId(UserProvider.getLoginUserId());
  363. entity.setLastModifyTime(null);
  364. entity.setLastModifyUserId(null);
  365. this.setIgnoreLogicDelete().removeById(entity);
  366. this.setIgnoreLogicDelete().saveOrUpdate(entity);
  367. this.clearIgnoreLogicDelete();
  368. //版本添加
  369. PrintVersionEntity versionEntity = new PrintVersionEntity();
  370. String versionId = RandomUtil.uuId();
  371. versionEntity.setId(versionId);
  372. versionEntity.setTemplateId(entity.getId());
  373. versionEntity.setCreatorUserId(UserProvider.getUser().getUserId());
  374. versionEntity.setCreatorTime(new Date());
  375. versionEntity.setPrintTemplate(infoVO.getPrintTemplate());
  376. versionEntity.setConvertConfig(infoVO.getConvertConfig());
  377. versionEntity.setGlobalConfig(infoVO.getGlobalConfig());
  378. versionEntity.setVersion(1);
  379. versionEntity.setState(0);
  380. versionEntity.setSortCode(0l);
  381. printVersionService.save(versionEntity);
  382. //数据集创建
  383. List<DataSetForm> dataSetList = infoVO.getDataSetList() != null ? JsonUtil.getJsonToList(infoVO.getDataSetList(), DataSetForm.class) : new ArrayList<>();
  384. dataSetList.stream().forEach(t -> t.setId(null));
  385. dataSetService.create(dataSetList, DataSetTypeEnum.PRINT_VER.getCode(), versionId);
  386. return "";
  387. }
  388. @Override
  389. public List<OperatorRecordEntity> getFlowTaskOperatorRecordList(String taskId) {
  390. List<OperatorRecordEntity> operatorRecordList = new ArrayList<>();
  391. if (StringUtil.isEmpty(taskId)) {
  392. return operatorRecordList;
  393. }
  394. try {
  395. // TODO 不同库之间的表名大小写问题
  396. // String sql = "SELECT * FROM workflow_record WHERE f_task_id = ? ORDER BY f_handle_time";
  397. // operatorRecordList = JdbcUtil.queryCustomMods(new PrepSqlDTO(sql, taskId).withConn(dataSourceUtil, null), OperatorRecordEntity.class);
  398. List<RecordEntity> recordList = taskApi.getRecordList(taskId);
  399. operatorRecordList = JsonUtil.getJsonToList(recordList, OperatorRecordEntity.class);
  400. //已办人员
  401. operatorRecordList.forEach(or -> {
  402. // or.setHandleTime(or.getHandleTimeOrigin().getTime());
  403. UserEntity userEntity = userService.getInfo(or.getHandleId());
  404. or.setUserName(userEntity != null ? userEntity.getRealName() + "/" + userEntity.getAccount() : "");
  405. or.setHandleStatus(or.getHandleType());
  406. });
  407. } catch (Exception e) {
  408. e.getMessage();
  409. }
  410. return operatorRecordList;
  411. }
  412. @Override
  413. public Map<String, Object> getDataMap(String templateId, String formId, String flwoTaskId, Map<String, Object> params) {
  414. List<PrintVersionEntity> versionList = printVersionService.getList(templateId);
  415. if (CollectionUtils.isEmpty(versionList)) {
  416. throw new DataException(MsgCode.PRI001.get());
  417. }
  418. //启用中的版本
  419. PrintVersionEntity startVersion = versionList.get(0);
  420. Map<String, Object> dataMap = new HashMap<>(16);
  421. dataMap.put("printTemplate", startVersion.getPrintTemplate());
  422. String convertConfig = startVersion.getConvertConfig();
  423. dataMap.put("convertConfig", startVersion.getConvertConfig());
  424. List<OperatorRecordEntity> operatorRecordList = this.getFlowTaskOperatorRecordList(flwoTaskId);
  425. dataMap.put("operatorRecordList", operatorRecordList);
  426. Map<String, Object> printData = new HashMap<>(16);
  427. List<DataSetEntity> list = dataSetService.getList(new DataSetPagination(DataSetTypeEnum.PRINT_VER.getCode(), startVersion.getId()));
  428. for (DataSetEntity item : list) {
  429. Map<String, Object> dataMapOrList = dataSetService.getDataMapOrList(item, params, formId, false);
  430. dataSetSwapUtil.swapData(templateId, convertConfig, dataMapOrList);
  431. printData.putAll(dataMapOrList);
  432. }
  433. //打印全局配置
  434. if (StringUtil.isNotEmpty(startVersion.getGlobalConfig())) {
  435. dataMap.put("globalConfig", startVersion.getGlobalConfig());
  436. }
  437. dataMap.put("printData", printData);
  438. return dataMap;
  439. }
  440. @Override
  441. public void copyPrintdev(String templateId) {
  442. PrintDevEntity entity = this.getById(templateId);
  443. String copyNum = UUID.randomUUID().toString().substring(0, 5);
  444. String fullName = entity.getFullName() + ".副本" + copyNum;
  445. if (fullName.length() > 50) {
  446. throw new DataException(MsgCode.PRI006.get());
  447. }
  448. PrintDevFormDTO form = JsonUtil.getJsonToBean(entity, PrintDevFormDTO.class);
  449. form.setId(RandomUtil.uuId());
  450. form.setFullName(fullName);
  451. form.setEnCode(entity.getEnCode() + copyNum);
  452. List<PrintVersionEntity> list = printVersionService.getList(templateId);
  453. if (CollectionUtils.isNotEmpty(list)) {
  454. PrintVersionEntity versionEntity = list.get(0);
  455. form.setPrintTemplate(versionEntity.getPrintTemplate());
  456. form.setConvertConfig(versionEntity.getConvertConfig());
  457. form.setGlobalConfig(versionEntity.getGlobalConfig());
  458. List<DataSetEntity> dst = dataSetService.getList(new DataSetPagination(DataSetTypeEnum.PRINT_VER.getCode(), versionEntity.getId()));
  459. List<DataSetForm> dataSetFormList = new ArrayList<>();
  460. for (DataSetEntity item : dst) {
  461. DataSetForm dataSetForm = JsonUtil.getJsonToBean(item, DataSetForm.class);
  462. dataSetForm.setId(null);
  463. dataSetFormList.add(dataSetForm);
  464. }
  465. form.setDataSetList(dataSetFormList);
  466. }
  467. this.create(form);
  468. }
  469. @Override
  470. public List<PrintDevEntity> getWorkSelector(PaginationPrint pagination) {
  471. QueryWrapper<PrintDevEntity> queryWrapper = new QueryWrapper<>();
  472. if (StringUtil.isNotEmpty(pagination.getKeyword())) {
  473. queryWrapper.lambda().and(
  474. t -> t.like(PrintDevEntity::getFullName, pagination.getKeyword())
  475. .or().like(PrintDevEntity::getEnCode, pagination.getKeyword())
  476. );
  477. }
  478. if (StringUtil.isNotEmpty(pagination.getCategory())) {
  479. queryWrapper.lambda().eq(PrintDevEntity::getCategory, pagination.getCategory());
  480. }
  481. //是发布
  482. queryWrapper.lambda().eq(PrintDevEntity::getState, 1);
  483. //是通用
  484. queryWrapper.lambda().eq(PrintDevEntity::getCommonUse, 1);
  485. if (Objects.nonNull(pagination.getVisibleType())) {
  486. queryWrapper.lambda().eq(PrintDevEntity::getVisibleType, pagination.getVisibleType());
  487. } else {
  488. //权限判断
  489. String userId;
  490. if (StringUtil.isNotEmpty(pagination.getUserId())) {
  491. userId = pagination.getUserId();
  492. } else {
  493. userId = UserProvider.getUser().getUserId();
  494. }
  495. UserEntity info = userService.getInfo(userId);
  496. if (!Objects.equals(info.getIsAdministrator(), 1)) {
  497. List<String> objectIds = new ArrayList<>();
  498. UserRelationIds userObjectIdList = userService.getUserObjectIdList(userId);
  499. objectIds.addAll(userObjectIdList.getPosition());
  500. objectIds.addAll(userObjectIdList.getRole());
  501. List<String> authList = authorizeService.getListByRoleIdsAndItemType(objectIds, AuthorizeConst.PRINT).stream().map(AuthorizeEntity::getItemId).collect(Collectors.toList());
  502. queryWrapper.lambda().and(
  503. t -> t.eq(PrintDevEntity::getVisibleType, 1).or().in(!authList.isEmpty(), PrintDevEntity::getId, authList)
  504. );
  505. }
  506. }
  507. if (StringUtil.isNotEmpty(pagination.getSystemId())) {
  508. queryWrapper.lambda().eq(PrintDevEntity::getSystemId, pagination.getSystemId());
  509. }
  510. queryWrapper.lambda().orderByAsc(PrintDevEntity::getSortCode).orderByDesc(PrintDevEntity::getCreatorTime);
  511. if (Objects.equals(pagination.getDataType(), 1)) {
  512. return this.list(queryWrapper);
  513. }
  514. Page<PrintDevEntity> page = new Page<>(pagination.getCurrentPage(), pagination.getPageSize());
  515. IPage<PrintDevEntity> iPage = this.page(page, queryWrapper);
  516. return pagination.setData(iPage.getRecords(), page.getTotal());
  517. }
  518. @Override
  519. public List<PrintDevEntity> getWorkSelector(List<String> id) {
  520. List<PrintDevEntity> list = new ArrayList<>();
  521. if (ObjectUtil.isNotEmpty(id)) {
  522. QueryWrapper<PrintDevEntity> queryWrapper = new QueryWrapper<>();
  523. queryWrapper.lambda().in(PrintDevEntity::getId, id);
  524. queryWrapper.lambda().orderByAsc(PrintDevEntity::getSortCode).orderByDesc(PrintDevEntity::getCreatorTime);
  525. list = this.list(queryWrapper);
  526. }
  527. return list;
  528. }
  529. }