瀏覽代碼

完成实时同步iBOSS采购订单功能

sh4wmoo 3 年之前
父節點
當前提交
78defbb327

+ 46 - 0
src/main/java/com/dk/mnls_mp/controller/mnls/IBOSSOrderController.java

@@ -0,0 +1,46 @@
+package com.dk.mnls_mp.controller.mnls;
+
+
+import com.dk.mnls_mp.infrastructure.base.UserRightCheck;
+import com.dk.mnls_mp.model.command.PurchaseOrderCreateCommand;
+import com.dk.mnls_mp.model.query.IbossDataQuery;
+import com.dk.mnls_mp.service.mnls.IBOSSDataService;
+import com.dk.mnls_mp.service.mnls.IBOSSOrderService;
+import com.dongke.base.exceptionHandler.ResponseResultVO;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+/**
+ * <p>
+ * iBOSS订单 前端控制器
+ * </p>
+ *
+ * @author 张潇木
+ * @since 2022-09-16
+ */
+@RestController
+@RequestMapping("/iboss_order")
+public class IBOSSOrderController {
+
+    @Autowired
+    IBOSSOrderService IBOSSOrderService;
+
+
+    /**
+     * @desc   : 新建采购订单
+     * @author : 张潇木
+     * @date   : 2022/10/9 14:23
+     */
+    @ApiOperation(value = "新建采购订单", notes = "新建采购订单")
+    @PostMapping({"/create_purchase_order"})
+    @UserRightCheck(code = "009002")
+    public ResponseResultVO createPurchaseOrder(@Valid @RequestBody PurchaseOrderCreateCommand command) {
+        return IBOSSOrderService.createPurchaseOrder(command);
+    }
+}

+ 56 - 0
src/main/java/com/dk/mnls_mp/model/command/PurchaseOrderCreateCommand.java

@@ -0,0 +1,56 @@
+package com.dk.mnls_mp.model.command;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @desc   : 创建采购订单命令请求体
+ * @author : 张潇木
+ * @date   : 2022/10/10 10:23
+ */
+@Data
+@Accessors(chain = true)
+public class PurchaseOrderCreateCommand {
+
+    /**
+     * 经销商编码
+     */
+    @NotNull(message = "经销商编码不能为空")
+    private String dealerCode;
+
+    /**
+     * 用户编码(中台赋值)
+     */
+    private String userCode;
+
+    /**
+     * 账套编码(中台赋值)
+     */
+    private String accountCode;
+
+    /**
+     * 采购订单单号
+     */
+    @NotNull(message = "订单单号不能为空")
+    private String orderNo;
+
+    /**
+     * 账务日期(非必填,如果为空则为当天日期)
+     */
+    private String accountDate;
+
+    /**
+     * 厂商票号
+     */
+    private String billNo;
+
+    /**
+     * 订单明细
+     */
+    @NotNull(message = "订单明细不能为空")
+    private List<PurchaseOrderCreateDetailCommand> orderDetail;
+
+}

+ 57 - 0
src/main/java/com/dk/mnls_mp/model/command/PurchaseOrderCreateDetailCommand.java

@@ -0,0 +1,57 @@
+package com.dk.mnls_mp.model.command;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * @desc   : 创建采购订单明细命令请求体
+ * @author : 张潇木
+ * @date   : 2022/10/10 10:23
+ */
+@Data
+public class PurchaseOrderCreateDetailCommand {
+
+    /**
+     * 美云商品主表ID
+     */
+    @NotNull(message = "itemId不能为空")
+    private Long itemId;
+
+    /**
+     * 订单数量
+     */
+    @NotNull(message = "订单数量不能为空")
+    private BigDecimal orderQuantity;
+
+    /**
+     * 订单价格
+     */
+    @NotNull(message = "订单价格不能为空")
+    private BigDecimal orderPrice;
+
+    /**
+     * 规格
+     */
+    @NotNull(message = "规格不能为空")
+    private String specification;
+
+    /**
+     * 等级名称
+     */
+    @NotNull(message = "等级名称不能为空")
+    private String gradeName;
+
+    /**
+     * 色号
+     */
+    @NotNull(message = "色号不能为空")
+    private String colorNo;
+
+    /**
+     * 金额
+     */
+    @NotNull(message = "金额不能为空")
+    private BigDecimal orderAmount;
+}

+ 89 - 0
src/main/java/com/dk/mnls_mp/service/mnls/IBOSSOrderService.java

@@ -0,0 +1,89 @@
+package com.dk.mnls_mp.service.mnls;
+
+import com.alibaba.fastjson.JSON;
+import com.dk.mnls_mp.infrastructure.base.ResponseCodeEnum;
+import com.dk.mnls_mp.infrastructure.util.HttpHelper;
+import com.dk.mnls_mp.infrastructure.util.XmlUtil;
+import com.dk.mnls_mp.mapper.basic.CustomerMapper;
+import com.dk.mnls_mp.mapper.basic.WCFinfoMapper;
+import com.dk.mnls_mp.model.command.PurchaseOrderCreateCommand;
+import com.dk.mnls_mp.model.dto.IBOSSDTO;
+import com.dk.mnls_mp.model.pojo.basic.Customer;
+import com.dk.mnls_mp.model.pojo.basic.WCFinfo;
+import com.dongke.base.exceptionHandler.BaseBusinessException;
+import com.dongke.base.exceptionHandler.ResponseResultUtil;
+import com.dongke.base.exceptionHandler.ResponseResultVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Map;
+
+/**
+ * @desc   : 订单接口业务类
+ * @author : 张潇木
+ * @date   : 2022/10/9 14:22
+ */
+@Slf4j
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class IBOSSOrderService{
+
+	private static final String WEBSERVICE_INTERFACE_POSTFIX = "/WebService/DKIWebServiceInterfaceDocking.asmx/";
+
+	@Autowired
+	private CustomerMapper customerMapper;
+	
+	@Autowired
+	private WCFinfoMapper wcFinfoMapper;
+
+	/**
+	 * @desc   : 新建采购订单
+	 * @author : 张潇木
+	 * @date   : 2022/10/10 10:44
+	 */
+	public ResponseResultVO createPurchaseOrder(PurchaseOrderCreateCommand command) {
+		//根据经销商编码查询经销商信息
+		Customer customer = customerMapper.selectByCode(command.getDealerCode());
+		if(customer!=null){
+			//调用iBOSS接口参数accountCode/userCode 赋值
+			command.setAccountCode(customer.getDongkeaccountcode()).setUserCode(customer.getUniqueCode());
+		}else{
+			return ResponseResultUtil.error(ResponseCodeEnum.CUSTOMER_CODE_NOT_EXIST.getCode(),ResponseCodeEnum.CUSTOMER_CODE_NOT_EXIST.getMessage());
+		}
+		try {
+			//查询客户webservice信息
+			WCFinfo wcFinfo = wcFinfoMapper.selectById(customer.getWcfid());
+			if (wcFinfo == null) {
+				throw new BaseBusinessException(666,"没有找到此客户的webService信息,客户信息=>"+customer);
+			}
+			//拼接url 区别于恒洁中台 直接调用iBOSS的webservice接口
+			String url = "http://"+wcFinfo.getWcfip() + ":" + wcFinfo.getWcfport() + WEBSERVICE_INTERFACE_POSTFIX +"DK_SaveProcurementOrder_MP";
+			
+			log.info("=*=*=*=*=*=*=*=*=" + "参数:" + JSON.toJSONString(command) + "=*=*=*=*=*=*=*=*=");
+			//调用接口
+			ResponseResultVO resultVO = HttpHelper.callIBOSSWebservice(url, command,null);
+
+			//成功后插入数据
+			if (ResponseCodeEnum.SUCCESS.getCode()==resultVO.getCode()) {
+				//XML转map
+				Map<String, Object> resJson = XmlUtil.xmlToJson(resultVO.getData().toString());
+				//map转DTO
+				IBOSSDTO IBOSSDTO = JSON.parseObject(resJson.get("string").toString(), IBOSSDTO.class);
+				if(0==IBOSSDTO.getStatus()){
+					log.info("新建采购订单成功,单号=>{}",command.getOrderNo());
+					return ResponseResultUtil.success(200,"新建采购订单成功,单号=>"+command.getOrderNo());
+				}else{
+					log.info("新建采购订单失败,iBOSS接口状态码不等于0,单号=>{},接口返回值=>{}",command.getOrderNo(),IBOSSDTO);
+					return ResponseResultUtil.error(666,"新建采购订单失败,iBOSS接口状态码不等于0,单号=>"+command.getOrderNo());
+				}
+			}
+			log.info("新建采购订单失败,http状态码不等于200,单号=>{},接口返回值=>{}",command.getOrderNo(),resultVO);
+			return ResponseResultUtil.error(666,"新建采购订单失败,http状态码不等于200,单号=>"+command.getOrderNo());
+		} catch (Exception e) {
+			log.error("新建采购订单异常,单号=>{},异常信息=>{}"+command.getOrderNo(), e);
+			return ResponseResultUtil.error(666,"新建采购订单异常,单号=>"+command.getOrderNo());
+		}
+	}
+}

+ 1 - 1
src/main/resources/application-pro.yml

@@ -35,4 +35,4 @@ runType: pro
 
 my-client-id: csapiseeburger
 my-client-secret: 7d9aQKv0ehx4
-my-goods-code-url: https://ccs-test.monalisagroup.com.cn/ssc/intfcenter/api/cheauth/queryItemList
+my-goods-code-url: https://ccs.monalisagroup.com.cn/ssc/intfcenter/api/cheauth/queryItemList