无关风月
2024-12-27 d0ea9b3c5897a99875de5ea18ab6cfbca6b4a5b2
验光师
10个文件已修改
4个文件已添加
541 ■■■■■ 已修改文件
manage/src/main/java/com/jilongda/manage/controller/TOrderAccountingController.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manage/src/main/java/com/jilongda/manage/controller/TOrderAftersalesController.java 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manage/src/main/java/com/jilongda/manage/controller/TOrderController.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manage/src/main/java/com/jilongda/manage/dto/AccountDetailDTO.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manage/src/main/java/com/jilongda/manage/mapper/TOrderMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manage/src/main/java/com/jilongda/manage/model/TOrder.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manage/src/main/java/com/jilongda/manage/model/TOrderGoods.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manage/src/main/java/com/jilongda/manage/query/TOrderQuery.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manage/src/main/java/com/jilongda/manage/service/TOrderService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manage/src/main/java/com/jilongda/manage/service/impl/TOrderServiceImpl.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manage/src/main/java/com/jilongda/manage/vo/TOrderAftersalesDetailVO.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manage/src/main/java/com/jilongda/manage/vo/TOrderListVO.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manage/src/main/java/com/jilongda/manage/vo/TOrderVO.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manage/src/main/resources/mapping/TOrderMapper.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manage/src/main/java/com/jilongda/manage/controller/TOrderAccountingController.java
@@ -3,10 +3,14 @@
import com.jilongda.common.basic.ApiResult;
import com.jilongda.common.basic.PageInfo;
import com.jilongda.manage.authority.model.SecUser;
import com.jilongda.manage.authority.service.SecUserService;
import com.jilongda.manage.dto.AccountDetailDTO;
import com.jilongda.manage.model.*;
import com.jilongda.manage.query.TLineUpQuery;
import com.jilongda.manage.query.TOrderAccountingQuery;
import com.jilongda.manage.service.*;
import com.jilongda.manage.utils.LoginInfoUtil;
import com.jilongda.manage.vo.TOrderAccountVO;
import com.jilongda.manage.vo.TOrderVO;
import io.swagger.annotations.Api;
@@ -16,6 +20,7 @@
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
/**
@@ -31,6 +36,8 @@
@RequestMapping("/t-order-accounting")
public class TOrderAccountingController {
    @Autowired
    private SecUserService secUserService;
    @Autowired
    private TStoreService storeService;
    @Autowired
    private TOrderService orderService;
@@ -44,6 +51,8 @@
    private TOrderGoodsService orderGoodsService;
    @Autowired
    private SecFeeItemsService feeItemsService;
    @Autowired
    private LoginInfoUtil loginInfoUtil;
    @ApiOperation(value = "核算订单分页列表")
    @PostMapping(value = "/pageList")
    public ApiResult<PageInfo<TOrderVO>> pageList(@RequestBody TOrderAccountingQuery query) {
@@ -103,7 +112,20 @@
    }
    @ApiOperation(value = "确认核算操作")
    @GetMapping(value = "/confirm")
    public ApiResult confirm() {
    public ApiResult confirm(@RequestBody AccountDetailDTO dto) {
        List<TOrderGoods> list = dto.getList();
        orderGoodsService.updateBatchById(list);
        TOrder byId = orderService.getById(dto.getId());
        byId.setPayTypeName(dto.getPayTypeName());
        byId.setPayTypeName(dto.getPayTypeName());
        byId.setPayMoney(dto.getPayMoney());
        byId.setCommissionMoney(dto.getCommission());
        byId.setIsAccounting(1);
        Long userId = loginInfoUtil.getUserId();
        SecUser byId1 = secUserService.getById(userId);
        byId.setAccountingName(byId1.getNickName());
        byId.setAccountingTime(LocalDateTime.now());
        orderService.updateById(byId);
        return ApiResult.success();
    }
}
manage/src/main/java/com/jilongda/manage/controller/TOrderAftersalesController.java
@@ -5,21 +5,22 @@
import com.jilongda.common.basic.PageInfo;
import com.jilongda.common.constants.WarehousingConstant;
import com.jilongda.common.utils.CodeGenerateUtils;
import com.jilongda.manage.model.TOptometrist;
import com.jilongda.manage.model.TOrderAftersales;
import com.jilongda.manage.authority.model.SecUser;
import com.jilongda.manage.authority.service.SecUserService;
import com.jilongda.manage.model.*;
import com.jilongda.manage.query.TOptometristQuery;
import com.jilongda.manage.query.TOrderAftersalesQuery;
import com.jilongda.manage.service.TOrderAftersalesService;
import com.jilongda.manage.service.*;
import com.jilongda.manage.vo.TOptometristVO;
import com.jilongda.manage.vo.TOrderAftersalesDetailVO;
import com.jilongda.manage.vo.TOrderAftersalesVO;
import io.swagger.annotations.Api;
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.*;
import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
import java.util.List;
/**
 * <p>
@@ -37,6 +38,18 @@
    @Autowired
    private TOrderAftersalesService orderAftersalesService;
    @Autowired
    private TOrderService orderService;
    @Autowired
    private SecUserService secUserService;
    @Autowired
    private TStoreService tStoreService;
    @Autowired
    private TAppUserService appUserService;
    @Autowired
    private TOptometristService tOptometristService;
    @Autowired
    private TOrderGoodsService goodsService;
    @ApiOperation(value = "订单售后列表")
@@ -53,6 +66,36 @@
        orderAftersalesService.save(dto);
        return ApiResult.success();
    }
    @ApiOperation(value = "订单售后详情")
    @GetMapping(value = "/detail")
    public ApiResult<TOrderAftersalesDetailVO> detail(Integer id) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
        TOrderAftersales byId = orderAftersalesService.getById(id);
        TOrder byId1 = orderService.getById(byId.getOrderId());
        TStore byId2 = tStoreService.getById(byId1.getStoreId());
        SecUser byId3 = secUserService.getById(byId.getSysId());
        TOptometrist byId5 = tOptometristService.getById(byId.getOptometristId());
        TOrderAftersalesDetailVO res = new TOrderAftersalesDetailVO();
        res.setOrderId(byId1.getId());
        if (byId1.getUserId()!=null){
            TAppUser byId4 = appUserService.getById(byId1);
            if (byId4!=null){
                res.setPhone(byId4.getPhone());
            }
        }
        res.setStoreName(byId2.getName());
        res.setOptometristName(byId5.getName());
        res.setSalesUser(byId3.getNickName());
        res.setOrderTime(simpleDateFormat.format(byId1.getCreateTime()));
        res.setAfterSalesTime(simpleDateFormat1.format(byId.getCreateTime()));
        List<TOrderGoods> list = goodsService.lambdaQuery().eq(TOrderGoods::getOrderId, byId1.getId()).list();
        res.setGoodsList(list);
        res.setOrderMoney(byId1.getOrderMoney());
        res.setCouponMoney(byId1.getCouponMoney());
        res.setPayMoney(byId1.getPayMoney());
        return ApiResult.success(res);
    }
}
manage/src/main/java/com/jilongda/manage/controller/TOrderController.java
@@ -8,10 +8,14 @@
import com.jilongda.manage.authority.service.SecUserService;
import com.jilongda.manage.dto.TOrderDTO;
import com.jilongda.manage.model.*;
import com.jilongda.manage.query.TModelQuery;
import com.jilongda.manage.query.TOptometryQuery;
import com.jilongda.manage.query.TOrderQuery;
import com.jilongda.manage.service.*;
import com.jilongda.manage.utils.LoginInfoUtil;
import com.jilongda.manage.vo.TModelVO;
import com.jilongda.manage.vo.TOptometryVO;
import com.jilongda.manage.vo.TOrderListVO;
import com.jilongda.manage.vo.TOrderVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -21,6 +25,7 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -55,6 +60,56 @@
    private TFrameGoodsService frameGoodsService;
    @Autowired
    private TLensGoodsService lensGoodsService;
    @Autowired
    private TModelService modelService;
    @Autowired
    private TLensSeriesService lensSeriesService;
    @Autowired
    private TBrandService brandService;
    @Autowired
    private TOptometryService optometryService;
    @ApiOperation(value = "销售订单分页列表")
    @PostMapping(value = "/pageList")
    public ApiResult<PageInfo<TOrderListVO>> pageList(@RequestBody TOrderQuery query) {
        if (StringUtils.hasLength(query.getStartTime())){
            query.setStartTime(query.getStartTime()+" 00:00:00");
            query.setEndTime(query.getEndTime()+" 23:59:59");
        }
        List<Integer> orderIds = new ArrayList<>();
        List<Integer> collect = tAppUserService.lambdaQuery()
                .eq(StringUtils.hasLength(query.getWxName()), TAppUser::getName, query.getWxName())
                .eq(StringUtils.hasLength(query.getPhone()), TAppUser::getName, query.getPhone()).list()
                .stream().map(TAppUser::getId).collect(Collectors.toList());
        if (StringUtils.hasLength(query.getWxName())||StringUtils.hasLength(query.getPhone())){
            query.setUserIds(collect);
            if (collect.isEmpty())return ApiResult.success(new PageInfo<>());
        }
        List<Integer> collect1 = orderGoodsService.lambdaQuery()
                .eq(StringUtils.hasLength(query.getBrandLens()), TOrderGoods::getBrandName, query.getBrandLens())
                .eq(StringUtils.hasLength(query.getSeries()), TOrderGoods::getSeriesName, query.getSeries())
                .eq((query.getType() != null), TOrderGoods::getType, query.getType())
                .eq(StringUtils.hasLength(query.getRefractiveIndex()), TOrderGoods::getRefractiveIndex, query.getRefractiveIndex()).list()
                .stream().map(TOrderGoods::getOrderId).collect(Collectors.toList());
        if (StringUtils.hasLength(query.getBrandLens())||StringUtils.hasLength(query.getSeries())||query.getType() != null||
                StringUtils.hasLength(query.getRefractiveIndex())){
            orderIds.addAll(collect1);
        }
        List<Integer> collect2 = orderGoodsService.lambdaQuery()
                .eq(StringUtils.hasLength(query.getBrandFrame()), TOrderGoods::getBrandName, query.getBrandFrame())
                .eq(StringUtils.hasLength(query.getModelName()), TOrderGoods::getModelName, query.getModelName())
                .eq(StringUtils.hasLength(query.getColor()), TOrderGoods::getColor, query.getColor()).list()
                .stream().map(TOrderGoods::getOrderId).collect(Collectors.toList());
        if (StringUtils.hasLength(query.getBrandFrame())||StringUtils.hasLength(query.getModelName())||
                StringUtils.hasLength(query.getColor())){
            orderIds.addAll(collect2);
        }
        if (StringUtils.hasLength(query.getBrandFrame())||StringUtils.hasLength(query.getModelName())||
                StringUtils.hasLength(query.getColor())||StringUtils.hasLength(query.getBrandLens())||StringUtils.hasLength(query.getSeries())||query.getType() != null||
                StringUtils.hasLength(query.getRefractiveIndex())){
            if (orderIds.isEmpty())return ApiResult.success(new PageInfo<>());
        }
        return ApiResult.success(orderService.pageList(query));
    }
    @ApiOperation(value = "查询用户信息")
    @GetMapping(value = "/getUserById")
    public ApiResult getUserById(@RequestParam Integer userId) {
@@ -102,7 +157,9 @@
        if(Objects.nonNull(user)){
            dto.setStoreId(user.getStoreId());
        }
        orderService.save(dto);
        List<TOptometryDetail> optometryDetails = dto.getOptometryDetails();
        if (!CollectionUtils.isEmpty(optometryDetails)){
            for (TOptometryDetail optometryDetail : optometryDetails) {
@@ -110,26 +167,80 @@
            }
            optometryDetailService.saveBatch(optometryDetails);
        }
        List<TOrderGoods> orderGoods = dto.getOrderGoods();
        List<TLensGoods> tLensGoods = new ArrayList<>();
        List<TFrameGoods> tFrameGoods = new ArrayList<>();
        for (TOrderGoods orderGood : orderGoods) {
            orderGood.setOrderId(dto.getId());
            if (StringUtils.hasLength(orderGood.getSeriesName())){
                // 镜片
                String rLens = orderGood.getRLens();
                String[] split = rLens.split(",");
                TBrand one1 = brandService.lambdaQuery().eq(TBrand::getName, orderGood.getBrandName())
                        .eq(TBrand::getType, 2).one();
                TLensSeries one2 = lensSeriesService.lambdaQuery().eq(TLensSeries::getName, orderGood.getSeriesName())
                        .eq(TLensSeries::getBrandId, one1.getId()).one();
                TLensGoods one = lensGoodsService.lambdaQuery()
                        .eq(StringUtils.hasLength(orderGood.getSeriesName()),TLensGoods::getSeriesId, one2.getId())
                        .eq(StringUtils.hasLength(orderGood.getRefractiveIndex()),TLensGoods::getRefractiveIndex, orderGood.getRefractiveIndex())
                        .eq(orderGood.getType()!=null,TLensGoods::getLensType, orderGood.getType())
                        .eq(split.length>0,TLensGoods::getBallMirror, split[0])
                        .eq(split.length>=2,TLensGoods::getColumnMirror, split[1])
                        .one();
                if (one!=null){
                    if (one.getTotal()-1<0){
                        return ApiResult.failed("库存不足");
                    }
                    // 减少对应库存
                    one.setTotal(one.getTotal()-1);
                    tLensGoods.add(one);
                }else {
                    return ApiResult.failed("商品不存在");
                }
            }else{
                TModel one1 = modelService.lambdaQuery().eq(TModel::getName, orderGood.getModelName())
                        .eq(TModel::getColor, orderGood.getColor()).one();
                BigDecimal cost = one1.getCost();
                orderGood.setCost(cost);
                TFrameGoods one = frameGoodsService.lambdaQuery()
                        .eq(TFrameGoods::getModelId, one1.getId())
                        .eq(TFrameGoods::getColor, orderGood.getColor()).one();
                if (one!=null){
                    if (one.getTotal()-1<0){
                        return ApiResult.failed("库存不足");
                    }
                    // 增加对应库存
                    one.setTotal(one.getTotal()-1);
                    tFrameGoods.add(one);
                }else{
                    return ApiResult.failed("商品不存在");
                }
            }
        }
        // TODO 周哥 补库存
        orderGoodsService.saveBatch(orderGoods);
        lensGoodsService.updateBatchById(tLensGoods);
        frameGoodsService.updateBatchById(tFrameGoods);
        return ApiResult.success();
    }
    @ApiOperation(value = "销售订单详情")
    @GetMapping(value = "/getOrderDetailById")
    public ApiResult getOrderDetailById(@RequestParam Integer orderId) {
        TOrder byId = orderService.getById(orderId);
        TOrderVO orderVO = orderService.getOrderDetailById(orderId);
        // TODO 周哥 商品信息集合
        // TODO 周哥 验光处方 判断是关联或者手动
        List<TOrderGoods> list = orderGoodsService.lambdaQuery().eq(TOrderGoods::getOrderId, orderId).list();
        orderVO.setOrderGoods(list);
        if (byId.getOptometryId()!=null){
            // 选择验光单
            List<TOptometryDetail> list1 = optometryDetailService.lambdaQuery().eq(TOptometryDetail::getOptometryId, byId.getOptometryId()).list();
            orderVO.setOptometryDetails(list1);
        }else{
            // 手动填写验光单
            List<TOptometryDetail> list1 = optometryDetailService.lambdaQuery().eq(TOptometryDetail::getOrderId, orderId).list();
            orderVO.setOptometryDetails(list1);
        }
        return ApiResult.success(orderVO);
    }
manage/src/main/java/com/jilongda/manage/dto/AccountDetailDTO.java
New file
@@ -0,0 +1,30 @@
package com.jilongda.manage.dto;
import com.jilongda.manage.model.TInventory;
import com.jilongda.manage.model.TInventoryFrameDetail;
import com.jilongda.manage.model.TOrderGoods;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
@ApiModel(value = "确认核算DTO")
public class AccountDetailDTO  {
    @ApiModelProperty(value = "id")
    private Integer id;
    @ApiModelProperty(value = "商品明细列表")
    private List<TOrderGoods> list;
    @ApiModelProperty(value = "实收金额")
    private BigDecimal payMoney;
    @ApiModelProperty(value = "手续费扣除")
    private BigDecimal commission;
    @ApiModelProperty(value = "支付方式名称")
    private String payTypeName;
    @ApiModelProperty(value = "本单毛利")
    private BigDecimal profitMoney;
    @ApiModelProperty(value = "毛利率")
    private BigDecimal profitRating;
}
manage/src/main/java/com/jilongda/manage/mapper/TOrderMapper.java
@@ -1,9 +1,16 @@
package com.jilongda.manage.mapper;
import com.jilongda.common.basic.PageInfo;
import com.jilongda.manage.model.TOrder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jilongda.manage.query.TOrderQuery;
import com.jilongda.manage.query.TStoreQuery;
import com.jilongda.manage.vo.TOrderListVO;
import com.jilongda.manage.vo.TOrderVO;
import com.jilongda.manage.vo.TStoreVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
@@ -22,4 +29,6 @@
     */
    TOrderVO getOrderDetailById(@Param("orderId") Integer orderId);
    List<TOrder> pageList(@Param("query")TOrderQuery query,@Param("pageInfo") PageInfo<TOrderListVO> pageInfo);
}
manage/src/main/java/com/jilongda/manage/model/TOrder.java
@@ -162,5 +162,11 @@
    @ApiModelProperty(value = "支付方式")
    @TableField("payTypeName")
    private String payTypeName;
    @ApiModelProperty(value = "手续费扣除")
    private BigDecimal commission;
    @ApiModelProperty(value = "笨蛋毛利")
    private BigDecimal profitMoney;
    @ApiModelProperty(value = "毛利率")
    private BigDecimal profitRating;
}
manage/src/main/java/com/jilongda/manage/model/TOrderGoods.java
@@ -69,6 +69,12 @@
    @ApiModelProperty(value = "镜架-型号名称")
    @TableField("modelName")
    private String modelName;
    @ApiModelProperty(value = "镜架型号id 前端忽略")
    @TableField("modelId")
    private Integer modelId;
    @ApiModelProperty(value = "类型 1镜架 2镜片")
    @TableField("status")
    private Integer status;
    @ApiModelProperty(value = "商品价格")
    @TableField("goodsMoney")
manage/src/main/java/com/jilongda/manage/query/TOrderQuery.java
New file
@@ -0,0 +1,52 @@
package com.jilongda.manage.query;
import com.jilongda.common.pojo.BasePage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel(value = "销售订单查询Query")
public class TOrderQuery extends BasePage {
    @ApiModelProperty(value = "微信昵称")
    private String wxName;
    @ApiModelProperty(value = "姓名")
    private String realName;
    @ApiModelProperty(value = "手机号")
    private String phone;
    @ApiModelProperty(value = "下单起始日期 yyyy-MM-dd")
    private String startTime;
    @ApiModelProperty(value = "下单结束日期 yyyy-MM-dd")
    private String endTime;
    @ApiModelProperty(value = "金额起始 ")
    private String startMoney;
    @ApiModelProperty(value = "金额结束 ")
    private String endMoney;
    @ApiModelProperty(value = "镜片品牌名称-全部不传")
    private String brandLens;
    @ApiModelProperty(value = "镜片系列名称-全部不传")
    private String series;
    @ApiModelProperty(value = "镜片球/非球 1球 2非 3双非-全部不传")
    private Integer type;
    @ApiModelProperty(value = "折射率-全部不传")
    private String refractiveIndex;
    @ApiModelProperty(value = "镜架品牌名称-全部不传")
    private String brandFrame;
    @ApiModelProperty(value = "镜架型号名称-全部不传")
    private String modelName;
    @ApiModelProperty(value = "镜架色号-全部不传")
    private String color;
    @ApiModelProperty(value = "店铺id")
    private Integer storeId;
    @ApiModelProperty(value = "店员id")
    private Integer sysId;
    @ApiModelProperty(value = "用户ids 前端忽略")
    private List<Integer> userIds;
    @ApiModelProperty(value = "订单ids 前端忽略")
    private List<Integer> orderIds;
}
manage/src/main/java/com/jilongda/manage/service/TOrderService.java
@@ -1,7 +1,11 @@
package com.jilongda.manage.service;
import com.jilongda.common.basic.PageInfo;
import com.jilongda.manage.model.TOrder;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jilongda.manage.query.TOrderQuery;
import com.jilongda.manage.vo.TModelVO;
import com.jilongda.manage.vo.TOrderListVO;
import com.jilongda.manage.vo.TOrderVO;
/**
@@ -21,4 +25,5 @@
     */
    TOrderVO getOrderDetailById(Integer orderId);
    PageInfo<TOrderListVO> pageList(TOrderQuery query);
}
manage/src/main/java/com/jilongda/manage/service/impl/TOrderServiceImpl.java
@@ -1,11 +1,32 @@
package com.jilongda.manage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jilongda.common.basic.PageInfo;
import com.jilongda.manage.authority.mapper.SecUserMapper;
import com.jilongda.manage.authority.model.SecUser;
import com.jilongda.manage.mapper.TAppUserMapper;
import com.jilongda.manage.mapper.TOrderGoodsMapper;
import com.jilongda.manage.mapper.TStoreMapper;
import com.jilongda.manage.model.TAppUser;
import com.jilongda.manage.model.TOrder;
import com.jilongda.manage.mapper.TOrderMapper;
import com.jilongda.manage.model.TOrderGoods;
import com.jilongda.manage.model.TStore;
import com.jilongda.manage.query.TOrderQuery;
import com.jilongda.manage.service.TOrderService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jilongda.manage.vo.TAppUserVO;
import com.jilongda.manage.vo.TModelVO;
import com.jilongda.manage.vo.TOrderListVO;
import com.jilongda.manage.vo.TOrderVO;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
/**
 * <p>
@@ -22,4 +43,84 @@
    public TOrderVO getOrderDetailById(Integer orderId) {
        return this.baseMapper.getOrderDetailById(orderId);
    }
    @Autowired
    private TAppUserMapper appUserMapper;
    @Autowired
    private TStoreMapper storeMapper;
    @Autowired
    private SecUserMapper secUserMapper;
    @Autowired
    private TOrderGoodsMapper orderGoodsMapper;
    @Override
    public PageInfo<TOrderListVO> pageList(TOrderQuery query) {
        PageInfo<TOrderListVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<TOrder> list = this.baseMapper.pageList(query,pageInfo);
        List<TOrderListVO> res = new ArrayList<>();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        for (TOrder tOrder : list) {
            TOrderListVO tOrderListVO = new TOrderListVO();
            if (tOrder.getUserId()!=null){
                TAppUser tAppUser = appUserMapper.selectById(tOrder.getUserId());
                tOrderListVO.setWxName(tAppUser.getName());
            }
            TStore tStore = storeMapper.selectById(tOrder.getStoreId());
            if (tStore!=null){
                tOrderListVO.setStoreName(tStore.getName());
            }
            SecUser secUser = secUserMapper.selectById(tOrder.getSysId());
            if (secUser!=null){
                tOrderListVO.setStaffName(secUser.getNickName());
            }
            tOrderListVO.setId(tOrder.getId());
            tOrderListVO.setPhone(tOrder.getPhone());
            tOrderListVO.setRealName(tOrder.getRealName());
            List<TOrderGoods> orderGoods = orderGoodsMapper.selectList(new LambdaQueryWrapper<TOrderGoods>().eq(TOrderGoods::getOrderId, tOrder.getId()));
            for (TOrderGoods orderGood : orderGoods) {
                if (StringUtils.hasLength(orderGood.getModelName())){
                    // 镜架
                    tOrderListVO.setFrame(orderGood.getBrandName()+orderGood.getModelName()+" "+orderGood.getColor());
                    continue;
                }
                if (StringUtils.hasLength(orderGood.getLLens())){
                    String temp = null;
                    switch (orderGood.getType()){
                        case 1:
                            temp = "球面";
                            break;
                        case 2:
                            temp = "非球面";
                            break;
                        case 3:
                            temp = "双非";
                            break;
                    }
                    tOrderListVO.setLensL(orderGood.getBrandName() + orderGood.getSeriesName() + temp + orderGood.getRefractiveIndex());
                    continue;
                }
                if (StringUtils.hasLength(orderGood.getRLens())){
                    String temp = null;
                    switch (orderGood.getType()){
                        case 1:
                            temp = "球面";
                            break;
                        case 2:
                            temp = "非球面";
                            break;
                        case 3:
                            temp = "双非";
                            break;
                    }
                    tOrderListVO.setLensR(orderGood.getBrandName() + orderGood.getSeriesName() + temp + orderGood.getRefractiveIndex());
                }
            }
            tOrderListVO.setCouponMoney(tOrder.getCouponMoney());
            tOrderListVO.setOrderMoney(tOrder.getOrderMoney());
            tOrderListVO.setOrderTime(simpleDateFormat.format(tOrder.getCreateTime()));
            res.add(tOrderListVO);
        }
        pageInfo.setRecords(res);
        return pageInfo;
    }
}
manage/src/main/java/com/jilongda/manage/vo/TOrderAftersalesDetailVO.java
New file
@@ -0,0 +1,42 @@
package com.jilongda.manage.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jilongda.manage.model.TOrderAftersales;
import com.jilongda.manage.model.TOrderGoods;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ApiModel(value = "售后订单详情VO")
public class TOrderAftersalesDetailVO extends TOrderAftersales {
    @ApiModelProperty(value = "订单id")
    private Integer orderId;
    @ApiModelProperty(value = "手机号")
    private String phone;
    @ApiModelProperty(value = "门店名称")
    private String storeName;
    @ApiModelProperty(value = "验光师名称")
    private String optometristName;
    @ApiModelProperty(value = "售后店员名称")
    private String salesUser;
    @ApiModelProperty(value = "下单时间")
    private String orderTime;
    @ApiModelProperty(value = "售后日期")
    private String afterSalesTime;
    @ApiModelProperty(value = "商品详情列表")
    private List<TOrderGoods> goodsList;
    @ApiModelProperty(value = "订单总金额")
    private BigDecimal orderMoney;
    @ApiModelProperty(value = "优惠金额")
    private BigDecimal couponMoney;
    @ApiModelProperty(value = "支付金额")
    private BigDecimal payMoney;
}
manage/src/main/java/com/jilongda/manage/vo/TOrderListVO.java
New file
@@ -0,0 +1,42 @@
package com.jilongda.manage.vo;
import com.jilongda.manage.model.TOptometryDetail;
import com.jilongda.manage.model.TOrder;
import com.jilongda.manage.model.TOrderGoods;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
@ApiModel(value = "销售订单列表VO")
public class TOrderListVO  {
    @ApiModelProperty(value = "id")
    private Integer id;
    @ApiModelProperty(value = "微信昵称")
    private String wxName;
    @ApiModelProperty(value = "手机号")
    private String phone;
    @ApiModelProperty(value = "姓名")
    private String realName;
    @ApiModelProperty(value = "镜片R")
    private String lensR;
    @ApiModelProperty(value = "镜片L")
    private String lensL;
    @ApiModelProperty(value = "镜架")
    private String frame;
    @ApiModelProperty(value = "优惠金额")
    private BigDecimal couponMoney;
    @ApiModelProperty(value = "金额")
    private BigDecimal orderMoney;
    @ApiModelProperty(value = "下单时间")
    private String orderTime;
    @ApiModelProperty(value = "店铺名称")
    private String storeName;
    @ApiModelProperty(value = "员工昵称")
    private String staffName;
}
manage/src/main/java/com/jilongda/manage/vo/TOrderVO.java
@@ -1,7 +1,9 @@
package com.jilongda.manage.vo;
import com.jilongda.manage.model.TModel;
import com.jilongda.manage.model.TOptometryDetail;
import com.jilongda.manage.model.TOrder;
import com.jilongda.manage.model.TOrderGoods;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -9,7 +11,7 @@
import java.util.List;
@Data
@ApiModel(value = "镜架型号VO")
@ApiModel(value = "核算订单列表VO")
public class TOrderVO extends TOrder {
    @ApiModelProperty(value = "店铺名称")
@@ -18,4 +20,8 @@
    private String staffName;
    @ApiModelProperty(value = "优惠券名称")
    private String couponName;
    @ApiModelProperty(value = "商品详情列表")
    private List<TOrderGoods> orderGoods;
    @ApiModelProperty(value = "验光单详情")
    private List<TOptometryDetail> optometryDetails;
}
manage/src/main/resources/mapping/TOrderMapper.xml
@@ -61,5 +61,35 @@
        left join t_coupon_receive tcr on tcr.id = o.couponId
        left join t_coupon tc on tc.id = tcr.couponId
    </select>
    <select id="pageList" resultType="com.jilongda.manage.model.TOrder">
        select * from t_order
        where 1=1
        <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
            and createTime between #{query.startTime} and #{query.endTime}
        </if>
          <if test="query.startMoney != null ">
            and orderMoney between #{query.startMoney} and #{query.endMoney}
        </if>
        <if test="query.realName != null and query.realName != ''">
            and `name` like concat('%',#{query.realName},'%')
        </if>
        <if test="query.storeId != null">
            and storeId = #{query.storeId}
        </if>
        <if test="query.sysId != null">
            and sysId = #{query.sysId}
        </if>
        <if test="query.userIds != null and query.userIds.size()>0">
            AND userId IN
            <foreach collection="query.userIds" close=")" open="(" item="id" separator=",">
                #{id}
            </foreach>
        </if>
          <if test="query.orderIds != null and query.orderIds.size()>0">
            AND id IN
            <foreach collection="query.orderIds" close=")" open="(" item="id" separator=",">
                #{id}
            </foreach>
        </if>
    </select>
</mapper>