package com.goafanti.cognizance.service.impl; import java.math.BigDecimal; 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.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.goafanti.cognizance.bo.CognizanceBo; import com.goafanti.cognizance.bo.CognizanceCatagoryBo; import com.goafanti.cognizance.bo.CognizanceDetailBo; import com.goafanti.cognizance.bo.CognizanceManageCostBo; import com.goafanti.cognizance.bo.CognizanceOrgInfoBo; import com.goafanti.cognizance.bo.CognizanceResearchCostBo; import com.goafanti.cognizance.bo.CultivationListBo; import com.goafanti.cognizance.bo.LatelyCogRecord; import com.goafanti.cognizance.service.OrgCognizanceService; import com.goafanti.common.constant.AFTConstants; import com.goafanti.common.dao.NoticeMapper; import com.goafanti.common.dao.OrgCognizanceLogMapper; import com.goafanti.common.dao.OrgCognizanceMapper; import com.goafanti.common.dao.OrgCognizanceProportionMapper; import com.goafanti.common.dao.OrganizationIdentityMapper; import com.goafanti.common.enums.CopyrightStatus; import com.goafanti.common.enums.NoticeStatus; import com.goafanti.common.enums.OrgCognizanceStatus; import com.goafanti.common.enums.ProportionStatus; import com.goafanti.common.model.Admin; import com.goafanti.common.model.Notice; import com.goafanti.common.model.OrgCognizance; import com.goafanti.common.model.OrgCognizanceLog; import com.goafanti.common.model.OrgCognizanceProportion; import com.goafanti.common.model.OrganizationIdentity; import com.goafanti.core.mybatis.BaseMybatisDao; import com.goafanti.core.mybatis.page.Pagination; import com.goafanti.core.shiro.token.TokenManager; @Service public class OrgCognizanceServiceImpl extends BaseMybatisDao implements OrgCognizanceService { @Autowired private OrgCognizanceMapper orgCognizanceMapper; @Autowired private OrgCognizanceLogMapper orgCognizanceLogMapper; @Autowired private OrganizationIdentityMapper organizationIdentityMapper; @Autowired private NoticeMapper noticeMapper; @Autowired private OrgCognizanceProportionMapper orgCognizanceProportionMapper; @Override public OrgCognizance insert(OrgCognizance c) { orgCognizanceMapper.insert(c); return c; } @SuppressWarnings("unchecked") @Override public Pagination listCognizance(String uid, String unitName, String locationProvince, Integer pageNo, Integer pageSize) { Map params = new HashMap<>(); if (!TokenManager.hasRole(AFTConstants.SUPERADMIN)) { params.put("principal", TokenManager.getAdminId()); } if (!StringUtils.isBlank(unitName)) { params.put("unitName", unitName); } if (!StringUtils.isBlank(uid)) { params.put("uid", uid); } if (!StringUtils.isBlank(locationProvince)) { params.put("locationProvince", locationProvince); } if (pageNo == null || pageNo < 0) { pageNo = 1; } if (pageSize == null || pageSize < 0) { pageSize = 10; } return (Pagination) findPage("findCognizanceBoByPage", "findCognizanceBoCount", params, pageNo, pageSize); } @Override public CognizanceDetailBo selectCognizanceDetailBo(String uid, String cid, Integer year) { CognizanceDetailBo cog = new CognizanceDetailBo(); CognizanceOrgInfoBo orgInfo = orgCognizanceMapper.selectCognizanceOrgInfoBoByUidAndCid(uid, cid); if (null != orgInfo) { cog.setUid(null == orgInfo.getUid() ? "" : orgInfo.getUid()); cog.setCid(null == orgInfo.getCid() ? "" : orgInfo.getCid()); cog.setUnitName(null == orgInfo.getUnitName() ? "" : orgInfo.getUnitName()); cog.setOrgCode(null == orgInfo.getOrgCode() ? "" : orgInfo.getOrgCode()); cog.setPostalAddress(null == orgInfo.getPostalAddress() ? "" : orgInfo.getPostalAddress()); cog.setContacts(null == orgInfo.getContacts() ? "" : orgInfo.getContacts().toString());// 联系人 cog.setTechnicalField1(null == orgInfo.getTechnicalField1() ? 0 : orgInfo.getTechnicalField1()); cog.setTechnicalField2(null == orgInfo.getTechnicalField2() ? 0 : orgInfo.getTechnicalField2()); cog.setTechnicalField3(null == orgInfo.getTechnicalField3() ? 0 : orgInfo.getTechnicalField3()); cog.setBasicResearchCost( null == orgInfo.getBasicResearchCost() ? new BigDecimal(0) : orgInfo.getBasicResearchCost()); cog.setAccident(null == orgInfo.getAccient() ? 0 : orgInfo.getAccient()); cog.setLargeOrder(null == orgInfo.getLargeOrder() ? 0 : orgInfo.getLargeOrder()); } CognizanceResearchCostBo researchCost = orgCognizanceMapper.selectCognizanceResearchCostBoByUidAndYear(year, uid); if (null != researchCost) { cog.setResearchCost( null == researchCost.getResearchCost() ? new BigDecimal(0) : researchCost.getResearchCost()); cog.setTerritory(null == researchCost.getTerritory() ? new BigDecimal(0) : researchCost.getTerritory()); } CognizanceManageCostBo manageCost = orgCognizanceMapper.selectCognizanceManageCostBoByUidAndYear(year, uid); if (null != manageCost) { cog.setNetAsset1(null == manageCost.getNetAsset1() ? new BigDecimal(0) : manageCost.getNetAsset1()); cog.setNetAsset2(null == manageCost.getNetAsset2() ? new BigDecimal(0) : manageCost.getNetAsset2()); cog.setNetAsset3(null == manageCost.getNetAsset3() ? new BigDecimal(0) : manageCost.getNetAsset3()); cog.setSalesRevenue1( null == manageCost.getSalesRevenue1() ? new BigDecimal(0) : manageCost.getSalesRevenue1()); cog.setSalesRevenue2( null == manageCost.getSalesRevenue2() ? new BigDecimal(0) : manageCost.getSalesRevenue2()); cog.setSalesRevenue3( null == manageCost.getSalesRevenue3() ? new BigDecimal(0) : manageCost.getSalesRevenue3()); cog.setGrossProfit1( null == manageCost.getGrossProfit1() ? new BigDecimal(0) : manageCost.getGrossProfit1()); cog.setGrossProfit2( null == manageCost.getGrossProfit2() ? new BigDecimal(0) : manageCost.getGrossProfit2()); cog.setGrossProfit3( null == manageCost.getGrossProfit3() ? new BigDecimal(0) : manageCost.getGrossProfit3()); } CognizanceCatagoryBo catagory = orgCognizanceMapper.selectCognizanceCatagoryBoByUidAndYear(year, uid); if (null != catagory) { cog.setFirstCatagory(null == catagory.getFirstCatagory() ? 0 : catagory.getFirstCatagory()); cog.setSecondCatagory(null == catagory.getSecondCatagory() ? 0 : catagory.getSecondCatagory()); cog.setFirmTotal(null == catagory.getFirmTotal() ? 0 : catagory.getFirmTotal()); cog.setTechTotal(null == catagory.getTechTotal() ? 0 : catagory.getTechTotal()); cog.setTotalRevenue(null == catagory.getTotalRevenue() ? new BigDecimal(0) : catagory.getTotalRevenue()); } BigDecimal revenue = orgCognizanceMapper.selectLastYearRevenueByUidAndYear(year, uid); //上年度销售收入 cog.setLastYearRevenue(null == revenue ? new BigDecimal(0) : revenue); return cog; } @Override public CognizanceOrgInfoBo selectCognizanceOrgInfoBoByUidAndCid(String uid, String cid) { return orgCognizanceMapper.selectCognizanceOrgInfoBoByUidAndCid(uid, cid); } @Override public CognizanceResearchCostBo selectCognizanceResearchCostBoByUidAndYear(Integer year, String uid) { return orgCognizanceMapper.selectCognizanceResearchCostBoByUidAndYear(year, uid); } @Override public CognizanceManageCostBo selectCognizanceManageCostBoByUidAndYear(Integer year, String uid) { return orgCognizanceMapper.selectCognizanceManageCostBoByUidAndYear(year, uid); } @Override public CognizanceCatagoryBo selectCognizanceCatagoryBoByUidAndYear(Integer year, String uid) { return orgCognizanceMapper.selectCognizanceCatagoryBoByUidAndYear(year, uid); } @Override public BigDecimal selectLastYearRevenueByUidAndYear(Integer year, String uid) { return orgCognizanceMapper.selectLastYearRevenueByUidAndYear(year, uid); } @Override public int updateByPrimaryKeySelective(OrgCognizance cog) { return orgCognizanceMapper.updateByPrimaryKeySelective(cog); } @Override public OrgCognizance selectCognizanceByUidAndYear(Integer year, String uid) { return orgCognizanceMapper.selectCognizanceByUidAndYear(year, uid); } @Override public int deleteByPrimaryKey(List id) { return orgCognizanceMapper.batchDeleteByPrimaryKey(id); } @Override public void updateCognizance(OrgCognizance cog, OrgCognizanceLog log, Date recordTime, String aid) { if (null != log.getState() && null != recordTime && null != cog.getUid()) { log.setRecordTime(recordTime); if (OrgCognizanceStatus.getStatus(cog.getState()) == OrgCognizanceStatus.DELIVERD) { cog.setCreateTime(recordTime); } else if (OrgCognizanceStatus.getStatus(cog.getState()) == OrgCognizanceStatus.ACCEPT) { cog.setAcceptDate(recordTime); } else if (OrgCognizanceStatus.getStatus(cog.getState()) == OrgCognizanceStatus.ISSUING) { cog.setIssuingDate(recordTime); OrganizationIdentity o = organizationIdentityMapper.selectOrgIdentityByUserId(cog.getUid()); o.setCertificateNumber(null == cog.getCertificateNumber() ? "" : cog.getCertificateNumber()); o.setIssuingDate(recordTime); o.setConsultant(null == cog.getConsultant() ? "" : cog.getConsultant()); o.setCogContacts(null == cog.getContacts() ? null : cog.getContacts()); organizationIdentityMapper.updateByPrimaryKeySelective(o); } if (OrgCognizanceStatus.getStatus(cog.getState()) == OrgCognizanceStatus.CIRCULATION) { cog.setState(OrgCognizanceStatus.DELIVERD.getCode()); } log.setId(UUID.randomUUID().toString()); log.setCid(cog.getId()); log.setOperator(aid); orgCognizanceLogMapper.insert(log); createNotice(cog, log); } orgCognizanceMapper.updateByPrimaryKeySelective(cog); } @Override public void insertCognizance(OrgCognizance c, String aid) { c.setId(UUID.randomUUID().toString()); c.setState(CopyrightStatus.CREATE.getCode()); c.setDeletedSign(0); Calendar now = Calendar.getInstance(); now.set(Calendar.MILLISECOND, 0); c.setRecordTime(now.getTime()); orgCognizanceMapper.insert(c); OrgCognizanceLog log = new OrgCognizanceLog(); log.setId(UUID.randomUUID().toString()); log.setCid(c.getId()); log.setRecordTime(c.getRecordTime()); log.setState(c.getState()); if (TokenManager.getToken() instanceof Admin) { log.setPrincipal(TokenManager.getAdminId()); } else { log.setPrincipal(aid); } if (TokenManager.getToken() instanceof Admin) { log.setOperator(TokenManager.getAdminId()); } log.setComment(c.getComment()); orgCognizanceLogMapper.insert(log); OrgCognizanceProportion ocp = orgCognizanceProportionMapper.selectByUid(c.getUid()); if (null == ocp){ OrgCognizanceProportion o = new OrgCognizanceProportion(); o.setId(UUID.randomUUID().toString()); o.setUid(c.getUid()); orgCognizanceProportionMapper.insert(o); } else { orgCognizanceProportionMapper.updateByPrimaryKeySelective(disposeProportion(ocp)); } } @SuppressWarnings("unchecked") @Override public Pagination listCultivation(String uid, String province, String unitName, Integer pageNo, Integer pageSize) { Map params = new HashMap<>(); if (!StringUtils.isBlank(unitName)) { params.put("unitName", unitName); } if (!StringUtils.isBlank(uid)) { params.put("uid", uid); } if (!StringUtils.isBlank(province)) { params.put("province", province); } if (pageNo == null || pageNo < 0) { pageNo = 1; } if (pageSize == null || pageSize < 0) { pageSize = 10; } return (Pagination) findPage("findCultivationListByPage", "findCultivationCount", params, pageNo, pageSize); } private void createNotice(OrgCognizance cog, OrgCognizanceLog l) { OrgCognizance info = orgCognizanceMapper.selectByPrimaryKey(cog.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); n.setAid(l.getPrincipal()); n.setContent("编号" + info.getSerialNumber() + " " + OrgCognizanceStatus.getStatus(l.getState()).getDesc()); n.setNoticeType(NoticeStatus.COGNIZANCE.getCode()); noticeMapper.insert(n); } @Override public OrgCognizance selectByPrimaryKey(String id) { return orgCognizanceMapper.selectByPrimaryKey(id); } @Override public LatelyCogRecord selectLatelyRecord(String uid) { return orgCognizanceMapper.selectLatelyRecord(uid); } private OrgCognizanceProportion disposeProportion(OrgCognizanceProportion o){ o.setAbility(ProportionStatus.UNFINISHED.getCode()); o.setAchievement(ProportionStatus.UNFINISHED.getCode()); o.setActivity(ProportionStatus.UNFINISHED.getCode()); o.setActivityCost(ProportionStatus.UNFINISHED.getCode()); o.setFinance(ProportionStatus.UNFINISHED.getCode()); o.setHonorDatum(ProportionStatus.UNFINISHED.getCode()); o.setHumanResource(ProportionStatus.UNFINISHED.getCode()); o.setInstitution(ProportionStatus.UNFINISHED.getCode()); o.setIntellectualProperty(ProportionStatus.UNFINISHED.getCode()); o.setRatepay(ProportionStatus.UNFINISHED.getCode()); o.setStandard(ProportionStatus.UNFINISHED.getCode()); o.setTechProject(ProportionStatus.UNFINISHED.getCode()); return o; } }