package com.matrix.system.padApi.action;
|
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.util.StrUtil;
|
import com.matrix.core.anotations.RemoveRequestToken;
|
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.common.bean.BusParameterSettings;
|
import com.matrix.system.common.bean.SysUsers;
|
import com.matrix.system.common.constance.AppConstance;
|
import com.matrix.system.common.dao.BusParameterSettingsDao;
|
import com.matrix.system.common.service.SysUsersService;
|
import com.matrix.system.common.tools.DataAuthUtil;
|
import com.matrix.system.constance.Dictionary;
|
import com.matrix.system.enums.BooleanEnum;
|
import com.matrix.system.hive.action.BaseController;
|
import com.matrix.system.hive.action.util.QueryUtil;
|
import com.matrix.system.hive.bean.*;
|
import com.matrix.system.hive.dao.*;
|
import com.matrix.system.hive.service.*;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import org.apache.commons.collections.CollectionUtils;
|
import org.assertj.core.util.Arrays;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.annotation.Resource;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
@CrossOrigin(origins = "*")
|
@Api(value = "PadServiceAction", tags = "pad端服务单请求")
|
@RestController
|
@RequestMapping(value = "/api/pad/service")
|
public class PadServiceAction extends BaseController {
|
|
@Resource
|
private SysProjServicesService projServicesSerivce;
|
@Resource
|
private SysProjUseService projUseService;
|
@Resource
|
private SysBedInfoService bedInfoService;
|
@Autowired
|
SysProjGoodsDao sysProjGoodsDao;
|
@Resource
|
private SysProjServicesService sysProjServicesService;
|
@Resource
|
private SysVipInfoService sysVipInfoService;
|
@Autowired
|
private SysBeauticianStateDao beauticianStateDao;
|
@Autowired
|
AchieveNewService achieveNewService;
|
@Autowired
|
private SysBedStateDao sysBedStateDao;
|
@Autowired
|
ShoppingGoodsAssembleDao goodsAssembleDao;
|
@Autowired
|
SysShopInfoDao shopInfoDao;
|
@Resource
|
private SysUsersService usersService;
|
@Autowired
|
private SysProjServicesDao sysProjServicesDao;
|
@Autowired
|
BusParameterSettingsDao busParameterSettingsDao;
|
@Resource
|
private SysUsersService sysUsersService;
|
@Resource
|
private SysWorktimeService sysWorkTimeService;
|
@Autowired
|
private SysBeauticianStateDao sysBeauticianStateDao;
|
@Autowired
|
private ShoppingGoodsDao shoppingGoodsDao;
|
@Resource
|
private SysStoreInfoDao sysStoreInfoDao;
|
|
/**
|
* 显示所有服务单列表
|
*/
|
@ApiOperation(value = "显示所有服务单列表", notes = "显示所有服务单列表")
|
@PostMapping(value = "/showList")
|
public AjaxResult showList(@RequestBody SysProjServices projService, PaginationVO pageVo) {
|
|
//默认排序
|
if (StringUtils.isBlank(pageVo.getSort())) {
|
pageVo.setSort("create_time");
|
}
|
if (StringUtils.isBlank(pageVo.getOrder())) {
|
pageVo.setOrder("desc");
|
}
|
if (!DataAuthUtil.hasAllShopAuth()) {
|
projService.setShopId(getMe().getShopId());
|
}
|
QueryUtil.setQueryLimitCom(projService);
|
List<SysProjServices> dataList = projServicesSerivce.findInPage(projService, pageVo);
|
AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, dataList, projServicesSerivce.findTotal(projService));
|
return result;
|
}
|
|
/**
|
* 进入预约排班详情
|
*/
|
@ApiOperation(value = "进入预约排班详情", notes = "进入预约排班详情")
|
@PostMapping(value = "/serviceInfo")
|
public AjaxResult findPbxq(@RequestBody SysProjServices projServicesVo) {
|
QueryUtil.setQueryLimitCom(projServicesVo);
|
// 获取服务单信息
|
SysProjServices projServices = null;
|
if(projServicesVo.getId()!=null){
|
projServices= sysProjServicesService.findById(projServicesVo.getId());
|
}else if(StringUtils.isNotBlank(projServicesVo.getServiceNo())) {
|
List<SysProjServices> byModel = sysProjServicesService.findByModel(projServicesVo);
|
if (byModel.size() == 1) {
|
projServices= sysProjServicesService.findById( byModel.get(0).getId());
|
}
|
}
|
if(projServices==null){
|
throw new GlobleException("未查询到单据信息");
|
}
|
// 获取服务单所有信息
|
// 设置会员信息
|
projServices.setVipInfo(sysVipInfoService.findById(projServices.getVipId()));
|
//补充服务单扩展信息===============
|
List<SysBeauticianState> beauticianStateList = beauticianStateDao.selectBySerIds(projServices.getId());
|
if (CollUtil.isNotEmpty(beauticianStateList)) {
|
for (SysBeauticianState sysBeauticianState : beauticianStateList) {
|
if (sysBeauticianState.getProjUse().getTaocanId() != null) {
|
SysProjUse sysProjUse = projUseService.findById(sysBeauticianState.getProjUse().getTaocanId());
|
if(sysProjUse != null) {
|
sysBeauticianState.getProjInfo().setName(sysProjUse.getProjName() + "--" + sysBeauticianState.getProjInfo().getName());
|
}
|
}
|
}
|
}
|
projServices.setServiceItems(beauticianStateList);
|
|
SysBedState sysBedState = sysBedStateDao.selectBySerIdAndBedId(projServices.getId(), projServices.getBedId());
|
projServices.setBedState(sysBedState);
|
//补充服务单扩展信息===============END
|
|
// 根据岗位名称查询员工
|
List<SysUsers> pls = usersService.findByRoleName(true, Dictionary.STAFF_POST_PLS);
|
pls.addAll(usersService.findByRoleName(true, Dictionary.STAFF_POST_PLZG));
|
List<SysUsers> mls = usersService.findByRoleName(true, Dictionary.STAFF_POST_MLS);
|
WebUtil.getRequest().setAttribute("pls", pls);
|
WebUtil.getRequest().setAttribute("mls", mls);
|
|
SysBedInfo bedInfo = new SysBedInfo();
|
bedInfo.setShopId(getMe().getShopId());
|
// 显示当前查询的服务订单的项目信息
|
AjaxResult result = AjaxResult.buildSuccessInstance("");
|
result.putInMap("obj", projServices);
|
result.putInMap("serviceId", projServicesVo.getId());
|
result.putInMap("pageFlae", projServicesVo.getPageFlae());
|
result.putInMap("cw", bedInfoService.findByModel(bedInfo));
|
result.putInMap("pls", pls);
|
result.putInMap("mls", mls);
|
return result;
|
}
|
|
/**
|
* 获取空闲床位
|
*/
|
@ApiOperation(value = "获取空闲床位", notes = "获取空闲床位")
|
@PostMapping(value = "/showFreedBed")
|
public AjaxResult showFreedBed(@RequestBody SysProjServices sysProjServices) {
|
sysProjServices.setShopId(getMe().getShopId());
|
List<SysBedInfo> beds = bedInfoService.findFreeBed(sysProjServices);
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, beds, 0);
|
}
|
|
/**
|
* 获取美疗师
|
*/
|
@ApiOperation(value = "获取美疗师", notes = "获取美疗师")
|
@PostMapping(value = "/getPaiBanBeauticianList")
|
public AjaxResult getPaiBanBeauticianList(@RequestBody SysBeauticianState sysBeauticianState) {
|
// 根据时间获取一段排班码
|
String panBanCodes = DateUtil.dateToString(sysBeauticianState.getBeginTime(),DateUtil.DATE_FORMAT_NO_SPLITE_DD);
|
// 获取登陆的用户
|
SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
|
List<SysUsers> staffs=new ArrayList<>();
|
if(sysWorkTimeService.isInWorkTime(user.getShopId(),sysBeauticianState.getBeginTime(),sysBeauticianState.getEndTime())){
|
staffs= sysUsersService.findByCodeBeaStateShop(user.getShopId(),
|
sysBeauticianState, panBanCodes);
|
}
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, staffs, 0);
|
}
|
|
|
/**
|
* 新增项目
|
*/
|
@ApiOperation(value = "新增项目", notes = "新增项目")
|
@PostMapping(value = "/addService")
|
public AjaxResult servicceAdd(@RequestBody SysProjServices sysProjServices) {
|
if (CollectionUtils.isEmpty(sysProjServices.getServiceItems())) {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "没有选中可消耗的项目");
|
}
|
//检测欠款
|
VerifyResult arrearsVerifyResult = sysProjServicesService.checkArrears(sysProjServices);
|
if (arrearsVerifyResult.isError()) {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, arrearsVerifyResult.getMsg());
|
}
|
//检测余次
|
VerifyResult balanceverifyResult = sysProjServicesService.checkBalance(sysProjServices);
|
if (balanceverifyResult.isError()) {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, balanceverifyResult.getMsg());
|
}
|
if (StrUtil.isEmpty(sysProjServices.getState())) {
|
sysProjServices.setState(Dictionary.SERVICE_STATU_DYY);
|
}
|
SysProjServices newSysProjServices = sysProjServicesService.addSysProjServices(sysProjServices);
|
if (newSysProjServices != null) {
|
return AjaxResult.buildSuccessInstance(Arrays.asList(newSysProjServices));
|
} else {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "下单失败!");
|
}
|
}
|
|
/**
|
* 删除服务单项目/套餐
|
* @param id
|
* @return
|
*/
|
@ApiOperation(value = "删除服务单项目/套餐", notes = "删除服务单项目/套餐")
|
@GetMapping(value = "/delServiceOrderItems/{id}")
|
public AjaxResult delServiceOrderItems(@PathVariable("id")Long id) {
|
sysProjServicesService.deleteProjServiceItemById(id);
|
return AjaxResult.buildSuccessInstance("删除成功");
|
}
|
|
|
/**
|
* 排班
|
*/
|
@ApiOperation(value = "排班", notes = "排班")
|
@PostMapping(value = "/servicePaiBan")
|
public AjaxResult servicePaiBan(@RequestBody SysProjServices projServices, String dataTime) throws GlobleException {
|
int i = sysProjServicesService.paiban(projServices, dataTime);
|
if (i > 0) {
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "排班成功");
|
} else {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "排班失败");
|
}
|
}
|
|
/**
|
* 根据id取消预约
|
*/
|
@ApiOperation(value = "根据id取消预约", notes = "根据id取消预约")
|
@GetMapping(value = "/cancelOrder/{id}")
|
public AjaxResult cancelOrder(@PathVariable("id")Long id) {
|
|
SysProjServices checkProjServices = sysProjServicesDao.selectById(id);
|
QueryUtil.setQueryLimitCom(checkProjServices);
|
BusParameterSettings shopManageAbleCancelDfkOrder = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.SHOP_MANAGE_ABLE_CANCEL_DFK_ORDER, checkProjServices.getCompanyId());
|
if (StringUtils.isNotBlank(shopManageAbleCancelDfkOrder.getParamValue())
|
&& BooleanEnum.TRUE.getValue() == shopManageAbleCancelDfkOrder.getIntParamValue()) {
|
|
if (!checkProjServices.getState().equals(Dictionary.SERVICE_STATU_DYY)
|
&& !checkProjServices.getState().equals(Dictionary.SERVICE_STATU_DQR)) {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "您只能取消待预约订单");
|
}
|
}else{
|
if (checkProjServices.getState().equals(Dictionary.SERVICE_STATU_FWWC)
|
|| checkProjServices.getState().equals(Dictionary.SERVICE_STATU_FFJS)) {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "当前状态无法取消订单");
|
}
|
}
|
|
int i = sysProjServicesService.modifyCancelProjServices(checkProjServices);
|
if (i > 0) {
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "取消预约成功");
|
} else {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "取消预约失败");
|
}
|
}
|
|
/**
|
* 开始配料
|
*/
|
@ApiOperation(value = "开始配料", notes = "开始配料")
|
@GetMapping(value = "/startpl/{id}")
|
public AjaxResult startpl(@PathVariable("id")Long id) {
|
// 将服务状态为待配料的更新为配料中
|
SysProjServices sysProjServices = projServicesSerivce.findById(id);
|
List<SysBeauticianState> beauticianStateList = sysBeauticianStateDao.selectBySerIds(sysProjServices.getId());
|
List<ShoppingGoods> projInfoList = new ArrayList<>();
|
for (SysBeauticianState beauticianState : beauticianStateList) {
|
ShoppingGoods sysProjInfo = shoppingGoodsDao.selectById(beauticianState.getProjId());
|
sysProjInfo.setAssembleGoods(goodsAssembleDao.selectGoodsByShoppingGoodsIdAndType(sysProjInfo.getId(), ShoppingGoods.SHOPPING_GOODS_TYPE_JJCP));
|
projInfoList.add(sysProjInfo);
|
}
|
AjaxResult result = AjaxResult.buildSuccessInstance("");
|
result.putInMap("serviceId", id);
|
result.putInMap("projInfoList", projInfoList);
|
return result;
|
}
|
|
/**
|
* 按产品批次显示选择配料
|
*/
|
@ApiOperation(value = "按产品批次显示选择配料", notes = "按产品批次显示选择配料")
|
@PostMapping(value = "/showCountList")
|
public AjaxResult showCountList(@RequestBody SysStoreInfo sysStoreInfo, PaginationVO pageVo) {
|
SysUsers users = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
sysStoreInfo.setShopId(users.getShopId());
|
sysStoreInfo.setCompanyId(users.getCompanyId());
|
|
List<SysStoreInfo> dataList = sysStoreInfoDao.selectCountInPage(sysStoreInfo, pageVo);
|
AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, dataList, sysStoreInfoDao.selectCountTotalRecord(sysStoreInfo));
|
return result;
|
}
|
|
/**
|
* 配料完成
|
*/
|
@ApiOperation(value = "配料完成", notes = "配料完成")
|
@PostMapping(value = "/endPl")
|
@RemoveRequestToken
|
public AjaxResult endPl(@RequestBody SysProjServices projServices) {
|
projServicesSerivce.modifyPLProjServices(projServices);
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "配料成功!");
|
}
|
|
/**
|
* 进入划扣页面
|
*/
|
@ApiOperation(value = "进入划扣页面", notes = "进入划扣页面")
|
@GetMapping(value = "/serviceHkPage/{id}")
|
public AjaxResult serviceHkPage(@PathVariable("id")Long id) {
|
// 获取服务单信息
|
SysProjServices projServices = sysProjServicesService.findById(id);
|
|
projServices.setVipInfo(sysVipInfoService.findById(projServices.getVipId()));
|
|
//补充服务单扩展信息===============
|
List<SysBeauticianState> beauticianStateList = beauticianStateDao.selectBySerIds(id);
|
projServices.setServiceItems(beauticianStateList);
|
|
SysBedState sysBedState = sysBedStateDao.selectBySerIdAndBedId(projServices.getId(), projServices.getBedId());
|
projServices.setBedState(sysBedState);
|
//补充服务单扩展信息===============END
|
|
// 获取服务单所有信息
|
WebUtil.getRequest().setAttribute("obj", projServices);
|
WebUtil.getRequest().setAttribute("serviceId", id);
|
|
// 准备页面数据
|
// 根据岗位名称查询员工
|
List<SysUsers> pls = usersService.findByRoleName(true, Dictionary.STAFF_POST_PLS);
|
pls.addAll(usersService.findByRoleName(true, Dictionary.STAFF_POST_PLZG));
|
List<SysUsers> mls = usersService.findByRoleName(true, Dictionary.STAFF_POST_MLS);
|
WebUtil.getRequest().setAttribute("pls", pls);
|
WebUtil.getRequest().setAttribute("mls", mls);
|
SysBedInfo bedInfo = new SysBedInfo();
|
bedInfo.setShopId(getMe().getShopId());
|
WebUtil.getRequest().setAttribute("cw", bedInfoService.findByModel(bedInfo));
|
|
|
AjaxResult result = AjaxResult.buildSuccessInstance("");
|
result.putInMap("obj", projServices);
|
result.putInMap("serviceId", id);
|
result.putInMap("cw", bedInfoService.findByModel(bedInfo));
|
result.putInMap("pls", pls);
|
result.putInMap("mls", mls);
|
return result;
|
}
|
|
/**
|
* 设置服务单划扣成功
|
*/
|
@ApiOperation(value = "设置服务单划扣成功", notes = "设置服务单划扣成功")
|
@GetMapping(value = "/hkService/{id}")
|
public AjaxResult hkService(@PathVariable("id")Long id) {
|
SysProjServices services = new SysProjServices();
|
services.setId(id);
|
int i = sysProjServicesService.modifyHKProjServices(services);
|
if (i > 0) {
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "划扣成功");
|
} else {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "划扣失败");
|
}
|
}
|
|
/**
|
* 编辑排班详情
|
*/
|
@ApiOperation(value = "编辑排班详情", notes = "编辑排班详情")
|
@GetMapping(value = "/yypb/{id}")
|
public AjaxResult findProject(@PathVariable("id")Long id) {
|
// 获取服务单信息
|
SysProjServices projServices = sysProjServicesService.findById(id);
|
// 获取操作的用户
|
projServices.setVipInfo(sysVipInfoService.findById(projServices.getVipId()));
|
|
// 设置排班的默认日期
|
String dateTime = null;
|
if (dateTime == null || dateTime.equals("")) {
|
|
SysBedState sysBedState = sysBedStateDao.selectBySerIdAndBedId(projServices.getBedId(), projServices.getId());
|
|
if (sysBedState != null && sysBedState.getStartTime() != null) {
|
dateTime = DateUtil.dateToString(sysBedState.getStartTime(), DateUtil.DATE_FORMAT_DD);
|
} else {
|
dateTime = DateUtil.dateToString(projServices.getYyTime(), DateUtil.DATE_FORMAT_DD);
|
}
|
}
|
WebUtil.getRequest().setAttribute("dateTime", dateTime);
|
// 获取服务单所有信息
|
WebUtil.getRequest().setAttribute("obj", projServices);
|
|
// 获取服务单对一下的项目信息
|
// 准备页面数据
|
// 根据岗位名称查询员工
|
List<SysUsers> pls = usersService.findByRoleName(true, Dictionary.STAFF_POST_PLS);
|
pls.addAll(usersService.findByRoleName(true, Dictionary.STAFF_POST_PLZG));
|
List<SysUsers> mls = usersService.findByRoleName(true, Dictionary.STAFF_POST_MLS);
|
WebUtil.getRequest().setAttribute("pls", pls);
|
WebUtil.getRequest().setAttribute("mls", mls);
|
|
SysBedInfo bedInfo = new SysBedInfo();
|
bedInfo.setShopId(getMe().getShopId());
|
// 床位
|
WebUtil.getRequest().setAttribute("cw", bedInfoService.findByModel(bedInfo));
|
|
|
AjaxResult result = AjaxResult.buildSuccessInstance("");
|
result.putInMap("dateTime", dateTime);
|
result.putInMap("obj", projServices);
|
result.putInMap("cw", bedInfoService.findByModel(bedInfo));
|
result.putInMap("pls", pls);
|
result.putInMap("mls", mls);
|
return result;
|
// 显示当前查询的服务订单的项目信息
|
// return "admin/hive/beautySalon/yypb-form";
|
}
|
|
|
}
|