AttendanceWarnMsgServiceImpl.java 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451
  1. package cn.com.lzt.attendancewarnmsg.service.impl;
  2. import java.io.Serializable;
  3. import java.math.BigDecimal;
  4. import java.text.SimpleDateFormat;
  5. import java.util.ArrayList;
  6. import java.util.Calendar;
  7. import java.util.Date;
  8. import java.util.HashMap;
  9. import java.util.HashSet;
  10. import java.util.List;
  11. import java.util.Map;
  12. import java.util.UUID;
  13. import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
  14. import org.jeecgframework.core.common.service.impl.CommonServiceImpl;
  15. import org.jeecgframework.core.constant.Globals;
  16. import org.jeecgframework.core.util.ApplicationContextUtil;
  17. import org.jeecgframework.core.util.DataUtils;
  18. import org.jeecgframework.core.util.ListUtils;
  19. import org.jeecgframework.core.util.MyClassLoader;
  20. import org.jeecgframework.core.util.StringUtil;
  21. import org.jeecgframework.core.util.oConvertUtils;
  22. import org.jeecgframework.minidao.pojo.MiniDaoPage;
  23. import org.jeecgframework.web.cgform.enhance.CgformEnhanceJavaInter;
  24. import org.jeecgframework.web.system.pojo.base.TSBaseUser;
  25. import org.jeecgframework.web.system.pojo.base.TSDepart;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.stereotype.Service;
  28. import org.springframework.transaction.annotation.Transactional;
  29. import cn.com.lzt.attendancewarnmsg.dao.AttendanceWarnMsgMinidao;
  30. import cn.com.lzt.attendancewarnmsg.dto.AttendanceWarnMsgDto;
  31. import cn.com.lzt.attendancewarnmsg.dto.ProjectAbnormalDetailDto;
  32. import cn.com.lzt.attendancewarnmsg.entity.AttendanceWarnMsgEntity;
  33. import cn.com.lzt.attendancewarnmsg.service.AttendanceWarnMsgServiceI;
  34. import cn.com.lzt.attendancewarnmsgdetail.entity.AttendanceWarnMsgDetailEntity;
  35. import cn.com.lzt.common.push.JPushProcessor;
  36. import cn.com.lzt.projarrangedetail.entity.ProjarrangeDetailEntity;
  37. import cn.com.lzt.userattendancedetail.dto.AttendanceDetailJsonObj;
  38. import cn.com.lzt.userattendancedetail.dto.UserAttendanceDetailDto;
  39. import cn.com.lzt.userattendancedetail.service.UserAttendanceDetailServiceI;
  40. import cn.com.lzt.userattendancetotal.entity.UserAttendanceTotalEntity;
  41. @Service("attendanceWarnMsgService")
  42. @Transactional
  43. public class AttendanceWarnMsgServiceImpl extends CommonServiceImpl implements AttendanceWarnMsgServiceI {
  44. @Autowired
  45. AttendanceWarnMsgMinidao attendanceWarnMsgMinidao;
  46. @Autowired
  47. UserAttendanceDetailServiceI userAttendanceDetailService;
  48. @Autowired
  49. private JPushProcessor pushProcessor;
  50. public void delete(AttendanceWarnMsgEntity entity) throws Exception{
  51. super.delete(entity);
  52. //执行删除操作增强业务
  53. this.doDelBus(entity);
  54. }
  55. public Serializable save(AttendanceWarnMsgEntity entity) throws Exception{
  56. Serializable t = super.save(entity);
  57. //执行新增操作增强业务
  58. this.doAddBus(entity);
  59. return t;
  60. }
  61. public void saveOrUpdate(AttendanceWarnMsgEntity entity) throws Exception{
  62. super.saveOrUpdate(entity);
  63. //执行更新操作增强业务
  64. this.doUpdateBus(entity);
  65. }
  66. /**
  67. * 新增操作增强业务
  68. * @param t
  69. * @return
  70. */
  71. private void doAddBus(AttendanceWarnMsgEntity t) throws Exception{
  72. //-----------------sql增强 start----------------------------
  73. //-----------------sql增强 end------------------------------
  74. //-----------------java增强 start---------------------------
  75. //-----------------java增强 end-----------------------------
  76. }
  77. /**
  78. * 更新操作增强业务
  79. * @param t
  80. * @return
  81. */
  82. private void doUpdateBus(AttendanceWarnMsgEntity t) throws Exception{
  83. //-----------------sql增强 start----------------------------
  84. //-----------------sql增强 end------------------------------
  85. //-----------------java增强 start---------------------------
  86. //-----------------java增强 end-----------------------------
  87. }
  88. /**
  89. * 删除操作增强业务
  90. * @param id
  91. * @return
  92. */
  93. private void doDelBus(AttendanceWarnMsgEntity t) throws Exception{
  94. //-----------------sql增强 start----------------------------
  95. //-----------------sql增强 end------------------------------
  96. //-----------------java增强 start---------------------------
  97. //-----------------java增强 end-----------------------------
  98. }
  99. private Map<String,Object> populationMap(AttendanceWarnMsgEntity t){
  100. Map<String,Object> map = new HashMap<String,Object>();
  101. map.put("id", t.getId());
  102. map.put("msg_type", t.getMsgType());
  103. map.put("msg_title", t.getMsgTitle());
  104. map.put("msg_content", t.getMsgContent());
  105. map.put("send_status", t.getSendStatus());
  106. map.put("org_id", t.getOrgId());
  107. map.put("create_date", t.getCreateDate());
  108. map.put("send_time", t.getSendTime());
  109. map.put("user_id", t.getUserId());
  110. return map;
  111. }
  112. /**
  113. * 替换sql中的变量
  114. * @param sql
  115. * @param t
  116. * @return
  117. */
  118. public String replaceVal(String sql,AttendanceWarnMsgEntity t){
  119. sql = sql.replace("#{id}",String.valueOf(t.getId()));
  120. sql = sql.replace("#{msg_type}",String.valueOf(t.getMsgType()));
  121. sql = sql.replace("#{msg_title}",String.valueOf(t.getMsgTitle()));
  122. sql = sql.replace("#{msg_content}",String.valueOf(t.getMsgContent()));
  123. sql = sql.replace("#{send_status}",String.valueOf(t.getSendStatus()));
  124. sql = sql.replace("#{org_id}",String.valueOf(t.getOrgId()));
  125. sql = sql.replace("#{create_date}",String.valueOf(t.getCreateDate()));
  126. sql = sql.replace("#{send_time}",String.valueOf(t.getSendTime()));
  127. sql = sql.replace("#{user_id}",String.valueOf(t.getUserId()));
  128. sql = sql.replace("#{UUID}",UUID.randomUUID().toString());
  129. return sql;
  130. }
  131. /**
  132. * 执行JAVA增强
  133. */
  134. private void executeJavaExtend(String cgJavaType,String cgJavaValue,Map<String,Object> data) throws Exception {
  135. if(StringUtil.isNotEmpty(cgJavaValue)){
  136. Object obj = null;
  137. try {
  138. if("class".equals(cgJavaType)){
  139. //因新增时已经校验了实例化是否可以成功,所以这块就不需要再做一次判断
  140. obj = MyClassLoader.getClassByScn(cgJavaValue).newInstance();
  141. }else if("spring".equals(cgJavaType)){
  142. obj = ApplicationContextUtil.getContext().getBean(cgJavaValue);
  143. }
  144. if(obj instanceof CgformEnhanceJavaInter){
  145. CgformEnhanceJavaInter javaInter = (CgformEnhanceJavaInter) obj;
  146. javaInter.execute("t_bus_attendance_warn_msg",data);
  147. }
  148. } catch (Exception e) {
  149. e.printStackTrace();
  150. throw new Exception("执行JAVA增强出现异常!");
  151. }
  152. }
  153. }
  154. @Override
  155. public MiniDaoPage<AttendanceWarnMsgDto> getAttendanceWarnMsgDtoPage(
  156. AttendanceWarnMsgDto attendanceWarnMsgDto, int page, int rows,
  157. String authSql) throws Exception {
  158. // TODO Auto-generated method stub
  159. return attendanceWarnMsgMinidao.getAttendanceWarnMsgDtoPage(attendanceWarnMsgDto, page, rows, authSql);
  160. }
  161. @Override
  162. public void updateAttendanceWarnMsgBytasker(String ymdDatestr ) throws Exception {
  163. if (oConvertUtils.isEmpty( ymdDatestr )) {
  164. ymdDatestr = DataUtils.date2Str(DataUtils.date_sdf);
  165. }
  166. Date ymdDate = DataUtils.str2Date(ymdDatestr, DataUtils.date_sdf);
  167. Calendar calendar =DataUtils.getCalendar();
  168. calendar.setTime(ymdDate);
  169. calendar.add(Calendar.DATE, -1);
  170. Date yesterdayDate = calendar.getTime();
  171. String yearmonth = DataUtils.date2Str(ymdDate,new SimpleDateFormat("yyyy-MM"));
  172. CriteriaQuery cq = new CriteriaQuery(
  173. ProjarrangeDetailEntity.class);
  174. cq.eq("yearmonth", yearmonth);
  175. cq.add();
  176. // 查询当前月份有排班记录的员工
  177. //计算员工当天的考勤预警信息。
  178. List<ProjarrangeDetailEntity> projarrangeDetailEntities = getListByCriteriaQuery( cq, false);
  179. if (!ListUtils.isNullOrEmpty(projarrangeDetailEntities)) {
  180. for (ProjarrangeDetailEntity pjde : projarrangeDetailEntities) {
  181. UserAttendanceTotalEntity userAttendanceTotalEntity = new UserAttendanceTotalEntity();
  182. userAttendanceTotalEntity.setUserId(pjde.getUserid());
  183. userAttendanceTotalEntity.setYearmonth(pjde.getYearmonth());
  184. List<UserAttendanceDetailDto> dtolist = userAttendanceDetailService.getallUsefulField(userAttendanceTotalEntity, null, ymdDate);
  185. saveOrUpdateWarnMsg(pjde,dtolist,ymdDate);
  186. }
  187. }
  188. //查询昨天是夜班的员工, 计算该员工在今天的迟到早退情况。
  189. projarrangeDetailEntities = attendanceWarnMsgMinidao.getSpecialDutyBydateAndDutyType(Globals.DUTYTYPE_yeban115,DataUtils.date2Str(yesterdayDate, DataUtils.date_sdf));
  190. if (!ListUtils.isNullOrEmpty(projarrangeDetailEntities)) {
  191. for (ProjarrangeDetailEntity pjde : projarrangeDetailEntities) {
  192. UserAttendanceTotalEntity userAttendanceTotalEntity = new UserAttendanceTotalEntity();
  193. userAttendanceTotalEntity.setUserId(pjde.getUserid());
  194. userAttendanceTotalEntity.setYearmonth(pjde.getYearmonth());
  195. List<UserAttendanceDetailDto> dtolist = userAttendanceDetailService.getallUsefulField(userAttendanceTotalEntity, null, yesterdayDate);
  196. saveOrUpdateWarnMsg(pjde,dtolist,ymdDate);
  197. }
  198. }
  199. //通过项目维度 统计计算预警消息
  200. List<ProjectAbnormalDetailDto> padtolist = attendanceWarnMsgMinidao.getProjectAbnormalDetail(ymdDatestr);
  201. if (!ListUtils.isNullOrEmpty(padtolist)) {
  202. for (ProjectAbnormalDetailDto dto :padtolist) {
  203. AttendanceWarnMsgEntity msgEntity = new AttendanceWarnMsgEntity();
  204. String msgContent = "";
  205. if (Globals.msg_type_chidao.equals(dto.getMsgtype())) {
  206. msgEntity.setMsgType(dto.getMsgtype());
  207. /*迟到总人数达 <span class= 'redWord '>10 </span>人 已达总人数的 <span class= 'redWord '>20 %</span>*/
  208. msgContent ="迟到总人数达 <span class= 'redWord '>"+dto.getErrorcount()+" </span>人 已达总人数的 <span class= 'redWord '>"+dto.getTotalpercent()+" %</span>";
  209. }
  210. if (Globals.msg_type_kuanggong.equals(dto.getMsgtype())) {
  211. msgEntity.setMsgType(dto.getMsgtype());
  212. /*旷工总人数达 <span class= 'redWord '>5 </span>人 已达总人数的 <span class= 'redWord '>10 %</span>*/
  213. msgContent ="旷工总人数达 <span class= 'redWord '>"+dto.getErrorcount()+" </span>人 已达总人数的 <span class= 'redWord '>"+dto.getTotalpercent()+" %</span>";
  214. }
  215. if (Globals.msg_type_zaotui.equals(dto.getMsgtype())) {
  216. msgEntity.setMsgType(dto.getMsgtype());
  217. /*早退总人数达 <span class= 'redWord '>10 </span>人 已达总人数的 <span class= 'redWord '>20 %</span>*/
  218. msgContent ="早退总人数达 <span class= 'redWord '>"+dto.getErrorcount()+" </span>人 已达总人数的 <span class= 'redWord '>"+dto.getTotalpercent()+" %</span>";
  219. }
  220. if (Globals.msg_type_chidaozaotui.equals(dto.getMsgtype())) {
  221. msgEntity.setMsgType(dto.getMsgtype());
  222. /*早退总人数达 <span class= 'redWord '>10 </span>人 已达总人数的 <span class= 'redWord '>20 %</span>*/
  223. msgContent ="既迟到又早退总人数达 <span class= 'redWord '>"+dto.getErrorcount()+" </span>人 已达总人数的 <span class= 'redWord '>"+dto.getTotalpercent()+" %</span>";
  224. }
  225. if (Globals.msg_type_weidaka.equals(dto.getMsgtype())) {
  226. msgEntity.setMsgType(dto.getMsgtype());
  227. /*早退总人数达 <span class= 'redWord '>10 </span>人 已达总人数的 <span class= 'redWord '>20 %</span>*/
  228. msgContent ="未打卡总人数达 <span class= 'redWord '>"+dto.getErrorcount()+" </span>人 已达总人数的 <span class= 'redWord '>"+dto.getTotalpercent()+" %</span>";
  229. }
  230. if (oConvertUtils.isNotEmpty(msgEntity.getMsgType())) {
  231. String projectname = "";
  232. if (oConvertUtils.isNotEmpty(oConvertUtils.getString(dto.getPid()))) {
  233. TSDepart depart = get(TSDepart.class, dto.getPid());
  234. if (null!=depart) {
  235. projectname =depart.getDepartname();
  236. }
  237. }
  238. msgEntity.setMsgContent(msgContent);
  239. msgEntity.setOrgId(dto.getPid());
  240. msgEntity.setMsgTitle(projectname);
  241. msgEntity.setSendTime(ymdDate);
  242. saveWarnMsg(1,msgEntity);
  243. }
  244. }
  245. }
  246. }
  247. private void saveOrUpdateWarnMsg(ProjarrangeDetailEntity pjde,
  248. List<UserAttendanceDetailDto> dtolist, Date sendDate) throws Exception {
  249. if (!ListUtils.isNullOrEmpty(dtolist)) {
  250. for (UserAttendanceDetailDto dto : dtolist) {
  251. AttendanceWarnMsgEntity msgEntity = new AttendanceWarnMsgEntity();
  252. String msgContent = "";
  253. //如果员工迟到
  254. if (dto.isBelate()) {
  255. msgEntity.setMsgType(Globals.msg_type_chidao);
  256. /*张红 迟到 <span class= 'redWord '>30</span>分钟*/
  257. msgContent ="迟到 <span class= 'redWord '>"+dto.getBelatemins()+"</span>分钟";
  258. }
  259. //如果员工早退
  260. if ( dto.isLeaveEarly()) {
  261. msgEntity.setMsgType(Globals.msg_type_zaotui);
  262. /*李丽 早退 <span class= 'redWord '>30</span>分钟*/
  263. msgContent ="早退 <span class= 'redWord '>"+dto.getLeaveEarlymins()+"</span>分钟";
  264. }
  265. //如果员工迟到+早退
  266. if (dto.isBelate() && dto.isLeaveEarly()) {
  267. msgEntity.setMsgType(Globals.msg_type_chidaozaotui);
  268. /*张红 迟到 <span class= 'redWord '>30</span>分钟*/
  269. msgContent ="迟到 <span class= 'redWord '>"+dto.getBelatemins()+"</span>分钟;"+"早退 <span class= 'redWord '>"+dto.getLeaveEarlymins()+"</span>分钟";
  270. }
  271. //如果员工旷工
  272. if (dto.getAbsenteeism().compareTo(BigDecimal.ZERO)>0) {
  273. /*张三 旷工*/
  274. msgEntity.setMsgType(Globals.msg_type_kuanggong);
  275. msgContent ="旷工";
  276. //+" <span class= 'redWord '>"+dto.getAbsenteeism()+"</span>天";
  277. }
  278. AttendanceDetailJsonObj jsonObj = dto.getJsonObj();
  279. //如果员工未打卡
  280. if (null!=jsonObj&&jsonObj.getNoPunchCard()!=0) {
  281. msgEntity.setMsgType(Globals.msg_type_weidaka);
  282. /*张三 未打卡*/
  283. msgContent ="未打卡";
  284. //+" <span class= 'redWord '>"+dto.getAbsenteeism()+"</span>天";
  285. }
  286. if (oConvertUtils.isNotEmpty(msgEntity.getMsgType())) {
  287. String userrealname = "";
  288. if (oConvertUtils.isNotEmpty(oConvertUtils.getString(dto.getUserid()))) {
  289. TSBaseUser user = get(TSBaseUser.class, dto.getUserid());
  290. if (null!=user) {
  291. userrealname = user.getRealName();
  292. }
  293. }
  294. String projectname = "";
  295. if (oConvertUtils.isNotEmpty(oConvertUtils.getString(dto.getPid()))) {
  296. TSDepart depart = get(TSDepart.class, dto.getPid());
  297. if (null!=depart) {
  298. projectname =depart.getDepartname();
  299. }
  300. }
  301. msgEntity.setMsgContent(userrealname+" "+msgContent);
  302. msgEntity.setUserId(dto.getUserid());
  303. msgEntity.setOrgId(pjde.getPid());
  304. msgEntity.setMsgTitle(projectname);
  305. msgEntity.setSendTime(sendDate);
  306. saveWarnMsg(0,msgEntity);
  307. }
  308. }
  309. }
  310. }
  311. /**
  312. * 保存预警消息
  313. * 先校验某人某天是否有某种类型下的预警消息, 如果没有 则入库 如果有, 则不再入库
  314. * @author hualong.zhao
  315. * @date 2017-12-20
  316. * @param i 表示位 , 0 时 为单个人的预警消息, 1 时 表示项目维度统计的预警消息
  317. * @param msgEntity
  318. * @throws Exception
  319. */
  320. private void saveWarnMsg(int i, AttendanceWarnMsgEntity msgEntity) throws Exception {
  321. CriteriaQuery cq = new CriteriaQuery(AttendanceWarnMsgEntity.class);
  322. if ( i==0) {
  323. cq.eq("userId", msgEntity.getUserId());
  324. cq.add();
  325. }
  326. if ( i==1) {
  327. cq.eq("orgId", msgEntity.getOrgId());
  328. cq.add();
  329. cq.isNull("userId");
  330. cq.add();
  331. }
  332. cq.eq("msgType", msgEntity.getMsgType());
  333. cq.add();
  334. cq.eq("sendTime", msgEntity.getSendTime());
  335. cq.add();
  336. List<AttendanceWarnMsgEntity> msglist = getListByCriteriaQuery( cq, false);
  337. ArrayList<String> userIdList=new ArrayList<String>();
  338. if (ListUtils.isNullOrEmpty(msglist)) {
  339. save(msgEntity);
  340. if ( i==0) {
  341. List<AttendanceWarnMsgDetailEntity> msgdetaillist = new ArrayList<>();
  342. //将msg 发送给项目经理
  343. String pid = msgEntity.getOrgId();
  344. String mngid = null;
  345. TSDepart depart = get(TSDepart.class, pid);
  346. if (null!=depart) {
  347. mngid = depart.getDeptProjManagerid();
  348. }
  349. if (oConvertUtils.isNotEmpty(mngid)) {
  350. AttendanceWarnMsgDetailEntity detailEntity = new AttendanceWarnMsgDetailEntity();
  351. detailEntity.setMsgId(msgEntity.getId());
  352. detailEntity.setReceivedId(mngid);
  353. detailEntity.setReadStatus(Globals.read_status_0);
  354. msgdetaillist.add(detailEntity);
  355. userIdList.add(mngid);
  356. }
  357. // 根据用户userIdList和消息具体类型批量推送
  358. batchSave(msgdetaillist);
  359. pushProcessor.pushCommon(userIdList, Globals.msg_type_3);
  360. }
  361. if (i==1) {
  362. userIdList=new ArrayList<String>();
  363. HashSet<String> useridHashSet = new HashSet<String>();
  364. List<AttendanceWarnMsgDto> msgDtolist = new ArrayList<AttendanceWarnMsgDto>();
  365. //将msg 发送给系统的人事部人员 和管理层人员
  366. List<AttendanceWarnMsgDto> attendanceWarnMsgDtolist = attendanceWarnMsgMinidao.getAllLeaderUserIdList();
  367. if (null==attendanceWarnMsgDtolist) {
  368. attendanceWarnMsgDtolist = new ArrayList<AttendanceWarnMsgDto>();
  369. }
  370. for (AttendanceWarnMsgDto dto: attendanceWarnMsgDtolist) {
  371. if (useridHashSet.contains(dto.getUserId())) {
  372. }else {
  373. msgDtolist.add(dto);
  374. useridHashSet.add(dto.getUserId());
  375. }
  376. }
  377. //将msg 发送给区域管理人员
  378. String orgid = msgEntity.getOrgId();
  379. // 查询当前员工的区域组织机构
  380. TSDepart tsDepart = getQyDepartByorgid(orgid);
  381. if (oConvertUtils.isEmpty(tsDepart)||oConvertUtils.isEmpty(tsDepart.getId())) {
  382. } else{
  383. //根据departid 查询该区域的区域总经理
  384. List<AttendanceWarnMsgDto> attendanceWarnMsgDtos= attendanceWarnMsgMinidao.getAllQYJLUserIdListByOrgid(tsDepart.getId());
  385. for (AttendanceWarnMsgDto dto: attendanceWarnMsgDtos) {
  386. if (useridHashSet.contains(dto.getUserId())) {
  387. }else {
  388. msgDtolist.add(dto);
  389. useridHashSet.add(dto.getUserId());
  390. }
  391. }
  392. }
  393. List<AttendanceWarnMsgDetailEntity> msgdetaillist = new ArrayList<>();
  394. if (!ListUtils.isNullOrEmpty(msgDtolist)) {
  395. for (AttendanceWarnMsgDto dto : msgDtolist) {
  396. AttendanceWarnMsgDetailEntity detailEntity = new AttendanceWarnMsgDetailEntity();
  397. detailEntity.setMsgId(msgEntity.getId());
  398. detailEntity.setReceivedId(dto.getUserId());
  399. detailEntity.setReadStatus(Globals.read_status_0);
  400. msgdetaillist.add(detailEntity);
  401. userIdList.add(dto.getUserId());
  402. }
  403. batchSave(msgdetaillist);
  404. // 根据用户userIdList和消息具体类型批量推送
  405. pushProcessor.pushCommon(userIdList, Globals.msg_type_3);
  406. }
  407. }
  408. }
  409. }
  410. private TSDepart getQyDepartByorgid(String orgid) {
  411. TSDepart tsDepart = get(TSDepart.class, orgid);
  412. if (tsDepart.getOrgType().equals(Globals.org_type_4)) {
  413. return tsDepart;
  414. } else {
  415. TSDepart parentdepart = tsDepart.getTSPDepart();
  416. if (oConvertUtils.isEmpty(parentdepart)||oConvertUtils.isEmpty(parentdepart.getId())) {
  417. return null;
  418. } else {
  419. return getQyDepartByorgid(tsDepart.getTSPDepart().getId());
  420. }
  421. }
  422. }
  423. }