| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398 |
- package com.goafanti.contract.service.impl;
- import java.text.ParseException;
- import java.util.ArrayList;
- 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.ContractLogMapper;
- import com.goafanti.common.dao.ContractMapper;
- import com.goafanti.common.dao.CopyrightInfoMapper;
- import com.goafanti.common.dao.NoticeMapper;
- import com.goafanti.common.dao.OrgCognizanceMapper;
- import com.goafanti.common.dao.PatentInfoMapper;
- import com.goafanti.common.dao.TechProjectMapper;
- import com.goafanti.common.dao.UserMapper;
- import com.goafanti.common.enums.ContractBusinessStatus;
- import com.goafanti.common.enums.ContractStatus;
- import com.goafanti.common.enums.DeleteStatus;
- import com.goafanti.common.enums.NoticeReadStatus;
- import com.goafanti.common.enums.NoticeStatus;
- import com.goafanti.common.model.Admin;
- import com.goafanti.common.model.Contract;
- import com.goafanti.common.model.ContractLog;
- import com.goafanti.common.model.Notice;
- import com.goafanti.common.model.User;
- import com.goafanti.common.utils.DateUtils;
- import com.goafanti.common.utils.StringUtils;
- import com.goafanti.contract.bo.ContractClientListBo;
- import com.goafanti.contract.bo.ContractDetail;
- import com.goafanti.contract.bo.ContractManageListBo;
- import com.goafanti.contract.bo.ContractSerialNumber;
- import com.goafanti.contract.service.ContractService;
- import com.goafanti.core.mybatis.BaseMybatisDao;
- import com.goafanti.core.mybatis.page.Pagination;
- import com.goafanti.core.shiro.token.TokenManager;
- @Service
- public class ContractServiceImpl extends BaseMybatisDao<ContractMapper> implements ContractService {
- @Autowired
- private ContractMapper contractMapper;
- @Autowired
- private ContractLogMapper contractLogMapper;
- @Autowired
- private UserMapper userMapper;
- @Autowired
- private NoticeMapper noticeMapper;
- @Autowired
- private PatentInfoMapper patentInfoMapper;
- @Autowired
- private CopyrightInfoMapper copyrightInfoMapper;
- @Autowired
- private OrgCognizanceMapper orgCognizanceMapper;
- @Autowired
- private TechProjectMapper techProjectMapper;
- @SuppressWarnings("unchecked")
- @Override
- public Pagination<ContractManageListBo> getManageList(String contractId, Integer serialNumber, Integer type,
- Integer status, String startDateFormattedDate, String endDateFormattedDate, Integer province,
- String unitName, String uid, Integer pNo, Integer pSize) {
- Map<String, Object> params = disposeParams(contractId, serialNumber, type, status, startDateFormattedDate,
- endDateFormattedDate, province, unitName, uid);
- if (!TokenManager.hasRole(AFTConstants.SUPERADMIN)) {
- params.put("principal", TokenManager.getAdminId());
- }
- if (pNo == null || pNo < 0) {
- pNo = 1;
- }
- if (pSize == null || pSize < 0 || pSize > 10) {
- pSize = 10;
- }
- return (Pagination<ContractManageListBo>) findPage("findManageContractListByPage", "findManageContractCount",
- params, pNo, pSize);
- }
- @SuppressWarnings("unchecked")
- @Override
- public Pagination<ContractClientListBo> getClientList(String contractId, Integer serialNumber, Integer type,
- Integer status, String startDateFormattedDate, String endDateFormattedDate, String completeStartDate,
- String completeEndDate, Integer pNo, Integer pSize) {
- Map<String, Object> params = disposeParams(contractId, serialNumber, type, status, startDateFormattedDate,
- endDateFormattedDate, null, null, TokenManager.getUserId());
- Date lStart = null;
- Date lEnd = null;
- if (!StringUtils.isBlank(completeStartDate)) {
- try {
- lStart = DateUtils.parseDate(startDateFormattedDate, AFTConstants.YYYYMMDD);
- } catch (ParseException e) {
- }
- }
- if (null != lStart) {
- params.put("lStart", lStart);
- }
- if (!StringUtils.isBlank(completeEndDate)) {
- try {
- lEnd = DateUtils.addDays(DateUtils.parseDate(endDateFormattedDate, AFTConstants.YYYYMMDD), 1);
- } catch (ParseException e) {
- }
- }
- if (null != lEnd) {
- params.put("lEnd", lEnd);
- }
- if (pNo == null || pNo < 0) {
- pNo = 1;
- }
- if (pSize == null || pSize < 0) {
- pSize = 10;
- }
- return (Pagination<ContractClientListBo>) findPage("findClientContractListByPage", "findClientContractCount",
- params, pNo, pSize);
- }
- @Override
- public Contract saveManageContract(Contract c) {
- c.setStatus(ContractStatus.CREATE.getCode());
- c = disposeContract(c);
- contractMapper.insert(c);
- contractLogMapper.insert(disposeContractLog(c));
- return c;
- }
- @Override
- public int updateContractByManage(Contract contract) {
- return contractMapper.updateByPrimaryKeySelective(contract);
- }
- @Override
- public void insertManageSubmit(Contract c, String[] principals, String signDateFormattedDate) {
- Date signDate = null;
- if (!StringUtils.isBlank(signDateFormattedDate)) {
- try {
- signDate = DateUtils.parseDate(signDateFormattedDate, AFTConstants.YYYYMMDDHHMMSS);
- } catch (ParseException e) {
- }
- }
- c.setStatus(ContractStatus.SIGN.getCode());
- c.setSignDate(signDate);
- c = disposeContract(c);
- contractMapper.insert(c);
- ContractLog clog = disposeContractLog(c);
- clog.setStatus(ContractStatus.SIGN.getCode());
- clog.setRecordTime(signDate);
- /*
- * ContractLog log = new ContractLog(); log.setCid(c.getId());
- * log.setComment(c.getComment()); log.set
- */
- List<ContractLog> logs = new ArrayList<>();
- List<Notice> notice = new ArrayList<>();
- logs.add(clog);
- for (int i = 0; i < principals.length; i++) {
- ContractLog log = disposeContractLog(c);
- log.setPrincipal(principals[i]);
- log.setStatus(ContractStatus.CIRCULATION.getCode());
- logs.add(log);
- notice.add(createNotice(c, log));
- }
- contractLogMapper.insertBatch(logs);
- noticeMapper.insertBatch(notice);
- }
- @Override
- public ContractDetail selectContractDetail(String id) {
- return contractMapper.selectContractDetail(id);
- }
- @Override
- public Contract selectByPrimaryKey(String id) {
- return contractMapper.selectByPrimaryKey(id);
- }
- @Override
- public int updateByPrimaryKeySelective(Contract contract) {
- return contractMapper.updateByPrimaryKeySelective(contract);
- }
- @Override
- public void updateSubmit(Contract c, String[] principals, String signDateFormattedDate) {
- Date signDate = null;
- if (!StringUtils.isBlank(signDateFormattedDate)) {
- try {
- signDate = DateUtils.parseDate(signDateFormattedDate, AFTConstants.YYYYMMDDHHMMSS);
- } catch (ParseException e) {
- }
- }
- c.setStatus(ContractStatus.SIGN.getCode());
- c.setSignDate(signDate);
- contractMapper.updateByPrimaryKeySelective(c);
-
- ContractLog l = new ContractLog();
- l.setId(UUID.randomUUID().toString());
- l.setCid(c.getId());
- l.setComment(c.getComment());
- l.setOperator(TokenManager.getAdminId());
- l.setPrincipal(TokenManager.getAdminId());
- l.setRecordTime(signDate);
- l.setStatus(ContractStatus.SIGN.getCode());
-
- List<ContractLog> logs = new ArrayList<>();
- List<Notice> notice = new ArrayList<>();
-
- logs.add(l);
-
- for (int i = 0; i < principals.length; i++) {
- ContractLog log = disposeContractLog(c);
- log.setStatus(ContractStatus.CIRCULATION.getCode());
- log.setPrincipal(principals[i]);
- log.setOperator(TokenManager.getAdminId());
- logs.add(log);
- notice.add(createNotice(c, log));
- }
- contractLogMapper.insertBatch(logs);
- noticeMapper.insertBatch(notice);
- }
- @Override
- public List<ContractSerialNumber> selectContractSerialNumber() {
- String principal = null;
- if (!TokenManager.hasRole(AFTConstants.SUPERADMIN)) {
- principal = TokenManager.getAdminId();
- }
- return contractMapper.selectContractSerialNumber(principal);
- }
- @Override
- public int deleteByPrimaryKey(List<String> id) {
- patentInfoMapper.batchDeleteByContractId(id);
- copyrightInfoMapper.batchDeleteByContractId(id);
- orgCognizanceMapper.batchDeleteByContractId(id);
- techProjectMapper.batchDeleteByContractId(id);
- return contractMapper.batchDeleteByPrimaryKey(id);
- }
- @Override
- public Contract saveContract(Contract c) {
- c.setStatus(ContractStatus.CREATE.getCode());
- c.setUid(TokenManager.getUserId());
- c = disposeContract(c);
- contractMapper.insert(c);
- contractLogMapper.insert(disposeContractLog(c));
- return c;
- }
- private ContractLog disposeContractLog(Contract c) {
- ContractLog cl = new ContractLog();
- cl.setId(UUID.randomUUID().toString());
- cl.setComment(c.getComment());
- if (TokenManager.getToken() instanceof Admin) {
- cl.setOperator(c.getFounder());
- cl.setPrincipal(c.getFounder());
- }
- Calendar now = Calendar.getInstance();
- now.set(Calendar.MILLISECOND, 0);
- cl.setRecordTime(now.getTime());
- cl.setStatus(c.getStatus());
- cl.setCid(c.getId());
- return cl;
- }
- private Notice createNotice(Contract c, ContractLog l) {
- Contract info = contractMapper.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() + " " + ContractStatus.getStatus(c.getStatus()).getDesc());
- n.setNoticeType(NoticeStatus.CONTRACT.getCode());
- n.setYear(info.getCognizanceYear());
- return n;
- }
- private Contract disposeContract(Contract c) {
- c.setId(UUID.randomUUID().toString());
- Calendar now = Calendar.getInstance();
- now.set(Calendar.MILLISECOND, 0);
- c.setCreateTime(now.getTime());
- if (TokenManager.getToken() instanceof Admin) {
- c.setFounder(TokenManager.getAdminId());
- }
- c.setPatentStatus(ContractBusinessStatus.UNCREATE.getCode());
- c.setCopyrightStatus(ContractBusinessStatus.UNCREATE.getCode());
- c.setTechProjectStatus(ContractBusinessStatus.UNCREATE.getCode());
- c.setCognizanceStatus(ContractBusinessStatus.UNCREATE.getCode());
- c.setDeletedSign(DeleteStatus.UNDELETE.getCode());
- return c;
- }
- private Map<String, Object> disposeParams(String contractId, Integer serialNumber, Integer type, Integer status,
- String startDateFormattedDate, String endDateFormattedDate, Integer province, String unitName, String uid) {
- Date cStart = null;
- Date cEnd = null;
- Map<String, Object> params = new HashMap<>();
- if (null != serialNumber) {
- params.put("serialNumber", serialNumber);
- }
- if (null != type) {
- params.put("type", type);
- }
- if (null != status) {
- params.put("status", status);
- }
- if (!StringUtils.isBlank(uid)) {
- params.put("uid", uid);
- }
- if (!StringUtils.isBlank(contractId)) {
- params.put("id", contractId);
- }
- if (!StringUtils.isBlank(startDateFormattedDate)) {
- try {
- cStart = DateUtils.parseDate(startDateFormattedDate, AFTConstants.YYYYMMDD);
- } catch (ParseException e) {
- }
- }
- if (null != cStart) {
- params.put("cStart", cStart);
- }
- if (!StringUtils.isBlank(endDateFormattedDate)) {
- try {
- cEnd = DateUtils.addDays(DateUtils.parseDate(endDateFormattedDate, AFTConstants.YYYYMMDD), 1);
- } catch (ParseException e) {
- }
- }
- if (null != cEnd) {
- params.put("cEnd", cEnd);
- }
- if (null != province) {
- params.put("province", province);
- }
- if (!StringUtils.isBlank(unitName)) {
- params.put("unitName", unitName);
- }
- return params;
- }
- @Override
- public Contract findByUidAndYear(String uid, Integer year) {
- return contractMapper.findByUidAndYear(uid, year);
- }
- @Override
- public Contract findLatelyRecordByUid(String uid) {
- return contractMapper.findLatelyRecordByUid(uid);
- }
- }
|