package com.bofeng.service; import com.baomidou.mybatisplus.toolkit.IdWorker; import com.bofeng.JwtHelper; import com.bofeng.dao.JmTuangouDao; import com.bofeng.dao.UserOpenMapper; import com.bofeng.dao.YeweihuiSysOwnerMapper; import com.bofeng.dao.YeweihuiUserRoleMapper; import com.bofeng.entity.JmTuangou; import com.bofeng.entity.UserOpen; import com.yvan.PageDb; import org.apache.commons.beanutils.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.lang.reflect.InvocationTargetException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @Service @Transactional(readOnly = true) public class JmTuangouService { @Autowired private BuyService buyService; @Autowired private JmTuangouDao jmTuangouDao; @Autowired private YeweihuiUserRoleMapper yeweihuiUserRoleMapper; @Autowired private YeweihuiSysOwnerMapper yeweihuiSysOwnerMapper; @Autowired private EpiTemplateMessageService epiTemplateMessageService; @Autowired private UserOpenMapper userOpenMapper; @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public Integer tuangouPublish(JmTuangou jmTuangou) { jmTuangou.setJmId(IdWorker.getId()); Long propertyId = yeweihuiUserRoleMapper.queryPropertyIdByUserId(jmTuangou.getUserId()); Long uptownId = yeweihuiSysOwnerMapper.queryUptownIdByUserId(propertyId); jmTuangou.setUptownId(uptownId); jmTuangou.setTgStatus(1); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); Date tgEndTime = new Date(); Date tgDeliverTime = new Date(); try { tgEndTime = sdf.parse(jmTuangou.getEndTime()); tgDeliverTime = sdf.parse(jmTuangou.getDeliverTime()); } catch (ParseException e) { e.printStackTrace(); } jmTuangou.setTgEndTime(tgEndTime); jmTuangou.setTgDeliverTime(tgDeliverTime); jmTuangou.setUserCreate(jmTuangou.getUserId()); jmTuangou.setTimeCreate(new Date()); jmTuangou.setUserUpdate(jmTuangou.getUserId()); jmTuangou.setTimeUpdate(new Date()); Integer success = jmTuangouDao.insert(jmTuangou); if (success == 1) { List userList = userOpenMapper.getUsersByUptownId(uptownId); for (UserOpen user : userList) { epiTemplateMessageService.tuangouSendRemindMessage(user.getUserId(), user.getOpenId(), tgEndTime); } } return success; } @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public Integer whepiTuangouPublish(String uptownIds, JmTuangou jmTuangou) throws InvocationTargetException, IllegalAccessException { Calendar cal = Calendar.getInstance(); int moth = cal.get(Calendar.MONTH) + 1; int date = cal.get(Calendar.DAY_OF_MONTH); List uptownIdArray = Arrays.asList(uptownIds.split(",")); ArrayList tgList = new ArrayList(); for (String uptownId : uptownIdArray) { jmTuangou.setJmId(IdWorker.getId()); jmTuangou.setUptownId(Long.parseLong(uptownId)); jmTuangou.setTgStatus(1); jmTuangou.setRoleType(1); jmTuangou.setUserCreate(JwtHelper.getUserId()); jmTuangou.setUserUpdate(JwtHelper.getUserId()); if (jmTuangou.getTgType() == 1) { jmTuangou.setTgTitle("食蔬采购需求统计(指挥部" + moth + "月" + date + "日)"); } else if (jmTuangou.getTgType() == 2) { jmTuangou.setTgTitle("药品采购需求统计((指挥部" + moth + "月" + date + "日)"); } else if (jmTuangou.getTgType() == 3) { jmTuangou.setTgTitle("医疗服务需求统计((指挥部" + moth + "月" + date + "日)"); } else if (jmTuangou.getTgType() == 4) { jmTuangou.setTgTitle("生活用品需求统计((指挥部" + moth + "月" + date + "日)"); } else if (jmTuangou.getTgType() == 5) { jmTuangou.setTgTitle("其他服务需求统计((指挥部" + moth + "月" + date + "日)"); } jmTuangou.setUserId(JwtHelper.getUserId()); if (jmTuangou.getTgMinNum() == null) { jmTuangou.setTgMinNum(0); } if (jmTuangou.getTgMaxNum() == null) { jmTuangou.setTgMaxNum(0); } JmTuangou jmTuangou1 = new JmTuangou(); BeanUtils.copyProperties(jmTuangou1, jmTuangou); tgList.add(jmTuangou1); } Integer success = jmTuangouDao.insertJmTuangouList(tgList); if (success > 0) { Thread thread=new Thread(new Runnable() { @Override public void run() { for (String uptownId : uptownIdArray) { List userList = userOpenMapper.getUsersByUptownId(Long.parseLong(uptownId)); for (UserOpen user : userList) { epiTemplateMessageService.tuangouSendRemindMessage(user.getUserId(), user.getOpenId(), jmTuangou.getTgEndTime()); } } } }); thread.start(); } return success; } @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public List queryTuangouListByTitle(Long userId, String title) { buyService.updateStatus(); Long propertyId = yeweihuiUserRoleMapper.queryPropertyIdByUserId(userId); Long uptownId = yeweihuiSysOwnerMapper.queryUptownIdByUserId(propertyId); if (title.equals("")) { return jmTuangouDao.queryTuangouListByUptownId(uptownId); } return jmTuangouDao.queryTuangouListByUptownIdAndTitle(uptownId, title); } @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public List queryTuangouMyListByTitle(Long userId, String title) { buyService.updateStatus(); if (title.equals("")) { return jmTuangouDao.queryTuangouListByUserId(userId); } return jmTuangouDao.queryTuangouListByUserIdAndTitle(userId, title); } @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public JmTuangou queryByJmId(Long jmId) { buyService.updateStatus(); return jmTuangouDao.selectJmTuangouByJmId(jmId); } @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public List whepiTuangoulist(Long userId, String uptownIds, String queryProperties, Long status, PageDb pageDb) { buyService.updateStatus(); return jmTuangouDao.whepiTuangoulist(userId, uptownIds, queryProperties, status, pageDb); } @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public Integer updateRemarkByJmId(Long jmId, Long status, String remark) { if (status == 0) { return jmTuangouDao.updateRemarkByJmId(jmId, remark); } if (remark.equals("")) { return jmTuangouDao.updateStatusByJmId(jmId, status); } return jmTuangouDao.updateStatusRemarkByJmId(jmId, status, remark); } @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public JmTuangou selectByUserId() { buyService.updateStatus(); return jmTuangouDao.selectByUserId(); } @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public JmTuangou getSelectOne(Long jmId) { buyService.updateStatus(); return jmTuangouDao.getSelectOne(jmId); } @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public Integer zhihuibuUpdateStatus(Long jmId, Long status) { return jmTuangouDao.updateStatusByJmId(jmId, status); } @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public int updateStatus(Long jmId,Long tgStatus){ return jmTuangouDao.updateStatusByJmId(jmId,tgStatus); } }