Преглед на файлове

采购单结案/反结案上传

chenw преди 7 години
родител
ревизия
9220c24b28

+ 2 - 0
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/BillCodeSeq.java

@@ -62,6 +62,8 @@ public enum  BillCodeSeq {
 
     BOM("BOM资料", "Bom"),
 
+    PURCHASEEND("采购单结案", "PURCHASEEND"),
+
     APCHECK("对账单", "APCHECK");
 
 

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

@@ -401,6 +401,10 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         DocBaseDTO docBaseDTO = getBaseDTOById(id);
         //日志
         messageLogService.close(docBaseDTO);
+        if (ConfigsCache.current().enableB2B()){
+            MessageInfo messageInfo = new MessageInfo(BaseContextHolder.getUserId(), BillCodeSeq.PURCHASEEND.name(), String.valueOf(id), BaseContextHolder.getCompanyId());
+            sendMessageApi.sendMsg(messageInfo);
+        }
         return docBaseDTO;
     }
 
@@ -464,6 +468,11 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
             docBaseDTO = getBaseDTOById(id);
             //日志
             messageLogService.open(docBaseDTO);
+            //启用B2B,采购单结案反结案状态上传
+            if (ConfigsCache.current().enableB2B()){
+                MessageInfo messageInfo = new MessageInfo(BaseContextHolder.getUserId(), BillCodeSeq.PURCHASEEND.name(), String.valueOf(id), BaseContextHolder.getCompanyId());
+                sendMessageApi.sendMsg(messageInfo);
+            }
             return docBaseDTO;
         }
         return docBaseDTO;

+ 55 - 0
applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/po/purchase/PurchaseDetailEnd.java

@@ -0,0 +1,55 @@
+package com.usoftchina.saas.inquiry.po.purchase;
+
+/**
+ * @Author chenwei
+ * @Date 2019/01/15
+ */
+public class PurchaseDetailEnd {
+
+    private String pd_code;
+    private short pd_detno;
+    private short pd_ended;
+    private Integer pd_id;
+
+    public String getPd_code() {
+        return pd_code;
+    }
+
+    public void setPd_code(String pd_code) {
+        this.pd_code = pd_code;
+    }
+
+    public short getPd_detno() {
+        return pd_detno;
+    }
+
+    public void setPd_detno(short pd_detno) {
+        this.pd_detno = pd_detno;
+    }
+
+    public short getPd_ended() {
+        return pd_ended;
+    }
+
+    public void setPd_ended(short pd_ended) {
+        this.pd_ended = pd_ended;
+    }
+
+    public Integer getPd_id() {
+        return pd_id;
+    }
+
+    public void setPd_id(Integer pd_id) {
+        this.pd_id = pd_id;
+    }
+
+    public PurchaseDetailEnd() {
+    }
+
+    public PurchaseDetailEnd(String pd_code, short pd_detno, short pd_ended, Integer pd_id) {
+        this.pd_code = pd_code;
+        this.pd_detno = pd_detno;
+        this.pd_ended = pd_ended;
+        this.pd_id = pd_id;
+    }
+}

+ 1 - 1
applications/transfers/transfers-api/src/main/java/com/usoftchina/saas/transfers/api/SendMessageApi.java

@@ -17,7 +17,7 @@ public interface SendMessageApi {
     class SendMessageApiFallBack implements SendMessageApi {
         @Override
         public Result sendMsg(MessageInfo info) {
-            return null;
+            return Result.error("网络异常,请稍后重试!");
         }
     }
 }

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

@@ -68,6 +68,11 @@ public class ReceiveService {
                case PRODUCT:        //物料库上传
                    task = new SendProductTask();
                    break;
+               case PURCHASEEND:
+                   task = new SendPurchaseEndTask();
+                   break;
+               default:
+                   break;
            }
 
            task.execute(info);

+ 79 - 0
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/task/SendPurchaseEndTask.java

@@ -0,0 +1,79 @@
+package com.usoftchina.saas.transfers.task;
+
+import com.usoftchina.saas.account.api.CompanyApi;
+import com.usoftchina.saas.inquiry.po.purchase.PurchaseDetailEnd;
+import com.usoftchina.saas.purchase.api.PurchaseApi;
+import com.usoftchina.saas.purchase.dto.PurchaseDetailDTO;
+import com.usoftchina.saas.purchase.dto.PurchaseFormDTO;
+import com.usoftchina.saas.transfers.dto.MessageInfo;
+import com.usoftchina.saas.utils.CollectionUtils;
+import com.usoftchina.saas.utils.JsonUtils;
+import com.usoftchina.saas.utils.http.HttpUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author chenwei
+ * @Date 2019/01/15
+ */
+public class SendPurchaseEndTask extends Executable {
+
+    @Autowired
+    private PurchaseApi purchaseApi;
+    @Autowired
+    private CompanyApi companyApi;
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(SendPurchaseEndTask.class);
+    private final String purchaseEndUrl = "/erp/purchase/end";
+
+    @Override
+    public void execute(MessageInfo messageInfo) throws Exception {
+        String accessSecretKey = companyApi.getCompanyById(messageInfo.getCompanyId()).getData().getAccessKey();
+        PurchaseFormDTO purchaseFormDTO = purchaseApi.getFormData(Long.parseLong(messageInfo.getBizId())).getData();
+        short endStatus = 0;
+        //结案、反结案
+        if("CLOSE".equals(purchaseFormDTO.getMain().getPu_statuscode())) {
+            endStatus = 1;     //结案
+        } else {
+            endStatus = 0;     //反结案
+        }
+        List<PurchaseDetailDTO> purchaseDetailDTOList = purchaseFormDTO.getItems();
+        List<PurchaseDetailEnd> purchaseDetailEndList = new ArrayList<PurchaseDetailEnd>();
+        if (!CollectionUtils.isEmpty(purchaseDetailDTOList)) {
+            //构造需要发送的数据
+            for (PurchaseDetailDTO purchaseDetailDTO : purchaseDetailDTOList) {
+                PurchaseDetailEnd purchaseDetailEnd = new PurchaseDetailEnd(purchaseDetailDTO.getPd_code(),
+                        new BigDecimal(purchaseDetailDTO.getPd_detno()).shortValue(), endStatus,
+                        new BigDecimal(purchaseDetailDTO.getId()).intValue());
+                purchaseDetailEndList.add(purchaseDetailEnd);
+            }
+            //发送给b2b
+            sendPurchaseEndToB2B(purchaseEndUrl, Long.parseLong(String.valueOf(messageInfo.getBizId())),
+                    JsonUtils.toJsonString(purchaseDetailEndList), accessSecretKey);
+        }
+
+    }
+
+    /**
+     * 发送http请求,更新上传状态
+     * @param bizId
+     * @param data
+     * @param accessSecretKey
+     * @throws Exception
+     */
+    private void sendPurchaseEndToB2B(String url, Long bizId, String data, String accessSecretKey) throws Exception {
+        Map<String, String> params = new HashMap<String, String>();
+        params.put("data", JsonUtils.toJsonString(data));
+        HttpUtil.Response response = HttpUtil.sendPostRequest(url, params, true, accessSecretKey);
+        if (response.getStatusCode() == 200){
+            purchaseApi.updateB2BStatus(bizId, "已上传");
+        }
+    }
+}