OrgService.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. package com.dk.mdm.service.mst;
  2. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  3. import com.dk.common.infrastructure.annotaiton.Pagination;
  4. import com.dk.common.infrastructure.constant.Constant;
  5. import com.dk.common.model.pojo.PageList;
  6. import com.dk.common.response.ResponseResultUtil;
  7. import com.dk.common.response.ResponseResultVO;
  8. import com.dk.mdm.infrastructure.convert.mst.OrgConvert;
  9. import com.dk.mdm.mapper.mst.OrgMacMapper;
  10. import com.dk.mdm.mapper.mst.OrgWhMapper;
  11. import com.dk.mdm.model.pojo.mst.Org;
  12. import com.dk.mdm.mapper.mst.OrgMapper;
  13. import com.dk.common.service.BaseService;
  14. import com.dk.common.mapper.BaseMapper;
  15. import com.dk.mdm.model.pojo.mst.OrgMac;
  16. import com.dk.mdm.model.pojo.mst.OrgWh;
  17. import com.dk.mdm.model.query.mst.OrgQuery;
  18. import com.dk.common.model.response.mst.OrgResponse;
  19. import com.dk.common.model.vo.mst.OrgVO;
  20. import com.dk.mdm.model.response.mst.MoneyAccountResponse;
  21. import com.dk.mdm.service.common.CommonService;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.transaction.annotation.Transactional;
  25. import java.util.*;
  26. @Service
  27. @Transactional
  28. public class OrgService extends BaseService<Org> {
  29. /**
  30. * @desc : 重写主键
  31. * @author : 王英杰
  32. * @date : 2023/1/9 10:39
  33. */
  34. @Override
  35. public String getPrimaryKey() {
  36. return "org_id";
  37. }
  38. @Override
  39. public BaseMapper<Org> getRepository() {
  40. return orgMapper;
  41. }
  42. @Autowired
  43. private OrgMapper orgMapper;
  44. @Autowired
  45. private OrgConvert orgConvert;
  46. @Autowired
  47. private CommonService commonService;
  48. @Autowired
  49. OrgWhMapper orgWhMapper;
  50. @Autowired
  51. OrgMacMapper orgMacMapper;
  52. /**
  53. * @desc : 条件查询
  54. * @author : 王英杰
  55. * @date : 2023/1/10 17:19
  56. */
  57. @Pagination
  58. public ResponseResultVO<PageList<OrgResponse>> selectByCond(OrgQuery orgQuery) {
  59. List<OrgResponse> list = orgMapper.selectByCond(orgQuery);
  60. if (orgQuery.getParentId() != null) { //说明传这个id就是部门档案查三级部门以下有没有子级
  61. for (OrgResponse item : list) {
  62. OrgQuery qry = new OrgQuery();
  63. qry.setParentId( item.getOrgId());
  64. item.setItemDataLength(orgMapper.countByCond(qry));
  65. }
  66. }
  67. return super.mergeListWithCount(orgQuery, list,
  68. orgMapper.countByCond(orgQuery));
  69. }
  70. /**
  71. * @desc : 条件查询
  72. * @author : 王英杰
  73. * @date : 2023/1/10 17:19
  74. */
  75. @Pagination
  76. public ResponseResultVO<List<OrgResponse>> selectByCondTree(OrgQuery orgQuery) {
  77. List<OrgResponse> list = new ArrayList<>();
  78. list = orgMapper.selectByCondTree(orgQuery);
  79. if (orgQuery.getParentId() != null) { //说明传这个id就是部门档案查三级部门以下有没有子级
  80. for (OrgResponse item : list) {
  81. OrgQuery qry = new OrgQuery();
  82. qry.setParentId( item.getOrgId());
  83. item.setItemDataLength(orgMapper.countByCond(qry));
  84. }
  85. }
  86. return ResponseResultUtil.success(list);
  87. }
  88. /**
  89. * @desc : 通过ID查询 带出对应的 组织资金账户 以及组织仓库
  90. * @author : 王英杰
  91. * @date : 2023/2/29 10:40
  92. */
  93. @Pagination
  94. public ResponseResultVO getById(String id) {
  95. Org orgResponse = orgMapper.selectById(id);
  96. orgResponse.setWarehouseBeanList(orgWhMapper.selectByCond(new OrgWh().setOrgId(id)));
  97. orgResponse.setMacBeanList(orgMacMapper.selectByCond(new OrgMac().setOrgId(id)));
  98. return ResponseResultUtil.success(orgResponse);
  99. }
  100. /**
  101. * @desc : 微信小程序 查询选择部门数据
  102. * @author : 宋扬
  103. * @date : 2023/2/29 10:40
  104. */
  105. @Pagination
  106. public ResponseResultVO<List<OrgResponse>> selectChooseOrg( OrgQuery orgQuery) {
  107. if(orgQuery.getOrgId()!=null){
  108. Org org = orgMapper.selectById(orgQuery.getOrgId()); //查出上级部门的 层级代码
  109. orgQuery.setLevelCode(org.getLevelCode());
  110. orgQuery.setFilterFlag("ok");
  111. }
  112. return ResponseResultUtil.success(orgMapper.selectChooseOrg(orgQuery));
  113. }
  114. /**
  115. * @desc : 新建组织机构
  116. * @author : 王英杰
  117. * @date : 2024/2/27 9:17
  118. */
  119. @Transactional(
  120. rollbackFor = {Exception.class}
  121. )
  122. public ResponseResultVO<?> insert(OrgVO orgVO) {
  123. // 转化实体
  124. Org organization = orgConvert.convertToPo(orgVO);
  125. Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.ORG.getName(), true);
  126. // 获取编码和主键UuId
  127. organization.setOrgId(codeMap.get("outId").toString());
  128. organization.setOrgCode(codeMap.get("outNote").toString());
  129. //查询 本次要加的 部门的 父级下 最大的DisplayNo 然后加1 就是现在要加的DisplayNo
  130. Map<String, Object> param = new HashMap<>();
  131. param.put("otherCond", "parent_id = #{parentID} ::uuid");
  132. param.put("parentId",organization.getParentId());
  133. organization.setDisplayNo(commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORG ,param));
  134. if (organization.getParentId() != null) {
  135. Org org = orgMapper.selectById(organization.getParentId());
  136. //插入TOPid
  137. organization.setTopId(org.getTopId());
  138. }
  139. // 插入组织部门数据
  140. super.insert(organization);
  141. //执行函数
  142. orgMapper.resetLevelOrg(new Org().setTopId(organization.getTopId()).setCpId(organization.getCpId()));
  143. // 添加组织仓库
  144. if (orgVO.getWarehouseList() != null && orgVO.getWarehouseList().size() > 0) {
  145. for (Map<String, Object> map : orgVO.getWarehouseList()) {
  146. // 获取显示顺序
  147. Map<String, Object> paramOrgWh=new HashMap<>();
  148. paramOrgWh.put("noFlgValid",true);
  149. Integer orgWhDisplayNo = commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORGWH,paramOrgWh);
  150. OrgWh orgWh = new OrgWh();
  151. orgWh.setOrgId(organization.getOrgId()).setWhId(map.get("whId").toString()).setDisplayNo(orgWhDisplayNo)
  152. .setFlgDefault(Boolean.parseBoolean(map.get("ownerFlag").toString()));
  153. orgWhMapper.insert(orgWh);
  154. }
  155. }
  156. // 添加组织资金账户
  157. if (orgVO.getMacList() != null && orgVO.getMacList().size() > 0) {
  158. for (Map<String, Object> map : orgVO.getMacList()) {
  159. // 获取显示顺序
  160. Map<String, Object> paramOrgMac=new HashMap<>();
  161. paramOrgMac.put("noFlgValid",true);
  162. Integer orgMacDisplayNo = commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORGMAC,paramOrgMac);
  163. OrgMac orgMac=new OrgMac();
  164. orgMac.setOrgId(organization.getOrgId()).setMacId(map.get("macId").toString()).setDisplayNo(orgMacDisplayNo)
  165. .setFlgDefault(Boolean.parseBoolean(map.get("ownerFlag").toString()));
  166. orgMacMapper.insert(orgMac);
  167. }
  168. }
  169. return ResponseResultUtil.success();
  170. // return result == 1 ? ResponseResultUtil.success(organization) :
  171. // ResponseResultUtil.error(ResponseCodeEnum.INSERT_FAIL);
  172. }
  173. /**
  174. * @desc : 新建组织机构
  175. * @author : 王英杰
  176. * @date : 2024/2/27 9:17
  177. */
  178. @Transactional(
  179. rollbackFor = {Exception.class}
  180. )
  181. public ResponseResultVO<?> insertFeignOrg(OrgVO orgVO) {
  182. // 转化实体
  183. Org organization = orgConvert.convertToPo(orgVO);
  184. // 获取显示顺序
  185. Map<String, Object> codeMap = commonService.getUniqueNoteCode(
  186. Constant.docNameConstant.ORG.getName(),orgVO.getCpId(), true);
  187. // 获取编码和主键UuId
  188. organization.setDisplayNo(0);
  189. organization.setOrgId(codeMap.get("outId").toString());
  190. organization.setOrgCode(codeMap.get("outNote").toString());
  191. // 插入组织部门数据
  192. super.insert(organization);
  193. //执行函数
  194. // orgMapper.resetLevelOrg(new Org().setTopId(organization.getParentId()).setCpId(organization.getCpId()));
  195. return ResponseResultUtil.success(organization);
  196. }
  197. /**
  198. * @desc : 编辑方法
  199. * @author : 宋扬
  200. * @date : 2024/3/22 17:15
  201. */
  202. @Transactional(
  203. rollbackFor = {Exception.class}
  204. )
  205. public ResponseResultVO<Boolean> update(OrgVO orgVO) {
  206. // 转化实体
  207. Org org = orgConvert.convertToPo(orgVO);
  208. // 修改组织机构
  209. super.update(org, new UpdateWrapper<Org>().lambda().eq(Org::getOrgId,
  210. UUID.fromString(org.getOrgId())));
  211. if (orgVO.getParentId() != null) {
  212. Org org_ = orgMapper.selectById(orgVO.getParentId());
  213. //插入TOPid
  214. org.setTopId(org_.getTopId());
  215. }
  216. //执行函数
  217. orgMapper.resetLevelOrg(new Org().setTopId(org.getTopId()).setCpId(org.getCpId()));
  218. //删除组织仓库和组织资金账户
  219. orgWhMapper.deleteByOrgId(org.getOrgId());
  220. orgMacMapper.deleteByOrgId(org.getOrgId());
  221. // 添加组织仓库
  222. if (orgVO.getWarehouseList() != null && orgVO.getWarehouseList().size() > 0) {
  223. for (Map<String, Object> map : orgVO.getWarehouseList()) {
  224. // 获取显示顺序
  225. Map<String, Object> paramOrgWh=new HashMap<>();
  226. paramOrgWh.put("noFlgValid",true);
  227. Integer orgWhDisplayNo = commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORGWH,paramOrgWh);
  228. OrgWh orgWh = new OrgWh();
  229. orgWh.setOrgId(org.getOrgId()).setWhId(map.get("whId").toString()).setDisplayNo(orgWhDisplayNo)
  230. .setFlgDefault(Boolean.parseBoolean(map.get("ownerFlag").toString()));
  231. orgWhMapper.insert(orgWh);
  232. }
  233. }
  234. // 添加组织资金账户
  235. if (orgVO.getMacList() != null && orgVO.getMacList().size() > 0) {
  236. for (Map<String, Object> map : orgVO.getMacList()) {
  237. // 获取显示顺序
  238. Map<String, Object> paramOrgMac=new HashMap<>();
  239. paramOrgMac.put("noFlgValid",true);
  240. Integer orgMacDisplayNo = commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORGMAC,paramOrgMac);
  241. OrgMac orgMac=new OrgMac();
  242. orgMac.setOrgId(org.getOrgId()).setMacId(map.get("macId").toString()).setDisplayNo(orgMacDisplayNo)
  243. .setFlgDefault(Boolean.parseBoolean(map.get("ownerFlag").toString()));
  244. orgMacMapper.insert(orgMac);
  245. }
  246. }
  247. return ResponseResultUtil.success();
  248. }
  249. }