|  |  | 
 |  |  | package com.matrix.system.hive.service.imp; | 
 |  |  |  | 
 |  |  | import cn.hutool.core.collection.CollUtil; | 
 |  |  | import com.matrix.component.rabbitmq.RabiitMqTemplate; | 
 |  |  | import com.google.common.collect.Lists; | 
 |  |  | import com.matrix.component.asyncmessage.AsyncMessageManager; | 
 |  |  | import com.matrix.core.constance.MatrixConstance; | 
 |  |  | import com.matrix.core.exception.GlobleException; | 
 |  |  | import com.matrix.core.pojo.PaginationVO; | 
 |  |  | 
 |  |  | import com.matrix.system.common.constance.AppConstance; | 
 |  |  | import com.matrix.system.common.dao.BusParameterSettingsDao; | 
 |  |  | import com.matrix.system.common.dao.SysUsersDao; | 
 |  |  | import com.matrix.system.common.service.BusParameterSettingService; | 
 |  |  | import com.matrix.system.constance.Dictionary; | 
 |  |  | import com.matrix.system.hive.bean.*; | 
 |  |  | import com.matrix.system.hive.dao.*; | 
 |  |  | 
 |  |  | import com.matrix.system.score.constant.ScoreSettingConstant; | 
 |  |  | import com.matrix.system.score.entity.ScoreVipDetail; | 
 |  |  | import com.matrix.system.score.service.ScoreVipDetailService; | 
 |  |  | import com.matrix.system.shopXcx.mqTask.MQTaskRouting; | 
 |  |  | import com.matrix.system.shopXcx.mqTask.AsyncMessageRouting; | 
 |  |  | import com.matrix.system.wechart.templateMsg.UniformMsgParam; | 
 |  |  | import org.apache.commons.collections.CollectionUtils; | 
 |  |  | import org.springframework.beans.BeanUtils; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.beans.factory.annotation.Value; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  | import org.springframework.transaction.annotation.Transactional; | 
 |  |  |  | 
 |  |  | 
 |  |  |     private SysOutStoreItemDao sysOutStoreItemDao; | 
 |  |  |     @Autowired | 
 |  |  |     private SysBedInfoDao sysBedInfoDao; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     TaiYanAliyunSmsService taiYanAliyunSmsService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private SysStoreInfoDao storeInfoDao; | 
 |  |  | 
 |  |  |     private ShoppingGoodsService shoppingGoodsService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private RabiitMqTemplate rabiitMqTemplate; | 
 |  |  |     private AsyncMessageManager asyncMessageManager; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     BusParameterSettingsDao busParameterSettingsDao; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     BusParameterSettingService busParameterSettingService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     ScoreVipDetailService scoreVipDetailService; | 
 |  |  | 
 |  |  |     @Autowired | 
 |  |  |     SysVipInfoDao sysVipInfoDao; | 
 |  |  |  | 
 |  |  |     @Value("${evn}") | 
 |  |  |     private String evn; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     ShoppingGoodsAssembleDao goodsAssembleDao; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 新增服务单 jyy | 
 |  |  | 
 |  |  |         for (SysBeauticianState sysBeauticianState : sysProjServices.getServiceItems()) { | 
 |  |  |  | 
 |  |  |             SysProjUse sysProjUse = projUseService.findById(sysBeauticianState.getPuseId()); | 
 |  |  |  | 
 |  |  |             //检查是否已经处于无效状态 | 
 |  |  |             if (Dictionary.TAOCAN_STATUS_WX.equals(sysProjUse.getStatus())) { | 
 |  |  |                 return new VerifyResult(true, sysProjUse.getProjName() + "项目已经失效"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             int kjcs = 1; | 
 |  |  |             if (sysProjUse.getTaocanId() != null) { | 
 |  |  |                 kjcs = sysBeauticianState.getCount() * sysProjUse.getDeductionNum(); | 
 |  |  | 
 |  |  |             lastList.add(lastWork); | 
 |  |  |         } | 
 |  |  |         LastestWorkBeatuistaffDao.batchInsert(lastList); | 
 |  |  |         return sysProjServicesDao.update(projServices); | 
 |  |  |         int i = sysProjServicesDao.update(projServices); | 
 |  |  |  | 
 |  |  |         //根据配置是否完成自动配料 | 
 |  |  |         if (busParameterSettingService.isSettingOpen(AppConstance.OPEN_SERVICE_ORDER_AUTO_BATCHING, checkProjServices.getCompanyId())){ | 
 |  |  |             autoBatching(projServices); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         return i; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 根据配置是否完成自动配料 | 
 |  |  |      * | 
 |  |  |      * @param projServices | 
 |  |  |      */ | 
 |  |  |     private void autoBatching(SysProjServices projServices) { | 
 |  |  |  | 
 |  |  |         //获取最新的服务单信息 | 
 |  |  |         projServices=findById(projServices.getId()); | 
 |  |  |         List<SysBeauticianState> beauticianStateList = beauticianStateDao.selectBySerIds(projServices.getId()); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         List<SysOutStoreItem> outStoreItemList = Lists.newLinkedList(); | 
 |  |  |         beauticianStateList.stream().forEach(item -> { | 
 |  |  |  | 
 |  |  |             List<ShoppingGoodsAssemble> shoppingGoodsAssembles = goodsAssembleDao.selectGoodsByShoppingGoodsIdAndType(item.getProjId(), ShoppingGoods.SHOPPING_GOODS_TYPE_JJCP); | 
 |  |  |  | 
 |  |  |             if (CollUtil.isNotEmpty(shoppingGoodsAssembles)) { | 
 |  |  |                 outStoreItemList.addAll(shoppingGoodsAssembles.stream().map(assemble -> { | 
 |  |  |                     SysOutStoreItem outStoreItem = new SysOutStoreItem(); | 
 |  |  |                     outStoreItem.setSkuId(assemble.getAssembleGoodId()); | 
 |  |  |                     outStoreItem.setAmount(Double.parseDouble(assemble.getTotal()+"")); | 
 |  |  |                     outStoreItem.setRemark("自动配料"); | 
 |  |  |                     return outStoreItem; | 
 |  |  |                 }).collect(Collectors.toList())); | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |         //组合配料参数 | 
 |  |  |         projServices.setOutStoreItem(outStoreItemList); | 
 |  |  |         //调用配料出库方法 | 
 |  |  |         modifyPLProjServices(projServices); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | 
 |  |  |             //发送微信公众号提醒 | 
 |  |  |             UniformMsgParam uniformMsgParam = new UniformMsgParam(projServices.getCompanyId(), UniformMsgParam.GZH_FWWC); | 
 |  |  |             uniformMsgParam.put("serviceId", projServices.getId()); | 
 |  |  |             rabiitMqTemplate.sendMsg(MQTaskRouting.SEND_UNIFORM_TEMPLATE_MSG + evn, uniformMsgParam.toJSONString()); | 
 |  |  |  | 
 |  |  |             asyncMessageManager.sendMsg(AsyncMessageRouting.SEND_UNIFORM_TEMPLATE_MSG, uniformMsgParam); | 
 |  |  |             //发送划扣短信提醒 | 
 |  |  |             taiYanAliyunSmsService.sendHkNotice(projServices); | 
 |  |  |  | 
 |  |  |             return result; | 
 |  |  |         } | 
 |  |  | 
 |  |  |  | 
 |  |  |         return flag; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public int confirmServiceOrder(Long id) { | 
 |  |  |         SysProjServices services = new SysProjServices(); | 
 |  |  |         services.setId(id); | 
 |  |  |         services.setState(Dictionary.BEATUI_STATE_DYY); | 
 |  |  |         int i = modify(services); | 
 |  |  |         if (i > 0) { | 
 |  |  |             //发送微信公众号提醒 | 
 |  |  |             services = findById(services.getId()); | 
 |  |  |             UniformMsgParam uniformMsgParam = new UniformMsgParam(services.getCompanyId(), UniformMsgParam.GZH_YYCG); | 
 |  |  |             uniformMsgParam.put("serviceId", services.getId()); | 
 |  |  |             asyncMessageManager.sendMsg(AsyncMessageRouting.SEND_UNIFORM_TEMPLATE_MSG, uniformMsgParam); | 
 |  |  |  | 
 |  |  |             taiYanAliyunSmsService.sendYycgNotice(services); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |         return i; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | } |