Jelajahi Sumber

采购验收验退反过账上传

chenw 7 tahun lalu
induk
melakukan
fa9a86d896

+ 13 - 1
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/controller/ProdInOutController.java

@@ -213,6 +213,18 @@ public class ProdInOutController {
     @GetMapping("/homepageList")
     public Result homepageList(PageRequest page, ListReqDTO req){
         PageInfo pageInfo = prodInOutService.homepageList(page, req);
-         return Result.success(pageInfo);
+        return Result.success(pageInfo);
+    }
+
+    /**
+     * 更新B2B上传状态
+     * @param id
+     * @param status
+     * @return
+     */
+    @PostMapping("/b2bStatus/update")
+    public Result updateB2BStatus(@RequestParam("id") Long id, @RequestParam("status") String status){
+        prodInOutService.updateB2BStatus(id, status);
+        return Result.success();
     }
 }

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

@@ -92,4 +92,6 @@ public class ProdInOut extends CommonBaseEntity implements Serializable {
     private String pi_seller;
 
     private Double pi_rate;
+
+    private String b2bStatus;
 }

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

@@ -85,4 +85,11 @@ public interface ProdInOutService extends CommonBaseService<ProdInOutMapper, Pro
     void getDefaultWarehouseByProduct(Long pi_id);
 
     PageInfo homepageList(PageRequest page, ListReqDTO req);
+
+    /**
+     * 更新B2B上传状态
+     * @param id
+     * @param status
+     */
+    void updateB2BStatus(Long id, String status);
 }

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

@@ -81,6 +81,14 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         return pageInfo;
     }
 
+    @Override
+    public void updateB2BStatus(Long id, String status) {
+        ProdInOut prodInOut = new ProdInOut();
+        prodInOut.setId(id);
+        prodInOut.setB2bStatus(status);
+        getMapper().updateByPrimaryKeySelective(prodInOut);
+    }
+
     @Override
     public PageInfo<ProdInOutList> getListData(PageRequest page, ListReqDTO req) {
         //设置默认分页

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

@@ -461,6 +461,9 @@
       <if test="pi_rate != null">
         pi_rate = #{pi_rate,jdbcType=VARCHAR},
       </if>
+      <if test="b2bStatus != null">
+        b2bStatus = #{b2bStatus,jdbcType=VARCHAR},
+      </if>
     </set>
     where pi_id = #{id,jdbcType=INTEGER}
   </update>

+ 62 - 0
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/task/SendPurchaseInResTask.java

@@ -1,6 +1,24 @@
 package com.usoftchina.saas.transfers.task;
 
+import com.usoftchina.saas.account.api.CompanyApi;
+import com.usoftchina.saas.account.dto.CompanyDTO;
+import com.usoftchina.saas.inquiry.po.purchase.PurchaseProdInOut;
+import com.usoftchina.saas.inquiry.po.purchase.PurchaseProdInOutDetail;
+import com.usoftchina.saas.purchase.api.ProdInOutApi;
+import com.usoftchina.saas.purchase.dto.ProdIODetailDTO;
+import com.usoftchina.saas.purchase.dto.ProdInOutDTO;
+import com.usoftchina.saas.purchase.dto.ProdInOutFormDTO;
+import com.usoftchina.saas.transfers.config.B2BConfig;
 import com.usoftchina.saas.transfers.dto.MessageInfo;
+import com.usoftchina.saas.transfers.utils.SendUtil;
+import com.usoftchina.saas.utils.BeanMapper;
+import com.usoftchina.saas.utils.JsonUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * 采购验收单反过账
@@ -8,8 +26,52 @@ import com.usoftchina.saas.transfers.dto.MessageInfo;
  * @Date 2019/01/16
  */
 public class SendPurchaseInResTask extends Executable {
+
+    @Autowired
+    private CompanyApi companyApi;
+    @Autowired
+    private ProdInOutApi prodInOutApi;
+    @Autowired
+    private B2BConfig b2bConfig;
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(SendProductTask.class);
+    private final String prodInUrl = "/erp/purchase/prodInOut/nonPosting";
+
     @Override
     public void execute(MessageInfo messageInfo) throws Exception {
+        CompanyDTO companyDTO = companyApi.getCompanyById(messageInfo.getCompanyId()).getData();
+
+        ProdInOutFormDTO prodInOutFormDTO = prodInOutApi.getProdFormData(Long.parseLong(messageInfo.getBizId())).getData();
+        ProdInOutDTO prodInOutDTO = prodInOutFormDTO.getMain();
+        PurchaseProdInOut b2bPurchaseProdInOut = BeanMapper.map(prodInOutDTO, PurchaseProdInOut.class);
+        convertToPronInOut(prodInOutDTO, b2bPurchaseProdInOut);
+        LOGGER.info("ProdInOutDTO={}, PurchaseProdInOut={}", JsonUtils.toJsonString(prodInOutDTO), JsonUtils.toJsonString(b2bPurchaseProdInOut));
+
+        List<PurchaseProdInOutDetail> b2bPurchaseProdInOutDetailList = BeanMapper.mapList(prodInOutFormDTO.getItems(), PurchaseProdInOutDetail.class);
+        convertToPronInOutDetail(prodInOutFormDTO.getItems(), b2bPurchaseProdInOutDetailList);
+        b2bPurchaseProdInOut.setDetails(b2bPurchaseProdInOutDetailList);
+        LOGGER.info("ProdIODetailDTOList={}, b2bPurchaseProdInOutDetailList={}", JsonUtils.toJsonString(prodInOutFormDTO.getItems()), JsonUtils.toJsonString(b2bPurchaseProdInOutDetailList));
 
+        boolean success = SendUtil.sendToB2B(b2bConfig.getCommon() + prodInUrl, JsonUtils.toJsonString(b2bPurchaseProdInOut), companyDTO.getAccessKey());
+        if (success) {
+            LOGGER.info("采购验收单(反过账)上传成功, id={}", messageInfo.getBizId());
+            prodInOutApi.updateB2BStatus(Long.parseLong(messageInfo.getBizId()), "已上传");
+        }
     }
+
+    private void convertToPronInOut(ProdInOutDTO prodInOutDTO, PurchaseProdInOut b2bPurchaseProdInOut) {
+        b2bPurchaseProdInOut.setPi_rate(new BigDecimal(prodInOutDTO.getPi_rate()).floatValue());
+        b2bPurchaseProdInOut.setPi_inoutman(prodInOutDTO.getPi_auditman());
+        b2bPurchaseProdInOut.setPi_id(prodInOutDTO.getId());
+    }
+
+    private void convertToPronInOutDetail(List<ProdIODetailDTO> items, List<PurchaseProdInOutDetail> b2bPurchaseProdInOutDetailList){
+        for (int i = 0; i < items.size(); i++) {
+            ProdIODetailDTO prodIODetailDTO = items.get(i);
+            PurchaseProdInOutDetail b2bPurchaseProdInOutDetail = b2bPurchaseProdInOutDetailList.get(i);
+            b2bPurchaseProdInOutDetail.setPd_id(prodIODetailDTO.getId());
+            b2bPurchaseProdInOutDetail.setPd_detno(new BigDecimal(prodIODetailDTO.getPd_pdno()).shortValue());
+        }
+    }
+
 }

+ 61 - 0
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/task/SendPurchaseOutResTask.java

@@ -1,6 +1,24 @@
 package com.usoftchina.saas.transfers.task;
 
+import com.usoftchina.saas.account.api.CompanyApi;
+import com.usoftchina.saas.account.dto.CompanyDTO;
+import com.usoftchina.saas.inquiry.po.purchase.PurchaseProdInOut;
+import com.usoftchina.saas.inquiry.po.purchase.PurchaseProdInOutDetail;
+import com.usoftchina.saas.purchase.api.ProdInOutApi;
+import com.usoftchina.saas.purchase.dto.ProdIODetailDTO;
+import com.usoftchina.saas.purchase.dto.ProdInOutDTO;
+import com.usoftchina.saas.purchase.dto.ProdInOutFormDTO;
+import com.usoftchina.saas.transfers.config.B2BConfig;
 import com.usoftchina.saas.transfers.dto.MessageInfo;
+import com.usoftchina.saas.transfers.utils.SendUtil;
+import com.usoftchina.saas.utils.BeanMapper;
+import com.usoftchina.saas.utils.JsonUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * 采购延退单反过账
@@ -8,8 +26,51 @@ import com.usoftchina.saas.transfers.dto.MessageInfo;
  * @Date 2019/01/16
  */
 public class SendPurchaseOutResTask extends Executable {
+    @Autowired
+    private CompanyApi companyApi;
+    @Autowired
+    private ProdInOutApi prodInOutApi;
+    @Autowired
+    private B2BConfig b2bConfig;
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(SendProductTask.class);
+    private final String prodOutUrl = "/erp/purchase/prodReturn/nonPosting";
+
+
     @Override
     public void execute(MessageInfo messageInfo) throws Exception {
+        CompanyDTO companyDTO = companyApi.getCompanyById(messageInfo.getCompanyId()).getData();
+
+        ProdInOutFormDTO prodInOutFormDTO = prodInOutApi.getProdFormData(Long.parseLong(messageInfo.getBizId())).getData();
+        ProdInOutDTO prodInOutDTO = prodInOutFormDTO.getMain();
+        PurchaseProdInOut b2bPurchaseProdInOut = BeanMapper.map(prodInOutDTO, PurchaseProdInOut.class);
+        convertToPronInOut(prodInOutDTO, b2bPurchaseProdInOut);
+        LOGGER.info("ProdInOutDTO={}, PurchaseProdInOut={}", JsonUtils.toJsonString(prodInOutDTO), JsonUtils.toJsonString(b2bPurchaseProdInOut));
+
+        List<PurchaseProdInOutDetail> b2bPurchaseProdInOutDetailList = BeanMapper.mapList(prodInOutFormDTO.getItems(), PurchaseProdInOutDetail.class);
+        convertToPronInOutDetail(prodInOutFormDTO.getItems(), b2bPurchaseProdInOutDetailList);
+        b2bPurchaseProdInOut.setDetails(b2bPurchaseProdInOutDetailList);
+        LOGGER.info("ProdIODetailDTOList={}, b2bPurchaseProdInOutDetailList={}", JsonUtils.toJsonString(prodInOutFormDTO.getItems()), JsonUtils.toJsonString(b2bPurchaseProdInOutDetailList));
+
+        boolean success = SendUtil.sendToB2B(b2bConfig.getCommon() + prodOutUrl, JsonUtils.toJsonString(b2bPurchaseProdInOut), companyDTO.getAccessKey());
+        if (success) {
+            LOGGER.info("采购验退单(反过账)上传成功, id={}", messageInfo.getBizId());
+            prodInOutApi.updateB2BStatus(Long.parseLong(messageInfo.getBizId()), "已上传");
+        }
+    }
+
+    private void convertToPronInOut(ProdInOutDTO prodInOutDTO, PurchaseProdInOut b2bPurchaseProdInOut) {
+        b2bPurchaseProdInOut.setPi_rate(new BigDecimal(prodInOutDTO.getPi_rate()).floatValue());
+        b2bPurchaseProdInOut.setPi_inoutman(prodInOutDTO.getPi_auditman());
+        b2bPurchaseProdInOut.setPi_id(prodInOutDTO.getId());
+    }
 
+    private void convertToPronInOutDetail(List<ProdIODetailDTO> items, List<PurchaseProdInOutDetail> b2bPurchaseProdInOutDetailList){
+        for (int i = 0; i < items.size(); i++) {
+            ProdIODetailDTO prodIODetailDTO = items.get(i);
+            PurchaseProdInOutDetail b2bPurchaseProdInOutDetail = b2bPurchaseProdInOutDetailList.get(i);
+            b2bPurchaseProdInOutDetail.setPd_id(prodIODetailDTO.getId());
+            b2bPurchaseProdInOutDetail.setPd_detno(new BigDecimal(prodIODetailDTO.getPd_pdno()).shortValue());
+        }
     }
 }