package com.goafanti.techproject.service.impl; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.goafanti.common.constant.AFTConstants; import com.goafanti.common.dao.NoticeMapper; import com.goafanti.common.dao.TechProjectLogMapper; import com.goafanti.common.dao.TechProjectMapper; import com.goafanti.common.dao.UserMapper; import com.goafanti.common.enums.NoticeStatus; import com.goafanti.common.enums.TechProjectStatus; import com.goafanti.common.model.Admin; import com.goafanti.common.model.Notice; import com.goafanti.common.model.TechProject; import com.goafanti.common.model.TechProjectLog; import com.goafanti.common.model.User; import com.goafanti.common.utils.StringUtils; import com.goafanti.core.mybatis.BaseMybatisDao; import com.goafanti.core.mybatis.page.Pagination; import com.goafanti.core.shiro.token.TokenManager; import com.goafanti.techproject.bo.TechProjectClientListBo; import com.goafanti.techproject.bo.TechProjectDetailBo; import com.goafanti.techproject.bo.TechProjectManageListBo; import com.goafanti.techproject.service.TechProjectService; @Service public class TechProjectServiceImpl extends BaseMybatisDao implements TechProjectService { @Autowired private TechProjectMapper techProjectMapper; @Autowired private TechProjectLogMapper techProjectLogMapper; @Autowired private NoticeMapper noticeMapper; @Autowired private UserMapper userMapper; @SuppressWarnings("unchecked") @Override public Pagination listClientTechProject(String uid, Integer pageNo, Integer pageSize) { Map params = new HashMap<>(); params.put("uid", uid); if (pageNo == null || pageNo < 0) { pageNo = 1; } if (pageSize == null || pageSize < 0) { pageSize = 10; } return (Pagination) findPage("findTechProjectClientListByPage", "findTechProjectClientCount", params, pageNo, pageSize); } @Override public int updateTechProject(TechProject t, TechProjectLog log, Date recordTime) { if (null != recordTime && null != log.getState() && null != log.getPrincipal()) { log.setId(UUID.randomUUID().toString()); log.setPid(t.getId()); log.setRecordTime(recordTime); if (TokenManager.getToken() instanceof Admin) { log.setOperator(TokenManager.getAdminId()); } if (TechProjectStatus.getStatus(log.getState()) == TechProjectStatus.DELIVERD) { t.setCreateTime(recordTime); } else if (TechProjectStatus.getStatus(log.getState()) == TechProjectStatus.ACCEPT) { t.setAcceptDate(recordTime); } else if (TechProjectStatus.getStatus(log.getState()) == TechProjectStatus.APPRVOVED) { t.setApprovedDate(recordTime); } if (TechProjectStatus.getStatus(log.getState()) != TechProjectStatus.CIRCULATION) { t.setState(log.getState()); } techProjectLogMapper.insert(log); createNotice(t, log); } return techProjectMapper.updateByPrimaryKeySelective(t); } @Override public void saveTechProject(TechProject techProject, String aid) { techProject.setId(UUID.randomUUID().toString()); Calendar now = Calendar.getInstance(); now.set(Calendar.MILLISECOND, 0); techProject.setRecordTime(now.getTime()); techProject.setState(TechProjectStatus.CREATE.getCode()); techProject.setDeletedSign(0); if (TokenManager.getToken() instanceof Admin) { techProject.setFounder(TokenManager.getAdminId()); } techProjectMapper.insert(techProject); TechProjectLog log = new TechProjectLog(); log.setId(UUID.randomUUID().toString()); log.setPid(techProject.getId()); log.setRecordTime(techProject.getRecordTime()); if (TokenManager.getToken() instanceof Admin) { log.setPrincipal(TokenManager.getAdminId()); } else { log.setPrincipal(aid); } log.setState(TechProjectStatus.CREATE.getCode()); if (TokenManager.getToken() instanceof Admin) { log.setOperator(TokenManager.getAdminId()); } log.setComment(techProject.getDispatchInfo()); techProjectLogMapper.insert(log); createNotice(techProject, log); } @SuppressWarnings("unchecked") @Override public Pagination listManageTechProject(String province, String unitName, Integer pageNo, Integer pageSize) { Map params = new HashMap<>(); if (!TokenManager.hasRole(AFTConstants.SUPERADMIN)) { params.put("principal", TokenManager.getAdminId()); } if (!StringUtils.isBlank(province)) { params.put("province", province); } if (!StringUtils.isBlank(unitName)) { params.put("unitName", unitName); } if (pageNo == null || pageNo < 0) { pageNo = 1; } if (pageSize == null || pageSize < 0) { pageSize = 10; } return (Pagination) findPage("findTechProjectManageListByPage", "findTechProjectManageCount", params, pageNo, pageSize); } @Override public TechProjectDetailBo selectProjectDetail(String pid) { return techProjectMapper.selectProjectDetail(pid); } @Override public int deleteByPrimaryKey(List id) { return techProjectMapper.batchDeleteByPrimaryKey(id); } @Override public TechProject selectByPrimaryKey(String id) { return techProjectMapper.selectByPrimaryKey(id); } private void createNotice(TechProject t, TechProjectLog l) { TechProject info = techProjectMapper.selectByPrimaryKey(t.getId()); Notice n = new Notice(); Calendar now = Calendar.getInstance(); now.set(Calendar.MILLISECOND, 0); n.setId(UUID.randomUUID().toString()); n.setCreateTime(now.getTime()); n.setReaded(0); User u = userMapper.selectByPrimaryKey(t.getUid()); if (null != u) { n.setPid(u.getAid()); } n.setUid(t.getUid()); n.setRid(t.getId()); n.setAid(l.getPrincipal()); n.setContent("编号" + info.getSerialNumber() + " " + TechProjectStatus.getStatus(l.getState()).getDesc()); n.setNoticeType(NoticeStatus.TECHPROJECT.getCode()); noticeMapper.insert(n); } }