Browse Source

询价转采购

chenw 7 years ago
parent
commit
782762f79a

+ 10 - 4
applications/document/document-api/src/main/java/com/usoftchina/saas/document/api/VendorApi.java

@@ -1,13 +1,11 @@
 package com.usoftchina.saas.document.api;
 
-import com.usoftchina.saas.auth.client.interceptor.ServiceFeignInterceptor;
 import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.document.dto.VendorDTO;
 import com.usoftchina.saas.document.dto.VendorListDTO;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -29,4 +27,12 @@ public interface VendorApi {
      */
     @GetMapping(value = "/vendor/read", params = "uu")
     Result<VendorDTO> findByUU(@RequestParam("uu") Long uu);
+
+    /**
+     * 保存供应商
+     * @param vendorListDTO
+     * @return
+     */
+    @PostMapping("/save")
+    Result<DocBaseDTO> saveFormData(@RequestBody VendorListDTO vendorListDTO);
 }

+ 1 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/VendorController.java

@@ -70,7 +70,7 @@ public class VendorController {
      * @return
      */
     @PostMapping("/save")
-    public Result saveFormData(@RequestBody VendorListDTO vendorListDTO){
+    public Result<DocBaseDTO> saveFormData(@RequestBody VendorListDTO vendorListDTO){
         DocBaseDTO docBaseDTO = vendorService.saveFormData(vendorListDTO);
         return Result.success(docBaseDTO);
     }

+ 131 - 0
applications/purchase/purchase-dto/src/main/java/com/usoftchina/saas/purchase/dto/InquiryTurnPurchaseReqDTO.java

@@ -0,0 +1,131 @@
+package com.usoftchina.saas.purchase.dto;
+
+import java.io.Serializable;
+
+/**
+ * @Description 询价转采购
+ * @Author chenwei
+ * @Date 2019/01/23
+ */
+public class InquiryTurnPurchaseReqDTO implements Serializable {
+    /**
+     * 询价单明细ID
+     */
+    private Long id;
+    /**
+     * 操作类型: 0: 已采纳转采购,  1: 直接转采购
+     */
+    private int operate;
+    /**
+     * 物料编号
+     */
+    private String prodCode;
+    /**
+     * 供应商名称
+     */
+    private String vendName;
+    /**
+     * 供应商UU
+     */
+    private Long vendUU;
+    /**
+     * 供应商联系人
+     */
+    private String userName;
+    /**
+     * 联系电话
+     */
+    private String tel;
+    /**
+     * 税率
+     */
+    private Double taxRate;
+    /**
+     * 价格
+     */
+    private Double price;
+    /**
+     * 数量
+     */
+    private Double qty;
+
+    public Double getQty() {
+        return qty;
+    }
+
+    public void setQty(Double qty) {
+        this.qty = qty;
+    }
+
+    public Double getPrice() {
+        return price;
+    }
+
+    public void setPrice(Double price) {
+        this.price = price;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public int getOperate() {
+        return operate;
+    }
+
+    public void setOperate(int operate) {
+        this.operate = operate;
+    }
+
+    public String getProdCode() {
+        return prodCode;
+    }
+
+    public void setProdCode(String prodCode) {
+        this.prodCode = prodCode;
+    }
+
+    public String getVendName() {
+        return vendName;
+    }
+
+    public void setVendName(String vendName) {
+        this.vendName = vendName;
+    }
+
+    public Long getVendUU() {
+        return vendUU;
+    }
+
+    public void setVendUU(Long vendUU) {
+        this.vendUU = vendUU;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public Double getTaxRate() {
+        return taxRate;
+    }
+
+    public void setTaxRate(Double taxRate) {
+        this.taxRate = taxRate;
+    }
+}

+ 9 - 0
applications/purchase/purchase-dto/src/main/java/com/usoftchina/saas/purchase/dto/QuotationRspDTO.java

@@ -12,6 +12,7 @@ public class QuotationRspDTO implements Serializable {
     private Long id;
     private String vendName;
     private Long vendUU;
+    private String userName;
     private String tel;
     private String replaceOrispeccode;
     private Long leadTime;
@@ -51,6 +52,14 @@ public class QuotationRspDTO implements Serializable {
         this.vendUU = vendUU;
     }
 
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
     public String getTel() {
         return tel;
     }

+ 12 - 1
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/controller/PurchaseController.java

@@ -200,7 +200,7 @@ public class PurchaseController {
      * @return
      */
     @GetMapping("/inquiry/list")
-    public Result inquiryList(InquiryReqDTO inquiryReqDTO){
+    public Result<InquiryRspDTO> inquiryList(InquiryReqDTO inquiryReqDTO){
         return Result.success(purchaseService.getInquiryList(inquiryReqDTO));
     }
 
@@ -235,4 +235,15 @@ public class PurchaseController {
         purchaseService.updateB2BStatus(id, status);
         return Result.success();
     }
+
+    /**
+     * 询价转采购
+     * @param inquiryTurnPurchaseReqDTO
+     * @return
+     */
+    @PostMapping("/inquiry/turnPurchase")
+    public Result turnPurchase(@RequestBody InquiryTurnPurchaseReqDTO inquiryTurnPurchaseReqDTO){
+        purchaseService.turnPurchase(inquiryTurnPurchaseReqDTO);
+        return Result.success();
+    }
 }

+ 6 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/PurchaseService.java

@@ -173,4 +173,10 @@ public interface PurchaseService extends CommonBaseService<PurchaseMapper, Purch
      * @param status
      */
     void updateB2BStatus(Long id, String status);
+
+    /**
+     * 询价转采购
+     * @param inquiryTurnPurchaseReqDTO
+     */
+    void turnPurchase(InquiryTurnPurchaseReqDTO inquiryTurnPurchaseReqDTO);
 }

+ 127 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java

@@ -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);
 
@@ -269,6 +289,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
@@ -892,6 +1018,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
                     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());