提交 daf097c3 作者: panda

服务订单接口开发

上级 b97d9cf4
...@@ -3,15 +3,23 @@ package com.mmc.oms.client; ...@@ -3,15 +3,23 @@ package com.mmc.oms.client;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.model.dto.mall.*; import com.mmc.oms.model.dto.mall.*;
import com.mmc.oms.model.dto.service.ServiceDTO;
import com.mmc.oms.model.qo.mall.MallOrderGoodsInfoQO; import com.mmc.oms.model.qo.mall.MallOrderGoodsInfoQO;
import com.mmc.oms.model.qo.mall.ProductSpecPriceQO; import com.mmc.oms.model.qo.mall.ProductSpecPriceQO;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.*; import org.springframework.http.*;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import java.util.List; import java.util.List;
...@@ -90,4 +98,18 @@ public class PmsClient { ...@@ -90,4 +98,18 @@ public class PmsClient {
ResponseEntity<ProductSpecPriceDTO> responseEntity = restTemplate.exchange(pmsAppUri + "goods/feignGetUnitPriceByTag" + "?specId=" + specId + "&tagId=" + tagId, HttpMethod.GET, entity, ProductSpecPriceDTO.class); ResponseEntity<ProductSpecPriceDTO> responseEntity = restTemplate.exchange(pmsAppUri + "goods/feignGetUnitPriceByTag" + "?specId=" + specId + "&tagId=" + tagId, HttpMethod.GET, entity, ProductSpecPriceDTO.class);
return responseEntity.getBody(); return responseEntity.getBody();
} }
public ServiceDTO feignQueryWorkService(Integer id,String token){
HttpHeaders headers = new HttpHeaders();
headers.add("token", token);
HttpEntity<String> entity = new HttpEntity<>(null, headers);
ResponseEntity<ResultBody> responseEntity = restTemplate.exchange("http://localhost:8099/pms/backstage/work/queryWorkService" + "?id=" + id, HttpMethod.GET, entity, ResultBody.class);
int statusCodeValue = responseEntity.getStatusCodeValue();
String result = null;
if(statusCodeValue==200){
result = JSONObject.toJSONString(responseEntity.getBody().getResult());
}
return JSONObject.parseObject(result,ServiceDTO.class);
}
} }
package com.mmc.oms.common.constant;
/**
* @author: zj
* @Date: 2023/5/31 20:07
*/
public class TokenConstant {
public static final String TOKEN = "token";
}
...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; ...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.mmc.oms.common.AuthHandler; import com.mmc.oms.common.AuthHandler;
import com.mmc.oms.common.BizException; import com.mmc.oms.common.BizException;
import com.mmc.oms.common.ResultEnum; import com.mmc.oms.common.ResultEnum;
import com.mmc.oms.common.constant.TokenConstant;
import com.mmc.oms.jwt.JwtConstant; import com.mmc.oms.jwt.JwtConstant;
import com.mmc.oms.model.dto.user.BaseAccountDTO; import com.mmc.oms.model.dto.user.BaseAccountDTO;
import com.mmc.oms.model.dto.user.CurrentUserDTO; import com.mmc.oms.model.dto.user.CurrentUserDTO;
...@@ -43,7 +44,7 @@ public abstract class BaseController { ...@@ -43,7 +44,7 @@ public abstract class BaseController {
* 获取当前登录账号信息 * 获取当前登录账号信息
*/ */
public BaseAccountDTO getCurrentAccount(HttpServletRequest request) { public BaseAccountDTO getCurrentAccount(HttpServletRequest request) {
String token = request.getHeader("token"); String token = request.getHeader(TokenConstant.TOKEN);
String json = stringRedisTemplate.opsForValue().get(token); String json = stringRedisTemplate.opsForValue().get(token);
if (StringUtils.isBlank(json)) { if (StringUtils.isBlank(json)) {
throw new BizException(ResultEnum.LOGIN_ACCOUNT_STATUS_ERROR); throw new BizException(ResultEnum.LOGIN_ACCOUNT_STATUS_ERROR);
......
package com.mmc.oms.controller.mall;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mmc.oms.common.publicinterface.Create;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.controller.BaseController;
import com.mmc.oms.model.dto.mall.ServiceOrderTaskDTO;
import com.mmc.oms.model.qo.mall.ServiceOrderTaskQO;
import com.mmc.oms.model.vo.mall.ServiceOrderTaskVO;
import com.mmc.oms.service.mall.ServiceOrderTaskService;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* <p>
* 云享飞服务订单-主表
* </p>
*
* @author Pika
* @since 2023-06-10
*/
@Api(tags = {"云享飞作业服务订单-模块"})
@RestController
@RequestMapping("/serviceOrderTask")
public class ServiceOrderTaskController extends BaseController {
@Autowired
private ServiceOrderTaskService serviceOrderTaskService;
@ApiOperation(value = "服务订单任务-新增")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("insertOrderTask")
public ResultBody insertOrderTask(
@Validated(Create.class) @RequestBody ServiceOrderTaskVO param, HttpServletRequest request) {
return serviceOrderTaskService.insertOrderTask(param, this.getCurrentAccount(request).getUserAccountId(),request);
}
@ApiOperation(value = "查询服务订单列表")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ServiceOrderTaskDTO.class)})
@PostMapping("queryOrderTaskList")
public ResultBody<ServiceOrderTaskDTO> queryOrderTaskList(
@Validated(Page.class) @RequestBody ServiceOrderTaskQO param, HttpServletRequest request) {
return ResultBody.success(serviceOrderTaskService.queryOrderTaskList(param, this.getCurrentAccount(request).getUserAccountId(),request));
}
@ApiOperation(value = "查询服务订单")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ServiceOrderTaskDTO.class)})
@GetMapping("queryOrderTask")
public ResultBody<ServiceOrderTaskDTO> queryOrderTask(@ApiParam("订单服务id") @RequestParam(value = "id") Integer id, HttpServletRequest request) {
return serviceOrderTaskService.queryById(id,request);
}
}
package com.mmc.oms.dao.mall;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mmc.oms.entity.mall.ServiceOrderProvinceCityDO;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* 服务订单地址 Mapper 接口
* </p>
*
* @author Pika
* @since 2023-06-10
*/
@Mapper
public interface ServiceOrderProvinceCityDao extends BaseMapper<ServiceOrderProvinceCityDO> {
}
package com.mmc.oms.dao.mall;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mmc.oms.entity.mall.ServiceOrderStatusInfoDO;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* 服务订单状态 Mapper 接口
* </p>
*
* @author Pika
* @since 2023-06-10
*/
@Mapper
public interface ServiceOrderStatusInfoDao extends BaseMapper<ServiceOrderStatusInfoDO> {
}
package com.mmc.oms.dao.mall;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mmc.oms.entity.mall.ServiceOrderTaskDO;
import com.mmc.oms.model.qo.mall.ServiceOrderTaskQO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* 云享飞服务订单-主表 Mapper 接口
* </p>
*
* @author Pika
* @since 2023-06-10
*/
@Mapper
public interface ServiceOrderTaskDao extends BaseMapper<ServiceOrderTaskDO> {
Integer conditionCount(@Param("param") ServiceOrderTaskQO param, @Param("userAccountId") Integer userAccountId);
List<ServiceOrderTaskDO> queryPageByLimit(ServiceOrderTaskQO param, Integer userAccountId);
}
package com.mmc.oms.dao.mall;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mmc.oms.entity.mall.ServiceOrderTaskImageDO;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* 服务订单图片 Mapper 接口
* </p>
*
* @author Pika
* @since 2023-06-10
*/
@Mapper
public interface ServiceOrderTaskImageDao extends BaseMapper<ServiceOrderTaskImageDO> {
}
package com.mmc.oms.entity.mall;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* <p>
* 服务订单地址
* </p>
*
* @author Pika
* @since 2023-06-10
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName(value = "service_order_province_city")
public class ServiceOrderProvinceCityDO implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "服务订单id")
private Integer serviceOrderTaskId;
@ApiModelProperty(value = "省")
private String province;
@ApiModelProperty(value = "市")
private String city;
@ApiModelProperty(value = "详细地址")
private String address;
@ApiModelProperty(value = "经度")
private BigDecimal lon;
@ApiModelProperty(value = "纬度")
private BigDecimal lat;
}
package com.mmc.oms.entity.mall;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* <p>
* 服务订单状态
* </p>
*
* @author Pika
* @since 2023-06-10
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName(value = "service_order_status_info")
public class ServiceOrderStatusInfoDO implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
private Integer orderStatus;
private String doing;
private String waiting;
private String userPort;
private String flyerPort;
private String managePort;
}
package com.mmc.oms.entity.mall;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* <p>
* 云享飞服务订单-主表
* </p>
*
* @author Pika
* @since 2023-06-10
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName(value = "service_order_task")
public class ServiceOrderTaskDO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "唯一标识")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "订单编号")
private String orderNo;
@ApiModelProperty(value = "订单名称")
private String orderName;
@ApiModelProperty(value = "订单总金额")
private BigDecimal orderAmt;
@ApiModelProperty(value = "订单状态:0 待分配运营")
private Integer orderStatus;
@ApiModelProperty(value = "客户ID")
private Integer userAccountId;
@ApiModelProperty(value = "运营人员ID(负责这个order的运营人员id)")
private Integer userOperateId;
@ApiModelProperty(value = "飞手ID")
private Integer flyerId;
@ApiModelProperty(value = "服务项ID")
private Integer inspectionId;
@ApiModelProperty(value = "服务名称")
private String inspectionName;
@ApiModelProperty(value = "预计服务开始时间")
private Date startTime;
@ApiModelProperty(value = "预计服务结束时间")
private Date endTime;
@ApiModelProperty(value = "实际服务开始时间")
private Date acStartTime;
@ApiModelProperty(value = "实际服务结束时间")
private Date acEndTime;
@ApiModelProperty(value = "任务描述")
private String taskDescription;
@ApiModelProperty(value = "平台备注")
private String pfRemark;
@ApiModelProperty(value = "是否显示:0 隐藏,1 显示")
private Integer display;
@ApiModelProperty(value = "创建时间")
private Date createdTime;
@ApiModelProperty(value = "更新时间")
private Date updatedTime;
@ApiModelProperty(value = "逻辑删除;1代表删除,0代表未删除")
@TableLogic
private Integer isDeleted;
}
package com.mmc.oms.entity.mall;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* <p>
* 服务订单图片
* </p>
*
* @author Pika
* @since 2023-06-10
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName(value = "service_order_task_image")
public class ServiceOrderTaskImageDO implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
private Integer orderTaskId;
@ApiModelProperty(value = "图片")
private String picture;
}
...@@ -3,6 +3,7 @@ package com.mmc.oms.filter; ...@@ -3,6 +3,7 @@ package com.mmc.oms.filter;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.mmc.oms.common.ResultEnum; import com.mmc.oms.common.ResultEnum;
import com.mmc.oms.common.Tenant; import com.mmc.oms.common.Tenant;
import com.mmc.oms.common.constant.TokenConstant;
import com.mmc.oms.common.result.ResultBody; import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.config.Audience; import com.mmc.oms.config.Audience;
import com.mmc.oms.config.TenantContext; import com.mmc.oms.config.TenantContext;
...@@ -76,7 +77,7 @@ public class AuthSignatureFilter implements AuthFilter { ...@@ -76,7 +77,7 @@ public class AuthSignatureFilter implements AuthFilter {
response.setStatus(HttpServletResponse.SC_OK); response.setStatus(HttpServletResponse.SC_OK);
return false; return false;
} else { } else {
String token = request.getHeader("token"); String token = request.getHeader(TokenConstant.TOKEN);
if (null == token) { if (null == token) {
response(response, ResultBody.error(ResultEnum.THE_REQUEST_IS_NOT_AUTHENTICATED)); response(response, ResultBody.error(ResultEnum.THE_REQUEST_IS_NOT_AUTHENTICATED));
return false; return false;
......
package com.mmc.oms.model.dto.mall;
import com.mmc.oms.common.publicinterface.Create;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* <p>
* 云享飞服务订单-主表
* </p>
*
* @author Pika
* @since 2023-06-10
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ServiceOrderTaskDTO implements Serializable {
private static final long serialVersionUID = -178678654L;
@ApiModelProperty(value = "订单编号")
private String orderNo;
@ApiModelProperty(value = "订单名称")
private String orderName;
@ApiModelProperty(value = "订单总金额")
private BigDecimal orderAmt;
@ApiModelProperty(value = "手机号")
private String phoneNum;
@ApiModelProperty(value = "用户uid")
private String uid;
@ApiModelProperty(value = "用户名称")
private String userName;
@ApiModelProperty(value = "服务项ID",example = "1")
@NotNull(message = "新增服务-id不能为空", groups = {Create.class})
private Integer inspectionId;
@ApiModelProperty(value = "预计服务开始时间")
@NotNull(message = "新增服务-预计服务开始时间不能为空", groups = {Create.class})
private Date startTime;
@ApiModelProperty(value = "预计服务结束时间")
@NotNull(message = "新增服务-预计服务结束时间不能为空", groups = {Create.class})
private Date endTime;
@ApiModelProperty(value = "省份",example = "广东")
@NotBlank(message = "新增服务-省份不能为空", groups = {Create.class})
private String province;
@ApiModelProperty(value = "市",example = "深圳")
@NotBlank(message = "新增服务-市不能为空", groups = {Create.class})
private String city;
@ApiModelProperty(value = "详细地址",example = "西丽街道")
@NotBlank(message = "新增服务-详细地址不能为空", groups = {Create.class})
private String address;
@ApiModelProperty(value = "经度",example = "117.257370")
@NotNull(message = "新增服务-经度不能为空", groups = {Create.class})
private BigDecimal lon;
@ApiModelProperty(value = "纬度",example = "32.050774")
@NotNull(message = "新增服务-纬度不能为空", groups = {Create.class})
private BigDecimal lat;
@ApiModelProperty(value = "任务描述")
private String taskDescription;
@ApiModelProperty(value = "图片")
private List<String> images;
}
package com.mmc.oms.model.dto.service;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* @Author LW
* @date 2023/6/8 10:33
* 概要:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ServiceDTO implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
@ApiModelProperty(value = "服务名称")
private String serviceName;
@ApiModelProperty(value = "应用")
private Integer applicationId;
@ApiModelProperty(value = "应用名称")
private String applicationName;
@ApiModelProperty(value = "行业")
private Integer industryId;
@ApiModelProperty(value = "行业名称")
private String industryName;
@ApiModelProperty(value = "展示状态")
private Integer displayState;
@ApiModelProperty(value = "封面图")
private String coverPlan;
@ApiModelProperty(value = "分享卡片")
private String shareCard;
@ApiModelProperty(value = "视频")
private String video;
@ApiModelProperty(value = "服务介绍")
private String serviceIntroduction;
@ApiModelProperty(value = "账号id")
private Integer accountId;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "修改时间")
private Date updateTime;
}
package com.mmc.oms.model.qo.mall;
import com.mmc.oms.common.publicinterface.Freeze;
import com.mmc.oms.common.publicinterface.Page;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* <p>
* 云享飞服务订单-主表
* </p>
*
* @author Pika
* @since 2023-06-10
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ServiceOrderTaskQO implements Serializable {
private static final long serialVersionUID = -17878654L;
@ApiModelProperty(value = "订单状态:0 待分配运营")
private Integer orderStatus;
@ApiModelProperty(value = "页码", required = true)
@NotNull(
message = "页码不能为空",
groups = {Page.class, Freeze.class})
@Min(value = 1, groups = Page.class)
private Integer pageNo;
@ApiModelProperty(value = "每页显示数", required = true)
@NotNull(
message = "每页显示数不能为空",
groups = {Page.class, Freeze.class})
@Min(value = 1, groups = Page.class)
private Integer pageSize;
public void buildCurrentPage() {
this.pageNo = (pageNo - 1) * pageSize;
}
}
package com.mmc.oms.model.vo.mall;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mmc.oms.common.publicinterface.Create;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* <p>
* 云享飞服务订单-主表
* </p>
*
* @author Pika
* @since 2023-06-10
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ServiceOrderTaskVO implements Serializable {
private static final long serialVersionUID = -178678654L;
@ApiModelProperty(value = "服务项ID",example = "1")
@NotNull(message = "新增服务-id不能为空", groups = {Create.class})
private Integer inspectionId;
@ApiModelProperty(value = "预计服务开始时间")
@NotNull(message = "新增服务-预计服务开始时间不能为空", groups = {Create.class})
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
@ApiModelProperty(value = "预计服务结束时间")
@NotNull(message = "新增服务-预计服务结束时间不能为空", groups = {Create.class})
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
@ApiModelProperty(value = "省份",example = "广东")
@NotBlank(message = "新增服务-省份不能为空", groups = {Create.class})
private String province;
@ApiModelProperty(value = "市",example = "深圳")
@NotBlank(message = "新增服务-市不能为空", groups = {Create.class})
private String city;
@ApiModelProperty(value = "详细地址",example = "西丽街道")
@NotBlank(message = "新增服务-详细地址不能为空", groups = {Create.class})
private String address;
@ApiModelProperty(value = "经度",example = "117.257370")
@NotNull(message = "新增服务-经度不能为空", groups = {Create.class})
private BigDecimal lon;
@ApiModelProperty(value = "纬度",example = "32.050774")
@NotNull(message = "新增服务-纬度不能为空", groups = {Create.class})
private BigDecimal lat;
@ApiModelProperty(value = "任务描述")
private String taskDescription;
@ApiModelProperty(value = "图片")
private List<String> images;
}
package com.mmc.oms.service.mall;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mmc.oms.common.result.PageResult;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.entity.mall.ServiceOrderTaskDO;
import com.mmc.oms.model.dto.mall.ServiceOrderTaskDTO;
import com.mmc.oms.model.qo.mall.ServiceOrderTaskQO;
import com.mmc.oms.model.vo.mall.ServiceOrderTaskVO;
import javax.servlet.http.HttpServletRequest;
/**
* <p>
* 云享飞服务订单-主表 服务类
* </p>
*
* @author Pika
* @since 2023-06-10
*/
public interface ServiceOrderTaskService extends IService<ServiceOrderTaskDO> {
ResultBody insertOrderTask(ServiceOrderTaskVO param, Integer userAccountId,HttpServletRequest request);
PageResult queryOrderTaskList(ServiceOrderTaskQO param, Integer userAccountId, HttpServletRequest request);
ResultBody<ServiceOrderTaskDTO> queryById(Integer id,HttpServletRequest request);
}
package com.mmc.oms.service.mall.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mmc.oms.client.PmsClient;
import com.mmc.oms.client.UserClient;
import com.mmc.oms.common.constant.TokenConstant;
import com.mmc.oms.common.result.PageResult;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.common.util.CodeUtil;
import com.mmc.oms.dao.mall.ServiceOrderProvinceCityDao;
import com.mmc.oms.dao.mall.ServiceOrderTaskDao;
import com.mmc.oms.dao.mall.ServiceOrderTaskImageDao;
import com.mmc.oms.entity.mall.ServiceOrderProvinceCityDO;
import com.mmc.oms.entity.mall.ServiceOrderTaskDO;
import com.mmc.oms.entity.mall.ServiceOrderTaskImageDO;
import com.mmc.oms.feign.UserAppApi;
import com.mmc.oms.model.dto.mall.ServiceOrderTaskDTO;
import com.mmc.oms.model.dto.service.ServiceDTO;
import com.mmc.oms.model.dto.user.UserAccountSimpleDTO;
import com.mmc.oms.model.qo.mall.ServiceOrderTaskQO;
import com.mmc.oms.model.vo.mall.ServiceOrderTaskVO;
import com.mmc.oms.service.mall.ServiceOrderTaskService;
import com.mmc.oms.util.BeanCopyUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.stream.Collectors;
/**
* 云享飞服务订单-主表 服务实现类
*
* @author Pika
* @since 2023-06-10
*/
@Service
public class ServiceOrderTaskServiceImpl
extends ServiceImpl<ServiceOrderTaskDao, ServiceOrderTaskDO>
implements ServiceOrderTaskService {
@Autowired private ServiceOrderTaskDao serviceOrderTaskDao;
@Autowired private ServiceOrderProvinceCityDao serviceOrderProvinceCityDao;
@Autowired private ServiceOrderTaskImageDao serviceOrderTaskImageDao;
@Autowired private PmsClient pmsClient;
@Autowired private UserClient userClient;
@Override
@Transactional(rollbackFor = Exception.class)
public ResultBody insertOrderTask(ServiceOrderTaskVO param, Integer userAccountId,HttpServletRequest request) {
ServiceDTO serviceDO = pmsClient.feignQueryWorkService(param.getInspectionId(),request.getHeader(TokenConstant.TOKEN));
if (serviceDO == null || serviceDO.getId()==null) {
return ResultBody.error("服务id不存在");
}
// 保存作业服务订单
ServiceOrderTaskDO orderTaskDO =
ServiceOrderTaskDO.builder()
.orderNo(CodeUtil.createOrderTaskNO())
.orderName(serviceDO.getServiceName())
.inspectionId(param.getInspectionId())
.inspectionName(serviceDO.getServiceName())
.taskDescription(param.getTaskDescription())
.startTime(param.getStartTime())
.endTime(param.getEndTime())
.userAccountId(userAccountId)
.build();
serviceOrderTaskDao.insert(orderTaskDO);
// 保存作业服务地址信息
ServiceOrderProvinceCityDO provinceCityDO =
ServiceOrderProvinceCityDO.builder()
.serviceOrderTaskId(orderTaskDO.getId())
.province(param.getProvince())
.city(param.getCity())
.address(param.getAddress())
.lat(param.getLat())
.lon(param.getLon())
.build();
serviceOrderProvinceCityDao.insert(provinceCityDO);
// 保存作业服务图片
List<String> images = param.getImages();
if (CollectionUtils.isNotEmpty(images)) {
ServiceOrderTaskImageDO imageDO =
ServiceOrderTaskImageDO.builder()
.orderTaskId(orderTaskDO.getId())
.picture(String.join(",", images))
.build();
serviceOrderTaskImageDao.insert(imageDO);
}
return ResultBody.success();
}
@Override
public PageResult queryOrderTaskList(ServiceOrderTaskQO param, Integer userAccountId, HttpServletRequest request) {
Integer pageNo = param.getPageNo();
param.buildCurrentPage();
Integer count = serviceOrderTaskDao.conditionCount(param, userAccountId);
if (count == null || count == 0) {
return PageResult.buildPage(param.getPageNo(), param.getPageSize(), count);
}
List<ServiceOrderTaskDO> orderTaskList =
serviceOrderTaskDao.queryPageByLimit(param, userAccountId);
List<Integer> orderTaskIds =
orderTaskList.stream().map(ServiceOrderTaskDO::getId).collect(Collectors.toList());
Map<Integer, ServiceOrderProvinceCityDO> provinceCityMap = getOrderProvinceCityDOMapById(orderTaskIds);
Map<Integer, List<ServiceOrderTaskImageDO>> imageMap = getImageListMapById(orderTaskIds);
Map<Integer, UserAccountSimpleDTO> userMap = getUserDTOMap(request, orderTaskIds);
List<ServiceOrderTaskDTO> pageList = new ArrayList<>();
for (ServiceOrderTaskDO item : orderTaskList) {
ServiceOrderTaskDTO orderTaskDTO = getServiceOrderTaskDTO(provinceCityMap, imageMap, item,userMap);
pageList.add(orderTaskDTO);
}
return PageResult.buildPage(pageNo, param.getPageSize(), count, pageList);
}
@Override
public ResultBody<ServiceOrderTaskDTO> queryById(Integer id,HttpServletRequest request) {
ServiceOrderTaskDO order = serviceOrderTaskDao.selectById(id);
if(order==null){
return ResultBody.success();
}
Map<Integer, ServiceOrderProvinceCityDO> provinceCityMap = getOrderProvinceCityDOMapById(Arrays.asList(id));
Map<Integer, List<ServiceOrderTaskImageDO>> imageMap = getImageListMapById(Arrays.asList(id));
Map<Integer, UserAccountSimpleDTO> userMap = getUserDTOMap(request, Arrays.asList(id));
ServiceOrderTaskDTO serviceOrderTaskDTO = getServiceOrderTaskDTO(provinceCityMap, imageMap, order,userMap);
return ResultBody.success(serviceOrderTaskDTO);
}
private Map<Integer, UserAccountSimpleDTO> getUserDTOMap(HttpServletRequest request, List<Integer> orderTaskIds) {
List<UserAccountSimpleDTO> userList = userClient.feignListRcdUserInfo(orderTaskIds, request.getHeader(TokenConstant.TOKEN));
Map<Integer, UserAccountSimpleDTO> userMap = new HashMap<>();
if(CollectionUtils.isNotEmpty(userList)){
userMap = userList.stream().collect(Collectors.toMap(UserAccountSimpleDTO::getId, d -> d, (k1, k2) -> k1));
}
return userMap;
}
private ServiceOrderTaskDTO getServiceOrderTaskDTO(Map<Integer, ServiceOrderProvinceCityDO> provinceCityMap, Map<Integer, List<ServiceOrderTaskImageDO>> imageMap, ServiceOrderTaskDO item,Map<Integer, UserAccountSimpleDTO> userMap) {
ServiceOrderTaskDTO orderTaskDTO = BeanCopyUtils.properties(item, new ServiceOrderTaskDTO());
// 订单省市信息
BeanCopyUtils.properties(provinceCityMap.get(item.getId()), orderTaskDTO);
// 用户信息
BeanCopyUtils.properties(userMap.get(item.getUserAccountId()), orderTaskDTO);
List<ServiceOrderTaskImageDO> imageDOList = imageMap.get(item.getId());
List<String> images = null;
if (CollectionUtils.isNotEmpty(imageDOList)) {
images =
imageDOList.stream()
.map(ServiceOrderTaskImageDO::getPicture)
.collect(Collectors.toList());
}
orderTaskDTO.setImages(images);
return orderTaskDTO;
}
/**
* 根据id集合批量查询服务作业图片
*/
private Map<Integer, List<ServiceOrderTaskImageDO>> getImageListMapById(List<Integer> orderTaskIds) {
LambdaQueryWrapper<ServiceOrderTaskImageDO> imageWrapper = new LambdaQueryWrapper<>();
imageWrapper.in(ServiceOrderTaskImageDO::getOrderTaskId, orderTaskIds);
List<ServiceOrderTaskImageDO> imageList = serviceOrderTaskImageDao.selectList(imageWrapper);
Map<Integer, List<ServiceOrderTaskImageDO>> imageMap = new HashMap<>();
if (CollectionUtils.isNotEmpty(imageList)) {
imageMap =
imageList.stream()
.collect(Collectors.groupingBy(ServiceOrderTaskImageDO::getOrderTaskId));
}
return imageMap;
}
/**
* 根据id集合批量查询服务作业订单地址
*/
private Map<Integer, ServiceOrderProvinceCityDO> getOrderProvinceCityDOMapById(List<Integer> orderTaskIds) {
LambdaQueryWrapper<ServiceOrderProvinceCityDO> provinceCityWrapper = new LambdaQueryWrapper<>();
provinceCityWrapper.in(ServiceOrderProvinceCityDO::getServiceOrderTaskId, orderTaskIds);
List<ServiceOrderProvinceCityDO> orderProvinceCityDOList =
serviceOrderProvinceCityDao.selectList(provinceCityWrapper);
Map<Integer, ServiceOrderProvinceCityDO> provinceCityMap =
orderProvinceCityDOList.stream()
.collect(
Collectors.toMap(
ServiceOrderProvinceCityDO::getServiceOrderTaskId, d -> d, (k1, k2) -> k1));
return provinceCityMap;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.oms.dao.mall.ServiceOrderTaskDao">
<select id="conditionCount" resultType="java.lang.Integer">
select count(*)
from service_order_task
<where>
is_deleted = 0
<if test="param.orderStatus != null">
and order_status = #{param.orderStatus}
</if>
<if test="userAccountId != null">
and user_account_id = #{userAccountId}
</if>
</where>
</select>
<select id="queryPageByLimit" resultType="com.mmc.oms.entity.mall.ServiceOrderTaskDO">
select id, order_no, order_name, order_amt, order_status, user_account_id, user_operate_id, flyer_id,
inspection_id, inspection_name, start_time, end_time, ac_start_time, ac_end_time, task_description, pf_remark,
display, created_time, updated_time
from service_order_task
<where>
is_deleted = 0
<if test="param.orderStatus!=null">
and order_status = #{param.orderStatus}
</if>
<if test="userAccountId != null">
and user_account_id = #{userAccountId}
</if>
</where>
order by created_time desc
limit #{param.pageNo}, #{param.pageSize}
</select>
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论