StaffService.java 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. package com.dk.mdm.service.mst;
  2. import com.dk.common.infrastructure.annotaiton.Pagination;
  3. import com.dk.common.infrastructure.constant.Constant;
  4. import com.dk.common.model.pojo.PageList;
  5. import com.dk.common.model.pojo.mst.StaffPurview;
  6. import com.dk.common.model.pojo.mst.StaffRight;
  7. import com.dk.common.response.ResponseCodeEnum;
  8. import com.dk.common.response.ResponseResultUtil;
  9. import com.dk.common.response.ResponseResultVO;
  10. import com.dk.mdm.feign.CompanyFeign;
  11. import com.dk.mdm.infrastructure.convert.mst.StaffConvert;
  12. import com.dk.mdm.infrastructure.util.AuthUtils;
  13. import com.dk.mdm.model.pojo.mst.*;
  14. import com.dk.mdm.mapper.mst.StaffMapper;
  15. import com.dk.common.service.BaseService;
  16. import com.dk.common.mapper.BaseMapper;
  17. import com.dk.mdm.model.query.mst.StaffQuery;
  18. import com.dk.common.model.response.mst.StaffResponse;
  19. import com.dk.common.model.vo.mst.StaffVO;
  20. import com.dk.mdm.service.common.CommonService;
  21. import org.springframework.stereotype.Service;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.transaction.annotation.Transactional;
  24. import org.springframework.util.CollectionUtils;
  25. import javax.annotation.Resource;
  26. import java.util.HashMap;
  27. import java.util.List;
  28. import java.util.Map;
  29. /**
  30. * @author : 姜永辉
  31. * @desc : 员工API接口
  32. * @date : 2023/1/4 9:25
  33. */
  34. @Service
  35. public class StaffService extends BaseService<Staff> {
  36. @Resource
  37. private CompanyFeign companyFeign;
  38. @Override
  39. public BaseMapper<Staff> getRepository() {
  40. return staffMapper;
  41. }
  42. /**
  43. * @desc : 重写主键
  44. * @author : 姜永辉
  45. * @date : 2023/1/9 10:39
  46. */
  47. @Override
  48. public String getPrimaryKey() {
  49. return "staff_id";
  50. }
  51. @Autowired
  52. private StaffMapper staffMapper;
  53. @Autowired
  54. private StaffConvert staffConvert;
  55. @Autowired
  56. private StaffRightService staffRightService;
  57. @Autowired
  58. private StaffPurviewService staffPurviewService;
  59. @Autowired
  60. private CommonService commonService;
  61. @Autowired
  62. private AuthUtils authUtils;
  63. /**
  64. * @desc : 条件查询
  65. * @author : 姜永辉
  66. * @date : 2023/1/9 10:40
  67. */
  68. @Pagination
  69. public ResponseResultVO<PageList<StaffResponse>> selectByCond(StaffQuery staffQuery) {
  70. return super.mergeListWithCount(staffQuery, staffMapper.selectByCond(staffQuery),
  71. staffMapper.countByCond(staffQuery));
  72. }
  73. /**
  74. * @desc : 保存方法
  75. * @author : 姜永辉
  76. * @date : 2023/1/9 10:49
  77. */
  78. @Transactional(
  79. rollbackFor = {Exception.class}
  80. )
  81. public ResponseResultVO<?> insert(StaffVO staffVO) {
  82. // 转化实体
  83. Staff staff = staffConvert.convertToPo(staffVO);
  84. // 校验同一个公司的电话不能重复
  85. StaffQuery staffQuery = new StaffQuery();
  86. staffQuery.setCpId(staff.getCpId());
  87. staffQuery.setStaffPhone(staff.getStaffPhone());
  88. List<StaffResponse> staffResponses = staffMapper.selectByCond(staffQuery);
  89. if (staffResponses != null && staffResponses.size() > 0) {
  90. return ResponseResultUtil.error(ResponseCodeEnum.ERROR_STAFF_PHONE_EXIST);
  91. }
  92. // 获取编码和主键UuId
  93. Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.STAFF.getName(), true);
  94. staff.setStaffId(codeMap.get("outId").toString());
  95. staff.setStaffCode(codeMap.get("outNote").toString());
  96. super.insert(staff);
  97. return ResponseResultUtil.success(staff);
  98. }
  99. /**
  100. * @desc : 保存方法
  101. * @author : 姜永辉
  102. * @date : 2023/1/9 10:49
  103. */
  104. @Transactional(
  105. rollbackFor = {Exception.class}
  106. )
  107. public ResponseResultVO<?> insertFeignStaff(StaffVO staffVO) {
  108. // 转化实体
  109. Staff staff = staffConvert.convertToPo(staffVO);
  110. // 校验同一个公司的电话不能重复
  111. StaffQuery staffQuery = new StaffQuery();
  112. staffQuery.setCpId(staff.getCpId());
  113. staffQuery.setStaffPhone(staff.getStaffPhone());
  114. List<StaffResponse> staffResponses = staffMapper.selectByCond(staffQuery);
  115. if (staffResponses != null && staffResponses.size() > 0) {
  116. return ResponseResultUtil.error(ResponseCodeEnum.ERROR_STAFF_PHONE_EXIST);
  117. }
  118. // 获取编码和主键UuId
  119. Map<String, Object> codeMap = commonService.getUniqueNoteCode(
  120. Constant.docNameConstant.STAFF.getName(), staff.getCpId(), true);
  121. staff.setStaffId(codeMap.get("outId").toString());
  122. staff.setStaffCode(codeMap.get("outNote").toString());
  123. super.insert(staff);
  124. return ResponseResultUtil.success(staff);
  125. }
  126. /**
  127. * @desc : 保存方法-邀请员工的确定
  128. * @author : 姜永辉
  129. * @date : 2023/1/9 10:49
  130. */
  131. @Transactional(rollbackFor = {Exception.class})
  132. public ResponseResultVO<?> insertRequestStaff(StaffVO staffVO) {
  133. // 转化实体
  134. Staff staff = staffConvert.convertToPo(staffVO);
  135. // 校验同一个公司的电话不能重复
  136. StaffQuery staffQuery = new StaffQuery();
  137. staffQuery.setCpId(staff.getCpId());
  138. staffQuery.setStaffPhone(staff.getStaffPhone());
  139. List<StaffResponse> staffResponses = staffMapper.selectByCond(staffQuery);
  140. if (staffResponses != null && staffResponses.size() > 0) {
  141. return ResponseResultUtil.error(ResponseCodeEnum.ERROR_STAFF_PHONE_EXIST);
  142. }
  143. // 获取编码和主键UuId
  144. Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.STAFF.getName(), true);
  145. staff.setStaffId(codeMap.get("outId").toString());
  146. staff.setStaffCode(codeMap.get("outNote").toString());
  147. // 更新 被邀人员的cpid
  148. if (staff.getWxUserId() != null) {
  149. // 更新 被邀请人员的微信用户的cpid 加入公司
  150. Map<String, Object> collectQuery = new HashMap<>();
  151. collectQuery.put("cpId", staff.getCpId());
  152. collectQuery.put("userId", staff.getWxUserId());
  153. companyFeign.updateWxUserCompany(collectQuery);
  154. }
  155. // 插入员工
  156. super.insert(staff);
  157. return ResponseResultUtil.success(staff);
  158. }
  159. /**
  160. * @desc : 编辑方法
  161. * @author : 姜永辉
  162. * @date : 2023/1/9 10:49
  163. */
  164. @Transactional(
  165. rollbackFor = {Exception.class}
  166. )
  167. public ResponseResultVO<Boolean> update(StaffVO staffVO) {
  168. // 转化实体
  169. Staff staff = staffConvert.convertToPo(staffVO);
  170. return super.updateByUuid(staff);
  171. }
  172. /**
  173. * @desc : 保存权限方法
  174. * @author : 姜永辉
  175. * @date : 2023/1/9 10:49
  176. */
  177. @Transactional(
  178. rollbackFor = {Exception.class}
  179. )
  180. public ResponseResultVO<?> saveStaffRight(StaffVO staffVO) {
  181. // 转化实体
  182. Staff staff = staffConvert.convertToPo(staffVO);
  183. staffRightService.delete(staffVO.getStaffId());
  184. for (StaffRight staffRight : staffVO.getStaffRightList()) {
  185. staffRight.setStaffId(staff.getStaffId());
  186. staffRight.setRightType(1);
  187. staffRight.setCpId(staff.getCpId());
  188. }
  189. staffRightService.saveStaffRight(staffVO.getStaffRightList());
  190. return ResponseResultUtil.success();
  191. }
  192. /**
  193. * @desc : 保存权限方法
  194. * @author : 姜永辉
  195. * @date : 2023/1/9 10:49
  196. */
  197. @Transactional(
  198. rollbackFor = {Exception.class}
  199. )
  200. public ResponseResultVO<?> saveStaffPurview(StaffVO staffVO) {
  201. // 转化实体
  202. Staff staff = staffConvert.convertToPo(staffVO);
  203. for (StaffPurview staffRight : staffVO.getStaffPurviewList()) {
  204. staffRight.setStaffId(staff.getStaffId());
  205. staffRight.setCpId(staff.getCpId());
  206. }
  207. staffPurviewService.saveStaffPurview(staffVO.getStaffPurviewList());
  208. return ResponseResultUtil.success();
  209. }
  210. /**
  211. * @desc : 员工离职
  212. * @author : 姜永辉
  213. * @date : 2023/2/13 13:45
  214. */
  215. @Transactional(
  216. rollbackFor = {Exception.class}
  217. )
  218. public ResponseResultVO<Boolean> dimission(StaffVO staffVO) {
  219. return ResponseResultUtil.success();
  220. }
  221. /**
  222. * @desc : 导入员工
  223. * @author : 姜永辉
  224. * @date : 2023/3/1 14:40
  225. */
  226. @Transactional(
  227. rollbackFor = {Exception.class}
  228. )
  229. public ResponseResultVO<Boolean> importStaffList(List<StaffVO> list) {
  230. if (CollectionUtils.isEmpty(list) || list.size() == 0) {
  231. return ResponseResultUtil.error(ResponseCodeEnum.INSERT_FAIL);
  232. }
  233. return ResponseResultUtil.success();
  234. }
  235. }