package com.ghsc.partybuild.service.impl; import com.ghsc.partybuild.vo.AssetinfoVo; import com.ghsc.partybuild.vo.shyk.*; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.ghsc.partybuild.AppConfig; import com.ghsc.partybuild.controller.jsonmodel.RequsetData; import com.ghsc.partybuild.mapper.*; import com.ghsc.partybuild.model.*; import com.ghsc.partybuild.service.*; import com.ghsc.partybuild.util.DateUtils; import com.ghsc.partybuild.util.MapUtils; import com.ghsc.partybuild.util.StringUtils; import com.ghsc.partybuild.vo.PartyPlanMultiVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.stream.Collectors; /** * 三会一课 * * @author pj */ @Service("shykService") public class SHYKServiceImpl implements SHYKService { @Autowired private DateUtils dateUtils; @Autowired private SHYKCQuery shykcQuery; @Autowired private ShykMeetingMapper shykMeetingMapper; @Autowired private ShykPartyplanMapper partyplanMapper; @Autowired private StringUtils stringUtils; @Autowired private ShykMeetingtopicMapper shykMeetingtopicMapper; @Autowired private ShykMeetinguserMapper shykMeetinguserMapper; @Autowired private DictionaryService dictionaryService; @Autowired private UserService userService; @Autowired private ShykMeetingdecisionMapper shykMeetingdecisionMapper; @Autowired private MessageService messageService; @Autowired private ShykTempuserMapper shykTempuserMapper; @Autowired private MapUtils mapUtils; @Autowired private PartyUserService partyUserService; @Autowired private PartyCQuery partyCquery; @Autowired private AppConfig appConfig; @Autowired private ShykUserevaluateMapper shykUserevaluateMapper; @Autowired private ShykUserevaluateprojectMapper shykUserevaluateprojectMapper; @Autowired private PartyService partyService; @Autowired private ShykMbYtmbMapper shykMbYtmbMapper; @Autowired private ShykMeetingDemocracyreviewMapper shykMeetingDemocracyreviewMapper; @Autowired private ShykMeetingTypeMapper shykMeetingTypeMapper; @Autowired private ShykPartytargetMapper shykPartytargetMapper; /** * @param page * @param rows * @param partyCode * @param meetingName * @param meetingAddress * @param beginTime * @param endTime * @param shykStatus * @param shykType * @param userId * @param myMeeting * @param zzfbType * @param recommendType * @param day * @return */ @Override public PageInfo> getMeetingList(int page, int rows, String partyCode, String meetingName, String meetingAddress, String beginTime, String endTime, Integer shykStatus, List shykType, String userId, Integer myMeeting, String day, String ssdzzdm) { List dicShykStatus = dictionaryService.getDictionaryListByDicTypeKey("shykStatus"); List dicMeetingApproveStatus = dictionaryService.getDictionaryListByDicTypeKey("meetingApproveStatus"); List dicDecisionstatus = dictionaryService.getDictionaryListByDicTypeKey("decisionstatus"); PageHelper.startPage(page, rows, false); List> list = shykcQuery.selectMeetingList(partyCode, meetingName, meetingAddress, beginTime, endTime, shykStatus, shykType, userId, myMeeting, day, page, rows, ssdzzdm); for (HashMap item : list) { if (item.get("SHYKSTATUS") != null) { item.put("SHYKSTATUSNAME", dictionaryService.getDicByKey(Integer.parseInt(item.get("SHYKSTATUS").toString()), dicShykStatus).getDicvalue()); } if (item.get("MEETINGAPPROVESTATUS") != null) { item.put("MEETINGAPPROVESTATUSNAME", dictionaryService.getDicByKey(Integer.parseInt(item.get("MEETINGAPPROVESTATUS").toString()), dicMeetingApproveStatus).getDicvalue()); } if (item.get("DECISIONSTATUS") != null) { item.put("DECISIONSTATUSNAME", dictionaryService.getDicByKey(Integer.parseInt(item.get("DECISIONSTATUS").toString()), dicDecisionstatus).getDicvalue()); } } PageInfo> result = new PageInfo(list); return result; } @Override public PageInfo getMeetingDecisionList(int page, int rows, String meetingId) { PageHelper.startPage(page, rows); ShykMeetingdecisionExample exp = new ShykMeetingdecisionExample(); ShykMeetingdecisionExample.Criteria cri = exp.or(); cri.andMeetingidEqualTo(meetingId); cri.andOperatestateNotEqualTo("D"); //exp.setOrderByClause("createtime ASC"); List list = shykMeetingdecisionMapper.selectByExampleWithBLOBs(exp); PageInfo result = new PageInfo(list); return result; } @Override public PageInfo> getMeetingUserList(int page, int rows, String meetingId) { List dicSigninStatus = dictionaryService.getDictionaryListByDicTypeKey("signinStatus"); List dicCheckinStatus = dictionaryService.getDictionaryListByDicTypeKey("checkinStatus"); List dicApproveStatus = dictionaryService.getDictionaryListByDicTypeKey("approveStatus"); PageHelper.startPage(page, rows); List> list = shykcQuery.selectMeetingUserList(meetingId); for (HashMap item : list) { if (item.get("SIGNINSTATUS") != null) { item.put("SIGNINSTATUSNAME", dictionaryService.getDicByKey(Integer.parseInt(item.get("SIGNINSTATUS").toString()), dicSigninStatus).getDicvalue()); } if (item.get("CHECKINSTATUS") != null) { item.put("CHECKINSTATUSNAME", dictionaryService.getDicByKey(Integer.parseInt(item.get("CHECKINSTATUS").toString()), dicCheckinStatus).getDicvalue()); } if (item.get("APPROVESTATUS") != null) { item.put("APPROVESTATUSNAME", dictionaryService.getDicByKey(Integer.parseInt(item.get("APPROVESTATUS").toString()), dicApproveStatus).getDicvalue()); } } PageInfo> result = new PageInfo(list); return result; } @Override public List getMeetingDemocracyReviewList(String meetingId) { return shykcQuery.selectMeetingDemocracyReviewList(meetingId); } @Override public List getMeetingTypeList(String meetingId) { return shykcQuery.selectMeetingTypeList(meetingId); } @Override public List> getMeetingTopicList(String meetingId) { return shykcQuery.selectMeetingTopicList(meetingId); } @Override public List> getTopicModelListOfChoose(String meetingId, Integer shykType) { List> list = shykcQuery.selectTopicModelListOfChoose(meetingId, shykType); HashMap map = new HashMap(); String mbmc = ""; List> topicList = getMeetingTopicList(meetingId).stream().filter(it -> it.get("MODELID") == null).collect(Collectors.toList()); if (topicList.size() > 0 && topicList.get(0).get("TOPICNAME") != null) { mbmc = topicList.get(0).get("TOPICNAME").toString(); map.put("MEETINGTOPICID", topicList.get(0).get("MEETINGTOPICID").toString()); } map.put("MBMC", mbmc); map.put("ID", ""); list.add(map); return list; } @Override public int saveMeeting(ShykMeetingWithBLOBs model, List topicList, List userList , List democracyreviewList, List typeList , String userId, String userName) throws Exception { int result = 0; ShykMeetingWithBLOBs dbModel = getMeetingById(model.getMeetingid()); if (dbModel == null || (dbModel != null && stringUtils.IsNullOrEmpty(dbModel.getMeetingid()))) { model.setCreatetime(new Date()); model.setCreateuserid(userId); model.setCreateusername(userName); model.setShykstatus(1); model.setOperatestate("A"); model.setOperatetime(new Date()); model.setSyncstate("N"); result = shykMeetingMapper.insert(model); } else { dbModel.setMeetingname(model.getMeetingname()); dbModel.setPartycode(model.getPartycode()); dbModel.setPartyname(model.getPartyname()); dbModel.setMeetingaddress(model.getMeetingaddress()); dbModel.setChairuser(model.getChairuser()); dbModel.setRecorduser(model.getRecorduser()); dbModel.setBegintime(model.getBegintime()); dbModel.setEndtime(model.getEndtime()); dbModel.setIsfirsttopic(model.getIsfirsttopic()); dbModel.setTopiccontent(model.getTopiccontent()); dbModel.setAttenduser(model.getAttenduser()); dbModel.setUpdatetime(new Date()); dbModel.setUpdateuserid(userId); dbModel.setUpdateusername(userName); dbModel.setOperatestate("M"); dbModel.setOperatetime(new Date()); dbModel.setSyncstate("N"); result = shykMeetingMapper.updateByPrimaryKeyWithBLOBs(dbModel); } shykcQuery.deteteMeetingUser(model.getMeetingid()); shykcQuery.deteteMeetingDemocracyreview(model.getMeetingid()); shykcQuery.deteteMeetingType(model.getMeetingid()); userList.forEach(item -> { item.setMeetinguserid(UUID.randomUUID().toString()); item.setMeetingid(model.getMeetingid()); //同步数据 item.setOperatetime(new Date()); item.setOperatestate("A"); item.setSyncstate("N"); shykMeetinguserMapper.insert(item); }); democracyreviewList.forEach(item -> { item.setDemocracyreviewid(UUID.randomUUID().toString()); item.setMeetingid(model.getMeetingid()); item.setCreatetime(new Date()); item.setCreateuserid(userId); shykMeetingDemocracyreviewMapper.insert(item); }); typeList.forEach(item -> { item.setMeetingid(model.getMeetingid()); shykMeetingTypeMapper.insert(item); }); return result; } @Override public int updateMeeting(ShykMeetingWithBLOBs model) { model.setOperatetime(new Date()); model.setOperatestate("M"); model.setSyncstate("N"); return shykMeetingMapper.updateByPrimaryKeyWithBLOBs(model); } @Override public ShykMeetingVo getMeetingById(String id) throws Exception { ShykMeetingWithBLOBs model = shykMeetingMapper.selectByPrimaryKey(id); if (model != null && !stringUtils.IsNullOrEmpty(model.getPartycode())) { model.setPartyname(partyService.getPartyName(model.getPartycode())); } ShykMeetingVo data = mapUtils.map2Obj(mapUtils.objectToMap(model), ShykMeetingVo.class); return data; } @Override public int deleteMeetingById(String meetingId) { shykcQuery.deleteMeetingTopic(meetingId); shykcQuery.deteteMeetingUser(meetingId); shykcQuery.deleteMeetingDecision(meetingId); shykcQuery.deteteMeetingDemocracyreview(meetingId); shykcQuery.deteteMeetingType(meetingId); return shykcQuery.deleteMeeting(meetingId); } @Override public ShykMeetinguser getMeetinguserByUserCode(String meetingId, String userCode) { ShykMeetinguser user = new ShykMeetinguser(); ShykMeetinguserExample uexp = new ShykMeetinguserExample(); ShykMeetinguserExample.Criteria ucri = uexp.or().andMeetingidEqualTo(meetingId).andUsercodeEqualTo(userCode); ucri.andOperatestateNotEqualTo("D"); List list = shykMeetinguserMapper.selectByExample(uexp); if (list.size() > 0) { user = list.get(0); } return user; } @Override public ShykMeetinguser getMeetinguserById(String meetingUserId) { return shykMeetinguserMapper.selectByPrimaryKey(meetingUserId); } @Override public int signinMeeting(String meetingId, String userCode, boolean isSignin, String userRemark, String signinUserCode, String signinUserName) { int count = 0; ShykMeetinguser user = getMeetinguserByUserCode(meetingId, userCode); if (user != null && !stringUtils.IsNullOrEmpty(user.getMeetinguserid())) { user.setSigninstatus(isSignin ? 2 : 3); user.setSigninusercode(signinUserCode); user.setSigninusername(signinUserName); user.setUserremark(userRemark); user.setOperatestate("M"); user.setOperatetime(new Date()); user.setSyncstate("N"); count = shykMeetinguserMapper.updateByPrimaryKey(user); } return count; } @Override public int checkinMeeting(String meetingId, String userCode, String checkinUserCode, String checkinUserName) { int count = 0; ShykMeetinguser user = getMeetinguserByUserCode(meetingId, userCode); if (user != null && !stringUtils.IsNullOrEmpty(user.getMeetinguserid())) { user.setCheckinstatus(1); user.setSigninstatus(2);//有签到默认参加 user.setCheckinusercode(checkinUserCode); user.setCheckinusername(checkinUserName); user.setOperatestate("M"); user.setOperatetime(new Date()); user.setSyncstate("N"); count = shykMeetinguserMapper.updateByPrimaryKey(user); } return count; } @Override public int conveneMeeting(String meetingId, boolean isConvene) throws Exception { int count = 0; ShykMeeting model = getMeetingById(meetingId); model.setShykstatus(isConvene ? 3 : 4); //3会议召开,4会议取消 model.setOperatestate("M"); model.setOperatetime(new Date()); model.setSyncstate("N"); count = shykMeetingMapper.updateByPrimaryKey(model); return count; } @Async @Override public void sendMeetingNotify(String meetingId, String userId, String userName) throws Exception { //删除已发送的通知 messageService.deleteMessageByBusinessId(meetingId, 1); //重新推送通知 ShykMeeting model = getMeetingById(meetingId); ShykMeetinguserExample exp = new ShykMeetinguserExample(); ShykMeetinguserExample.Criteria cri = exp.or(); cri.andMeetingidEqualTo(meetingId); cri.andOperatestateNotEqualTo("D"); List list = shykMeetinguserMapper.selectByExample(exp); for (ShykMeetinguser user : list) { //发起人不需要接收通知 if (!user.getUsercode().equals(userId)) { messageService.iSendMessage(model.getMeetingname(), "", 1, "", meetingId, userId, user.getUsercode()); } } } @Override @Transactional(rollbackFor = Exception.class) public int approveMeeting(List meetingIdList, boolean isPass, String userId, String userName) { int count = 0; ShykMeetingExample exp = new ShykMeetingExample(); ShykMeetingExample.Criteria cri = exp.or(); cri.andMeetingidIn(meetingIdList); //cri.andShykstatusEqualTo(2); List list = shykMeetingMapper.selectByExample(exp); for (ShykMeeting it : list) { it.setMeetingapprovestatus(isPass ? 1 : 0); it.setMeetingapproveusername(userName); it.setMeetingapproveusercode(userId); if (isPass && it.getShykstatus() == 0) { //审核同意,原状态为报备中的才需要更新状态 it.setShykstatus(3);//报备完成 } it.setOperatestate("M"); it.setOperatetime(new Date()); it.setSyncstate("N"); count += shykMeetingMapper.updateByPrimaryKey(it); } /*if (isPass) {//推送通知 for (ShykMeeting it : list) { sendMeetingNotify(it.getMeetingid(), userId, userName); } }*/ return count; } @Override public ShykMeetingdecision getMeetingdecisionById(String id) { return shykMeetingdecisionMapper.selectByPrimaryKey(id); } @Override public int saveMeetingDecision(String meetingId, List decisionList) { shykcQuery.deleteMeetingDecision(meetingId); int result = 0; for (ShykMeetingdecision item : decisionList) { //同步数据 item.setOperatetime(new Date()); item.setOperatestate("A"); item.setSyncstate("N"); result += shykMeetingdecisionMapper.insert(item); } return result; } @Override public int cancelMeeting(String meetingId, String userId, String userName) throws Exception { int count = 0; ShykMeeting model = getMeetingById(meetingId); model.setShykstatus(2); //2会议取消 model.setOperatestate("M"); model.setOperatetime(new Date()); model.setSyncstate("N"); count = shykMeetingMapper.updateByPrimaryKey(model); if (count > 0) { //删除会议通知 messageService.deleteMessageByBusinessId(model.getMeetingid(), 1); //推送会议取消通知 ShykMeetinguserExample exp = new ShykMeetinguserExample(); ShykMeetinguserExample.Criteria cri = exp.or(); cri.andMeetingidEqualTo(meetingId); cri.andOperatestateNotEqualTo("D"); List list = shykMeetinguserMapper.selectByExample(exp); for (ShykMeetinguser user : list) { //发起人不需要接收通知 if (!user.getUsercode().equals(userId)) { String title = model.getMeetingname() + ",会议已取消。"; messageService.iSendMessage(title, title, 3, "", meetingId, userId, user.getUsercode()); } } } return count; } @Override public int saveUserStudy(String meetingId, String userCode, String makeuupstudy, String userId, String userName) { int count = 0; ShykMeetinguser user = getMeetinguserByUserCode(meetingId, userCode); if (user != null && !stringUtils.IsNullOrEmpty(user.getMeetinguserid())) { user.setMakeuupstudy(makeuupstudy); user.setOperatestate("M"); user.setOperatetime(new Date()); user.setSyncstate("N"); count = shykMeetinguserMapper.updateByPrimaryKey(user); } return count; } @Async @Override public void sendMeetingStudyNotify(String meetingId, String userId, String userName) throws Exception { //删除已发送的通知 messageService.deleteMessageByBusinessId(meetingId, 2); //重新推送通知 ShykMeeting model = getMeetingById(meetingId); ShykMeetinguserExample exp = new ShykMeetinguserExample(); ShykMeetinguserExample.Criteria cri = exp.or(); cri.andMeetingidEqualTo(meetingId); cri.andOperatestateNotEqualTo("D"); cri.andSigninstatusNotEqualTo(2);//排除确认参加的 List list = shykMeetinguserMapper.selectByExample(exp); for (ShykMeetinguser user : list) { //发起人不需要接收通知 if (!user.getUsercode().equals(userId)) { messageService.iSendMessage(model.getMeetingname(), "", 2, "", meetingId, userId, user.getUsercode()); } } } @Override public int cancelUserSignin(String meetingId, String userCode, String userId, String userName) { int count = 0; ShykMeetinguser user = getMeetinguserByUserCode(meetingId, userCode); if (user != null && !stringUtils.IsNullOrEmpty(user.getMeetinguserid())) { user.setSigninstatus(1);//未签收 user.setUserremark(""); user.setCheckinstatus(0);//未签到 user.setOperatestate("M"); user.setOperatetime(new Date()); user.setSyncstate("N"); count = shykMeetinguserMapper.updateByPrimaryKey(user); } return count; } @Override public int cancelUserCheckin(String meetingId, String userCode, String userId, String userName) { int count = 0; ShykMeetinguser user = getMeetinguserByUserCode(meetingId, userCode); if (user != null && !stringUtils.IsNullOrEmpty(user.getMeetinguserid())) { user.setCheckinstatus(0);//未签到 user.setUserremark(""); user.setOperatestate("M"); user.setOperatetime(new Date()); user.setSyncstate("N"); count = shykMeetinguserMapper.updateByPrimaryKey(user); } return count; } /** * @Description //TODO 查询历史会议地址 * @Date 14:31 2019/9/12 * @Param [userId:会议发布人] **/ @Override public List> getHistoryAddressList(String userId) { return shykcQuery.selectHistoryAddressList(userId); } @Override public List> getTempUserByPartyCode(String partyCode) { List dicTempUserEnables = dictionaryService.getDictionaryListByDicTypeKey("shyk_tempUserEnable"); ShykTempuserExample exp = new ShykTempuserExample(); String[] states = {"A", "M"}; exp.or().andPartyidEqualTo(partyCode).andOperatestateIn(Arrays.asList(states)); List userlist = shykTempuserMapper.selectByExample(exp); List> mapList = userlist.stream().map(it -> { Map mit = mapUtils.objectToMap(it); Map partyUser = partyUserService.getPartyUserInfoByRybm(it.getUserid()); mit.put("enableName", dictionaryService.getDicByKey(it.getEnable(), dicTempUserEnables).getDicvalue()); mit.put("userName", partyUser.get("XM")); mit.put("mobile", partyUser.get("MOBILE")); mit.put("partyName", partyUser.get("DZZMC")); mit.put("applierName", userService.getUserInfobyId(it.getApplierid()).getName()); mit.put("SZDZBDM", partyUser.get("SZDZBDM")); mit.put("DZZMC", partyUser.get("DZZMC")); mit.put("XBMC", partyUser.get("XBMC")); //mit.put("SZDZBDM",partyUser.get("SZDZBDM")); return mit; }).collect(Collectors.toList()); return mapList; } @Override public Integer delTempUser(String id) { ShykTempuser tempUser = new ShykTempuser(); tempUser.setTempuserid(id); tempUser.setSyncstate("N"); tempUser.setOperatetime(new Date()); tempUser.setOperatestate("D"); return shykTempuserMapper.updateByPrimaryKeySelective(tempUser); } @Override public Integer sendTempUserMsg(Map model) throws Exception { Integer result = 0; CfUsers cfUser = userService.getUserByMobile(model.get("mobile").toString()); if (cfUser.getUserid().length() > 0) { ShykTempuser tempUser = new ShykTempuser(); tempUser.setTempuserid(UUID.randomUUID().toString()); tempUser.setUserid(cfUser.getUserid()); tempUser.setPartyid(model.get("partyid").toString()); tempUser.setApplierid(model.get("applierid").toString()); tempUser.setApplytime(new Date()); tempUser.setEnable(1); tempUser.setOperatetime(new Date()); tempUser.setOperatestate("A"); tempUser.setSyncstate("N"); Map partyUser = partyUserService.getPartyUserInfoByRybm(model.get("applierid").toString()); String msgTitle = "[" + partyUser.get("XM") + "]邀请你临时加入《" + partyUser.get("DZZMC") + "》的会议"; result += messageService.iSendMessage(msgTitle, msgTitle, 5, "", tempUser.getTempuserid(), tempUser.getApplierid(), tempUser.getUserid()); result += shykTempuserMapper.insert(tempUser); } else { throw new Exception("登录账号关联不到人员信息!"); } return result; } @Override public Integer confirmTempUser(String id, Integer etype) { ShykTempuser tempUser = new ShykTempuser(); tempUser.setTempuserid(id); tempUser.setEnable(etype); tempUser.setSyncstate("N"); tempUser.setOperatetime(new Date()); tempUser.setOperatestate("M"); return shykTempuserMapper.updateByPrimaryKeySelective(tempUser); } @Override public PageInfo> getMeetingTotalList(int page, int rows, int year, int quarter, String dzzdm, Integer zzfbType, String ssdzzdm) { List> planList = shykcQuery.selectPlanList(dzzdm, ssdzzdm); List dicPlanType = dictionaryService.getDictionaryListByDicTypeKey("SHYK_PartyPlan"); PageHelper.startPage(page, rows); List> list = shykcQuery.selectMeetingTotalList(year, quarter, dzzdm, zzfbType, ssdzzdm); for (HashMap item : list) { boolean search = true; String partyCode = item.get("DZZDM").toString(); while (search) { String planType = ""; String planTypeName = "/"; List> plan = getPartyPlan(planList, partyCode); if (plan.size() > 0) { switch (item.get("SHYKTYPE").toString()) { case "1"://党员大会 if (plan.get(0).get("PLANTYPE_USER") != null) { planType = plan.get(0).get("PLANTYPE_USER").toString(); } break; case "2"://支委会 if (plan.get(0).get("PLANTYPE_BRANCH") != null) { planType = plan.get(0).get("PLANTYPE_BRANCH").toString(); } break; case "3"://党小组会 if (plan.get(0).get("PLANTYPE_GROUP") != null) { planType = plan.get(0).get("PLANTYPE_GROUP").toString(); } break; case "4"://党课 if (plan.get(0).get("PLANTYPE_CLASS") != null) { planType = plan.get(0).get("PLANTYPE_CLASS").toString(); } break; default: break; } } item.put("PLANTYPE", planType); partyCode = partyCode.substring(0, partyCode.length() - 3); if (!stringUtils.IsNullOrEmpty(planType)) { planTypeName = dictionaryService.getDicByKey(Integer.parseInt(planType), dicPlanType).getDicvalue(); boolean totalWarn = false; Integer firstCount = Integer.parseInt(item.get("MONTH_FIRST").toString()); Integer secondCount = Integer.parseInt(item.get("MONTH_SECOND").toString()); Integer thirdCount = Integer.parseInt(item.get("MONTH_THIRD").toString()); Integer total = firstCount + secondCount + thirdCount; switch (planType) { case "1"://每月一次 item.put("firstWarn", firstCount.compareTo(0) > 0 ? 0 : 1); item.put("secondWarn", secondCount.compareTo(0) > 0 ? 0 : 1); item.put("thirdWarn", thirdCount.compareTo(0) > 0 ? 0 : 1); break; case "2"://每季度一次的 totalWarn = total <= 0; break; case "3"://每半年一次的 totalWarn = ("2".equals(item.get("QUARTER").toString()) || "4".equals(item.get("QUARTER").toString())) && total <= 0; break; case "4"://每年一次的 totalWarn = "4".equals(item.get("QUARTER").toString()) && total <= 0; break; default: break; } item.put("totalWarn", totalWarn ? 1 : 0); } item.put("PLANTYPENAME", planTypeName); /*if (plan.size() > 0 || partyCode.length() < 12) { search = false; }*/ search = false; } } PageInfo> result = new PageInfo(list); return result; } @Override public PageInfo> getPartyPlanList(int page, int rows, String dzzdm, Integer zzfbType) { PageHelper.startPage(page, rows); List> list = shykcQuery.selectPartyPlanList(dzzdm, zzfbType); PageInfo> result = new PageInfo(list); return result; } @Override public Integer savePartyPlan(String partyCode, List targetList, String userId) { ShykPartytargetExample exp = new ShykPartytargetExample(); ShykPartytargetExample.Criteria cri = exp.or(); cri.andPartycodeEqualTo(partyCode); shykPartytargetMapper.deleteByExample(exp); targetList.forEach(item -> { item.setCreatetime(new Date()); item.setPartycode(partyCode); item.setCreateuserid(userId); shykPartytargetMapper.insert(item); }); return targetList.size(); } private List> getPartyPlan(List> planList, String partyCode) { return planList.stream().filter(it -> it.get("PARTYCODE").toString().equals(partyCode)).collect(Collectors.toList()); } @Override public PageInfo> getMyMeetingList(int page, int rows, String userId, String beginTime, String endTime, String day, Integer isEvaluate, Integer shykType, String meetingName, String meetingAddress, String partyCode) { List dicShykType = dictionaryService.getDictionaryListByDicTypeKey("shykType"); List dicShykStatus = dictionaryService.getDictionaryListByDicTypeKey("shykStatus"); List dicMeetingApproveStatus = dictionaryService.getDictionaryListByDicTypeKey("meetingApproveStatus"); List dicDecisionstatus = dictionaryService.getDictionaryListByDicTypeKey("decisionstatus"); PageHelper.startPage(page, rows); List> list = shykcQuery.selectMyMeetingList(userId, beginTime, endTime, day, isEvaluate, shykType, meetingName, meetingAddress, partyCode); for (HashMap item : list) { if (item.get("SHYKTYPE") != null) { item.put("SHYKTYPENAME", dictionaryService.getDicByKey(Integer.parseInt(item.get("SHYKTYPE").toString()), dicShykType).getDicvalue()); } if (item.get("SHYKSTATUS") != null) { item.put("SHYKSTATUSNAME", dictionaryService.getDicByKey(Integer.parseInt(item.get("SHYKSTATUS").toString()), dicShykStatus).getDicvalue()); } if (item.get("MEETINGAPPROVESTATUS") != null) { item.put("MEETINGAPPROVESTATUSNAME", dictionaryService.getDicByKey(Integer.parseInt(item.get("MEETINGAPPROVESTATUS").toString()), dicMeetingApproveStatus).getDicvalue()); } if (item.get("DECISIONSTATUS") != null) { item.put("DECISIONSTATUSNAME", dictionaryService.getDicByKey(Integer.parseInt(item.get("DECISIONSTATUS").toString()), dicDecisionstatus).getDicvalue()); } } PageInfo> result = new PageInfo(list); return result; } @Override public PageInfo> getMeetingTotalListNew(int page, int rows, Integer year, Integer quarter, String dzzdm, String ssdzzdm) { List> dataList = new ArrayList<>(); //计算季度每月开始结束时间 String month1Bt = "", month1Et = "",//第1月 month2Bt = "", month2Et = "",//第2月 month3Bt = "", month3Et = "";//第3月 Integer mBt1 = quarter * 3 - 2; for (Integer m = mBt1; m <= mBt1 + 2; m++) { Date begin = dateUtils.StrToDate(year.toString() + "-" + m.toString() + "-01", "yyyy-MM-dd"); Date end = dateUtils.getDateOfAddMonth(begin, 1); switch ((m + 2) % 3) { case 0: month1Bt = dateUtils.dateToStrFormat(begin, "yyyy-MM-dd"); month1Et = dateUtils.dateToStrFormat(end, "yyyy-MM-dd"); break; case 1: month2Bt = dateUtils.dateToStrFormat(begin, "yyyy-MM-dd"); month2Et = dateUtils.dateToStrFormat(end, "yyyy-MM-dd"); break; case 2: month3Bt = dateUtils.dateToStrFormat(begin, "yyyy-MM-dd"); month3Et = dateUtils.dateToStrFormat(end, "yyyy-MM-dd"); break; default: break; } } List> planList = shykcQuery.selectPlanList(dzzdm, ssdzzdm); //List dic_planType = dictionaryService.getDictionaryListByDicTypeKey("SHYK_PartyPlan"); List zzlbStrList = new ArrayList<>(); zzlbStrList.add("300"); zzlbStrList.add("400"); zzlbStrList.add("500"); PageHelper.startPage(page, rows); List> list = partyCquery.selectPartyList(appConfig.gddwdm, null, null, dzzdm, null, null, null, null, null, null, null, zzlbStrList, ssdzzdm, null, null, null, null, null,null); for (HashMap party : list) { List> totalList = shykcQuery.selectMeetingTotalNew(party.get("DZZDM").toString(), year, quarter, month1Bt, month1Et, month2Bt, month2Et, month3Bt, month3Et); for (Integer type = 1; type <= 4; type++) { HashMap item = (HashMap) party.clone(); String partyCode = item.get("DZZDM").toString(); Integer month1 = 0, month2 = 0, month3 = 0, total = 0, quarter1 = 0, quarter2 = 0, quarter3 = 0, quarter4 = 0, yearCount = 0; Integer shykType = type; String shykTypeName = ""; String planType = ""; String planTypeName = "/"; List> typeData = totalList.stream().filter(it -> it.get("SHYKTYPE").toString().equals(shykType.toString())).collect(Collectors.toList()); List> plan = getPartyPlan(planList, partyCode); if (typeData.size() > 0) { month1 = Integer.parseInt(typeData.get(0).get("MONTH1").toString()); month2 = Integer.parseInt(typeData.get(0).get("MONTH2").toString()); month3 = Integer.parseInt(typeData.get(0).get("MONTH3").toString()); quarter1 = Integer.parseInt(typeData.get(0).get("QUARTERCOUNT1").toString()); quarter2 = Integer.parseInt(typeData.get(0).get("QUARTERCOUNT2").toString()); quarter3 = Integer.parseInt(typeData.get(0).get("QUARTERCOUNT3").toString()); quarter4 = Integer.parseInt(typeData.get(0).get("QUARTERCOUNT4").toString()); yearCount = Integer.parseInt(typeData.get(0).get("YEARCOUNT").toString()); } switch (shykType) { case 1://党员大会 shykTypeName = "党员大会"; if (plan.size() > 0 && plan.get(0).get("PLANTYPE_USER") != null) { planType = plan.get(0).get("PLANTYPE_USER").toString(); } break; case 2://支委会 shykTypeName = "支委会"; if (plan.size() > 0 && plan.get(0).get("PLANTYPE_BRANCH") != null) { planType = plan.get(0).get("PLANTYPE_BRANCH").toString(); } break; case 3://党小组会 shykTypeName = "党小组会"; if (plan.size() > 0 && plan.get(0).get("PLANTYPE_GROUP") != null) { planType = plan.get(0).get("PLANTYPE_GROUP").toString(); } break; case 4://党课 shykTypeName = "党课"; if (plan.size() > 0 && plan.get(0).get("PLANTYPE_CLASS") != null) { planType = plan.get(0).get("PLANTYPE_CLASS").toString(); } break; default: break; } switch (planType) { case "1": planTypeName = "每月一次"; break; case "2": planTypeName = "每季度一次"; break; case "3": planTypeName = "每半年一次"; break; case "4": planTypeName = "每年一次"; break; default: break; } if (!stringUtils.IsNullOrEmpty(planType)) { boolean totalWarn = false; switch (planType) { case "1"://每月一次 total = month1 + month2 + month3; item.put("firstWarn", month1.compareTo(0) > 0 ? 0 : 1); item.put("secondWarn", month2.compareTo(0) > 0 ? 0 : 1); item.put("thirdWarn", month3.compareTo(0) > 0 ? 0 : 1); totalWarn = total < 3; break; case "2"://每季度一次的 total = month1 + month2 + month3; totalWarn = total <= 0; break; case "3"://每半年一次的 if (quarter <= 2) { total = quarter1 + quarter2; } else { total = quarter3 + quarter4; } totalWarn = total <= 0; break; case "4"://每年一次的 total = yearCount; totalWarn = total <= 0; break; default: break; } item.put("totalWarn", totalWarn ? 1 : 0); } item.put("SHYKTYPE", shykType); item.put("SHYKTYPENAME", shykTypeName); item.put("YY", year); item.put("QUARTER", quarter); item.put("MONTH_FIRST", month1); item.put("MONTH_SECOND", month2); item.put("MONTH_THIRD", month3); item.put("PLANTYPENAME", planTypeName); item.put("PLANTYPE", planType); item.put("TOTAL", total); dataList.add(item); } } PageInfo> result = new PageInfo(list); result.setList(dataList); return result; } /** * 会议评价信息 * * @param meetingUserId * @return */ public ShykUserevaluateWithBLOBs getUserevaluateByUserId(String meetingUserId) { ShykUserevaluateWithBLOBs model = new ShykUserevaluateWithBLOBs(); ShykUserevaluateExample example = new ShykUserevaluateExample(); ShykUserevaluateExample.Criteria criteria = example.or(); criteria.andMeetinguseridEqualTo(meetingUserId); List list = shykUserevaluateMapper.selectByExampleWithBLOBs(example); if (list.size() > 0) { model = list.get(0); } return model; } /** * 保存会议评价信息 * * @param model * @param projectList * @param userId * @param userName * @return */ public int saveUserevaluate(ShykUserevaluateWithBLOBs model, List projectList, String userId, String userName) { int result = 0; ShykUserevaluateWithBLOBs dbModel = getUserevaluateByUserId(model.getMeetinguserid()); boolean isExist = (dbModel == null || (dbModel != null && stringUtils.IsNullOrEmpty(dbModel.getUserevaluateid()))); if (isExist) { model.setCreateuserid(userId); model.setCreateusername(userName); model.setCreatetime(new Date()); //同步数据 model.setOperatetime(new Date()); model.setOperatestate("A"); model.setSyncstate("N"); result = shykUserevaluateMapper.insert(model); } else { model.setUpdateuserid(userId); model.setUpdateusername(userName); model.setUpdatetime(new Date()); model.setOperatetime(new Date()); model.setOperatestate("M"); model.setSyncstate("N"); result = shykUserevaluateMapper.updateByPrimaryKeyWithBLOBs(model); } shykcQuery.deleteMeetingEvaluateProject(model.getUserevaluateid()); for (ShykUserevaluateproject project : projectList) { ShykUserevaluateproject dbProjectModel = getUserevaluateprojectById(project.getProjectid()); boolean isExistProject = (dbProjectModel == null || (dbProjectModel != null && stringUtils.IsNullOrEmpty(dbProjectModel.getProjectid()))); if (isExistProject) { project.setProjectid(UUID.randomUUID().toString()); project.setUserevaluateid(model.getUserevaluateid()); project.setCreateuserid(userId); project.setCreateusername(userName); project.setCreatetime(new Date()); //同步数据 project.setOperatetime(new Date()); project.setOperatestate("A"); project.setSyncstate("N"); shykUserevaluateprojectMapper.insert(project); } else { project.setUserevaluateid(model.getUserevaluateid()); project.setUpdateuserid(userId); project.setUpdateusername(userName); project.setUpdatetime(new Date()); project.setOperatetime(new Date()); project.setOperatestate("M"); project.setSyncstate("N"); shykUserevaluateprojectMapper.updateByPrimaryKeyWithBLOBs(project); } } return result; } public ShykUserevaluateproject getUserevaluateprojectById(String projectId) { return shykUserevaluateprojectMapper.selectByPrimaryKey(projectId); } /** * 会议评价项信息 * * @param meetingUserId * @return */ public List> getMeetingEvaluateProjectList(String meetingUserId) { return shykcQuery.selectMeetingEvaluateProjectList(meetingUserId); } @Override public int savePartyPlanMulti(PartyPlanMultiVo dataModel, String dataDzzdm, List targetList, String userId) { int count = 0; List> partyList = partyCquery.selectPartyList(appConfig.gddwdm, null, null, dataDzzdm, dataModel.getPartyType(), null, null, null, null, null, null, null, null, null, null, null, null, null,null); List dzzdms = partyList.stream().map(it -> it.get("DZZDM").toString()).collect(Collectors.toList()); ShykPartytargetExample exp = new ShykPartytargetExample(); ShykPartytargetExample.Criteria cri = exp.or().andPartycodeIn(dzzdms); shykPartytargetMapper.deleteByExample(exp); for (Integer i = 0; i < partyList.size(); i++) { Integer finalI = i; targetList.forEach(item -> { item.setCreatetime(new Date()); item.setPartycode(partyList.get(finalI).get("DZZDM").toString()); item.setCreateuserid(userId); shykPartytargetMapper.insert(item); }); } return partyList.size(); } @Override public ShykMbYtmb getTopicModelById(String id) { return shykMbYtmbMapper.selectByPrimaryKey(id); } @Override public PageInfo> getMeetingListByApp(int page, int rows, String dzzdm, String userId, Integer type, List shykTypeList, String title, String startDate, String endDate) { List dic_shykType = dictionaryService.getDictionaryListByDicTypeKey("shykType"); List dic_shykStatus = dictionaryService.getDictionaryListByDicTypeKey("shykStatus"); List dic_meetingApproveStatus = dictionaryService.getDictionaryListByDicTypeKey("meetingApproveStatus"); PageHelper.startPage(page, rows); List> list = shykcQuery.selectMeetingListByApp(dzzdm, userId, type, shykTypeList, title, startDate, endDate); for (HashMap item : list) { if (item.get("SHYKTYPE") != null) { item.put("SHYKTYPENAME", dictionaryService.getDicByKey(Integer.parseInt(item.get("SHYKTYPE").toString()), dic_shykType).getDicvalue()); } if (item.get("SHYKSTATUS") != null) { item.put("SHYKSTATUSNAME", dictionaryService.getDicByKey(Integer.parseInt(item.get("SHYKSTATUS").toString()), dic_shykStatus).getDicvalue()); } if (item.get("MEETINGAPPROVESTATUS") != null) { item.put("MEETINGAPPROVESTATUSNAME", dictionaryService.getDicByKey(Integer.parseInt(item.get("MEETINGAPPROVESTATUS").toString()), dic_meetingApproveStatus).getDicvalue()); } } PageInfo> result = new PageInfo(list); return result; } @Override public PageInfo> getMeetingPlanTotalList(int page, int rows, String dzzdm, String dzzdmSearch, Integer year, Integer quarter, Integer month) { PageHelper.startPage(page, rows); List> list = shykcQuery.selectMeetingPlanTotalList(dzzdm, dzzdmSearch, year, quarter, month); PageInfo> result = new PageInfo(list); return result; } @Override public PageInfo> getMyMeetingListForApp(int page, int rows, String userId) { List dic_shykType = dictionaryService.getDictionaryListByDicTypeKey("shykType"); List dic_shykStatus = dictionaryService.getDictionaryListByDicTypeKey("shykStatus"); PageHelper.startPage(page, rows); List> list = shykcQuery.selectMyMeetingListForApp(userId); for (HashMap item : list) { if (item.get("SHYKTYPE") != null) { item.put("SHYKTYPENAME", dictionaryService.getDicByKey(Integer.parseInt(item.get("SHYKTYPE").toString()), dic_shykType).getDicvalue()); } if (item.get("SHYKSTATUS") != null) { item.put("SHYKSTATUSNAME", dictionaryService.getDicByKey(Integer.parseInt(item.get("SHYKSTATUS").toString()), dic_shykStatus).getDicvalue()); } } PageInfo> result = new PageInfo(list); return result; } @Override public List getMeetingTargetList() { return shykcQuery.selectMeetingTargetList(); } @Override public ListgetMeetingMonthTotalList(String partyCode, Integer year){ return shykcQuery.selectMeetingMonthTotalList(partyCode,year); } @Override public List selectMeetingStatisticsList(String partyCode, String beginTime, String endTime){ return shykcQuery.selectMeetingStatisticsList(partyCode, beginTime, endTime); } }