package com.goafanti.copyright.service.impl; import java.text.ParseException; import java.util.ArrayList; import java.util.Arrays; 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.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.goafanti.common.constant.AFTConstants; import com.goafanti.common.dao.CopyrightInfoMapper; import com.goafanti.common.dao.CopyrightLogMapper; import com.goafanti.common.dao.NoticeMapper; import com.goafanti.common.dao.OrgIntellectualPropertyMapper; import com.goafanti.common.dao.UserMapper; import com.goafanti.common.enums.CopyrightStatus; import com.goafanti.common.enums.IntellectualPropertyType; import com.goafanti.common.enums.NoticeReadStatus; import com.goafanti.common.enums.NoticeStatus; import com.goafanti.common.model.Admin; import com.goafanti.common.model.CopyrightInfo; import com.goafanti.common.model.CopyrightLog; import com.goafanti.common.model.Notice; import com.goafanti.common.model.OrgIntellectualProperty; import com.goafanti.common.model.User; import com.goafanti.copyright.bo.CopyrightInfoDetail; import com.goafanti.copyright.bo.CopyrightInfoSummary; import com.goafanti.copyright.bo.CopyrightLogBO; import com.goafanti.copyright.service.CopyrightInfoService; import com.goafanti.core.mybatis.BaseMybatisDao; import com.goafanti.core.mybatis.page.Pagination; import com.goafanti.core.shiro.token.TokenManager; @Service public class CopyrightInfoServiceImpl extends BaseMybatisDao implements CopyrightInfoService { @Autowired private CopyrightInfoMapper copyrightInfoMapper; @Autowired private CopyrightLogMapper copyrightLogMapper; @Autowired private OrgIntellectualPropertyMapper orgIntellectualPropertyMapper; @Autowired private NoticeMapper noticeMapper; @Autowired private UserMapper userMapper; @Override public CopyrightInfo insert(CopyrightInfo copyrightInfo, String aid) { Calendar now = Calendar.getInstance(); now.set(Calendar.MILLISECOND, 0); copyrightInfo.setCreateTime(now.getTime()); if (TokenManager.getToken() instanceof Admin) { copyrightInfo.setFounder(TokenManager.getAdminId()); } CopyrightLog log = new CopyrightLog(); log.setCid(copyrightInfo.getId()); log.setRecordTime(copyrightInfo.getCreateTime()); log.setComment(copyrightInfo.getComment()); if (TokenManager.getToken() instanceof Admin) { log.setOperator(TokenManager.getAdminId()); } if (TokenManager.getToken() instanceof Admin) { log.setPrincipal(TokenManager.getAdminId()); } else { log.setPrincipal(aid); } log.setStatus(copyrightInfo.getStatus()); copyrightInfoMapper.insertSelective(copyrightInfo); copyrightLogMapper.insertSelective(log); createNotice(copyrightInfo, log); return copyrightInfo; } @Override public void updateByPrimaryKeySelective(CopyrightInfo copyrightInfo, CopyrightLog copyrightLog) { if (copyrightLog.getRecordTime() != null && copyrightLog.getStatus() != null && copyrightLog.getPrincipal() != null) { copyrightLogMapper.insertSelective(copyrightLog); createNotice(copyrightInfo, copyrightLog); if (CopyrightStatus.getStatus(copyrightLog.getStatus()) == CopyrightStatus.ACCEPT) { copyrightInfo.setAcceptTime(copyrightLog.getRecordTime()); } else if (CopyrightStatus.getStatus(copyrightLog.getStatus()) == CopyrightStatus.DELIVERD) { copyrightInfo.setCreateTime(copyrightLog.getRecordTime()); } else if (CopyrightStatus.getStatus(copyrightLog.getStatus()) == CopyrightStatus.AUTHORIZED) { copyrightInfo.setAuthorizedDate(copyrightLog.getRecordTime()); OrgIntellectualProperty o = new OrgIntellectualProperty(); o.setId(UUID.randomUUID().toString()); o.setUid(copyrightInfo.getUid()); o.setPid(copyrightInfo.getId()); o.setDeletedSign(0); o.setIntellectualPropertyNumber(copyrightInfo.getCopyrightNumber()); o.setIntellectualPropertyName(copyrightInfo.getCopyrightName()); o.setCatagory(4); o.setObtainWay(1); o.setAuthorizationNumber(copyrightInfo.getCopyrightNumber()); o.setAuthorizationDate(copyrightInfo.getAuthorizedDate()); o.setEvaluationCategory(1); o.setType(IntellectualPropertyType.COPYRIGHT.getCode()); o.setPropertyRightUrl(copyrightInfo.getCertificateUrl()); orgIntellectualPropertyMapper.insert(o); } else if (CopyrightStatus.getStatus(copyrightLog.getStatus()) == CopyrightStatus.CIRCULATION) { copyrightInfo.setStatus(CopyrightStatus.DELIVERD.getCode()); } } copyrightInfoMapper.updateByPrimaryKeySelective(copyrightInfo); } @Override public int batchDeleteByPrimaryKey(List id) { return copyrightInfoMapper.deleteByPrimaryKeys(id); } @SuppressWarnings("unchecked") @Override public Pagination listCopyrightInfo(String province, String unitName, String copyrightName, CopyrightStatus status, String[] createTime, String[] acceptTime, String[] authTime, Integer pageNo, Integer pageSize) { return (Pagination) findPage("findListByPage", "findListCount", buildListParams(province, unitName, copyrightName, status, createTime, acceptTime, authTime, pageNo, pageSize, null), pageNo, pageSize); } @SuppressWarnings("unchecked") @Override public Pagination listMyCopyrightInfo(String province, String unitName, String copyrightName, CopyrightStatus status, String[] createTime, String[] acceptTime, String[] authTime, Integer pageNo, Integer pageSize, String uid) { return (Pagination) findPage("findListByPage", "findListCount", buildListParams(province, unitName, copyrightName, status, createTime, acceptTime, authTime, pageNo, pageSize, uid), pageNo, pageSize); } private Map buildListParams(String province, String unitName, String copyrightName, CopyrightStatus status, String[] createTime, String[] acceptTime, String[] authTime, Integer pageNo, Integer pageSize, String uid) { Map params = new HashMap<>(); if (TokenManager.getAdminToken() != null && !TokenManager.hasRole(AFTConstants.SUPERADMIN)) { params.put("principal", TokenManager.getAdminId()); } if (StringUtils.isNotBlank(province)) { params.put("province", province); } if (StringUtils.isNotBlank(unitName)) { params.put("unitName", unitName); } if (StringUtils.isNotBlank(uid)) { params.put("unitId", uid); } if (StringUtils.isNotBlank(copyrightName)) { params.put("copyrightName", copyrightName); } if (status != CopyrightStatus.OTHER) { params.put("status", status.getCode()); } if (createTime != null) { try { if (createTime.length > 0 && StringUtils.isNotBlank(createTime[0])) { params.put("createStartTime", DateUtils.parseDate(createTime[0], AFTConstants.YYYYMMDDHHMMSS)); } if (createTime.length > 1 && StringUtils.isNotBlank(createTime[1])) { params.put("createEndTime", DateUtils.addDays(DateUtils.parseDate(createTime[1], AFTConstants.YYYYMMDDHHMMSS), 1)); } } catch (ParseException e) { } } if (acceptTime != null) { try { if (acceptTime.length > 0 && StringUtils.isNotBlank(acceptTime[0])) { params.put("acceptStartTime", DateUtils.parseDate(acceptTime[0], AFTConstants.YYYYMMDDHHMMSS)); } if (acceptTime.length > 1 && StringUtils.isNotBlank(acceptTime[1])) { params.put("acceptEndTime", DateUtils.addDays(DateUtils.parseDate(acceptTime[1], AFTConstants.YYYYMMDDHHMMSS), 1)); } } catch (ParseException e) { } } if (authTime != null) { try { if (authTime.length > 0 && StringUtils.isNotBlank(authTime[0])) { params.put("authStartTime", DateUtils.parseDate(authTime[0], AFTConstants.YYYYMMDDHHMMSS)); } if (authTime.length > 1 && StringUtils.isNotBlank(authTime[1])) { params.put("authEndTime", DateUtils.addDays(DateUtils.parseDate(authTime[1], AFTConstants.YYYYMMDDHHMMSS), 1)); } } catch (ParseException e) { } } return params; } @Override public CopyrightInfo selectByPrimaryKey(String id) { return copyrightInfoMapper.selectByPrimaryKey(id); } @Override public CopyrightInfoDetail findByPrimaryKey(String id) { return copyrightInfoMapper.findByPrimaryKey(id); } @Override public List findLogsByPrimaryKey(String id) { return copyrightLogMapper.findByCopyrightId(id); } @Override public void updateByPrimaryKey(CopyrightInfo copyrightInfo) { copyrightInfoMapper.updateByPrimaryKey(copyrightInfo); } @Override public int batchCirculation(String[] ids, String recordTimeFormattedDate, CopyrightLog cl) { Date recordTime = null; try { recordTime = DateUtils.parseDate(recordTimeFormattedDate, AFTConstants.YYYYMMDDHHMMSS); } catch (ParseException e) { } cl.setRecordTime(recordTime); List log = new ArrayList(); List list = copyrightInfoMapper.selectByPrimaryKeys(Arrays.asList(ids)); if (null != list && list.size() > 0) { for (CopyrightInfo copyrightInfo : list) { CopyrightLog copyrightLog = new CopyrightLog(); BeanUtils.copyProperties(cl, copyrightLog); copyrightLog.getId(); copyrightLog.setCid(copyrightInfo.getId()); copyrightLog.setOperator(TokenManager.getAdminId()); log.add(copyrightLog); if (CopyrightStatus.CIRCULATION.getCode() != copyrightLog.getStatus()) { copyrightInfo.setStatus(copyrightLog.getStatus()); copyrightInfoMapper.updateByPrimaryKeySelective(copyrightInfo); } createNotice(copyrightInfo, copyrightLog); } return copyrightLogMapper.batchInsert(log); } return 0; } private void createNotice(CopyrightInfo c, CopyrightLog l) { CopyrightInfo info = copyrightInfoMapper.selectByPrimaryKey(c.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(NoticeReadStatus.UNREAD.getCode()); User u = userMapper.selectByPrimaryKey(c.getUid()); if (null != u) { n.setPid(u.getAid()); } n.setUid(c.getUid()); n.setRid(c.getId()); n.setAid(l.getPrincipal()); n.setContent("编号" + info.getSerialNumber() + " " + CopyrightStatus.getStatus(l.getStatus()).getDesc()); n.setNoticeType(NoticeStatus.COPYRIGHT.getCode()); noticeMapper.insert(n); } }