|
|
@@ -2,7 +2,19 @@ package com.usoftchina.saas.purchase.service.impl;
|
|
|
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import com.github.pagehelper.PageInfo;
|
|
|
+import com.netflix.discovery.converters.Auto;
|
|
|
+import com.usoftchina.saas.account.dto.CompanyDTO;
|
|
|
import com.usoftchina.saas.commons.cache.ConfigsCache;
|
|
|
+import com.usoftchina.saas.document.api.AddressApi;
|
|
|
+import com.usoftchina.saas.document.api.CurrencyApi;
|
|
|
+import com.usoftchina.saas.document.api.ProductApi;
|
|
|
+import com.usoftchina.saas.document.api.VendorApi;
|
|
|
+import com.usoftchina.saas.document.dto.CurrencyDTO;
|
|
|
+import com.usoftchina.saas.document.dto.ProductDTO;
|
|
|
+import com.usoftchina.saas.document.dto.VendorDTO;
|
|
|
+import com.usoftchina.saas.document.dto.VendorListDTO;
|
|
|
+import com.usoftchina.saas.document.entities.Vendor;
|
|
|
+import com.usoftchina.saas.document.entities.Vendorcontact;
|
|
|
import com.usoftchina.saas.inquiry.api.InquiryApi;
|
|
|
import com.usoftchina.saas.inquiry.api.SearchApi;
|
|
|
import com.usoftchina.saas.inquiry.po.inquiry.*;
|
|
|
@@ -89,6 +101,14 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
|
|
|
private AccountApi accountApi;
|
|
|
@Autowired
|
|
|
private SendMessageApi sendMessageApi;
|
|
|
+ @Autowired
|
|
|
+ private VendorApi vendorApi;
|
|
|
+ @Autowired
|
|
|
+ private CurrencyApi currencyApi;
|
|
|
+ @Autowired
|
|
|
+ private AddressApi addressApi;
|
|
|
+ @Autowired
|
|
|
+ private ProductApi productApi;
|
|
|
|
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(PurchaseServiceImpl.class);
|
|
|
|
|
|
@@ -248,6 +268,8 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
|
|
|
//是否启用B2B
|
|
|
boolean enable = ConfigsCache.current().enableB2B();
|
|
|
if (enable) {
|
|
|
+ //上传物料信息
|
|
|
+ productApi.uploadToB2B();
|
|
|
//更新上传状态
|
|
|
updateB2BStatus(id, "待上传");
|
|
|
//生成消息
|
|
|
@@ -269,6 +291,112 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
|
|
|
getMapper().updateByPrimaryKeySelective(purchase);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 询价转采购
|
|
|
+ * @param turnPurchaseReqDTO
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void turnPurchase(InquiryTurnPurchaseReqDTO turnPurchaseReqDTO){
|
|
|
+ CompanyDTO companyDTO = companyApi.getCompanyById(BaseContextHolder.getCompanyId()).getData();
|
|
|
+ Long enUU = companyDTO.getUu();
|
|
|
+ Long userUU = accountApi.getAccountById(BaseContextHolder.getUserId()).getData().getUu();
|
|
|
+ if (turnPurchaseReqDTO.getOperate() == 1){
|
|
|
+ //更新采纳状态
|
|
|
+ inquiryApi.adoptQuote(turnPurchaseReqDTO.getId(), (short) 1, enUU, userUU);
|
|
|
+ }
|
|
|
+ //通过供应商UU号检查供应商是否已存在
|
|
|
+ VendorDTO vendorDTO = vendorApi.findByUU(turnPurchaseReqDTO.getVendUU()).getData();
|
|
|
+ DocBaseDTO docBaseDTO = null;
|
|
|
+ if (vendorDTO == null){
|
|
|
+ //自动创建供应商资料
|
|
|
+ docBaseDTO = createVendor(turnPurchaseReqDTO);
|
|
|
+ }
|
|
|
+ //构造采购单数据
|
|
|
+ PurchaseFormDTO purchaseFormDTO = createPurcahse(docBaseDTO, turnPurchaseReqDTO);
|
|
|
+ saveFormData(purchaseFormDTO);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建供应商
|
|
|
+ * @param turnPurchaseReqDTO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private DocBaseDTO createVendor(InquiryTurnPurchaseReqDTO turnPurchaseReqDTO) {
|
|
|
+ Vendor vendor = new Vendor();
|
|
|
+ String vendorCode = maxnumberService.getMaxnumber(BillCodeSeq.VENDOR.getCaller(), false).getData();
|
|
|
+ vendor.setVe_code(vendorCode);
|
|
|
+ vendor.setVe_name(turnPurchaseReqDTO.getVendName());
|
|
|
+ vendor.setVe_uu(String.valueOf(turnPurchaseReqDTO.getVendUU()));
|
|
|
+ vendor.setVe_taxrate(turnPurchaseReqDTO.getTaxRate());
|
|
|
+ CurrencyDTO currencyDTO = currencyApi.getStandard().getData();
|
|
|
+ vendor.setVe_currency(currencyDTO.getCr_name());
|
|
|
+ vendor.setVe_taxrate(16D);
|
|
|
+ vendor.setCompanyId(BaseContextHolder.getCompanyId());
|
|
|
+ vendor.setCreatorName(BaseContextHolder.getUserName());
|
|
|
+ vendor.setCreatorId(BaseContextHolder.getUserId());
|
|
|
+ vendor.setCreateTime(new Date());
|
|
|
+ //明细
|
|
|
+ Vendorcontact vendorcontact = new Vendorcontact();
|
|
|
+ vendorcontact.setVc_detno(1);
|
|
|
+ vendorcontact.setVc_name(turnPurchaseReqDTO.getUserName());
|
|
|
+ vendorcontact.setVc_tel(turnPurchaseReqDTO.getTel());
|
|
|
+ vendorcontact.setVc_default("1");
|
|
|
+
|
|
|
+ List<Vendorcontact> vendorcontactList = new ArrayList<Vendorcontact>();
|
|
|
+ vendorcontactList.add(vendorcontact);
|
|
|
+ //保存对象
|
|
|
+ VendorListDTO vendorListDTO = new VendorListDTO();
|
|
|
+ vendorListDTO.setMain(vendor);
|
|
|
+ vendorListDTO.setItems(vendorcontactList);
|
|
|
+
|
|
|
+ return vendorApi.saveFormData(vendorListDTO).getData();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成采购单数据
|
|
|
+ * @param docBaseDTO
|
|
|
+ * @param turnPurchaseReqDTO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private PurchaseFormDTO createPurcahse(DocBaseDTO docBaseDTO, InquiryTurnPurchaseReqDTO turnPurchaseReqDTO){
|
|
|
+ PurchaseFormDTO purchaseFormDTO = new PurchaseFormDTO();
|
|
|
+ //采购单主表
|
|
|
+ PurchaseDTO purchaseDTO = new PurchaseDTO();
|
|
|
+ String code = maxnumberService.getMaxnumber(BillCodeSeq.PURCHASE.getCaller(), false).getData();
|
|
|
+ purchaseDTO.setPu_code(code);
|
|
|
+ purchaseDTO.setPu_vendcode(docBaseDTO.getCode());
|
|
|
+ purchaseDTO.setPu_vendid(new BigDecimal(docBaseDTO.getId()).intValue());
|
|
|
+ purchaseDTO.setPu_vendname(turnPurchaseReqDTO.getVendName());
|
|
|
+ //本位币
|
|
|
+ CurrencyDTO currencyDTO = currencyApi.getStandard().getData();
|
|
|
+ purchaseDTO.setPu_currency(currencyDTO.getCr_name());
|
|
|
+ purchaseDTO.setPu_rate(currencyDTO.getCr_rate());
|
|
|
+ //交货地址
|
|
|
+ String address = addressApi.getDefault().getData().getAd_address();
|
|
|
+ purchaseDTO.setPu_shipaddresscode(address);
|
|
|
+
|
|
|
+ purchaseDTO.setCreateTime(new Date());
|
|
|
+ purchaseDTO.setCreatorName(BaseContextHolder.getUserName());
|
|
|
+ purchaseDTO.setPu_date(new Date());
|
|
|
+ //采购单明细
|
|
|
+ List<PurchaseDetailDTO> items = new ArrayList<PurchaseDetailDTO>();
|
|
|
+ PurchaseDetailDTO purchaseDetailDTO = new PurchaseDetailDTO();
|
|
|
+ ProductDTO productDTO = productApi.getByProdCode(turnPurchaseReqDTO.getProdCode()).getData();
|
|
|
+ purchaseDetailDTO.setPd_code(code);
|
|
|
+ purchaseDetailDTO.setPd_prodid(productDTO.getId());
|
|
|
+ purchaseDetailDTO.setPd_prodcode(productDTO.getPr_code());
|
|
|
+ purchaseDetailDTO.setPd_price(turnPurchaseReqDTO.getPrice());
|
|
|
+ purchaseDetailDTO.setPd_taxrate(turnPurchaseReqDTO.getTaxRate());
|
|
|
+ purchaseDetailDTO.setPd_qty(turnPurchaseReqDTO.getQty());
|
|
|
+ purchaseDetailDTO.setPd_delivery(new Date());
|
|
|
+ purchaseDetailDTO.setPd_detno(1);
|
|
|
+ purchaseDetailDTO.setPd_unit(productDTO.getPr_unit());
|
|
|
+
|
|
|
+ items.add(purchaseDetailDTO);
|
|
|
+ purchaseFormDTO.setMain(purchaseDTO);
|
|
|
+ purchaseFormDTO.setItems(items);
|
|
|
+ return purchaseFormDTO;
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
@Transactional
|
|
|
@@ -889,8 +1017,10 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
|
|
|
QuotationRspDTO quotationRspDTO = new QuotationRspDTO();
|
|
|
quotationRspDTO.setId(publicInquiryItem.getId());
|
|
|
quotationRspDTO.setVendName(publicInquiryItem.getVendName());
|
|
|
+ quotationRspDTO.setVendUU(publicInquiryItem.getVendUU());
|
|
|
quotationRspDTO.setTaxRate(new BigDecimal(publicInquiryItem.getTaxrate()).doubleValue());
|
|
|
quotationRspDTO.setLeadTime(publicInquiryItem.getLeadtime());
|
|
|
+ quotationRspDTO.setUserName(publicInquiryItem.getUser().getUserName());
|
|
|
quotationRspDTO.setTel(publicInquiryItem.getUser().getUserTel());
|
|
|
quotationRspDTO.setAgreed(publicInquiryItem.getAgreed());
|
|
|
quotationRspDTO.setRefusereason(publicInquiryItem.getRefusereason());
|