소스 검색

采购单上传

chenw 6 년 전
부모
커밋
e1c6b4d57d

+ 31 - 0
applications/purchase/purchase-api/src/main/java/com/usoftchina/saas/purchase/api/PurchaseApi.java

@@ -0,0 +1,31 @@
+package com.usoftchina.saas.purchase.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.purchase.dto.PurchaseFormDTO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.*;
+
+@FeignClient(name = "purchase-server", configuration = ServiceFeignInterceptor.class)
+public interface PurchaseApi {
+
+    @PostMapping("/purchase/getPurchaseCode")
+    String getPurchaseCode(@RequestBody DocBaseDTO baseDTO);
+
+    /**
+     * 获取采购单数据
+     * @param id
+     * @return
+     */
+    @GetMapping("/purchase/read/{id}")
+    Result<PurchaseFormDTO> getFormData(@PathVariable("id") Long id);
+    /**
+     * 更新采购单B2B上传状态
+     * @param id
+     * @param status
+     * @return
+     */
+    @PostMapping("/b2bStatus/update")
+    Result updateB2BStatus(@RequestParam("id") Long id, @RequestParam("status") String status);
+}

+ 0 - 15
applications/purchase/purchase-api/src/main/java/com/usoftchina/saas/purchase/api/PurchaseService.java

@@ -1,15 +0,0 @@
-package com.usoftchina.saas.purchase.api;
-
-import com.usoftchina.saas.auth.client.interceptor.ServiceFeignInterceptor;
-import com.usoftchina.saas.commons.dto.DocBaseDTO;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-
-@FeignClient(name = "purchase-server", configuration = ServiceFeignInterceptor.class)
-public interface PurchaseService {
-
-    @PostMapping("/purchase/getPurchaseCode")
-    public String getPurchaseCode(@RequestBody DocBaseDTO baseDTO);
-
-}

+ 5 - 0
applications/purchase/purchase-server/pom.xml

@@ -34,6 +34,11 @@
             <artifactId>mall-api</artifactId>
             <version>1.0.0-SNAPSHOT</version>
         </dependency>
+        <dependency>
+          <groupId>com.usoftchina.saas</groupId>
+          <artifactId>transfers-api</artifactId>
+          <version>1.0.0-SNAPSHOT</version>
+        </dependency>
 
         <!--test-->
         <dependency>

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

@@ -223,4 +223,16 @@ public class PurchaseController {
         List<InquiryAddDTO> inquiryAddDTOList = JsonUtils.fromJsonArray(data, InquiryAddDTO.class);
         return Result.success(purchaseService.saveInquiry(inquiryAddDTOList));
     }
+
+    /**
+     * 更新采购单B2B上传状态
+     * @param id
+     * @param status
+     * @return
+     */
+    @PostMapping("/b2bStatus/update")
+    public Result updateB2BStatus(@RequestParam("id") Long id, @RequestParam("status") String status){
+        purchaseService.updateB2BStatus(id, status);
+        return Result.success();
+    }
 }

+ 2 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/Purchase.java

@@ -70,4 +70,6 @@ public class Purchase extends CommonBaseEntity implements Serializable {
     private String pu_currency;
 
     private Double pu_rate;
+
+    private String b2bStatus;
 }

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

@@ -166,4 +166,11 @@ public interface PurchaseService extends CommonBaseService<PurchaseMapper, Purch
      * @param inquiryAddDTO
      */
     List<Map<String, String>> saveInquiry(List<InquiryAddDTO> inquiryAddDTO);
+
+    /**
+     * 更新采购单对接B2B上传状态
+     * @param id
+     * @param status
+     */
+    void updateB2BStatus(Long id, String status);
 }

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

@@ -2,6 +2,7 @@ package com.usoftchina.saas.purchase.service.impl;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.usoftchina.saas.commons.cache.ConfigsCache;
 import com.usoftchina.saas.inquiry.api.InquiryApi;
 import com.usoftchina.saas.inquiry.api.SearchApi;
 import com.usoftchina.saas.inquiry.po.inquiry.*;
@@ -36,6 +37,8 @@ import com.usoftchina.saas.purchase.mapper.*;
 import com.usoftchina.saas.purchase.po.*;
 import com.usoftchina.saas.purchase.service.ProdInOutService;
 import com.usoftchina.saas.purchase.service.PurchaseService;
+import com.usoftchina.saas.transfers.api.SendMessageApi;
+import com.usoftchina.saas.transfers.dto.MessageInfo;
 import com.usoftchina.saas.utils.BeanMapper;
 import com.usoftchina.saas.utils.CollectionUtils;
 import com.usoftchina.saas.utils.JsonUtils;
@@ -84,6 +87,8 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     private CompanyApi companyApi;
     @Autowired
     private AccountApi accountApi;
+    @Autowired
+    private SendMessageApi sendMessageApi;
 
     private static final Logger LOGGER = LoggerFactory.getLogger(PurchaseServiceImpl.class);
 
@@ -189,6 +194,10 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
             calcPurchase(pu_id);
             //日志记录
             messageLogService.save(baseDTO);
+
+            //上传至B2B
+            uploadB2B(pu_id);
+
             return baseDTO;
         }
         //校验有来源的验收验退币别是否与源单据一致
@@ -233,6 +242,37 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         return baseDTO;
     }
 
+    /**
+     * 上传至B2B
+     * @param id
+     */
+    private void uploadB2B(Long id) {
+        Long userId = BaseContextHolder.getUserId();
+        Long companyId = BaseContextHolder.getCompanyId();
+        //是否启用B2B
+        boolean enable = ConfigsCache.current().enableB2B();
+        if (enable) {
+            //更新上传状态
+            updateB2BStatus(id, "待上传");
+            //生成消息
+            MessageInfo messageInfo = new MessageInfo(userId, BillCodeSeq.PURCHASE.name(), String.valueOf(id), companyId);
+            sendMessageApi.sendMsg(messageInfo);
+        }
+    }
+
+    /**
+     * 更新采购案B2B上传状态
+     * @param id
+     * @param status
+     */
+    @Override
+    public void updateB2BStatus(Long id, String status){
+        Purchase purchase = new Purchase();
+        purchase.setId(id);
+        purchase.setB2bStatus(status);
+        getMapper().updateByPrimaryKeySelective(purchase);
+    }
+
 
     @Override
     @Transactional

+ 3 - 0
applications/purchase/purchase-server/src/main/resources/mapper/PurchaseMapper.xml

@@ -382,6 +382,9 @@
       <if test="pu_rate != null" >
         pu_rate = #{pu_rate,jdbcType=DOUBLE},
       </if>
+      <if test="b2bStatus != null">
+        b2bStatus = #{b2bStatus,jdbcType=DOUBLE}
+      </if>
     </set>
     where pu_id = #{id,jdbcType=INTEGER}
   </update>

+ 1 - 1
applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/api/PurchaseApi.java → applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/api/B2BPurchaseApi.java

@@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 
 @FeignClient(url = "${b2b.baseUrl.uu}", name = "b2b-server")
 @RequestMapping("/erp/purchase")
-public interface PurchaseApi {
+public interface B2BPurchaseApi {
     /**
      * 上传采购单
      * @param data

+ 4 - 0
applications/transfers/transfers-server/pom.xml

@@ -69,6 +69,10 @@
           <artifactId>mall-api</artifactId>
           <version>1.0.0-SNAPSHOT</version>
         </dependency>
+        <dependency>
+          <groupId>com.usoftchina.saas</groupId>
+          <artifactId>purchase-api</artifactId>
+        </dependency>
         <!-- db -->
         <dependency>
             <groupId>mysql</groupId>

+ 1 - 1
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/ReceiveService.java

@@ -56,7 +56,7 @@ public class ReceiveService {
         Executable task = null;
        try {
            switch(BillCodeSeq.valueOf(info.getBizType())) {
-               case PURCHASE:
+               case PURCHASE:       //采购单上传
                    task = new SendPurchaseTask();
                    break;
                case PURCHASEIN:

+ 40 - 1
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/task/SendPurchaseTask.java

@@ -1,14 +1,53 @@
 package com.usoftchina.saas.transfers.task;
 
+import com.usoftchina.saas.account.api.CompanyApi;
+import com.usoftchina.saas.inquiry.api.B2BPurchaseApi;
+import com.usoftchina.saas.inquiry.po.purchase.Purchase;
+import com.usoftchina.saas.inquiry.po.purchase.PurchaseDetail;
+import com.usoftchina.saas.purchase.api.PurchaseApi;
+import com.usoftchina.saas.purchase.dto.PurchaseDTO;
+import com.usoftchina.saas.purchase.dto.PurchaseFormDTO;
 import com.usoftchina.saas.transfers.dto.MessageInfo;
+import com.usoftchina.saas.utils.BeanMapper;
+import com.usoftchina.saas.utils.JsonUtils;
+import com.usoftchina.saas.utils.ObjectUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
 
 /**
  * @author: guq
  * @create: 2019-01-08 13:45
  **/
 public class SendPurchaseTask extends Executable {
+
+    @Autowired
+    private CompanyApi companyApi;
+    @Autowired
+    private PurchaseApi purchaseApi;
+    @Autowired
+    private B2BPurchaseApi b2BPurchaseApi;
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(SendProductTask.class);
+
     @Override
     public void execute(MessageInfo messageInfo) {
-        //TODO
+        PurchaseFormDTO purchaseFormDTO = purchaseApi.getFormData(Long.parseLong(messageInfo.getBizId())).getData();
+        if (!ObjectUtils.isEmpty(purchaseFormDTO)){
+            //采购单主表数据
+            PurchaseDTO purchaseDTO = purchaseFormDTO.getMain();
+            Purchase b2bPurchase = BeanMapper.map(purchaseDTO, Purchase.class);
+            //b2bPurchase.setVe_uu(0L);
+            //采购单明细表数据
+            List<PurchaseDetail> b2bPurchaseDetailList = BeanMapper.mapList(purchaseFormDTO.getItems(), PurchaseDetail.class);
+            b2bPurchase.setPurchaseDetails(b2bPurchaseDetailList);
+
+            /*SavePurchaseListResp savePurchaseListResp = */
+            b2BPurchaseApi.savePurchase(JsonUtils.toJsonString(b2bPurchase));
+            purchaseApi.updateB2BStatus(Long.parseLong(messageInfo.getBizId()), "已上传");
+        }
+
     }
 }