jyy
2021-01-16 c0dc765ad93846078718bb15976905c34db7584c
小程序端服务单评论
9 files added
9 files modified
1091 ■■■■■ changed files
zq-erp/src/main/java/com/matrix/system/app/dto/ServiceOrderListDto.java 9 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/bean/SysProjServices.java 26 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderDao.java 6 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderItemDao.java 3 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjServicesDao.java 19 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxErpOrderAction.java 134 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/YuyueAction.java 73 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/ErpOrderListDto.java 78 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/ErpServiceCommentDto.java 41 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/ErpServiceOrderListDto.java 50 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ErpOrderDetailFlowVo.java 37 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ErpOrderDetailItemVo.java 63 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ErpOrderDetailVo.java 158 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ErpServiceOrderListProjVo.java 45 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ErpServiceOrderListVo.java 147 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderDao.xml 52 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml 12 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/SysProjServicesDao.xml 138 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/dto/ServiceOrderListDto.java
@@ -16,8 +16,6 @@
    @ApiModelProperty(value = "状态 0/全部 1/待确认 2/待排班 3/待配料 4/待服务 5/服务中 6/已完成 ")
    private String status;
    @ApiModelProperty(value = "客户视角状态 0/全部 1/待确认 2进行中(待排班/待配料/待服务/服务中) 3/待评价(已完成/服务结束) 4/已评价 5/已取消 ")
    private String vipStatus;
    @ApiModelProperty(hidden = true)
    private Long shopId;
@@ -28,13 +26,6 @@
    @ApiModelProperty(value = "客户ID")
    private Long vipId;
    public String getVipStatus() {
        return vipStatus;
    }
    public void setVipStatus(String vipStatus) {
        this.vipStatus = vipStatus;
    }
    public Long getVipId() {
        return vipId;
zq-erp/src/main/java/com/matrix/system/hive/bean/SysProjServices.java
@@ -233,6 +233,14 @@
     */
    private String bedName;
    /**
     * 评价
     */
    private String comment;
     /**
     * 评价回复
     */
    private String reply;
    /**
     * 商机
     */
    private Long changeId;
@@ -241,6 +249,8 @@
     * 服务预计时长
     */
    private Integer totalTime;
@@ -256,6 +266,22 @@
     */
    private SysShopInfo shopInfo;
    public String getComment() {
        return comment;
    }
    public void setComment(String comment) {
        this.comment = comment;
    }
    public String getReply() {
        return reply;
    }
    public void setReply(String reply) {
        this.reply = reply;
    }
    @Extend
    private String shopName;
zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderDao.java
@@ -5,6 +5,8 @@
import com.matrix.system.app.vo.OrderDetailVo;
import com.matrix.system.app.vo.RankingVo;
import com.matrix.system.hive.bean.SysOrder;
import com.matrix.system.shopXcx.api.dto.ErpOrderListDto;
import com.matrix.system.shopXcx.api.vo.ErpOrderDetailVo;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
@@ -48,4 +50,8 @@
    List<RankingVo> selectShopAchieveRanking(@Param("record") SysOrder sysOrder);
    List<RankingVo> selectStaffSaleAchieveRanking(@Param("record") SysOrder sysOrder);
    List<ErpOrderDetailVo> selectErpOrderList(ErpOrderListDto erpOrderListDto);
    ErpOrderDetailVo findUserOrderById(Long orderId);
}
zq-erp/src/main/java/com/matrix/system/hive/dao/SysOrderItemDao.java
@@ -3,6 +3,7 @@
import com.matrix.core.pojo.PaginationVO;
import com.matrix.system.app.vo.OrderDetailItemVo;
import com.matrix.system.hive.bean.SysOrderItem;
import com.matrix.system.shopXcx.api.vo.ErpOrderDetailItemVo;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
@@ -61,4 +62,6 @@
    public int   deleteByOrderId(Long id);
    List<OrderDetailItemVo> selectApiOrderDetailItemsByOrderId(@Param("orderId") Long orderId);
    List<ErpOrderDetailItemVo> selectErpOrderItemByOrderId(String orderId);
}
zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjServicesDao.java
@@ -3,6 +3,9 @@
import com.matrix.system.app.dto.ServiceOrderListDto;
import com.matrix.system.app.vo.ServiceOrderListVo;
import com.matrix.system.hive.bean.SysProjServices;
import com.matrix.system.shopXcx.api.dto.ErpServiceOrderListDto;
import com.matrix.system.shopXcx.api.vo.ErpOrderDetailItemVo;
import com.matrix.system.shopXcx.api.vo.ErpServiceOrderListVo;
import org.apache.ibatis.annotations.Param;
import com.matrix.core.pojo.PaginationVO;
@@ -41,4 +44,20 @@
    List<ServiceOrderListVo> selectApiServiceOrderListInPage(@Param("record") ServiceOrderListDto serviceOrderListDto, @Param("pageVo") PaginationVO pageVo);
    int selectApiServiceOrderListTotal(@Param("record") ServiceOrderListDto serviceOrderListDto);
    /**
     * 小程序端查询客户预约单
     * @param orderListDto
     * @return
     */
    List<ErpServiceOrderListVo> findWxServiceOrderList(ErpServiceOrderListDto orderListDto);
    /**
     * 小程序端查询客户预约单详情
     * @param id
     * @return
     */
    ErpServiceOrderListVo findWxServiceOrderById(Long id);
}
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxErpOrderAction.java
New file
@@ -0,0 +1,134 @@
package com.matrix.system.shopXcx.api.action;
import com.alibaba.fastjson.JSONObject;
import com.matrix.biz.bean.BizUser;
import com.matrix.component.redis.RedisClient;
import com.matrix.component.redis.RedisUserLoginUtils;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.LogUtil;
import com.matrix.core.tools.StringUtils;
import com.matrix.core.tools.UUIDUtil;
import com.matrix.system.app.authority.AppAuthorityManager;
import com.matrix.system.app.dto.LoginDto;
import com.matrix.system.app.dto.PwdResetDto;
import com.matrix.system.app.dto.SmsCodeDto;
import com.matrix.system.app.dto.UploadPhotoDto;
import com.matrix.system.app.vo.UserInfoVo;
import com.matrix.system.common.authority.strategy.AccountPasswordLogin;
import com.matrix.system.common.authority.strategy.LoginStrategy;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.service.SysUsersService;
import com.matrix.system.common.tools.PasswordUtil;
import com.matrix.system.hive.bean.AppVersion;
import com.matrix.system.hive.bean.SysOrderFlow;
import com.matrix.system.hive.bean.SysShopInfo;
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.hive.dao.SysOrderDao;
import com.matrix.system.hive.dao.SysOrderFlowDao;
import com.matrix.system.hive.dao.SysOrderItemDao;
import com.matrix.system.hive.dao.SysVipInfoDao;
import com.matrix.system.hive.plugin.util.CollectionUtils;
import com.matrix.system.hive.plugin.util.ImageUtil;
import com.matrix.system.hive.service.SysShopInfoService;
import com.matrix.system.shopXcx.api.dto.ErpOrderListDto;
import com.matrix.system.shopXcx.api.vo.ErpOrderDetailFlowVo;
import com.matrix.system.shopXcx.api.vo.ErpOrderDetailItemVo;
import com.matrix.system.shopXcx.api.vo.ErpOrderDetailVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.List;
/**
 * @author wzy
 * @date 2020-12-21
 **/
@Api(value = "WxErpOrderAction", tags = "小程序端Erp订单查询接口")
@RestController
@RequestMapping(value = "/wxapi/erpOrder")
public class WxErpOrderAction {
    @Autowired
    private SysUsersService sysUsersService;
    @Autowired
    private SysShopInfoService sysShopInfoService;
    @Autowired
    private AppAuthorityManager authorityManager;
    @Autowired
    private RedisClient redisClient;
    @Autowired
    private SysVipInfoDao vipInfoDao;
    @Autowired
    RedisUserLoginUtils redisUserLoginUtils;
    @Autowired
    private SysOrderDao sysOrderDao;
    @Autowired
    private SysOrderItemDao orderItemDao;
    @Autowired
    private SysOrderFlowDao orderFlowDao;
    @Value("${file_storage_path}")
    private String fileStoragePath;
    @Value("${static_resource_url}")
    private String nginxUrl;
    @ApiOperation(value = "查询用户所有在ERP中产生的订单" )
    @ApiResponses({
            @ApiResponse(code = 200, message = "OK",  response = ErpOrderListDto.class)
    })
    @PostMapping(value = "/findUserOrderList")
    public AjaxResult findUserOrderList(@RequestBody @Validated ErpOrderListDto erpOrderListDto) {
        BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class);
        SysVipInfo vipInfo = vipInfoDao.selectByPhone(bizUser.getPhoneNumber());
        erpOrderListDto.setVipId(vipInfo.getId());
        List<ErpOrderDetailVo> rows=sysOrderDao.selectErpOrderList(erpOrderListDto);
        rows.forEach(item->{
            item.setItems(orderItemDao.selectErpOrderItemByOrderId(item.getOrderId()));
        });
        return  AjaxResult.buildSuccessInstance(rows,"查询成功");
    }
    @ApiOperation(value = "查询用户在ERP中的订单详情" )
    @ApiResponses({
            @ApiResponse(code = 200, message = "OK",  response = ErpOrderListDto.class)
    })
    @GetMapping(value = "/findUserOrderById/{orderId}")
    public AjaxResult findUserOrderList(@PathVariable Long orderId) {
        ErpOrderDetailVo order=sysOrderDao.findUserOrderById(orderId);
        order.setItems(orderItemDao.selectErpOrderItemByOrderId(order.getOrderId()));
        List<SysOrderFlow> sysOrderFlows = orderFlowDao.selectPayMethodsAmountByOrderId(orderId);
        List<ErpOrderDetailFlowVo> flowVos=new ArrayList<>();
        sysOrderFlows.forEach(item->{
            ErpOrderDetailFlowVo erpOrderDetailFlowVo = new ErpOrderDetailFlowVo();
            BeanUtils.copyProperties(item,erpOrderDetailFlowVo);
            flowVos.add(erpOrderDetailFlowVo);
        });
        order.setFlow(flowVos);
        AjaxResult result = AjaxResult.buildSuccessInstance("查询成功");
        result.putInMap("order",order);
        return  result;
    }
}
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/YuyueAction.java
@@ -10,6 +10,7 @@
import com.matrix.core.pojo.PaginationVO;
import com.matrix.core.pojo.VerifyResult;
import com.matrix.core.tools.DateUtil;
import com.matrix.core.tools.LogUtil;
import com.matrix.core.tools.StringUtils;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.app.dto.ServiceOrderListDto;
@@ -27,12 +28,17 @@
import com.matrix.system.hive.dao.*;
import com.matrix.system.hive.plugin.util.CollectionUtils;
import com.matrix.system.hive.service.*;
import com.matrix.system.shopXcx.api.dto.ErpServiceCommentDto;
import com.matrix.system.shopXcx.api.dto.ErpServiceOrderListDto;
import com.matrix.system.shopXcx.api.vo.ErpOrderDetailItemVo;
import com.matrix.system.shopXcx.api.vo.ErpServiceOrderListVo;
import com.matrix.system.shopXcx.bean.ShopProduct;
import com.matrix.system.shopXcx.dao.ShopProductDao;
import com.matrix.system.shopXcx.dao.ShopSkuDao;
import com.matrix.system.shopXcx.dto.YYDayOfWeek;
import com.matrix.system.shopXcx.dto.YYmonth;
import com.matrix.system.shopXcx.mqTask.DTO.UserProjInfo;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
@@ -266,17 +272,13 @@
    public @ResponseBody
    AjaxResult createServiceOrder(@RequestBody Onlinebooking onlinebooking) {
        BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class);
        bizUser = bizUserDao.findByOpenId(bizUser.getOpenId());
        SysVipInfo vipInfo = vipInfoDao.selectByPhone(bizUser.getPhoneNumber());
        SysProjUse sysProjUse = projUseDao.selectById(Long.parseLong(onlinebooking.getProductId() + ""));
        Date yyTime = DateUtil.stringToDate(onlinebooking.getTimeStr(), DateUtil.DATE_FORMAT_MM);
        SysProjServices sysProjServices = new SysProjServices();
        sysProjServices.setCompanyId(vipInfo.getCompanyId());
        sysProjServices.setShopId(onlinebooking.getShopId());
        sysProjServices.setVipId(vipInfo.getId());
        sysProjServices.setYyTime(yyTime);
        sysProjServices.setRemark(onlinebooking.getRemark());
@@ -325,6 +327,10 @@
     * @param id
     * @return
     */
    @ApiOperation(value = " 根据id查询预约订单的详情", notes = " 根据id查询预约订单的详情")
    @ApiResponses({
            @ApiResponse(code = 200, message = "ok", response = ErpServiceOrderListVo.class)
    })
    @RequestMapping(value = "/getServiceOrderById/{id}")
    public @ResponseBody
    AjaxResult getServiceOrderById(@PathVariable("id") Long id) {
@@ -332,13 +338,9 @@
        if (projServices == null) {
            return AjaxResult.buildFailInstance("服务单不存在");
        }
        ServiceOrderDetailVo detailVo = SysProjServiceMapper.INSTANCE.projServiceToDetailVo(projServices);
        List<SysBeauticianState> beauticianStates = sysBeauticianStateService.findBySerId(projServices.getId());
        List<ServiceOrderDetailItemVo> items = SysBeauticianStateMapper.INSTANCE.entitiesToDetailItemsVo(beauticianStates);
        detailVo.setItems(items);
        ErpServiceOrderListVo serviceOrder = projServicesDao.findWxServiceOrderById(id);
        AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功");
        ajaxResult.putInMap("detail", detailVo);
        ajaxResult.putInMap("shopInfo", shopInfoDao.selectById(projServices.getShopId()));
        ajaxResult.putInMap("detail", serviceOrder);
        return ajaxResult;
    }
@@ -349,20 +351,18 @@
     * @param orderListDto
     * @return
     */
    @ApiOperation(value = "查询服务单列表", notes = "查询服务单列表")
    @ApiResponses({
            @ApiResponse(code = 200, message = "ok", response = ErpServiceOrderListVo.class)
    })
    @PostMapping(value = "/getServiceOrderList")
    @ResponseBody
    public AjaxResult findServiceOrderList(@RequestBody @Validated ServiceOrderListDto orderListDto) {
    public AjaxResult findServiceOrderList(@RequestBody @Validated ErpServiceOrderListDto orderListDto) {
        BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class);
        SysVipInfo vipInfo= vipInfoDao.selectByPhone(bizUser.getPhoneNumber());
        PaginationVO pageVo = new PaginationVO();
        int offset = (orderListDto.getPageNum() - 1) * orderListDto.getPageSize();
        int limit = orderListDto.getPageSize();
        pageVo.setOffset(offset);
        pageVo.setLimit(limit);
        orderListDto.setVipId(vipInfo.getId());
        List<ServiceOrderListVo> apiServiceOrderListInPage = projServicesService.findApiServiceOrderListInPage(orderListDto, pageVo);
        return AjaxResult.buildSuccessInstance(apiServiceOrderListInPage, projServicesService.findApiServiceOrderListTotal(orderListDto));
        List<ErpServiceOrderListVo> apiServiceOrderListInPage = projServicesDao.findWxServiceOrderList(orderListDto);
        return AjaxResult.buildSuccessInstance(apiServiceOrderListInPage,"查询成功");
    }
    /**
@@ -371,10 +371,10 @@
     * @param
     * @return
     */
    @RequestMapping(value = "/cancelOrderById/{id}")
    @ApiOperation(value = "取消预约", notes = "取消预约")
    @GetMapping(value = "/cancelOrderById/{id}")
    public @ResponseBody
    AjaxResult cancelOrderById(@PathVariable("id") Long id) {
    AjaxResult cancelOrderById(@PathVariable Long id) {
        SysProjServices services = new SysProjServices();
        services.setId(id);
        int i = projServicesService.modifyCancelProjServices(services);
@@ -383,25 +383,26 @@
        } else {
            return new AjaxResult(AjaxResult.STATUS_FAIL, "取消预约失败");
        }
    }
    @ApiOperation(value = "服务单评论", notes = "服务单评论")
    @PostMapping(value = "/commentService")
    public @ResponseBody
    AjaxResult commentService(@RequestBody @Validated ErpServiceCommentDto commentDto) {
        SysProjServices services = new SysProjServices();
        services.setId(commentDto.getId());
        services.setComment(commentDto.getComment());
        int i = projServicesDao.update(services);
        if (i > 0) {
            return new AjaxResult(AjaxResult.STATUS_SUCCESS, "评论成功");
        } else {
            return new AjaxResult(AjaxResult.STATUS_FAIL, "评论失败");
        }
    }
    private UserProjInfo coversion(SysProjUse pUse) {
        UserProjInfo projInfo = new UserProjInfo();
        projInfo.setId(pUse.getId());
        projInfo.setName(shoppingGoodsDao.selectById(pUse.getProjId()).getName());
        projInfo.setSurplusCount(pUse.getSurplusCount() + "");
        projInfo.setType(pUse.getType());
        return projInfo;
    }
    private int dateToCodeInt(Date date) {
        return Integer.parseInt(DateUtil.dateToString(date, DateUtil.HHmm));
    }
}
zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/ErpOrderListDto.java
New file
@@ -0,0 +1,78 @@
package com.matrix.system.shopXcx.api.dto;
import com.matrix.core.pojo.PaginationDto;
import com.matrix.system.app.dto.BasePageDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
 * @author jyy
 * @date 2020-12-23
 **/
@ApiModel(value = "ErpOrderListDto", description = "订单列表接收参数类")
public class ErpOrderListDto extends PaginationDto {
    @ApiModelProperty(value = "订单状态 0-全部 1-待付款 2-已付款 3-欠款  4-已取消 全部默认传空字符串", example = "1")
    private Integer orderStatus;
    @ApiModelProperty(hidden = true)
    private String status;
    @ApiModelProperty(value = "查询字段")
    private String queryKey;
    @ApiModelProperty(hidden = true)
    private Long vipId;
    public Long getVipId() {
        return vipId;
    }
    public void setVipId(Long vipId) {
        this.vipId = vipId;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    public String getQueryKey() {
        return queryKey;
    }
    public void setQueryKey(String queryKey) {
        this.queryKey = queryKey;
    }
    public Integer getOrderStatus() {
        return orderStatus;
    }
    public void setOrderStatus(Integer orderStatus) {
        this.orderStatus = orderStatus;
        switch (orderStatus) {
            case 0 :
                this.status = "";
                break;
            case 1:
                this.status = "待付款";
                break;
            case 2:
                this.status = "已付款";
                break;
            case 3:
                this.status = "欠款";
                break;
            case 4:
                this.status = "已取消";
                break;
            default:
                this.status = "";
                break;
        }
    }
}
zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/ErpServiceCommentDto.java
New file
@@ -0,0 +1,41 @@
package com.matrix.system.shopXcx.api.dto;
import com.matrix.core.pojo.PaginationDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotNull;
/**
 * @author jyy
 * @date 2020-12-23
 **/
@ApiModel(value = "ErpServiceCommentDto", description = "服务评价")
public class ErpServiceCommentDto   {
    @NotNull(message = "评论内容不能为空")
    @ApiModelProperty(value = "评论内容")
    private String comment;
    @NotNull(message = "服务单id不能为空")
    @ApiModelProperty(value = "服务单id")
    private Long id;
    public String getComment() {
        return comment;
    }
    public void setComment(String comment) {
        this.comment = comment;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
}
zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/ErpServiceOrderListDto.java
New file
@@ -0,0 +1,50 @@
package com.matrix.system.shopXcx.api.dto;
import com.matrix.core.pojo.PaginationDto;
import com.matrix.system.app.dto.BasePageDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
 * @author jyy
 * @date 2020-12-24
 **/
@ApiModel(value = "ErpServiceOrderListDto", description = "服务单列表参数接收类")
public class ErpServiceOrderListDto extends PaginationDto {
    @ApiModelProperty(value = "查询参数")
    private String queryKey;
    @ApiModelProperty(value = "客户视角状态 0/全部 1/待确认 2进行中(待排班/待配料/待服务/服务中) 3/待评价(已完成/服务结束) 4/已评价 5/已取消 ")
    private String vipStatus;
    @ApiModelProperty(value = "客户ID")
    private Long vipId;
    public String getVipStatus() {
        return vipStatus;
    }
    public void setVipStatus(String vipStatus) {
        this.vipStatus = vipStatus;
    }
    public Long getVipId() {
        return vipId;
    }
    public void setVipId(Long vipId) {
        this.vipId = vipId;
    }
    public String getQueryKey() {
        return queryKey;
    }
    public void setQueryKey(String queryKey) {
        this.queryKey = queryKey;
    }
}
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ErpOrderDetailFlowVo.java
New file
@@ -0,0 +1,37 @@
package com.matrix.system.shopXcx.api.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
/**
 * @author jyy
 * @date 2020-12-23
 **/
@ApiModel(value = "ErpOrderDetailFlowVo", description = "订单支付方式")
public class ErpOrderDetailFlowVo {
    @ApiModelProperty(value = "支付方式")
    private String payMethod;
    @ApiModelProperty(value = "支付金额")
    private BigDecimal amount;
    public String getPayMethod() {
        return payMethod;
    }
    public void setPayMethod(String payMethod) {
        this.payMethod = payMethod;
    }
    public BigDecimal getAmount() {
        return amount;
    }
    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }
}
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ErpOrderDetailItemVo.java
New file
@@ -0,0 +1,63 @@
package com.matrix.system.shopXcx.api.vo;
import com.matrix.system.app.vo.OrderDetailAchieveItemVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.util.List;
/**
 * @author jyy
 * @date 2020-12-23
 **/
@ApiModel(value = "ErpOrderDetailItemVo", description = "订单详情明细表")
public class ErpOrderDetailItemVo {
    @ApiModelProperty(value = "商品名称")
    private String goodsName;
    @ApiModelProperty(value = "数量")
    private String count;
    @ApiModelProperty(value = "原价")
    private BigDecimal price;
    @ApiModelProperty(value = "折扣价格")
    private BigDecimal zkPrice;
    public String getGoodsName() {
        return goodsName;
    }
    public void setGoodsName(String goodsName) {
        this.goodsName = goodsName;
    }
    public String getCount() {
        return count;
    }
    public void setCount(String count) {
        this.count = count;
    }
    public BigDecimal getPrice() {
        return price;
    }
    public void setPrice(BigDecimal price) {
        this.price = price;
    }
    public BigDecimal getZkPrice() {
        return zkPrice;
    }
    public void setZkPrice(BigDecimal zkPrice) {
        this.zkPrice = zkPrice;
    }
}
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ErpOrderDetailVo.java
New file
@@ -0,0 +1,158 @@
package com.matrix.system.shopXcx.api.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.matrix.core.tools.DateUtil;
import com.matrix.system.app.vo.OrderDetailItemVo;
import com.matrix.system.hive.bean.SysOrderFlow;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
 * @author jyy
 * @date 2020-12-23
 **/
@ApiModel(value = "ErpOrderDetailVo", description = "订单详情返回参数类")
public class ErpOrderDetailVo {
    @ApiModelProperty(value = "订单ID")
    private String orderId;
    @ApiModelProperty(value = "门店名称")
    private String shopName;
    @ApiModelProperty(value = "订单号")
    private String orderNo;
    @ApiModelProperty(value = "顾问姓名")
    private String staffName;
    @ApiModelProperty(value = "应付金额")
    private BigDecimal needPay;
    @ApiModelProperty(value = "实付金额")
    private BigDecimal realPay;
    @ApiModelProperty(value = "优惠金额")
    private BigDecimal discount;
    @ApiModelProperty(value = "订单明细")
    private List<ErpOrderDetailItemVo> items;
    @ApiModelProperty(value = "支付流水")
    private List<ErpOrderDetailFlowVo> flow;
    @ApiModelProperty(value = "订单状态")
    private String orderStatus;
    @ApiModelProperty(value = "欠款")
    private BigDecimal arrears;
    @JsonFormat(pattern = DateUtil.DATE_FORMAT_SS, timezone = "GMT+8")
    @ApiModelProperty(value = "下单时间")
    private Date orderTime;
    public List<ErpOrderDetailFlowVo> getFlow() {
        return flow;
    }
    public void setFlow(List<ErpOrderDetailFlowVo> flow) {
        this.flow = flow;
    }
    public String getShopName() {
        return shopName;
    }
    public void setShopName(String shopName) {
        this.shopName = shopName;
    }
    public String getOrderId() {
        return orderId;
    }
    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }
    public String getOrderNo() {
        return orderNo;
    }
    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }
    public String getStaffName() {
        return staffName;
    }
    public void setStaffName(String staffName) {
        this.staffName = staffName;
    }
    public BigDecimal getNeedPay() {
        return needPay;
    }
    public void setNeedPay(BigDecimal needPay) {
        this.needPay = needPay;
    }
    public BigDecimal getRealPay() {
        return realPay;
    }
    public void setRealPay(BigDecimal realPay) {
        this.realPay = realPay;
    }
    public BigDecimal getDiscount() {
        return discount;
    }
    public void setDiscount(BigDecimal discount) {
        this.discount = discount;
    }
    public List<ErpOrderDetailItemVo> getItems() {
        return items;
    }
    public void setItems(List<ErpOrderDetailItemVo> items) {
        this.items = items;
    }
    public String getOrderStatus() {
        return orderStatus;
    }
    public void setOrderStatus(String orderStatus) {
        this.orderStatus = orderStatus;
    }
    public BigDecimal getArrears() {
        return arrears;
    }
    public void setArrears(BigDecimal arrears) {
        this.arrears = arrears;
    }
    public Date getOrderTime() {
        return orderTime;
    }
    public void setOrderTime(Date orderTime) {
        this.orderTime = orderTime;
    }
}
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ErpServiceOrderListProjVo.java
New file
@@ -0,0 +1,45 @@
package com.matrix.system.shopXcx.api.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel(value = "ErpServiceOrderListProjVo", description = "服务单列表项目返回参数类")
public class  ErpServiceOrderListProjVo {
        @ApiModelProperty(value = "项目名称")
        private String projName;
        @ApiModelProperty(value = "项目图片")
        private String imgMobile;
        @ApiModelProperty(value = "美疗师")
        private String beautyName="";
        public String getImgMobile() {
            return imgMobile;
        }
        public void setImgMobile(String imgMobile) {
            this.imgMobile = imgMobile;
        }
        public String getProjName() {
            return projName;
        }
        public void setProjName(String projName) {
            this.projName = projName;
        }
        public String getBeautyName() {
            return beautyName;
        }
        public void setBeautyName(String beautyName) {
            this.beautyName = beautyName;
        }
    }
zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ErpServiceOrderListVo.java
New file
@@ -0,0 +1,147 @@
package com.matrix.system.shopXcx.api.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.matrix.core.tools.DateUtil;
import com.matrix.system.app.vo.ServiceOrderListProjVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import java.util.List;
/**
 * @author wzy
 * @date 2020-12-24
 **/
@ApiModel(value = "ServiceOrderListVo", description = "服务单列表返回参数类")
public class ErpServiceOrderListVo {
    @ApiModelProperty(value = "服务单Id")
    private Long id;
    @ApiModelProperty(value = "服务单编号")
    private String serviceNo;
    @JsonFormat(pattern = DateUtil.DATE_FORMAT_MM, timezone = "GMT+8")
    @ApiModelProperty(value = "预约时间")
    private Date time;
    @ApiModelProperty(value = "服务时长")
    private Integer timeLength;
    @ApiModelProperty(value = "状态 待预约  待派单  待配料  待服务  服务中  服务完成  服务单结束")
    private String status;
    @ApiModelProperty(value = "门店名称")
    private String shopName;
    @ApiModelProperty(value = "门店地址")
    private String shopAddr;
    @ApiModelProperty(value = "床位")
    private String bed;
    @ApiModelProperty(value = "客户评论")
    private String comment="";
    @ApiModelProperty(value = "员工回复")
    private String reply;
    @ApiModelProperty(value = "服务项目信息")
    private List<ErpServiceOrderListProjVo> projs;
    public String getComment() {
        return comment;
    }
    public void setComment(String comment) {
        this.comment = comment;
    }
    public String getReply() {
        return reply;
    }
    public void setReply(String reply) {
        this.reply = reply;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getServiceNo() {
        return serviceNo;
    }
    public void setServiceNo(String serviceNo) {
        this.serviceNo = serviceNo;
    }
    public Date getTime() {
        return time;
    }
    public void setTime(Date time) {
        this.time = time;
    }
    public String getShopName() {
        return shopName;
    }
    public void setShopName(String shopName) {
        this.shopName = shopName;
    }
    public String getShopAddr() {
        return shopAddr;
    }
    public void setShopAddr(String shopAddr) {
        this.shopAddr = shopAddr;
    }
    public Integer getTimeLength() {
        return timeLength;
    }
    public void setTimeLength(Integer timeLength) {
        this.timeLength = timeLength;
    }
    public String getBed() {
        return bed;
    }
    public void setBed(String bed) {
        this.bed = bed;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    public List<ErpServiceOrderListProjVo> getProjs() {
        return projs;
    }
    public void setProjs(List<ErpServiceOrderListProjVo> projs) {
        this.projs = projs;
    }
}
zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderDao.xml
@@ -611,4 +611,56 @@
        group by b.su_id
        order by amount desc, b.su_id
    </select>
    <select id="selectErpOrderList" resultType="com.matrix.system.shopXcx.api.vo.ErpOrderDetailVo">
            select
            a.id orderId,
            a.ORDER_NO orderNo,
            a.ORDER_TIME orderTime,
            a.STATU orderStatus,
            a.ZK_TOTAL needPay,
            a.TOTAL - a.ZK_TOTAL discount,
            (a.card_Pay + a.cash_Pay) realPay,
            a.arrears arrears,
            b.su_name staffName,
            d.shop_name as shopName
            from sys_order a
            left join sys_users b on a.STAFF_ID = b.su_id
            left join sys_vip_info c on c.id = a.VIP_ID
            left join sys_shop_info d on d.id=a.shop_id
            <where>
                <if test="queryKey != null and queryKey != ''">
                    and instr(a.order_no, #{queryKey})
                </if>
                <if test="status != null and status != ''">
                    and a.statu = #{status}
                </if>
                <if test="vipId != null">
                    and a.vip_id=#{vipId}
                </if>
            </where>
            order by a.order_time desc
            limit #{offset},#{limit}
    </select>
    <select id="findUserOrderById" resultType="com.matrix.system.shopXcx.api.vo.ErpOrderDetailVo">
         select
            a.id orderId,
            a.ORDER_NO orderNo,
            a.ORDER_TIME orderTime,
            a.STATU orderStatus,
            a.ZK_TOTAL needPay,
            a.TOTAL - a.ZK_TOTAL discount,
            (a.card_Pay + a.cash_Pay) realPay,
            a.arrears arrears,
            b.su_name staffName,
            d.shop_name as shopName
            from sys_order a
            left join sys_users b on a.STAFF_ID = b.su_id
            left join sys_vip_info c on c.id = a.VIP_ID
            left join sys_shop_info d on d.id=a.shop_id
            where a.id=#{orderId}
    </select>
</mapper>
zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml
@@ -535,4 +535,16 @@
        where a.ORDER_ID=#{orderId};
    </select>
    <select id="selectErpOrderItemByOrderId"
            resultType="com.matrix.system.shopXcx.api.vo.ErpOrderDetailItemVo">
            select
               b.name goodsName,
               a.COUNT count,
               a.PRICE price,
               a.ZK_PRICE zkPrice
        from sys_order_item a
        inner join shopping_goods b on a.goods_id=b.id
        where a.ORDER_ID=#{orderId}
    </select>
</mapper>
zq-erp/src/main/resources/mybatis/mapper/hive/SysProjServicesDao.xml
@@ -38,6 +38,8 @@
            <result property="oldShopId" column="OLD_SHOP_ID"/>
            <result property="consumeTime" column="consume_time"/>
            <result property="companyId" column="company_id"/>
            <result property="comment" column="comment"/>
            <result property="reply" column="reply"/>
            
            <result property="beautiName" column="beautiName"/>
@@ -87,7 +89,9 @@
            CHANGE_ID,
            OLD_SHOP_ID,
            consume_time,
            company_id
            company_id,
            comment,
            reply
        )
    VALUES (
            #{id},
@@ -122,7 +126,9 @@
            #{changeId},
            #{oldShopId},
            #{consumeTime},
            #{companyId}
            #{companyId},
            #{comment},
            #{reply}
    )
        
    </insert>
@@ -228,8 +234,18 @@
                <if test="consumeTime != null  ">
                    consume_time = #{consumeTime}
                </if>
                <if test="reply != null  ">
                    reply = #{reply}
                </if>
                <if test="comment != null  ">
                    comment = #{comment}
                </if>
        </set>
        WHERE id=#{id} 
    </update>
    <update id="comment">
    </update>
    <!-- 批量删除 -->
@@ -516,23 +532,7 @@
            <if test="record.userId!=null">
                and (a.create_staff_id=#{record.userId} or b.staff_id=#{record.userId})
            </if>
            <if test="record.vipStatus != null and record.vipStatus != '' and record.vipStatus!=0 ">
                <if test="record.vipStatus == 1">
                    and a.state = '待确认'
                </if>
                <if test="record.vipStatus == 2">
                    and a.state in ( '预约成功待处理' ,'需配料','配料完成','服务中')
                </if>
                <if test="record.vipStatus == 3">
                    and ( a.state in ( '服务完成' ,'服务单结束') and a.comment is  null)
                </if>
                <if test="record.vipStatus == 4">
                    and a.comment is not null
                </if>
                <if test="record.vipStatus == 5">
                    and a.state = '预约取消'
                </if>
            </if>
        </where>
        <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 -->
            order by a.yy_time desc
@@ -567,4 +567,104 @@
            </if>
        </where>
    </select>
    <resultMap id="ErpServiceOrderListVoMap" type="com.matrix.system.shopXcx.api.vo.ErpServiceOrderListVo">
        <id column="id" property="id" />
        <result column="serviceNo" property="serviceNo"/>
        <result property="time" column="time"/>
        <result property="bed" column="bed" />
        <result property="timeLength" column="timeLength" />
        <result property="status" column="status" />
        <result property="shopName" column="shopName" />
        <result property="shopAddr" column="shopAddr" />
        <result property="comment" column="comment" />
        <result property="reply" column="reply" />
        <collection property="projs" ofType="com.matrix.system.shopXcx.api.vo.ErpServiceOrderListProjVo">
            <result property="projName" column="projName" />
            <result property="beautyName" column="beautyName" />
            <result property="imgMobile" column="imgMobile" />
        </collection>
    </resultMap>
    <select id="findWxServiceOrderList" resultMap="ErpServiceOrderListVoMap">
        select
        a.id id,
        a.SERVICE_NO serviceNo,
        a.YY_TIME time,
        a.TOTAL_TIME timeLength,
        a.state status,
        d.BED_NAME bed,
        f.su_name beautyName,
        g.proj_name projName,
        h.shop_short_name as shopName,
        h.shop_addr as shopAddr,
        m.img as imgMobile
        from sys_proj_services a
        left join sys_beautician_state b on a.ID=b.SERVICES_ID
        left join sys_bed_state c on a.ID = c.SERVICE_ID
        left join sys_bed_info d on c.BED_ID=d.ID
        left join sys_vip_info e on a.VIP_ID=e.ID
        left join sys_users f on f.su_id=b.STAFF_ID
        left join sys_proj_use g on b.puse_id=g.ID
        left join sys_shop_info h on a.SHOP_ID=h.ID
        left join shopping_goods m on g.proj_id=m.id
        <where>
            <if test="queryKey != null and queryKey != ''">
                and instr(a.SERVICE_NO, #{queryKey})
            </if>
            <if test="vipId != null and vipId != ''">
                and a.vip_id = #{vipId}
            </if>
            <if test="vipStatus != null and vipStatus != '' and vipStatus!=0 ">
                <if test="vipStatus == 1">
                    and a.state = '待确认'
                </if>
                <if test="vipStatus == 2">
                    and a.state in ( '预约成功待处理' ,'需配料','配料完成','服务中')
                </if>
                <if test="vipStatus == 3">
                    and ( a.state in ( '服务完成' ,'服务单结束') and a.comment is  null)
                </if>
                <if test="vipStatus == 4">
                    and a.comment is not null
                </if>
                <if test="vipStatus == 5">
                    and a.state = '预约取消'
                </if>
            </if>
        </where>
            order by a.yy_time desc
            limit #{offset}, #{limit}
    </select>
    <select id="findWxServiceOrderById" resultMap="ErpServiceOrderListVoMap">
        select
        a.id id,
        a.SERVICE_NO serviceNo,
        a.YY_TIME time,
        a.TOTAL_TIME timeLength,
        a.state status,
        a.comment,
        a.reply,
        d.BED_NAME bed,
        f.su_name beautyName,
        g.proj_name projName,
        h.shop_short_name as shopName,
        h.shop_addr as shopAddr,
        m.img as imgMobile
        from sys_proj_services a
        left join sys_beautician_state b on a.ID=b.SERVICES_ID
        left join sys_bed_state c on a.ID = c.SERVICE_ID
        left join sys_bed_info d on c.BED_ID=d.ID
        left join sys_vip_info e on a.VIP_ID=e.ID
        left join sys_users f on f.su_id=b.STAFF_ID
        left join sys_proj_use g on b.puse_id=g.ID
        left join sys_shop_info h on a.SHOP_ID=h.ID
        left join shopping_goods m on g.proj_id=m.id
        where a.id=#{id}
    </select>
</mapper>