|
|
@@ -91,26 +91,7 @@ public class PurchaseTenderServiceImpl implements PurchaseTenderService {
|
|
|
for (PurchaseTenderProd tenderProd : tenderProds) {
|
|
|
tenderProd.setTender(tender);
|
|
|
purchaseTenderProdDao.save(tenderProd);
|
|
|
- for (Enterprise enterprise : enterprises) {
|
|
|
- EnterpriseBaseInfo enBaseInfo = enterpriseBaseInfoDao.findOne(enterprise.getUu());
|
|
|
- if (null == enBaseInfo) {
|
|
|
- enBaseInfo = new EnterpriseBaseInfo(enterprise.getUu(), enterprise.getEnBussinessCode(), enterprise.getEnName(), enterprise.getEnAddress());
|
|
|
- }
|
|
|
- SaleTenderItem tenderItem = new SaleTenderItem();
|
|
|
- // 找不到投标单主表才新建一个
|
|
|
- if (tender.getEnUU() != null && enBaseInfo.getUu() != null && tender.getCode() != null) {
|
|
|
- SaleTender saleTender = saleTenderDao.findByEnUUAndVendUUAndCode(tender.getEnUU(), enBaseInfo.getUu(), tender.getCode());
|
|
|
- if (null == saleTender) {
|
|
|
- saleTender = new SaleTender(tender);
|
|
|
- saleTender.setVendUU(enBaseInfo.getUu());
|
|
|
- saleTender.setEnterpriseBaseInfo(enBaseInfo); // 投标单主表构造完毕
|
|
|
- saleTenderDao.save(saleTender);
|
|
|
- }
|
|
|
- tenderItem.setSaleTender(saleTender);
|
|
|
- }
|
|
|
- tenderItem.setTenderProd(tenderProd);
|
|
|
- saleTenderItemDao.save(tenderItem);
|
|
|
- }
|
|
|
+ addSaleTender(tender, enterprises, tenderProd);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -201,16 +182,19 @@ public class PurchaseTenderServiceImpl implements PurchaseTenderService {
|
|
|
public void delete(Long id) {
|
|
|
PurchaseTender tender = purchaseTenderDao.findOne(id);
|
|
|
if (null != tender) {
|
|
|
- purchaseTenderDao.delete(tender);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void publishSaved(Long id) {
|
|
|
- PurchaseTender tender = purchaseTenderDao.findOne(id);
|
|
|
- if (null != tender) {
|
|
|
- tender.setIsPublish(Constant.YES);
|
|
|
- purchaseTenderDao.save(tender);
|
|
|
+ List<SaleTender> saleTenders = saleTenderDao.findByEnUUAndCode(tender.getEnUU(), tender.getCode());
|
|
|
+ if (!CollectionUtils.isEmpty(saleTenders)) {
|
|
|
+ for (SaleTender saleTender : saleTenders) {
|
|
|
+ if (!CollectionUtils.isEmpty(saleTender.getSaleTenderItems())) {
|
|
|
+ saleTenderItemDao.delete(saleTender.getSaleTenderItems());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ saleTenderDao.delete(saleTenders);
|
|
|
+ }
|
|
|
+ if (!CollectionUtils.isEmpty(tender.getPurchaseTenderProds())) {
|
|
|
+ purchaseTenderProdDao.delete(tender.getPurchaseTenderProds());
|
|
|
+ }
|
|
|
+ purchaseTenderDao.delete(tender);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -311,6 +295,206 @@ public class PurchaseTenderServiceImpl implements PurchaseTenderService {
|
|
|
return tender;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 发布已保存单据
|
|
|
+ *
|
|
|
+ * @param purchaseTender
|
|
|
+ * @param enterprises
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void publishSaved(PurchaseTender purchaseTender, List<Enterprise> enterprises) {
|
|
|
+ publishOrSave(purchaseTender, enterprises , true , false);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发布已保存单据为公开招标
|
|
|
+ *
|
|
|
+ * @param purchaseTender
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void publishSavedOpen(PurchaseTender purchaseTender) {
|
|
|
+ publishOrSave(purchaseTender, null , true , true);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新已保存单据
|
|
|
+ *
|
|
|
+ * @param purchaseTender
|
|
|
+ * @param enterprises
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void updateSaved(PurchaseTender purchaseTender, List<Enterprise> enterprises) {
|
|
|
+ publishOrSave(purchaseTender, enterprises , false , false);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新已保存单据为公开
|
|
|
+ *
|
|
|
+ * @param purchaseTender
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void updateSavedOpen(PurchaseTender purchaseTender) {
|
|
|
+ publishOrSave(purchaseTender, null , false , false);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发布或保存方法(针对保存的单据)
|
|
|
+ *
|
|
|
+ * @param purchaseTender
|
|
|
+ * @param enterprises
|
|
|
+ * @param isPublish
|
|
|
+ * @param ifOpen
|
|
|
+ */
|
|
|
+ private void publishOrSave(PurchaseTender purchaseTender, List<Enterprise> enterprises, boolean isPublish, boolean ifOpen) {
|
|
|
+ PurchaseTender oldTender = purchaseTenderDao.findOne(purchaseTender.getId());
|
|
|
+ if (null != oldTender) {
|
|
|
+ if (isPublish) {
|
|
|
+ oldTender.setIsPublish(Constant.YES);
|
|
|
+ } else {
|
|
|
+ oldTender.setIsPublish(Constant.NO);
|
|
|
+ }
|
|
|
+ oldTender.setModified(new Date());
|
|
|
+ if (null != purchaseTender.getCertificate()) {
|
|
|
+ oldTender.setCertificate(purchaseTender.getCertificate());
|
|
|
+ } else {
|
|
|
+ oldTender.setCertificate("");
|
|
|
+ }
|
|
|
+ oldTender.setCurrency(purchaseTender.getCurrency());
|
|
|
+ oldTender.setEndDate(purchaseTender.getEndDate());
|
|
|
+ oldTender.setPublishDate(purchaseTender.getPublishDate());
|
|
|
+ oldTender.setIfTax(purchaseTender.getIfTax());
|
|
|
+ oldTender.setInvoiceType(purchaseTender.getInvoiceType());
|
|
|
+ oldTender.setPayment(purchaseTender.getPayment());
|
|
|
+ oldTender.setShipAddress(purchaseTender.getShipAddress());
|
|
|
+ oldTender.setTitle(purchaseTender.getTitle());
|
|
|
+ oldTender.setUser(purchaseTender.getUser());
|
|
|
+ oldTender.setUserTel(purchaseTender.getUserTel());
|
|
|
+ oldTender.setTenderAttaches(purchaseTender.getTenderAttaches());
|
|
|
+ purchaseTenderDao.save(oldTender);
|
|
|
+ for (PurchaseTenderProd tenderProd : purchaseTender.getPurchaseTenderProds()) {
|
|
|
+ if (tenderProd.getId() != null) { // 存在id的是修改的
|
|
|
+ PurchaseTenderProd oldTenderProd = purchaseTenderProdDao.findOne(tenderProd.getId());
|
|
|
+ oldTenderProd.setBrand(tenderProd.getBrand());
|
|
|
+ oldTenderProd.setProdCode(tenderProd.getProdCode());
|
|
|
+ oldTenderProd.setProdTitle(tenderProd.getProdTitle());
|
|
|
+ oldTenderProd.setUnit(tenderProd.getUnit());
|
|
|
+ oldTenderProd.setQty(tenderProd.getQty());
|
|
|
+ } else { // 新增的
|
|
|
+ tenderProd.setTender(oldTender);
|
|
|
+ purchaseTenderProdDao.save(tenderProd);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ // 先清除掉所有存在的投标单
|
|
|
+ List<SaleTender> oldSaleTenders = saleTenderDao.findByEnUUAndCode(oldTender.getEnUU(), oldTender.getCode());
|
|
|
+ for (SaleTender saleTender : oldSaleTenders) {
|
|
|
+ for (SaleTenderItem saleTenderItem : saleTender.getSaleTenderItems()) {
|
|
|
+ saleTenderItemDao.delete(saleTenderItem.getId());
|
|
|
+ }
|
|
|
+ saleTenderDao.delete(saleTender.getId());
|
|
|
+ }
|
|
|
+ if (ifOpen) {
|
|
|
+ oldTender.setIfOpen(Constant.YES);
|
|
|
+
|
|
|
+ } else { // 非公开招标再添加投标单
|
|
|
+ oldTender.setIfOpen(Constant.NO);
|
|
|
+ Set<PurchaseTenderProd> tenderProds = oldTender.getPurchaseTenderProds();
|
|
|
+ for (PurchaseTenderProd tenderProd : tenderProds) {
|
|
|
+ if (tenderProd.getId() != null) { // 存在id的是修改的
|
|
|
+ PurchaseTenderProd oldTenderProd = purchaseTenderProdDao.findOne(tenderProd.getId());
|
|
|
+ oldTenderProd.setBrand(tenderProd.getBrand());
|
|
|
+ oldTenderProd.setProdCode(tenderProd.getProdCode());
|
|
|
+ oldTenderProd.setProdTitle(tenderProd.getProdTitle());
|
|
|
+ oldTenderProd.setUnit(tenderProd.getUnit());
|
|
|
+ oldTenderProd.setQty(tenderProd.getQty());
|
|
|
+ purchaseTenderProdDao.save(oldTenderProd);
|
|
|
+ } else { // 新增的
|
|
|
+ tenderProd.setTender(oldTender);
|
|
|
+ purchaseTenderProdDao.save(tenderProd);
|
|
|
+ }
|
|
|
+ addSaleTender(oldTender, enterprises, tenderProd);
|
|
|
+ }
|
|
|
+ }
|
|
|
+// if (!CollectionUtils.isEmpty(oldTender.getTenderAttaches())) {
|
|
|
+// Set<Attach> attachSet = new HashSet<>();
|
|
|
+// for (Attach oldAttach : oldTender.getTenderAttaches()) {
|
|
|
+// boolean old = false;
|
|
|
+// for (Attach attach : purchaseTender.getTenderAttaches()) {
|
|
|
+// if (attach.getId() == oldAttach.getId()) {
|
|
|
+// old = true;
|
|
|
+// }
|
|
|
+// if (!old) {
|
|
|
+// attachSet.add(attach);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据供应商信息和招标单新增投标单
|
|
|
+ * @param tender
|
|
|
+ * @param enterprises
|
|
|
+ * @param tenderProd
|
|
|
+ */
|
|
|
+ private void addSaleTender(PurchaseTender tender, List<Enterprise> enterprises, PurchaseTenderProd tenderProd) {
|
|
|
+ for (Enterprise enterprise : enterprises) {
|
|
|
+ EnterpriseBaseInfo enBaseInfo = enterpriseBaseInfoDao.findOne(enterprise.getUu());
|
|
|
+ if (null == enBaseInfo) {
|
|
|
+ enBaseInfo = new EnterpriseBaseInfo(enterprise.getUu(), enterprise.getEnBussinessCode(), enterprise.getEnName(), enterprise.getEnAddress());
|
|
|
+ }
|
|
|
+ SaleTenderItem tenderItem = new SaleTenderItem();
|
|
|
+ // 找不到投标单主表才新建一个,确保只有一个投标单
|
|
|
+ if (tender.getEnUU() != null && enBaseInfo.getUu() != null && tender.getCode() != null) {
|
|
|
+ SaleTender saleTender = saleTenderDao.findByEnUUAndVendUUAndCode(tender.getEnUU(), enBaseInfo.getUu(), tender.getCode());
|
|
|
+ if (null == saleTender) {
|
|
|
+ saleTender = new SaleTender(tender);
|
|
|
+ saleTender.setVendUU(enBaseInfo.getUu());
|
|
|
+ saleTender.setEnterpriseBaseInfo(enBaseInfo); // 投标单主表构造完毕
|
|
|
+ saleTenderDao.save(saleTender);
|
|
|
+ }
|
|
|
+ tenderItem.setSaleTender(saleTender);
|
|
|
+ }
|
|
|
+ tenderItem.setTenderProd(tenderProd);
|
|
|
+ saleTenderItemDao.save(tenderItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除产品明细
|
|
|
+ *
|
|
|
+ * @param tenderProdId
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void deleteProd(Long tenderProdId) {
|
|
|
+ PurchaseTenderProd tenderProd = purchaseTenderProdDao.findOne(tenderProdId);
|
|
|
+ if (null != tenderProd) {
|
|
|
+ for (SaleTenderItem saleTenderItem : tenderProd.getSaleTenderItems()) {
|
|
|
+ if (saleTenderItem.getSaleTender() != null) {
|
|
|
+ saleTenderDao.delete(saleTenderItem.getSaleTender());
|
|
|
+ }
|
|
|
+ saleTenderItemDao.delete(saleTenderItem.getId());
|
|
|
+ }
|
|
|
+ purchaseTenderProdDao.delete(tenderProd);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除对应供应商的投标单
|
|
|
+ *
|
|
|
+ * @param purchaseTender
|
|
|
+ * @param vendUU
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void removeSaleTender(PurchaseTender purchaseTender, Long vendUU) {
|
|
|
+ SaleTender saleTender = saleTenderDao.findByEnUUAndVendUUAndCode(purchaseTender.getEnUU(), vendUU, purchaseTender.getCode());
|
|
|
+ for (SaleTenderItem saleTenderItem : saleTender.getSaleTenderItems()) {
|
|
|
+ saleTenderItemDao.delete(saleTenderItem.getId());
|
|
|
+ }
|
|
|
+ saleTenderDao.delete(saleTender);
|
|
|
+ }
|
|
|
|
|
|
|
|
|
/**
|
|
|
@@ -324,7 +508,7 @@ public class PurchaseTenderServiceImpl implements PurchaseTenderService {
|
|
|
@Override
|
|
|
public void reply(List<SaleTenderItem> tenderItems, EnterpriseBaseInfo enBaseInfo, List<Attach> attaches) {
|
|
|
enterpriseBaseInfoDao.save(enBaseInfo);
|
|
|
- SaleTender saleTender = tenderItems.get(0).getSaleTender();
|
|
|
+ SaleTender saleTender = saleTenderDao.findOne(tenderItems.get(0).getSaleTender().getId());
|
|
|
saleTender.setStatus("已投标");
|
|
|
Set<Attach> attachSet = new HashSet<>();
|
|
|
if (!CollectionUtils.isEmpty(attaches)) {
|