From d0ea9b3c5897a99875de5ea18ab6cfbca6b4a5b2 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期五, 27 十二月 2024 19:41:00 +0800
Subject: [PATCH] 验光师

---
 manage/src/main/java/com/jilongda/manage/model/TOrder.java                          |    6 
 manage/src/main/java/com/jilongda/manage/controller/TOrderController.java           |  127 +++++++++++
 manage/src/main/java/com/jilongda/manage/controller/TOrderAccountingController.java |   24 ++
 manage/src/main/java/com/jilongda/manage/vo/TOrderAftersalesDetailVO.java           |   42 ++++
 manage/src/main/java/com/jilongda/manage/vo/TOrderVO.java                           |    8 
 manage/src/main/java/com/jilongda/manage/model/TOrderGoods.java                     |    6 
 manage/src/main/java/com/jilongda/manage/mapper/TOrderMapper.java                   |    9 
 manage/src/main/resources/mapping/TOrderMapper.xml                                  |   32 +++
 manage/src/main/java/com/jilongda/manage/dto/AccountDetailDTO.java                  |   30 +++
 manage/src/main/java/com/jilongda/manage/service/TOrderService.java                 |    5 
 manage/src/main/java/com/jilongda/manage/query/TOrderQuery.java                     |   52 +++++
 manage/src/main/java/com/jilongda/manage/controller/TOrderAftersalesController.java |   57 +++++
 manage/src/main/java/com/jilongda/manage/service/impl/TOrderServiceImpl.java        |  101 ++++++++++
 manage/src/main/java/com/jilongda/manage/vo/TOrderListVO.java                       |   42 ++++
 14 files changed, 523 insertions(+), 18 deletions(-)

diff --git a/manage/src/main/java/com/jilongda/manage/controller/TOrderAccountingController.java b/manage/src/main/java/com/jilongda/manage/controller/TOrderAccountingController.java
index 07d8138..14a5e6e 100644
--- a/manage/src/main/java/com/jilongda/manage/controller/TOrderAccountingController.java
+++ b/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();
     }
 }
diff --git a/manage/src/main/java/com/jilongda/manage/controller/TOrderAftersalesController.java b/manage/src/main/java/com/jilongda/manage/controller/TOrderAftersalesController.java
index ae4a560..2131ace 100644
--- a/manage/src/main/java/com/jilongda/manage/controller/TOrderAftersalesController.java
+++ b/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);
+    }
 
 
 }
diff --git a/manage/src/main/java/com/jilongda/manage/controller/TOrderController.java b/manage/src/main/java/com/jilongda/manage/controller/TOrderController.java
index 9a6a437..0f8c184 100644
--- a/manage/src/main/java/com/jilongda/manage/controller/TOrderController.java
+++ b/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);
     }
 
diff --git a/manage/src/main/java/com/jilongda/manage/dto/AccountDetailDTO.java b/manage/src/main/java/com/jilongda/manage/dto/AccountDetailDTO.java
new file mode 100644
index 0000000..697841b
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/dto/AccountDetailDTO.java
@@ -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;
+}
diff --git a/manage/src/main/java/com/jilongda/manage/mapper/TOrderMapper.java b/manage/src/main/java/com/jilongda/manage/mapper/TOrderMapper.java
index 59b9d6f..f14a907 100644
--- a/manage/src/main/java/com/jilongda/manage/mapper/TOrderMapper.java
+++ b/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);
+
 }
diff --git a/manage/src/main/java/com/jilongda/manage/model/TOrder.java b/manage/src/main/java/com/jilongda/manage/model/TOrder.java
index 00e132a..284fe72 100644
--- a/manage/src/main/java/com/jilongda/manage/model/TOrder.java
+++ b/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;
 
 }
diff --git a/manage/src/main/java/com/jilongda/manage/model/TOrderGoods.java b/manage/src/main/java/com/jilongda/manage/model/TOrderGoods.java
index 4552212..9aa6b92 100644
--- a/manage/src/main/java/com/jilongda/manage/model/TOrderGoods.java
+++ b/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")
diff --git a/manage/src/main/java/com/jilongda/manage/query/TOrderQuery.java b/manage/src/main/java/com/jilongda/manage/query/TOrderQuery.java
new file mode 100644
index 0000000..ed897db
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/query/TOrderQuery.java
@@ -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;
+}
diff --git a/manage/src/main/java/com/jilongda/manage/service/TOrderService.java b/manage/src/main/java/com/jilongda/manage/service/TOrderService.java
index 3879ae5..ad2b3db 100644
--- a/manage/src/main/java/com/jilongda/manage/service/TOrderService.java
+++ b/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);
 }
diff --git a/manage/src/main/java/com/jilongda/manage/service/impl/TOrderServiceImpl.java b/manage/src/main/java/com/jilongda/manage/service/impl/TOrderServiceImpl.java
index 4e987e0..34b4808 100644
--- a/manage/src/main/java/com/jilongda/manage/service/impl/TOrderServiceImpl.java
+++ b/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;
+    }
 }
diff --git a/manage/src/main/java/com/jilongda/manage/vo/TOrderAftersalesDetailVO.java b/manage/src/main/java/com/jilongda/manage/vo/TOrderAftersalesDetailVO.java
new file mode 100644
index 0000000..3defeed
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/vo/TOrderAftersalesDetailVO.java
@@ -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;
+}
diff --git a/manage/src/main/java/com/jilongda/manage/vo/TOrderListVO.java b/manage/src/main/java/com/jilongda/manage/vo/TOrderListVO.java
new file mode 100644
index 0000000..e67ce0a
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/vo/TOrderListVO.java
@@ -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;
+
+}
diff --git a/manage/src/main/java/com/jilongda/manage/vo/TOrderVO.java b/manage/src/main/java/com/jilongda/manage/vo/TOrderVO.java
index 2e99b08..9f785fa 100644
--- a/manage/src/main/java/com/jilongda/manage/vo/TOrderVO.java
+++ b/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;
 }
diff --git a/manage/src/main/resources/mapping/TOrderMapper.xml b/manage/src/main/resources/mapping/TOrderMapper.xml
index fc53659..d1a16f5 100644
--- a/manage/src/main/resources/mapping/TOrderMapper.xml
+++ b/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>

--
Gitblit v1.7.1