diff --git a/api/oms-api/src/main/java/cn/qihangerp/oms/dou/controller/DouOrderContoller.java b/api/oms-api/src/main/java/cn/qihangerp/oms/dou/controller/DouOrderContoller.java index f9453097..b9a1787a 100644 --- a/api/oms-api/src/main/java/cn/qihangerp/oms/dou/controller/DouOrderContoller.java +++ b/api/oms-api/src/main/java/cn/qihangerp/oms/dou/controller/DouOrderContoller.java @@ -41,22 +41,6 @@ public class DouOrderContoller extends BaseController { return success(orderService.queryDetailById(id)); } - /** - * 手动推送到系统 - * @param bo - * @return - */ - @PostMapping("/push_oms") - @ResponseBody - public AjaxResult pushOms(@RequestBody DouOrderPushBo bo) { - // TODO:需要优化消息格式 - if(bo!=null && bo.getIds()!=null) { - for(String id: bo.getIds()) { - mqUtils.sendApiMessage(MqMessage.build(EnumShopType.DOU, MqType.ORDER_MESSAGE, id)); - } - } - return success(); - } @PostMapping("/confirmOrder") public AjaxResult confirmOrder(@RequestBody DouOrderConfirmBo bo) { diff --git a/api/oms-api/src/main/java/cn/qihangerp/oms/wei/controller/WeiOrderApiController.java b/api/oms-api/src/main/java/cn/qihangerp/oms/wei/controller/WeiOrderApiController.java index b68fc3c0..d92d4ce2 100644 --- a/api/oms-api/src/main/java/cn/qihangerp/oms/wei/controller/WeiOrderApiController.java +++ b/api/oms-api/src/main/java/cn/qihangerp/oms/wei/controller/WeiOrderApiController.java @@ -14,6 +14,7 @@ import cn.qihangerp.open.wei.model.OrderDetailDeliverInfoAddress; import cn.qihangerp.security.common.BaseController; import com.alibaba.fastjson2.JSONObject; import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -21,16 +22,22 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import cn.qihangerp.model.request.OrderPullRequest; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +@Slf4j @RequestMapping("/wei/order") @RestController @AllArgsConstructor public class WeiOrderApiController extends BaseController { private final WeiApiCommon apiCommon; private final WeiOrderService weiOrderService; - + private final String DATE_PATTERN = + "^(?:(?:(?:\\d{4}-(?:0?[1-9]|1[0-2])-(?:0?[1-9]|1\\d|2[0-8]))|(?:(?:(?:\\d{2}(?:0[48]|[2468][048]|[13579][26])|(?:(?:0[48]|[2468][048]|[13579][26])00))-0?2-29))$)|(?:(?:(?:\\d{4}-(?:0?[13578]|1[02]))-(?:0?[1-9]|[12]\\d|30))$)|(?:(?:(?:\\d{4}-0?[13-9]|1[0-2])-(?:0?[1-9]|[1-2]\\d|30))$)|(?:(?:(?:\\d{2}(?:0[48]|[13579][26]|[2468][048])|(?:(?:0[48]|[13579][26]|[2468][048])00))-0?2-29))$)$"; + private final Pattern DATE_FORMAT = Pattern.compile(DATE_PATTERN); /** * 拉取订单 * @param params @@ -41,6 +48,16 @@ public class WeiOrderApiController extends BaseController { if (params.getShopId() == null || params.getShopId() <= 0) { return AjaxResult.error(HttpStatus.PARAMS_ERROR, "参数错误,没有店铺Id"); } + if (StringUtils.isEmpty(params.getStartTime())) { + return AjaxResult.error(HttpStatus.PARAMS_ERROR, "参数错误,没有下单日期"); + } + + // 判断时间格式 + Matcher matcher = DATE_FORMAT.matcher(params.getStartTime()); + boolean b = matcher.find(); + if (!b) { + return AjaxResult.error("下单日期格式错误"); + } var checkResult = apiCommon.checkBefore(params.getShopId()); if (checkResult.getCode() != ResultVoEnum.SUCCESS.getIndex()) { @@ -50,8 +67,9 @@ public class WeiOrderApiController extends BaseController { String accessToken = checkResult.getData().getAccessToken(); // String appKey = checkResult.getData().getAppKey(); // String appSecret = checkResult.getData().getAppSecret(); - LocalDateTime endTime = LocalDateTime.now(); - LocalDateTime startTime = endTime.minusHours(1); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime startTime = LocalDateTime.parse(params.getStartTime() + " 00:00:01", formatter); + LocalDateTime endTime = LocalDateTime.parse(params.getStartTime() + " 23:59:59", formatter); ApiResultVo orderApiResultVo = WeiOrderApiHelper.pullOrderList(startTime, endTime, accessToken,1,100); // ApiResultVo apiResultVo = OrderApiHelper.pullOrderList(startTime, endTime, accessToken); @@ -138,13 +156,14 @@ public class WeiOrderApiController extends BaseController { } else if (result.getCode() == ResultVoEnum.SUCCESS.getIndex()) { insertSuccess++; } else { + log.error(result.getMsg()); totalError++; } } } } - - return AjaxResult.success(); + String msg = "成功{startTime:"+startTime.format(formatter)+",endTime:"+endTime.format(formatter)+"} 新增:" + insertSuccess + "条,添加错误:" + totalError + "条,更新:" + hasExistOrder + "条"; + return AjaxResult.success(msg); } /** diff --git a/api/oms-api/src/main/java/cn/qihangerp/oms/wei/controller/WeiOrderController.java b/api/oms-api/src/main/java/cn/qihangerp/oms/wei/controller/WeiOrderController.java index 1c5f72bb..83bb5942 100644 --- a/api/oms-api/src/main/java/cn/qihangerp/oms/wei/controller/WeiOrderController.java +++ b/api/oms-api/src/main/java/cn/qihangerp/oms/wei/controller/WeiOrderController.java @@ -8,6 +8,7 @@ import cn.qihangerp.common.enums.EnumShopType; import cn.qihangerp.common.mq.MqMessage; import cn.qihangerp.common.mq.MqType; import cn.qihangerp.common.mq.MqUtils; +import cn.qihangerp.model.bo.WeiOrderBo; import cn.qihangerp.model.entity.WeiOrder; import cn.qihangerp.model.bo.WeiOrderConfirmBo; import cn.qihangerp.model.bo.WeiOrderPushBo; @@ -27,7 +28,7 @@ public class WeiOrderController extends BaseController { private final WeiOrderService orderService; private final MqUtils mqUtils; @RequestMapping(value = "/list", method = RequestMethod.GET) - public TableDataInfo orderList(WeiOrder bo, PageQuery pageQuery) { + public TableDataInfo orderList(WeiOrderBo bo, PageQuery pageQuery) { PageResult result = orderService.queryPageList(bo, pageQuery); return getDataTable(result); @@ -39,17 +40,7 @@ public class WeiOrderController extends BaseController { return success(orderService.queryDetailById(id)); } - @PostMapping("/push_oms") - @ResponseBody - public AjaxResult pushOms(@RequestBody WeiOrderPushBo bo) { - // TODO:需要优化消息格式 - if(bo!=null && bo.getIds()!=null) { - for(String id: bo.getIds()) { - mqUtils.sendApiMessage(MqMessage.build(EnumShopType.WEI, MqType.ORDER_MESSAGE, id)); - } - } - return success(); - } + @PostMapping("/confirmOrder") public AjaxResult confirmOrder(@RequestBody WeiOrderConfirmBo bo) { log.info("=========确认订单======={}", JSONObject.toJSONString(bo)); diff --git a/model/src/main/java/cn/qihangerp/model/bo/WeiOrderBo.java b/model/src/main/java/cn/qihangerp/model/bo/WeiOrderBo.java new file mode 100644 index 00000000..c2c10448 --- /dev/null +++ b/model/src/main/java/cn/qihangerp/model/bo/WeiOrderBo.java @@ -0,0 +1,14 @@ +package cn.qihangerp.model.bo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class WeiOrderBo implements Serializable { + private String orderId; + private Long shopId; + private String startTime; + private String endTime; + private Integer status; +} diff --git a/service/src/main/java/cn/qihangerp/module/service/WeiOrderService.java b/service/src/main/java/cn/qihangerp/module/service/WeiOrderService.java index d45bc5f3..3a7222c3 100644 --- a/service/src/main/java/cn/qihangerp/module/service/WeiOrderService.java +++ b/service/src/main/java/cn/qihangerp/module/service/WeiOrderService.java @@ -3,6 +3,7 @@ package cn.qihangerp.module.service; import cn.qihangerp.common.PageQuery; import cn.qihangerp.common.PageResult; import cn.qihangerp.common.ResultVo; +import cn.qihangerp.model.bo.WeiOrderBo; import cn.qihangerp.model.entity.WeiOrder; import cn.qihangerp.model.bo.WeiOrderConfirmBo; import com.baomidou.mybatisplus.extension.service.IService; @@ -14,7 +15,7 @@ import com.baomidou.mybatisplus.extension.service.IService; * @createDate 2024-06-03 16:48:31 */ public interface WeiOrderService extends IService { - PageResult queryPageList(WeiOrder bo, PageQuery pageQuery); + PageResult queryPageList(WeiOrderBo bo, PageQuery pageQuery); ResultVo saveOrder(Long shopId, WeiOrder order); WeiOrder queryDetailById(Long id); WeiOrder queryDetailByOrderId(String orderId); diff --git a/service/src/main/java/cn/qihangerp/module/service/impl/WeiOrderServiceImpl.java b/service/src/main/java/cn/qihangerp/module/service/impl/WeiOrderServiceImpl.java index 8d02943f..5a5255b1 100644 --- a/service/src/main/java/cn/qihangerp/module/service/impl/WeiOrderServiceImpl.java +++ b/service/src/main/java/cn/qihangerp/module/service/impl/WeiOrderServiceImpl.java @@ -7,11 +7,8 @@ import cn.qihangerp.common.ResultVoEnum; import cn.qihangerp.common.enums.EnumShopType; import cn.qihangerp.mapper.ErpOrderItemMapper; import cn.qihangerp.mapper.ErpOrderMapper; -import cn.qihangerp.model.entity.OOrder; -import cn.qihangerp.model.entity.OOrderItem; -import cn.qihangerp.model.entity.WeiGoodsSku; -import cn.qihangerp.model.entity.WeiOrder; -import cn.qihangerp.model.entity.WeiOrderItem; +import cn.qihangerp.model.bo.WeiOrderBo; +import cn.qihangerp.model.entity.*; import cn.qihangerp.model.bo.WeiOrderConfirmBo; import cn.qihangerp.mapper.WeiGoodsSkuMapper; import cn.qihangerp.mapper.WeiOrderItemMapper; @@ -32,8 +29,12 @@ import org.springframework.util.StringUtils; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * @author TW @@ -50,21 +51,54 @@ public class WeiOrderServiceImpl extends ServiceImpl private final ErpOrderMapper erpOrderMapper; private final ErpOrderItemMapper erpOrderItemMapper; // private final MQClientService mqClientService; + private final String DATE_PATTERN = + "^(?:(?:(?:\\d{4}-(?:0?[1-9]|1[0-2])-(?:0?[1-9]|1\\d|2[0-8]))|(?:(?:(?:\\d{2}(?:0[48]|[2468][048]|[13579][26])|(?:(?:0[48]|[2468][048]|[13579][26])00))-0?2-29))$)|(?:(?:(?:\\d{4}-(?:0?[13578]|1[02]))-(?:0?[1-9]|[12]\\d|30))$)|(?:(?:(?:\\d{4}-0?[13-9]|1[0-2])-(?:0?[1-9]|[1-2]\\d|30))$)|(?:(?:(?:\\d{2}(?:0[48]|[13579][26]|[2468][048])|(?:(?:0[48]|[13579][26]|[2468][048])00))-0?2-29))$)$"; + private final Pattern DATE_FORMAT = Pattern.compile(DATE_PATTERN); @Override - public PageResult queryPageList(WeiOrder bo, PageQuery pageQuery) { + public PageResult queryPageList(WeiOrderBo bo, PageQuery pageQuery) { + Long startTimestamp = null; + Long endTimestamp = null; + if(StringUtils.hasText(bo.getStartTime())){ + Matcher matcher = DATE_FORMAT.matcher(bo.getStartTime()); + boolean b = matcher.find(); + if(!b){ + bo.setStartTime(""); + } + } + if(StringUtils.hasText(bo.getEndTime())){ + Matcher matcher = DATE_FORMAT.matcher(bo.getEndTime()); + boolean b = matcher.find(); + if(!b){ + bo.setEndTime(""); + } + }else{ + if(StringUtils.hasText(bo.getStartTime())) { + bo.setEndTime(bo.getStartTime()); + } + } + if(StringUtils.hasText(bo.getStartTime())) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime startTime = LocalDateTime.parse(bo.getStartTime()+" 00:00:00", formatter); + LocalDateTime endTime = LocalDateTime.parse(bo.getEndTime()+" 23:59:59", formatter); + + startTimestamp = startTime.toEpochSecond(ZoneOffset.ofHours(8)); + endTimestamp = endTime.toEpochSecond(ZoneOffset.ofHours(8)); + } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(bo.getShopId()!=null, WeiOrder::getShopId,bo.getShopId()) .eq(StringUtils.hasText(bo.getOrderId()), WeiOrder::getOrderId,bo.getOrderId()) .eq(bo.getStatus()!=null, WeiOrder::getStatus,bo.getStatus()) + .ge(StringUtils.hasText(bo.getStartTime()), WeiOrder::getCreateTime, startTimestamp) + .le(StringUtils.hasText(bo.getEndTime()),WeiOrder::getCreateTime,endTimestamp) ; - if(bo.getErpSendStatus()!=null){ - if(bo.getErpSendStatus()==-1) { - queryWrapper.lt(WeiOrder::getErpSendStatus,3); - }else { - queryWrapper.eq(WeiOrder::getErpSendStatus, bo.getErpSendStatus()); - } - } +// if(bo.getErpSendStatus()!=null){ +// if(bo.getErpSendStatus()==-1) { +// queryWrapper.lt(WeiOrder::getErpSendStatus,3); +// }else { +// queryWrapper.eq(WeiOrder::getErpSendStatus, bo.getErpSendStatus()); +// } +// } Page page = mapper.selectPage(pageQuery.build(), queryWrapper); if(page.getRecords()!=null){ @@ -100,9 +134,9 @@ public class WeiOrderServiceImpl extends ServiceImpl if (taoOrderItems != null && taoOrderItems.size() > 0) { // 更新 - WeiOrderItem itemUpdate = new WeiOrderItem(); - itemUpdate.setId(taoOrderItems.get(0).getId()); - itemMapper.updateById(itemUpdate); + + item.setId(taoOrderItems.get(0).getId()); + itemMapper.updateById(item); } else { // 新增 item.setShopId(shopId); @@ -126,6 +160,7 @@ public class WeiOrderServiceImpl extends ServiceImpl return ResultVo.success(); } } catch (Exception e) { + log.error(e.getMessage(), e); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return ResultVo.error(ResultVoEnum.SystemException, "系统异常:" + e.getMessage()); } diff --git a/vue/src/views/wei/order/index.vue b/vue/src/views/wei/order/index.vue index f3b7bcda..cea2fbe8 100644 --- a/vue/src/views/wei/order/index.vue +++ b/vue/src/views/wei/order/index.vue @@ -20,21 +20,26 @@ - - + - - + + + + + + + + + + + + 搜索 @@ -154,7 +159,7 @@ - +