|  |  |  | 
|---|
|  |  |  | package com.matrix.system.hive.action; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import cn.hutool.core.bean.BeanUtil; | 
|---|
|  |  |  | 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.tools.excl.ExcelSheetPO; | 
|---|
|  |  |  | import com.matrix.core.tools.excl.ExcelUtil; | 
|---|
|  |  |  | import com.matrix.core.tools.excl.ExcelVersion; | 
|---|
|  |  |  | import com.matrix.system.app.dto.IdSubmitDto; | 
|---|
|  |  |  | 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.dao.SysCompanyDao; | 
|---|
|  |  |  | import com.matrix.system.common.service.SysUsersService; | 
|---|
|  |  |  | import com.matrix.system.common.tools.DataAuthUtil; | 
|---|
|  |  |  | import com.matrix.system.common.tools.ResponseHeadUtil; | 
|---|
|  |  |  | import com.matrix.system.constance.Dictionary; | 
|---|
|  |  |  | import com.matrix.system.hive.bean.*; | 
|---|
|  |  |  | import com.matrix.system.hive.dao.*; | 
|---|
|  |  |  | import com.matrix.system.hive.dto.ServiceOrderTimeDto; | 
|---|
|  |  |  | import com.matrix.system.hive.service.*; | 
|---|
|  |  |  | import com.matrix.system.hive.vo.ServiceOrderInfoVo; | 
|---|
|  |  |  | import io.swagger.annotations.ApiOperation; | 
|---|
|  |  |  | import org.apache.commons.collections.CollectionUtils; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.stereotype.Controller; | 
|---|
|  |  |  | import org.springframework.ui.ModelMap; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RequestBody; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RequestMapping; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.ResponseBody; | 
|---|
|  |  |  | import org.springframework.validation.annotation.Validated; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.*; | 
|---|
|  |  |  | import org.springframework.web.servlet.ModelAndView; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.annotation.Resource; | 
|---|
|  |  |  | import javax.servlet.http.HttpServletRequest; | 
|---|
|  |  |  | 
|---|
|  |  |  | import java.io.IOException; | 
|---|
|  |  |  | import java.io.OutputStream; | 
|---|
|  |  |  | import java.net.URLEncoder; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  | import java.util.ArrayList; | 
|---|
|  |  |  | import java.util.Arrays; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //补充服务单扩展信息=============== | 
|---|
|  |  |  | List<SysBeauticianState> beauticianStateList = beauticianStateDao.selectBySerIds(id); | 
|---|
|  |  |  | if (CollUtil.isNotEmpty(beauticianStateList)) { | 
|---|
|  |  |  | for (SysBeauticianState sysBeauticianState : beauticianStateList) { | 
|---|
|  |  |  | SysProjUse item = sysBeauticianState.getProjUse(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 若项目/套餐无效,则打印时,不显示余次 | 
|---|
|  |  |  | if ("无效".equals(item.getStatus())) { | 
|---|
|  |  |  | item.setRemainCount(item.getSurplusCount()); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | item.setRemainCount(null); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (sysBeauticianState.getProjUse().getTaocanId() != null) { | 
|---|
|  |  |  | SysProjUse sysProjUse = projUseService.findById(sysBeauticianState.getProjUse().getTaocanId()); | 
|---|
|  |  |  | if ("无效".equals(sysProjUse.getStatus())) { | 
|---|
|  |  |  | item.setRemainCount(sysProjUse.getSurplusCount()); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | item.setRemainCount(null); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | sysBeauticianState.getProjInfo().setName(sysProjUse.getProjName()+"--"+sysBeauticianState.getProjInfo().getName()); | 
|---|
|  |  |  | if ("Y".equals(sysProjUse.getIsCourse()) && "Y".equals(sysProjUse.getIsInfinite())) { | 
|---|
|  |  |  | int count = projUseService.findTaocanCountForCourseAndInfinite(sysBeauticianState.getProjUse().getTaocanId(), projServices.getVipId()); | 
|---|
|  |  |  | item.setRemainCount(count); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | projServices.setServiceItems(beauticianStateList); | 
|---|
|  |  |  | SysBedState sysBedState = sysBedStateDao.selectBySerIdAndBedId(projServices.getId(), projServices.getBedId()); | 
|---|
|  |  |  | projServices.setBedState(sysBedState); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | result.setStatus(AjaxResult.STATUS_SUCCESS); | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 根据id查询服务单简单信息 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @RequestMapping(value = "/findServiceOrderInfoVo/{id}") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult findServiceOrderInfoVo(@PathVariable Long id) { | 
|---|
|  |  |  | // 获取服务单信息 | 
|---|
|  |  |  | SysProjServices projServices = sysProjServicesService.findById(id); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ServiceOrderInfoVo serviceOrderInfoVo= BeanUtil.copyProperties(projServices,ServiceOrderInfoVo.class); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return AjaxResult.buildSuccessInstance(serviceOrderInfoVo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | if (StringUtils.isBlank(pageVo.getOrder())) { | 
|---|
|  |  |  | pageVo.setOrder("desc"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | projService.setShopId(getMe().getShopId()); | 
|---|
|  |  |  | if (!DataAuthUtil.hasAllShopAuth()) { | 
|---|
|  |  |  | projService.setShopId(getMe().getShopId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<SysProjServices> dataList = projServicesSerivce.findInPage(projService, pageVo); | 
|---|
|  |  |  | AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, dataList, projServicesSerivce.findTotal(projService)); | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | 
|---|
|  |  |  | AjaxResult result = AjaxResult.buildSuccessInstance("查询成功"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | SysProjUse queryUse = new SysProjUse(); | 
|---|
|  |  |  | if(Objects.nonNull(vipId)){ | 
|---|
|  |  |  | queryUse.setVipId(vipId); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | SysVipInfo vipInfo = getCurrentVioInfo(); | 
|---|
|  |  |  | queryUse.setVipId(vipInfo.getId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | queryUse.setVipId(vipId); | 
|---|
|  |  |  | queryUse.setType(Dictionary.SHOPPING_GOODS_TYPE_XM); | 
|---|
|  |  |  | queryUse.setTaocanId(-1L); | 
|---|
|  |  |  | queryUse.setStatus(Dictionary.TAOCAN_STATUS_YX); | 
|---|
|  |  |  | queryUse.setIsOver(Dictionary.FLAG_NO_N); | 
|---|
|  |  |  | List<SysProjUse> projList = projUseService.findInPage(queryUse, null); | 
|---|
|  |  |  | //切换到套餐查询条件 | 
|---|
|  |  |  | queryUse.setTaocanId(null); | 
|---|
|  |  |  | 
|---|
|  |  |  | return "admin/hive/beautySalon/yypb-form"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 进入预约排班详情 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //补充服务单扩展信息=============== | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @ApiOperation(value = "确认服务", notes = "确认服务") | 
|---|
|  |  |  | @PostMapping(value = "/confirmServiceOrder") | 
|---|
|  |  |  | public @ResponseBody AjaxResult confirmServiceOrder(Long id) { | 
|---|
|  |  |  | int i=sysProjServicesService.confirmServiceOrder(id); | 
|---|
|  |  |  | if(i>0){ | 
|---|
|  |  |  | return AjaxResult.buildSuccessInstance("确认成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return AjaxResult.buildFailInstance("确认失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @author jiangyouyao | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @RequestMapping(value = "/updateOrderTime") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult updateOrderTime(SysProjServices serviceQuery) { | 
|---|
|  |  |  | SysProjServices services = sysProjServicesDao.selectById(serviceQuery.getId()); | 
|---|
|  |  |  | sysProjServicesDao.updateOrderTime(serviceQuery.getConsumeTime(), serviceQuery.getId()); | 
|---|
|  |  |  | AjaxResult updateOrderTime(@RequestBody  ServiceOrderTimeDto serviceOrderTimeDto) { | 
|---|
|  |  |  | sysProjServicesDao.updateOrderTime(serviceOrderTimeDto); | 
|---|
|  |  |  | // 更新业绩时间 | 
|---|
|  |  |  | AchieveNew achieveNew = new AchieveNew(); | 
|---|
|  |  |  | achieveNew.setServiceOrderId(serviceQuery.getId()); | 
|---|
|  |  |  | achieveNew.setDatatime(serviceQuery.getConsumeTime()); | 
|---|
|  |  |  | achieveNew.setServiceOrderId(serviceOrderTimeDto.getId()); | 
|---|
|  |  |  | achieveNew.setDatatime(serviceOrderTimeDto.getConsumeTime()); | 
|---|
|  |  |  | achieveNewService.modifyAchieveTime(achieveNew); | 
|---|
|  |  |  | return new AjaxResult(AjaxResult.STATUS_SUCCESS, "修改成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | return new AjaxResult(AjaxResult.STATUS_SUCCESS, "成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private SysCompanyDao sysCompanyDao; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 服务单打印 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @RequestMapping(value = "/printOrder") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | ModelAndView printOrder() throws GlobleException { | 
|---|
|  |  |  | ModelAndView mv = new ModelAndView("admin/hive/beautySalon/print-service"); | 
|---|
|  |  |  | SysUsers user=(SysUsers)WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); | 
|---|
|  |  |  | String comRegisterCode = sysCompanyDao.selectById(user.getCompanyId()).getComRegisterCode(); | 
|---|
|  |  |  | if(StringUtils.isNotBlank(comRegisterCode)){ | 
|---|
|  |  |  | mv.addObject("page",comRegisterCode); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | mv.addObject("page","taiyan"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return mv; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 根据id对服务单进行派单 | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | BusParameterSettingsDao busParameterSettingsDao; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 根据id取消预约 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @RequestMapping(value = "/cancelOrder") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult cancelOrder(SysProjServices services) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | SysProjServices checkProjServices = sysProjServicesDao.selectById(services.getId()); | 
|---|
|  |  |  | BusParameterSettings shopManageAbleCancelDfkOrder = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.SHOP_MANAGE_ABLE_CANCEL_DFK_ORDER, checkProjServices.getCompanyId()); | 
|---|
|  |  |  | if (StringUtils.isNotBlank(shopManageAbleCancelDfkOrder.getParamValue()) | 
|---|
|  |  |  | && shopManageAbleCancelDfkOrder.getParamValue().equals(Dictionary.FLAG_YES)) { | 
|---|
|  |  |  | if (!checkProjServices.getState().equals(Dictionary.SERVICE_STATU_DYY) | 
|---|
|  |  |  | && !checkProjServices.getState().equals(Dictionary.SERVICE_STATU_DQR)) { | 
|---|
|  |  |  | return new AjaxResult(AjaxResult.STATUS_FAIL, "您只能取消待预约订单"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return erpCancelOrder(services); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 根据id取消预约 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @RequestMapping(value = "/erpCancelOrder") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult erpCancelOrder(SysProjServices services) { | 
|---|
|  |  |  | int i = sysProjServicesService.modifyCancelProjServices(services); | 
|---|
|  |  |  | if (i > 0) { | 
|---|
|  |  |  | return new AjaxResult(AjaxResult.STATUS_SUCCESS, "取消预约成功"); | 
|---|
|  |  |  | 
|---|
|  |  |  | return new AjaxResult(AjaxResult.STATUS_FAIL, "取消预约失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 设置服务单划扣成功 | 
|---|
|  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/addService") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult servicceAdd(@RequestBody SysProjServices sysProjServices) { | 
|---|
|  |  |  | SysVipInfo vipInfo = getCurrentVioInfo(); | 
|---|
|  |  |  | sysProjServices.setVipId(vipInfo.getId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (CollectionUtils.isEmpty(sysProjServices.getServiceItems())) { | 
|---|
|  |  |  | return new AjaxResult(AjaxResult.STATUS_FAIL, "没有选中可消耗的项目"); | 
|---|
|  |  |  | 
|---|
|  |  |  | if (balanceverifyResult.isError()) { | 
|---|
|  |  |  | return new AjaxResult(AjaxResult.STATUS_FAIL, balanceverifyResult.getMsg()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | sysProjServices.setState(Dictionary.SERVICE_STATU_YYCG); | 
|---|
|  |  |  | 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)); | 
|---|
|  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/addServiceForForm") | 
|---|
|  |  |  | public @ResponseBody | 
|---|
|  |  |  | AjaxResult servicceAddForForm(SysProjServices sysProjServices) { | 
|---|
|  |  |  | SysVipInfo vipInfo = getCurrentVioInfo(); | 
|---|
|  |  |  | sysProjServices.setVipId(vipInfo.getId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (CollectionUtils.isEmpty(sysProjServices.getServiceItems())) { | 
|---|
|  |  |  | return new AjaxResult(AjaxResult.STATUS_FAIL, "没有选中可消耗的项目"); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/addServiceProj") | 
|---|
|  |  |  | @ResponseBody | 
|---|
|  |  |  | public AjaxResult addServiceProj(SysProjServices sysProjServices) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return AjaxResult.buildSuccessInstance("保存成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 删除服务单项目/套餐 | 
|---|
|  |  |  | * @param id | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @RequestMapping(value = "/delServiceOrderItems") | 
|---|
|  |  |  | @ResponseBody | 
|---|
|  |  |  | public AjaxResult delServiceOrderItems(Long id) { | 
|---|
|  |  |  | sysProjServicesService.deleteProjServiceItemById(id); | 
|---|
|  |  |  | return AjaxResult.buildSuccessInstance("删除成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 准备页面数据 | 
|---|
|  |  |  | private void  pageDate() { | 
|---|
|  |  |  | // 根据岗位名称查询员工 | 
|---|