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