ArrangeDutyOperateServiceImpl.java 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662
  1. package cn.com.lzt.arrangedutyoperate.service.impl;
  2. import cn.com.lzt.arrangeduty.service.ArrangeDutyServiceI;
  3. import cn.com.lzt.arrangedutyoperate.dao.ArrangeDutyOperateMiniDao;
  4. import cn.com.lzt.arrangedutyoperate.dao.UserAndUserPersonnelMiniDao;
  5. import cn.com.lzt.arrangedutyoperate.dto.ArrangeDutyOperateDto;
  6. import cn.com.lzt.arrangedutyoperate.dto.UserAndUserPersonnelDto;
  7. import cn.com.lzt.arrangedutyoperate.entity.ArrangeDutyOperateEntity;
  8. import cn.com.lzt.arrangedutyoperate.service.ArrangeDutyOperateServiceI;
  9. import cn.com.lzt.ondutyoperate.entity.OnDutyOperateEntity;
  10. import cn.com.lzt.personnelbasearchivesmanage.service.PersonnelBaseArchivesManageServiceI;
  11. import cn.com.lzt.projarrangedetail.entity.ProjarrangeDetailEntity;
  12. import cn.com.lzt.projarrangedetail.projectarrangecommonmethod.ProjectArrangeCommonMethod;
  13. import cn.com.lzt.projarrangedetail.service.ProjarrangeDetailServiceI;
  14. import cn.com.lzt.projarrangegeneral.entity.ProjArrangeGeneralEntity;
  15. import cn.com.lzt.projarrangegeneral.service.ProjArrangeGeneralServiceI;
  16. import cn.com.lzt.userarrangedetail.entity.UserArrangeDetailEntity;
  17. import org.apache.commons.lang3.StringUtils;
  18. import org.jeecgframework.core.common.model.json.AjaxJson;
  19. import org.jeecgframework.core.common.service.CommonService;
  20. import org.jeecgframework.core.common.service.impl.CommonServiceImpl;
  21. import org.jeecgframework.core.constant.Globals;
  22. import org.jeecgframework.core.util.ApplicationContextUtil;
  23. import org.jeecgframework.core.util.MyBeanUtils;
  24. import org.jeecgframework.core.util.MyClassLoader;
  25. import org.jeecgframework.core.util.StringUtil;
  26. import org.jeecgframework.minidao.pojo.MiniDaoPage;
  27. import org.jeecgframework.web.cgform.enhance.CgformEnhanceJavaInter;
  28. import org.jeecgframework.web.system.pojo.base.DictEntity;
  29. import org.jeecgframework.web.system.pojo.base.TSUser;
  30. import org.jeecgframework.web.system.service.SystemService;
  31. import org.jeecgframework.web.system.service.UserService;
  32. import org.springframework.beans.factory.annotation.Autowired;
  33. import org.springframework.stereotype.Service;
  34. import org.springframework.transaction.annotation.Transactional;
  35. import javax.validation.Validator;
  36. import java.io.Serializable;
  37. import java.util.*;
  38. @Service("arrangeDutyOperateService")
  39. @Transactional
  40. public class ArrangeDutyOperateServiceImpl extends CommonServiceImpl implements ArrangeDutyOperateServiceI {
  41. @Autowired
  42. private SystemService systemService;
  43. @Autowired
  44. private Validator validator;
  45. //班次表
  46. @Autowired
  47. private ArrangeDutyServiceI arrangeDutyService;
  48. //员工基本档案管理
  49. @Autowired
  50. private PersonnelBaseArchivesManageServiceI personnelBaseArchivesManageService;
  51. //公共方法类
  52. @Autowired
  53. private CommonService commonService;
  54. //项目排班详细表
  55. @Autowired
  56. private ProjarrangeDetailServiceI projarrangeDetailService;
  57. @Autowired
  58. UserAndUserPersonnelMiniDao userAndUserPersonnelMiniDao;
  59. @Autowired
  60. ArrangeDutyOperateMiniDao arrangeDutyOperateMiniDao;
  61. //项目排班总览表
  62. @Autowired
  63. private ProjArrangeGeneralServiceI projArrangeGeneralService;
  64. @Autowired
  65. private UserService userService;
  66. public void delete(ArrangeDutyOperateEntity entity) throws Exception{
  67. super.delete(entity);
  68. //执行删除操作增强业务
  69. this.doDelBus(entity);
  70. }
  71. public Serializable save(ArrangeDutyOperateEntity entity) throws Exception{
  72. Serializable t = super.save(entity);
  73. //执行新增操作增强业务
  74. this.doAddBus(entity);
  75. return t;
  76. }
  77. public void saveOrUpdate(ArrangeDutyOperateEntity entity) throws Exception{
  78. super.saveOrUpdate(entity);
  79. //执行更新操作增强业务
  80. this.doUpdateBus(entity);
  81. }
  82. /**
  83. * 新增操作增强业务
  84. * @param t
  85. * @return
  86. */
  87. private void doAddBus(ArrangeDutyOperateEntity t) throws Exception{
  88. //-----------------sql增强 start----------------------------
  89. //-----------------sql增强 end------------------------------
  90. //-----------------java增强 start---------------------------
  91. //-----------------java增强 end-----------------------------
  92. }
  93. /**
  94. * 更新操作增强业务
  95. * @param t
  96. * @return
  97. */
  98. private void doUpdateBus(ArrangeDutyOperateEntity t) throws Exception{
  99. //-----------------sql增强 start----------------------------
  100. //-----------------sql增强 end------------------------------
  101. //-----------------java增强 start---------------------------
  102. //-----------------java增强 end-----------------------------
  103. }
  104. /**
  105. * 删除操作增强业务
  106. * @param id
  107. * @return
  108. */
  109. private void doDelBus(ArrangeDutyOperateEntity t) throws Exception{
  110. //-----------------sql增强 start----------------------------
  111. //-----------------sql增强 end------------------------------
  112. //-----------------java增强 start---------------------------
  113. //-----------------java增强 end-----------------------------
  114. }
  115. private Map<String,Object> populationMap(ArrangeDutyOperateEntity t){
  116. Map<String,Object> map = new HashMap<String,Object>();
  117. map.put("id", t.getId());
  118. map.put("pid", t.getPid());
  119. map.put("pjt_postid", t.getPjtPostId());
  120. map.put("yearmonth", t.getYearmonth());
  121. map.put("shiftid", t.getShiftid());
  122. map.put("userid", t.getUserid());
  123. map.put("runway", t.getRunway());
  124. map.put("deploy_people_num", t.getDeployPeopleNum());
  125. map.put("attendance_cycle", t.getAttendanceCycle());
  126. map.put("create_name", t.getCreateName());
  127. map.put("create_by", t.getCreateBy());
  128. map.put("create_date", t.getCreateDate());
  129. map.put("update_name", t.getUpdateName());
  130. map.put("update_by", t.getUpdateBy());
  131. map.put("update_date", t.getUpdateDate());
  132. map.put("sys_org_code", t.getSysOrgCode());
  133. map.put("sys_company_code", t.getSysCompanyCode());
  134. //map.put("delete_flag", t.getDeleteFlag());
  135. return map;
  136. }
  137. /**
  138. * 替换sql中的变量
  139. * @param sql
  140. * @param t
  141. * @return
  142. */
  143. public String replaceVal(String sql,ArrangeDutyOperateEntity t){
  144. sql = sql.replace("#{id}",String.valueOf(t.getId()));
  145. sql = sql.replace("#{pid}",String.valueOf(t.getPid()));
  146. sql = sql.replace("#{pjt_postid}",String.valueOf(t.getPjtPostId()));
  147. sql = sql.replace("#{yearmonth}",String.valueOf(t.getYearmonth()));
  148. sql = sql.replace("#{shiftid}",String.valueOf(t.getShiftid()));
  149. sql = sql.replace("#{userid}",String.valueOf(t.getUserid()));
  150. sql = sql.replace("#{runway}",String.valueOf(t.getRunway()));
  151. sql = sql.replace("#{deploy_people_num}",String.valueOf(t.getDeployPeopleNum()));
  152. sql = sql.replace("#{attendance_cycle}",String.valueOf(t.getAttendanceCycle()));
  153. sql = sql.replace("#{create_name}",String.valueOf(t.getCreateName()));
  154. sql = sql.replace("#{create_by}",String.valueOf(t.getCreateBy()));
  155. sql = sql.replace("#{create_date}",String.valueOf(t.getCreateDate()));
  156. sql = sql.replace("#{update_name}",String.valueOf(t.getUpdateName()));
  157. sql = sql.replace("#{update_by}",String.valueOf(t.getUpdateBy()));
  158. sql = sql.replace("#{update_date}",String.valueOf(t.getUpdateDate()));
  159. sql = sql.replace("#{sys_org_code}",String.valueOf(t.getSysOrgCode()));
  160. sql = sql.replace("#{sys_company_code}",String.valueOf(t.getSysCompanyCode()));
  161. //sql = sql.replace("#{delete_flag}",String.valueOf(t.getDeleteFlag()));
  162. sql = sql.replace("#{UUID}",UUID.randomUUID().toString());
  163. return sql;
  164. }
  165. /**
  166. * 执行JAVA增强
  167. */
  168. private void executeJavaExtend(String cgJavaType,String cgJavaValue,Map<String,Object> data) throws Exception {
  169. if(StringUtil.isNotEmpty(cgJavaValue)){
  170. Object obj = null;
  171. try {
  172. if("class".equals(cgJavaType)){
  173. //因新增时已经校验了实例化是否可以成功,所以这块就不需要再做一次判断
  174. obj = MyClassLoader.getClassByScn(cgJavaValue).newInstance();
  175. }else if("spring".equals(cgJavaType)){
  176. obj = ApplicationContextUtil.getContext().getBean(cgJavaValue);
  177. }
  178. if(obj instanceof CgformEnhanceJavaInter){
  179. CgformEnhanceJavaInter javaInter = (CgformEnhanceJavaInter) obj;
  180. javaInter.execute("t_bus_arrangeduty_operate",data);
  181. }
  182. } catch (Exception e) {
  183. e.printStackTrace();
  184. throw new Exception("执行JAVA增强出现异常!");
  185. }
  186. }
  187. }
  188. @Override
  189. public MiniDaoPage<UserAndUserPersonnelDto> getUserAndUserPersonnelPage(
  190. UserAndUserPersonnelDto userAndUserPersonnelDto, int page, int rows, String authSql) {
  191. // TODO Auto-generated method stub
  192. return userAndUserPersonnelMiniDao.getUserAndUserPersonnelPage(userAndUserPersonnelDto, page, rows, authSql);
  193. }
  194. @Override
  195. public List<UserAndUserPersonnelDto> getUserAndUserPersonnelNoPage(
  196. UserAndUserPersonnelDto userAndUserPersonnelDto, String authSql) {
  197. // TODO Auto-generated method stub
  198. return userAndUserPersonnelMiniDao.getUserAndUserPersonnelNoPage(userAndUserPersonnelDto, authSql);
  199. }
  200. @Override
  201. public List<UserAndUserPersonnelDto> getOnDutyUserAndUserPersonnelNoPage(
  202. UserAndUserPersonnelDto userAndUserPersonnelDto, String authSql) {
  203. // TODO Auto-generated method stub
  204. return userAndUserPersonnelMiniDao.getOnDutyUserAndUserPersonnelNoPage(userAndUserPersonnelDto, authSql);
  205. }
  206. @Override
  207. public void logicDel(ArrangeDutyOperateEntity arrangeDutyOperate) throws Exception {
  208. super.updateEntitie(arrangeDutyOperate);
  209. //执行更新操作增强业务
  210. this.doUpdateBus(arrangeDutyOperate);
  211. }
  212. @Override
  213. public List<ArrangeDutyOperateDto> getArrangeDutyOperateDtoByPIdYearMonthNoPage(
  214. ArrangeDutyOperateDto arrangeDutyOperateDto, String authSql) {
  215. // TODO Auto-generated method stub
  216. return arrangeDutyOperateMiniDao.getArrangeDutyOperateDtoByPIdYearMonthNoPage(arrangeDutyOperateDto, authSql);
  217. }
  218. @Override
  219. public List<UserAndUserPersonnelDto> getUserIdByPId(
  220. UserAndUserPersonnelDto userAndUserPersonnelDto, String authSql) {
  221. // TODO Auto-generated method stub
  222. return userAndUserPersonnelMiniDao.getUserIdByPId(userAndUserPersonnelDto, authSql);
  223. }
  224. @Override
  225. public List<UserAndUserPersonnelDto> getUserAndUserPersonnelByUserId(
  226. UserAndUserPersonnelDto userAndUserPersonnelDto, String authSql) {
  227. // TODO Auto-generated method stub
  228. return userAndUserPersonnelMiniDao.getUserAndUserPersonnelByUserId(userAndUserPersonnelDto, authSql);
  229. }
  230. @Override
  231. public AjaxJson deleteOperateAndGeneralDetail(ArrangeDutyOperateEntity arrangeDutyOperate,String pid) {
  232. String message = null;
  233. AjaxJson j = new AjaxJson();
  234. arrangeDutyOperate = systemService.getEntity(ArrangeDutyOperateEntity.class, arrangeDutyOperate.getId());
  235. message = "排班操作删除成功";
  236. try{
  237. deleteProjarrangeDetaiAndUserArrangeDetail(arrangeDutyOperate);
  238. this.delete(arrangeDutyOperate);
  239. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  240. }catch(Exception e){
  241. j.setSuccess(false);
  242. e.printStackTrace();
  243. message = "排班操作删除失败";
  244. }
  245. j.setMsg(message);
  246. return j;
  247. }
  248. @Override
  249. public AjaxJson deleteProjarrangeDetaiAndUserArrangeDetail(ArrangeDutyOperateEntity arrangeDutyOperate){
  250. AjaxJson j = new AjaxJson();
  251. String userId=arrangeDutyOperate.getUserid();
  252. String yearmonth=arrangeDutyOperate.getYearmonth();
  253. if(userId!=null&&userId.length()>0){
  254. String[] userIdArr=userId.split(",");
  255. for (int k = 0; k < userIdArr.length; k++) {
  256. //判断值班操作表中有无此数据,有的话也要删除
  257. StringBuffer hql = new StringBuffer(" from OnDutyOperateEntity t where t.yearmonth=? ");
  258. List<OnDutyOperateEntity> onDutyOperateEntityList = findHql(hql.toString(),yearmonth);
  259. for (int i = 0; i < onDutyOperateEntityList.size(); i++) {
  260. List<String> onDutyOperateUserIdList=ProjectArrangeCommonMethod.extractIdListByComma(onDutyOperateEntityList.get(i).getUserid());
  261. if(onDutyOperateUserIdList.contains(userIdArr[k])){
  262. //删除值操作班表
  263. commonService.delete(onDutyOperateEntityList.get(i));
  264. }
  265. }
  266. //根据用户员工id查询项目排班详细表数据t_bus_projarrange_detail
  267. hql = new StringBuffer(" from ProjarrangeDetailEntity t where t.userid =? and t.yearmonth=? ");
  268. List<ProjarrangeDetailEntity> projarrangeDetailEntityList = findHql(hql.toString(),userIdArr[k],yearmonth);
  269. for (int i = 0; i < projarrangeDetailEntityList.size(); i++) {
  270. /*ProjArrangeGeneralEntity projArrangeGeneralEntity=new ProjArrangeGeneralEntity();
  271. hql = new StringBuffer(" from ProjArrangeGeneralEntity t where 1=1 ");
  272. hql.append(" and t.yearmonth =? and t.belongUnitid=? ");
  273. List<ProjArrangeGeneralEntity> projArrangeGeneralEntityList = projArrangeGeneralService.findHql(hql.toString()
  274. , yearmonth,arrangeDutyOperate.getPid());
  275. if(projArrangeGeneralEntityList.size()!=0){
  276. projArrangeGeneralEntity=projArrangeGeneralEntityList.get(0);
  277. if(projArrangeGeneralEntityList.get(0).getPeopleQuantity()>=2){
  278. projArrangeGeneralEntity.setPeopleQuantity(projArrangeGeneralEntity.getPeopleQuantity()-1);
  279. j=saveProjArrangeGeneral(projArrangeGeneralEntity);
  280. }else if(projArrangeGeneralEntityList.get(0).getPeopleQuantity()==1){//没有排班人数,则删除项目排班总览表的此数据
  281. commonService.delete(projArrangeGeneralEntity);
  282. }
  283. }*/
  284. //根据项目排班详细表的主键id查询员工排班详情表t_bus_user_arrange_detail
  285. hql = new StringBuffer(" from UserArrangeDetailEntity t where t.projarrangeDetailid =? ");
  286. List<UserArrangeDetailEntity> userArrangeDetailEntityList = arrangeDutyService.findHql(hql.toString(),projarrangeDetailEntityList.get(i).getId());
  287. if(userArrangeDetailEntityList.size()>0){
  288. //删除员工排班详情表
  289. commonService.deleteAllEntitie(userArrangeDetailEntityList);
  290. }
  291. }
  292. if(projarrangeDetailEntityList.size()>0){
  293. //删除项目排班详细表
  294. commonService.deleteAllEntitie(projarrangeDetailEntityList);
  295. }
  296. }
  297. }
  298. return j;
  299. }
  300. @Override
  301. public AjaxJson saveArrangeDutyOperate(ArrangeDutyOperateEntity arrangeDutyOperate,String sign,String arrangeDutyOperateId){
  302. String message = null;
  303. AjaxJson j = new AjaxJson();
  304. message = "";
  305. j=checkArrangeDutyOperate(arrangeDutyOperate,sign);
  306. if(j.getMsg().length()==0){
  307. List<String> arrangeDutyOperateIdList=ProjectArrangeCommonMethod.extractIdListByComma(arrangeDutyOperateId);
  308. if (StringUtil.isNotEmpty(arrangeDutyOperate.getId())) {
  309. ArrangeDutyOperateEntity t = this.get(ArrangeDutyOperateEntity.class, arrangeDutyOperate.getId());
  310. if(t!=null){
  311. try {//数据存在,进行更新操作
  312. //判断是否是已存的id
  313. if(!arrangeDutyOperateIdList.contains(t.getId())){
  314. if(arrangeDutyOperateId!=null&&arrangeDutyOperateId.length()>0){
  315. arrangeDutyOperateId=arrangeDutyOperateId+","+t.getId();
  316. }else{
  317. arrangeDutyOperateId=t.getId();
  318. }
  319. //返回编辑的id,方便月度排班==
  320. Map<String, Object> idMap=new HashMap<String, Object>();
  321. idMap.put("arrangeDutyOperateId",arrangeDutyOperateId );
  322. j.setAttributes(idMap);
  323. //返回编辑的id,方便月度排班==
  324. }
  325. List<String> userIdOldList=new ArrayList<String>();
  326. List<String> userIdNewList=new ArrayList<String>();
  327. for (int i = 0; i < t.getUserid().split(",").length; i++) {
  328. userIdOldList.add(t.getUserid().split(",")[i]);
  329. }
  330. for (int i = 0; i < arrangeDutyOperate.getUserid().split(",").length; i++) {
  331. userIdNewList.add(arrangeDutyOperate.getUserid().split(",")[i]);
  332. }
  333. userIdOldList.removeAll(userIdNewList);
  334. userIdOldList.addAll(userIdNewList);
  335. MyBeanUtils.copyBeanNotNull2Bean(arrangeDutyOperate, t);
  336. this.saveOrUpdate(t);
  337. String deleteUserId="";
  338. for (int i = 0; i < userIdOldList.size(); i++) {
  339. if(deleteUserId.length()!=0){
  340. deleteUserId+=","+userIdOldList.get(i);
  341. }else{
  342. deleteUserId=userIdOldList.get(i);
  343. }
  344. }
  345. arrangeDutyOperate.setUserid(deleteUserId);
  346. deleteProjarrangeDetaiAndUserArrangeDetail(arrangeDutyOperate);
  347. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  348. message = "班次操作更新成功";
  349. } catch (Exception e) {
  350. j.setSuccess(false);
  351. e.printStackTrace();
  352. message = "班次操作更新失败";
  353. }
  354. }else{//数据不存在,进行添加操作
  355. try{
  356. arrangeDutyOperate.setId("");
  357. this.save(arrangeDutyOperate);
  358. if(arrangeDutyOperateId!=null&&arrangeDutyOperateId.length()>0){
  359. arrangeDutyOperateId=arrangeDutyOperateId+","+arrangeDutyOperate.getId();
  360. }else{
  361. arrangeDutyOperateId=arrangeDutyOperate.getId();
  362. }
  363. //返回编辑的id,方便月度排班==
  364. Map<String, Object> idMap=new HashMap<String, Object>();
  365. idMap.put("arrangeDutyOperateId", arrangeDutyOperateId);
  366. j.setAttributes(idMap);
  367. //返回编辑的id,方便月度排班==
  368. systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
  369. message = "班次操作添加成功";
  370. }catch(Exception e){
  371. j.setSuccess(false);
  372. e.printStackTrace();
  373. message = "班次操作添加失败";
  374. }
  375. }
  376. } else {//数据不存在,进行添加操作
  377. try{
  378. // 根据userId判断用户是否已经在排班操作表中存在
  379. String userIds = arrangeDutyOperate.getUserid();
  380. List<String> userNameList = new ArrayList<String>();
  381. List<String> userIdList = new ArrayList<String>();
  382. if(StringUtil.isNotEmpty(userIds)) {
  383. userIdList = Arrays.asList(userIds.split(","));
  384. Set<String> userIdSet = new HashSet<String>();
  385. for(int i = 0; i < userIdList.size(); i++) {
  386. String arrangeDutyOperateByUserIdHql = "from ArrangeDutyOperateEntity where userid like ? and yearmonth = ?";
  387. List<ArrangeDutyOperateEntity> ArrangeDutyOperateEntityList = findHql(arrangeDutyOperateByUserIdHql, "%" + userIdList.get(i) + "%", arrangeDutyOperate.getYearmonth());
  388. if(ArrangeDutyOperateEntityList.size() > 0) {
  389. userIdSet.add(userIdList.get(i));
  390. }
  391. }
  392. //遍历
  393. for (String str : userIdSet) {
  394. TSUser user = userService.get(TSUser.class, str);
  395. userNameList.add(user.getRealName());
  396. }
  397. }
  398. if(userNameList.size() > 0) {
  399. String errorMsg = "员工姓名:";
  400. for(int i = 0; i < userNameList.size(); i++) {
  401. if(i == userNameList.size() - 1) {
  402. errorMsg += userNameList.get(i);
  403. } else {
  404. errorMsg += userNameList.get(i) + ",";
  405. }
  406. }
  407. errorMsg += "该月已经存在排班数据,请重新确认。";
  408. j.setMsg(errorMsg);
  409. Map<String, Object> flgMap = new HashMap<String, Object>();
  410. flgMap.put("flg", "1");
  411. j.setAttributes(flgMap);
  412. return j;
  413. }
  414. if(userIdList.size() > 0) {
  415. List<Map<String,String>> noLeave = arrangeDutyOperateMiniDao.getUserNoLeave(userIdList);
  416. //此排班都离职,则不保存
  417. if(noLeave.size() > 0 && StringUtils.isNotEmpty(noLeave.get(0).get("useridStr"))) {
  418. List<String> userNoleaveList = new ArrayList<String>();
  419. String userStr = noLeave.get(0).get("useridStr");
  420. for(String userid : userIdList) {
  421. if(userStr.indexOf(userid) > -1) {
  422. userNoleaveList.add(userid);
  423. }
  424. }
  425. arrangeDutyOperate.setUserid(StringUtils.join(userNoleaveList,","));
  426. arrangeDutyOperate.setDeployPeopleNum(arrangeDutyOperate.getUserid().split(",").length);
  427. this.save(arrangeDutyOperate);
  428. }
  429. }
  430. if(StringUtils.isNotEmpty(arrangeDutyOperate.getId())){
  431. if(arrangeDutyOperateId!=null&&arrangeDutyOperateId.length()>0){
  432. arrangeDutyOperateId=arrangeDutyOperateId+","+arrangeDutyOperate.getId();
  433. }else{
  434. arrangeDutyOperateId=arrangeDutyOperate.getId();
  435. }
  436. }
  437. //返回编辑的id,方便月度排班==
  438. Map<String, Object> idMap=new HashMap<String, Object>();
  439. idMap.put("arrangeDutyOperateId", arrangeDutyOperateId);
  440. j.setAttributes(idMap);
  441. //返回编辑的id,方便月度排班==
  442. systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
  443. message = "班次操作添加成功";
  444. }catch(Exception e){
  445. j.setSuccess(false);
  446. e.printStackTrace();
  447. message = "班次操作添加失败";
  448. }
  449. }
  450. j.setMsg(message);
  451. }
  452. return j;
  453. }
  454. @Override
  455. public AjaxJson checkArrangeDutyOperate(ArrangeDutyOperateEntity arrangeDutyOperate,String sign){
  456. AjaxJson j = new AjaxJson();
  457. //判断是否在别的项目已经排班,证明是调用,要提示删除
  458. //根据运转方式验证,三班两运转和四班两运转要根据上个月的最后一天是否夜班排班
  459. String message="";
  460. Map<String, Object> failMap=new HashMap<String, Object>();
  461. //获取用户名称
  462. List<DictEntity> baseUserList=systemService.queryDict("t_s_base_user", "id", "realname");
  463. Map<String, String> baseUserMap=new HashMap<String, String>();
  464. for (int i = 0; i < baseUserList.size(); i++) {
  465. baseUserMap.put(baseUserList.get(i).getTypecode(), baseUserList.get(i).getTypename());
  466. }
  467. //用户idList
  468. List<String> arrangeDutyOperateUserIdList = ProjectArrangeCommonMethod.extractIdListByComma(arrangeDutyOperate.getUserid());
  469. for (int k = 0; k < arrangeDutyOperateUserIdList.size(); k++) {
  470. //根据月度,用户id查询项目排班详细表,再用项目id比对,删除其他项目中的数据
  471. ProjarrangeDetailEntity projarrangeDetailEntity=new ProjarrangeDetailEntity();
  472. projarrangeDetailEntity.setUserid(arrangeDutyOperateUserIdList.get(k));
  473. projarrangeDetailEntity.setYearmonth(arrangeDutyOperate.getYearmonth());
  474. //查询项目排班详细表
  475. StringBuffer hql = new StringBuffer(" FROM ProjarrangeDetailEntity pde where pde.yearmonth=? and pde.userid=? ");
  476. List<ProjarrangeDetailEntity> projarrangeDetailEntityList = findHql(hql.toString(),projarrangeDetailEntity.getYearmonth(),projarrangeDetailEntity.getUserid());
  477. if(projarrangeDetailEntityList.size()>0){
  478. for (int i = 0; i < projarrangeDetailEntityList.size(); i++) {
  479. if(!projarrangeDetailEntityList.get(i).getPid().equals(arrangeDutyOperate.getPid())){
  480. failMap.put(projarrangeDetailEntityList.get(i).getUserid(),projarrangeDetailEntityList.get(i).getPid());
  481. }
  482. }
  483. }
  484. }
  485. if(failMap.size()>0){
  486. if(sign.equals("1")){
  487. message="";
  488. for (Map.Entry<String, Object> m:failMap.entrySet()) {
  489. if (message.length()==0) {
  490. message=baseUserMap.get(m.getKey());
  491. }else {
  492. message+=","+baseUserMap.get(m.getKey());
  493. }
  494. }
  495. message+="在其他项目已经有排班("+arrangeDutyOperate.getYearmonth()+")";
  496. j.setMsg(message);
  497. j.setSuccess(false);
  498. }else{
  499. for (Map.Entry<String, Object> m:failMap.entrySet()) {
  500. ArrangeDutyOperateEntity arrangeDutyOperateDelete=new ArrangeDutyOperateEntity();
  501. arrangeDutyOperateDelete.setYearmonth(arrangeDutyOperate.getYearmonth());
  502. arrangeDutyOperateDelete.setUserid(m.getKey());
  503. arrangeDutyOperateDelete.setPid(m.getValue().toString());
  504. deleteProjarrangeDetaiAndUserArrangeDetail(arrangeDutyOperateDelete);
  505. }
  506. j.setMsg("");
  507. }
  508. }else{
  509. j.setMsg(message);
  510. //根据运转方式验证,三班两运转和四班两运转要根据上个月的最后一天是否夜班排班
  511. }
  512. return j;
  513. }
  514. @Override
  515. public AjaxJson saveProjArrangeGeneral(ProjArrangeGeneralEntity projArrangeGeneralEntity){
  516. String message = null;
  517. AjaxJson j = new AjaxJson();
  518. message = "";
  519. if (StringUtil.isNotEmpty(projArrangeGeneralEntity.getId())) {
  520. ProjArrangeGeneralEntity t = projArrangeGeneralService.get(ProjArrangeGeneralEntity.class, projArrangeGeneralEntity.getId());
  521. try {
  522. MyBeanUtils.copyBeanNotNull2Bean(projArrangeGeneralEntity, t);
  523. projArrangeGeneralService.saveOrUpdate(t);
  524. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  525. message = "项目排班总揽更新成功";
  526. } catch (Exception e) {
  527. j.setSuccess(false);
  528. e.printStackTrace();
  529. message = "项目排班总揽更新失败";
  530. }
  531. } else {
  532. try{
  533. projArrangeGeneralService.save(projArrangeGeneralEntity);
  534. systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
  535. message = "项目排班总揽添加成功";
  536. }catch(Exception e){
  537. j.setSuccess(false);
  538. e.printStackTrace();
  539. message = "项目排班总揽添加失败";
  540. }
  541. }
  542. j.setMsg(message);
  543. return j;
  544. }
  545. @Override
  546. public List<ArrangeDutyOperateDto> getArrangeDutyOperateDtoByListId(
  547. ArrangeDutyOperateDto arrangeDutyOperateDto, String authSql) {
  548. // TODO Auto-generated method stub
  549. return arrangeDutyOperateMiniDao.getArrangeDutyOperateDtoByListId(arrangeDutyOperateDto, authSql);
  550. }
  551. @Override
  552. public List<UserAndUserPersonnelDto> getPersonnelAndUser(
  553. UserAndUserPersonnelDto userAndUserPersonnelDto, String authSql) {
  554. // TODO Auto-generated method stub
  555. return userAndUserPersonnelMiniDao.getPersonnelAndUser(userAndUserPersonnelDto, authSql);
  556. }
  557. }