|
|
@@ -0,0 +1,157 @@
|
|
|
+package com.uas.platform.b2b.service.impl;
|
|
|
+
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+import javax.persistence.criteria.CriteriaBuilder;
|
|
|
+import javax.persistence.criteria.CriteriaQuery;
|
|
|
+import javax.persistence.criteria.Predicate;
|
|
|
+import javax.persistence.criteria.Root;
|
|
|
+
|
|
|
+import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.domain.Page;
|
|
|
+import org.springframework.data.jpa.domain.Specification;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import com.uas.platform.b2b.dao.AddPartnerDao;
|
|
|
+import com.uas.platform.b2b.dao.EnterpriseDao;
|
|
|
+import com.uas.platform.b2b.dao.UserBaseInfoDao;
|
|
|
+import com.uas.platform.b2b.dao.VendorDao;
|
|
|
+import com.uas.platform.b2b.model.AddPartner;
|
|
|
+import com.uas.platform.b2b.model.Enterprise;
|
|
|
+import com.uas.platform.b2b.model.SearchFilter;
|
|
|
+import com.uas.platform.b2b.model.UserBaseInfo;
|
|
|
+import com.uas.platform.b2b.model.Vendor;
|
|
|
+import com.uas.platform.b2b.service.AddPartnerService;
|
|
|
+import com.uas.platform.b2b.support.SystemSession;
|
|
|
+import com.uas.platform.b2b.support.UsageBufferedLogger;
|
|
|
+import com.uas.platform.core.logging.BufferedLoggerManager;
|
|
|
+import com.uas.platform.core.model.PageInfo;
|
|
|
+import com.uas.platform.core.model.Status;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class AddPartnerServiceImpl implements AddPartnerService {
|
|
|
+
|
|
|
+ private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AddPartnerDao addPartnerDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private EnterpriseDao enterpriseDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private VendorDao vendorDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private UserBaseInfoDao userBaseInfoDao;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<AddPartner> findByApplicantuu(final PageInfo pageInfo, SearchFilter filter) {
|
|
|
+ Page<AddPartner> pageLogs = addPartnerDao.findAll(new Specification<AddPartner>() {
|
|
|
+ public Predicate toPredicate(Root<AddPartner> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
|
|
|
+ query.where(pageInfo.getPredicates(root, query, builder));
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }, pageInfo);
|
|
|
+ return pageLogs;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<AddPartner> findBysupplieruu(final PageInfo pageInfo, SearchFilter filter) {
|
|
|
+ Page<AddPartner> pageLogs = addPartnerDao.findAll(new Specification<AddPartner>() {
|
|
|
+ public Predicate toPredicate(Root<AddPartner> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
|
|
|
+ query.where(pageInfo.getPredicates(root, query, builder));
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }, pageInfo);
|
|
|
+ return pageLogs;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AddPartner addNewPartner(Long uu) {
|
|
|
+ AddPartner adpa = addPartnerDao.findByClientuuAndSupplieruu(SystemSession.getUser().getEnterprise().getUu(),
|
|
|
+ uu);
|
|
|
+ List<Vendor> vendor = vendorDao.findByMyEnUUAndVendUU(SystemSession.getUser().getEnterprise().getUu(), uu);
|
|
|
+ if (!CollectionUtils.isEmpty(vendor)) {
|
|
|
+ throw new IllegalAccessError("该企业已是您的供应商,请不要重复申请");
|
|
|
+ }
|
|
|
+ AddPartner adp = new AddPartner();
|
|
|
+ if (adpa != null) {
|
|
|
+ if (adpa.getApplyStatuscode() == Status.NOT_REPLY.value()) {
|
|
|
+ throw new IllegalAccessError("对该企业的申请已存在,请不要重复申请");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ Enterprise enter = enterpriseDao.findEnterpriseByUu(uu);
|
|
|
+ adp.setApplydate(new Date());
|
|
|
+ adp.setApplyStatus(Status.NOT_REPLY.getPhrase());
|
|
|
+ adp.setApplyStatuscode(Status.NOT_REPLY.value());
|
|
|
+ adp.setApplicant(SystemSession.getUser().getUserName());
|
|
|
+ adp.setApplicantuu(SystemSession.getUser().getUserUU());
|
|
|
+ adp.setClient(SystemSession.getUser().getEnterprise().getEnName());
|
|
|
+ adp.setClientuu(SystemSession.getUser().getEnterprise().getUu());
|
|
|
+ adp.setSupplier(enter.getEnName());
|
|
|
+ adp.setSupplieruu(uu);
|
|
|
+ logger.log("请求建立合作关系",
|
|
|
+ "[" + adp.getClient() + "]的[" + adp.getApplicant() + "]向[" + adp.getSupplier() + "]申请建立合作关系");
|
|
|
+ }
|
|
|
+ return addPartnerDao.save(adp);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AddPartner agreeRequest(Long id) {
|
|
|
+ AddPartner adp = addPartnerDao.findOne(id);
|
|
|
+ adp.setAuditor(SystemSession.getUser().getUserName());
|
|
|
+ adp.setAuditoruu(SystemSession.getUser().getUserUU());
|
|
|
+ adp.setApplyStatus(Status.AGREED.getPhrase());
|
|
|
+ adp.setApplyStatuscode(Status.AGREED.value());
|
|
|
+ adp.setAuditdate(new Date());
|
|
|
+ logger.log("同意合作关系请求",
|
|
|
+ "[" + adp.getSupplier() + "]的[" + adp.getAuditor() + "]同意了[" + adp.getApplicant() + "的请求");
|
|
|
+ Vendor vendor = new Vendor();
|
|
|
+ Enterprise vendenter = enterpriseDao.findEnterpriseByUu(adp.getSupplieruu());
|
|
|
+ Enterprise myenter = enterpriseDao.findEnterpriseByUu(adp.getClientuu());
|
|
|
+ UserBaseInfo venduser = userBaseInfoDao.findByUserUU(adp.getAuditoruu());
|
|
|
+ UserBaseInfo myuser = userBaseInfoDao.findByUserUU(adp.getApplicantuu());
|
|
|
+ vendor.setMyEnterprise(myenter);
|
|
|
+ vendor.setMyEnUU(adp.getClientuu());
|
|
|
+ vendor.setMyUser(myuser);
|
|
|
+ vendor.setMyUserUU(adp.getApplicantuu());
|
|
|
+ vendor.setVendorEnterprise(vendenter);
|
|
|
+ vendor.setVendorUser(venduser);
|
|
|
+ vendor.setVendUserUU(adp.getAuditoruu());
|
|
|
+ vendor.setVendEnUU(adp.getSupplieruu());
|
|
|
+ vendorDao.save(vendor);
|
|
|
+ return addPartnerDao.save(adp);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AddPartner refuseRequest(Long id, String reason) {
|
|
|
+ AddPartner adp = addPartnerDao.findOne(id);
|
|
|
+ adp.setAuditdate(new Date());
|
|
|
+ adp.setAuditor(SystemSession.getUser().getUserName());
|
|
|
+ adp.setAuditoruu(SystemSession.getUser().getUserUU());
|
|
|
+ adp.setReason(reason);
|
|
|
+ adp.setApplyStatus(Status.NOTAGREED.getPhrase());
|
|
|
+ adp.setApplyStatuscode(Status.NOTAGREED.value());
|
|
|
+ logger.log("拒绝合作关系请求",
|
|
|
+ "[" + adp.getSupplier() + "]的[" + adp.getAuditor() + "]拒绝了[" + adp.getApplicant() + "]的请求");
|
|
|
+ return addPartnerDao.save(adp);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AddPartner reapply(Long id) {
|
|
|
+ AddPartner adp = addPartnerDao.findOne(id);
|
|
|
+ adp.setApplyStatus(Status.NOT_REPLY.getPhrase());
|
|
|
+ adp.setApplyStatuscode(Status.NOT_REPLY.value());
|
|
|
+ return addPartnerDao.save(adp);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Object getMyMessageTodoCount() {
|
|
|
+ return addPartnerDao.getTodoCountBySupplieruuAndApplyStatuscode(SystemSession.getUser().getEnterprise().getUu(),
|
|
|
+ Status.NOT_REPLY.value());
|
|
|
+ }
|
|
|
+
|
|
|
+}
|