From 4351e71d782741143a98f86f6648acd16689165f Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 27 May 2022 19:48:02 +0800
Subject: [PATCH] Merge branch 'developer' into hive2.0

---
 zq-erp/src/main/java/com/matrix/system/app/action/ApiServiceOrderAction.java |  281 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 279 insertions(+), 2 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/app/action/ApiServiceOrderAction.java b/zq-erp/src/main/java/com/matrix/system/app/action/ApiServiceOrderAction.java
index 84cb5ca..c7eee3b 100644
--- a/zq-erp/src/main/java/com/matrix/system/app/action/ApiServiceOrderAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/app/action/ApiServiceOrderAction.java
@@ -1,8 +1,50 @@
 package com.matrix.system.app.action;
 
+import com.matrix.component.asyncmessage.AsyncMessageManager;
+import com.matrix.component.rabbitmq.RabiitMqTemplate;
+import com.matrix.core.constance.MatrixConstance;
+import com.matrix.core.exception.GlobleException;
+import com.matrix.core.pojo.AjaxResult;
+import com.matrix.core.pojo.PaginationVO;
+import com.matrix.core.pojo.VerifyResult;
+import com.matrix.core.tools.DateUtil;
+import com.matrix.core.tools.StringUtils;
+import com.matrix.core.tools.WebUtil;
+import com.matrix.system.app.dto.CreateServiceOrderDto;
+import com.matrix.system.app.dto.IdSubmitDto;
+import com.matrix.system.app.dto.ServiceOrderListDto;
+import com.matrix.system.app.dto.ServiceVipProjDto;
+import com.matrix.system.app.mapper.SysBeauticianStateMapper;
+import com.matrix.system.app.mapper.SysProjServiceMapper;
+import com.matrix.system.app.mapper.SysProjUseMapper;
+import com.matrix.system.app.vo.*;
+import com.matrix.system.common.bean.SysUsers;
+import com.matrix.system.common.tools.DataAuthUtil;
+import com.matrix.system.constance.Dictionary;
+import com.matrix.system.hive.action.util.QueryUtil;
+import com.matrix.system.hive.bean.SysBeauticianState;
+import com.matrix.system.hive.bean.SysProjServices;
+import com.matrix.system.hive.bean.SysProjUse;
+import com.matrix.system.hive.bean.SysVipInfo;
+import com.matrix.system.hive.plugin.util.CollectionUtils;
+import com.matrix.system.hive.service.SysBeauticianStateService;
+import com.matrix.system.hive.service.SysProjServicesService;
+import com.matrix.system.hive.service.SysProjUseService;
+import com.matrix.system.hive.service.SysVipInfoService;
+import com.matrix.system.shopXcx.mqTask.AsyncMessageRouting;
+import com.matrix.system.wechart.templateMsg.UniformMsgParam;
 import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 
 /**
  * @author wzy
@@ -12,4 +54,239 @@
 @RestController
 @RequestMapping(value = "/api/serviceOrder")
 public class ApiServiceOrderAction {
+
+    @Autowired
+    private SysProjUseService projUseService;
+
+    @Autowired
+    private SysVipInfoService sysVipInfoService;
+
+    @Autowired
+    private SysProjServicesService projServicesService;
+
+    @Autowired
+    private SysBeauticianStateService sysBeauticianStateService;
+
+
+    @Autowired
+    private AsyncMessageManager asyncMessageManager;
+
+    @Value("${evn}")
+    private  String evn;
+
+    @ApiOperation(value ="获取用户项目/套餐列表", notes = "获取用户项目/套餐列表")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "ok", response = ServiceProductListVo.class)
+    })
+    @PostMapping(value = "/findVipProject")
+    public AjaxResult findVipProject(@RequestBody @Validated ServiceVipProjDto serviceVipProjDto) {
+        SysVipInfo vipInfo = sysVipInfoService.findById(serviceVipProjDto.getVipId());
+
+        if (vipInfo == null) {
+            throw new GlobleException("会员不存在");
+        }
+
+        ServiceProductListVo productListVo = new ServiceProductListVo();
+        productListVo.setName(vipInfo.getVipName());
+        productListVo.setVipId(serviceVipProjDto.getVipId());
+
+        SysProjUse queryUse = new SysProjUse();
+        queryUse.setVipId(serviceVipProjDto.getVipId());
+        queryUse.setType(Dictionary.SHOPPING_GOODS_TYPE_XM);
+        queryUse.setTaocanId(-1L);
+        if (serviceVipProjDto.getType() != null) {
+            switch (serviceVipProjDto.getType()) {
+                case "0":
+                    break;
+                case "1":
+                    queryUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
+//                    queryUse.setIsOver(Dictionary.FLAG_NO_N);
+                    break;
+                case "2":
+                    queryUse.setTargetFailTime(DateUtil.getDateAfterMonth(new Date(), 1));
+                    queryUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
+//                    queryUse.setIsOver(Dictionary.FLAG_NO_N);
+                    break;
+                case "3":
+                    queryUse.setStatus(Dictionary.TAOCAN_STATUS_WX);
+//                    queryUse.setIsOver(Dictionary.FLAG_YES_Y);
+                    break;
+                default:
+                    queryUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
+//                    queryUse.setIsOver(Dictionary.FLAG_NO_N);
+                    break;
+            }
+        } else {
+            queryUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
+        }
+
+        queryUse.setQueryKey(serviceVipProjDto.getQueryKey());
+        List<SysProjUse> projList = projUseService.findInPage(queryUse, null);
+        List<ServiceProjVo> serviceProjVos = SysProjUseMapper.INSTANCE.entityListToProjVoList(projList);
+
+        queryUse.setTaocanId(null);
+        queryUse.setType(Dictionary.SHOPPING_GOODS_TYPE_TC);
+//        List<SysProjUse> taoCanList = projUseService.findInPage(queryUse, null);
+        List<SysProjUse> taoCanList = projUseService.findTaocaoProjUseWithProj(queryUse);
+        List<ServiceTcVo> serviceTcVos = SysProjUseMapper.INSTANCE.entityListToTcVoList(taoCanList);
+
+        if (CollectionUtils.isNotEmpty(serviceTcVos)) {
+            serviceTcVos.forEach(item -> {
+//                List<SysProjUse> sysProjUses = projUseService.selectTaocanProjUse(item.getId(), queryUse.getStatus());
+                List<ServiceProjVo> taocanProj = SysProjUseMapper.INSTANCE.entityListToProjVoList(item.getTaocanProjUse());
+                item.setTaocanProjUse(null);
+                item.setProj(taocanProj);
+            });
+        }
+
+        productListVo.setProj(serviceProjVos);
+        productListVo.setComposeProj(serviceTcVos);
+        AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功");
+        ajaxResult.putInMap("proj", productListVo);
+        return ajaxResult;
+    }
+
+    @ApiOperation(value = "提交服务单", notes = "提交服务单")
+    @PostMapping(value = "/createServiceOrder")
+    public AjaxResult createServiceOrder(@RequestBody @Validated CreateServiceOrderDto serviceOrderDto) {
+        if (CollectionUtils.isEmpty(serviceOrderDto.getProjItems())) {
+            throw new GlobleException("请选择服务");
+        }
+        SysVipInfo vipInfo = sysVipInfoService.findById(serviceOrderDto.getVipId());
+
+
+        if (StringUtils.isNotBlank(vipInfo.getPassWord())) {
+            if (!vipInfo.getPassWord().equals(serviceOrderDto.getPassword())) {
+                return AjaxResult.buildFailInstance("资金密码错误");
+            }
+        }
+
+        SysProjServices sysProjServices = new SysProjServices();
+        sysProjServices.setVipId(serviceOrderDto.getVipId());
+        sysProjServices.setYyTime(serviceOrderDto.getYyTime());
+        sysProjServices.setRemark(serviceOrderDto.getRemark());
+        sysProjServices.setBedId(serviceOrderDto.getBedId());
+
+        List<SysBeauticianState> sysBeauticianStates = new ArrayList<>();
+        serviceOrderDto.getProjItems().forEach(item ->{
+            SysBeauticianState sysBeauticianState = SysBeauticianStateMapper.INSTANCE.serviceOrderItemVoToEntity(item);
+
+            sysBeauticianState.setBeginTime(serviceOrderDto.getYyTime());
+            sysBeauticianState.setEndTime(DateUtil.getDateAfterMinute(serviceOrderDto.getYyTime(), serviceOrderDto.getTotalTime()));
+            sysBeauticianState.setStaffId(serviceOrderDto.getBeautyId());
+            sysBeauticianStates.add(sysBeauticianState);
+        });
+
+        sysProjServices.setServiceItems(sysBeauticianStates);
+
+        //检测欠款
+        VerifyResult arrearsVerifyResult = projServicesService.checkArrears(sysProjServices);
+        if (arrearsVerifyResult.isError()) {
+            return new AjaxResult(AjaxResult.STATUS_FAIL, arrearsVerifyResult.getMsg());
+        }
+        //检测余次
+        VerifyResult balanceverifyResult = projServicesService.checkBalance(sysProjServices);
+        if (balanceverifyResult.isError()) {
+            return new AjaxResult(AjaxResult.STATUS_FAIL, balanceverifyResult.getMsg());
+        }
+
+        // 设置状态为待预约
+        sysProjServices.setState(Dictionary.SERVICE_STATU_DYY);
+        SysProjServices newSysProjServices = projServicesService.addSysProjServices(sysProjServices);
+        if (newSysProjServices != null) {
+            return AjaxResult.buildSuccessInstance("下单成功");
+        } else {
+            return new AjaxResult(AjaxResult.STATUS_FAIL, "下单失败!");
+        }
+    }
+
+    @ApiOperation(value = "查询服务单列表", notes = "查询服务单列表")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "ok", response = ServiceOrderListVo.class)
+    })
+    @PostMapping(value = "/findServiceOrderList")
+    public AjaxResult findServiceOrderList(@RequestBody @Validated ServiceOrderListDto orderListDto) {
+        PaginationVO pageVo = new PaginationVO();
+        int offset = (orderListDto.getPageNum() - 1) * orderListDto.getPageSize();
+        int limit = orderListDto.getPageSize();
+        pageVo.setOffset(offset);
+        pageVo.setLimit(limit);
+
+        if (!DataAuthUtil.hasAllShopAuth()) {
+            SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+            orderListDto.setShopId(user.getShopId());
+        }
+        QueryUtil.setQueryLimitCom(orderListDto);
+        return AjaxResult.buildSuccessInstance(projServicesService.findApiServiceOrderListInPage(orderListDto, pageVo), projServicesService.findApiServiceOrderListTotal(orderListDto));
+    }
+
+    @ApiOperation(value = "获取服务单详情", notes = "获取服务单详情")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "ok", response = ServiceOrderDetailVo.class)
+    })
+    @GetMapping(value = "/findServiceOrderDetail/{id}")
+    public AjaxResult findServiceOrderDetail(@PathVariable("id") Long id) {
+        SysProjServices projServices = projServicesService.findById(id);
+        if (projServices == null) {
+            return AjaxResult.buildFailInstance("服务单不存在");
+        }
+
+        ServiceOrderDetailVo detailVo = SysProjServiceMapper.INSTANCE.projServiceToDetailVo(projServices);
+
+        List<SysBeauticianState> beauticianStates = sysBeauticianStateService.findBySerId(projServices.getId());
+        List<ServiceOrderDetailItemVo> items = SysBeauticianStateMapper.INSTANCE.entitiesToDetailItemsVo(beauticianStates);
+        detailVo.setItems(items);
+
+        AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功");
+        ajaxResult.putInMap("detail", detailVo);
+        return ajaxResult;
+    }
+
+    @ApiOperation(value = "开始服务", notes = "开始服务")
+    @GetMapping(value = "/startService/{id}")
+    public AjaxResult startService(@PathVariable("id") Long id) {
+        SysProjServices sysProjServices = new SysProjServices();
+        sysProjServices.setId(id);
+        int i = projServicesService.modifyFWKSProjServices(sysProjServices);
+        if (i > 0) {
+            return AjaxResult.buildSuccessInstance("开始服务成功");
+        }
+        return AjaxResult.buildFailInstance("开始服务失败");
+    }
+
+    @ApiOperation(value = "结束服务", notes = "结束服务")
+    @GetMapping(value = "/stopService/{id}")
+    public AjaxResult stopService(@PathVariable("id") Long id) {
+        SysProjServices projServvices = new SysProjServices();
+        projServvices.setId(id);
+        int result = projServicesService.modifyFWJSrojServices(projServvices);
+        if (result > 0) {
+            return new AjaxResult(AjaxResult.STATUS_SUCCESS, "结束服务成功");
+        } else {
+            return new AjaxResult(AjaxResult.STATUS_FAIL, "结束服务失败");
+        }
+    }
+
+    @ApiOperation(value = "取消服务", notes = "取消服务")
+    @GetMapping(value = "/cancelService/{id}")
+    public AjaxResult cancelService(@PathVariable("id") Long id) {
+        SysProjServices services = new SysProjServices();
+        services.setId(id);
+        int i = projServicesService.modifyCancelProjServices(services);
+        if (i > 0) {
+            return new AjaxResult(AjaxResult.STATUS_SUCCESS, "取消预约成功");
+        } else {
+            return new AjaxResult(AjaxResult.STATUS_FAIL, "取消预约失败");
+        }
+    }
+
+    @ApiOperation(value = "确认服务", notes = "确认服务")
+    @PostMapping(value = "/confirmServiceOrder")
+    public AjaxResult confirmServiceOrder(@RequestBody @Validated IdSubmitDto idSubmitDto) {
+        int i=projServicesService.confirmServiceOrder(idSubmitDto.getId());
+        if(i>0){
+            return AjaxResult.buildSuccessInstance("确认成功");
+        }
+        return AjaxResult.buildFailInstance("确认失败");
+    }
 }

--
Gitblit v1.9.1