|
@@ -100,6 +100,7 @@ public class OrderBaseLogic {
|
|
|
private final PgAppraiseApplyService pgAppraiseApplyService;
|
|
|
private final PgAppraiseConfigService pgAppraiseConfigService;
|
|
|
private final ElasticsearchRestTemplate elasticsearchRestTemplate;
|
|
|
+ private final WebsitDispatchService websitDispatchService;
|
|
|
|
|
|
/**
|
|
|
* 工单列表
|
|
@@ -1387,6 +1388,39 @@ public class OrderBaseLogic {
|
|
|
return pgOrderBase;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成过程反馈
|
|
|
+ *
|
|
|
+ * @param pgOrderBase
|
|
|
+ * @param websitName
|
|
|
+ */
|
|
|
+ public void addLogJSM(PgOrderBase pgOrderBase, String websitName) {
|
|
|
+ //自建工单
|
|
|
+ orderLogLogic.addLog(pgOrderBase.getId(), "创建工单", "创建工单-家盛茂商城", websitName);
|
|
|
+ //派工网点
|
|
|
+ if (StringUtils.isNotBlank(pgOrderBase.getWebsitId())) {
|
|
|
+ orderLogLogic.addLog(pgOrderBase.getId(), "指派网点", "派工给网点【" +(pgOrderBase.getWebsitId())+ pgOrderBase.getWebsitName() + "】", websitName);
|
|
|
+ }
|
|
|
+ //派工给师傅
|
|
|
+ if (StringUtils.isNotBlank(pgOrderBase.getWorkerId())) {
|
|
|
+ orderLogLogic.addLog(pgOrderBase.getId(), "指派师傅", "派工给师傅【" + pgOrderBase.getWorkerName() + "】", websitName);
|
|
|
+ }
|
|
|
+ //预约
|
|
|
+ if (pgOrderBase.getAppointmentTime() != null && pgOrderBase.getAppointmentEndTime() != null) {
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ SimpleDateFormat sdf2 = new SimpleDateFormat("HH");
|
|
|
+ SimpleDateFormat sdf3 = new SimpleDateFormat("HH:mm");
|
|
|
+ int hour = Integer.parseInt(sdf2.format(pgOrderBase.getAppointmentTime()));
|
|
|
+ String s = hour >= 12 ? "下午" : "上午";
|
|
|
+
|
|
|
+ String format = sdf3.format(pgOrderBase.getAppointmentTime());
|
|
|
+ String format1 = sdf3.format(pgOrderBase.getAppointmentEndTime());
|
|
|
+
|
|
|
+ String s2 = StringUtils.isNotBlank(pgOrderBase.getAppointmentRemark()) ? "备注:" + pgOrderBase.getAppointmentRemark() : "";
|
|
|
+ orderLogLogic.addLog(pgOrderBase.getId(), "用户预约", "预约时间:" + sdf.format(pgOrderBase.getAppointmentTime())+" "+format+"-"+format1 + " " + "," + s2, websitName);
|
|
|
+ }
|
|
|
+ }
|
|
|
/**
|
|
|
* 生成过程反馈
|
|
|
*
|
|
@@ -1855,4 +1889,380 @@ public class OrderBaseLogic {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ public String saveOrderJSM(OrderAddBeanDTO orderAddBeanDTO) {
|
|
|
+
|
|
|
+ String orderBaseId = orderAddBeanDTO.getId();
|
|
|
+ Boolean addFlag = false;
|
|
|
+ PgOrderBase old = pgOrderBaseService.getById(orderBaseId);
|
|
|
+ Boolean oldIsQd = false;
|
|
|
+ if (old == null) {
|
|
|
+ orderBaseId = "A" + IdWorker.getIdStr();
|
|
|
+ addFlag = true;
|
|
|
+ } else {
|
|
|
+ oldIsQd = old.getIsQd();
|
|
|
+ }
|
|
|
+ orderAddBeanDTO.setId(orderBaseId);
|
|
|
+
|
|
|
+ //如果选择的师傅存在非当前工单的网点,则清空师傅信息
|
|
|
+ if (CollectionUtils.isNotEmpty(orderAddBeanDTO.getOrderWorkers())) {
|
|
|
+ long count = orderAddBeanDTO.getOrderWorkers().stream().filter(v -> !StringUtils.equals(v.getWebsitId(), orderAddBeanDTO.getWebsitId())).count();
|
|
|
+ if (count > 0) {
|
|
|
+ orderAddBeanDTO.getOrderWorkers().clear();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ PgOrderBase orderBase = this.converJSM(old, orderAddBeanDTO, addFlag);
|
|
|
+ orderBase.setCompanyWechatId("1");
|
|
|
+ orderBase.setCompanyWechatName("家盛茂");
|
|
|
+ orderBase.setCreateWebsitId("1831608878940995586");
|
|
|
+ orderBase.setCreateWebsitName("广佛格力售后");
|
|
|
+
|
|
|
+ orderBase.setIsQd(orderAddBeanDTO.getIsQd());
|
|
|
+ orderBase.setIsQdNotice(true);
|
|
|
+ orderBase.setId(orderBaseId);
|
|
|
+ orderBase.setIsImportExcel(orderBase.getIsImportExcel() != null?old.getIsImportExcel():false);
|
|
|
+ orderBase.setIsMeet(orderBase.getIsImportExcel()?orderAddBeanDTO.getIsMeet():true);
|
|
|
+
|
|
|
+
|
|
|
+ //是否变更了师傅
|
|
|
+ Boolean changeWorker = false;
|
|
|
+ //修改记录
|
|
|
+ if (!addFlag) {
|
|
|
+ changeWorker = updateOrderLog(old, orderBase, orderAddBeanDTO);
|
|
|
+ }
|
|
|
+
|
|
|
+ //产品信息(编辑是单独维护的,这里只需要处理新增)
|
|
|
+ if (addFlag) {
|
|
|
+ for (PgOrderProduct v : orderAddBeanDTO.getOrderProducts()) {
|
|
|
+ v.setOrderBaseId(orderBase.getId());
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(orderAddBeanDTO.getRpProjectRepairId())) {
|
|
|
+ //维保单判断是否数量超了
|
|
|
+ RpProjectRepairProduct one = projectRepairProductService.lambdaQuery()
|
|
|
+ .eq(RpProjectRepairProduct::getProjectRepairId, orderAddBeanDTO.getRpProjectRepairId())
|
|
|
+ .eq(RpProjectRepairProduct::getBrandId, v.getBrandId())
|
|
|
+ .eq(RpProjectRepairProduct::getMainId, v.getMainId())
|
|
|
+ .eq(RpProjectRepairProduct::getSmallId, v.getSmallId())
|
|
|
+ .last("limit 1")
|
|
|
+ .one();
|
|
|
+ if (one != null && one.getNum() < v.getNum()) {
|
|
|
+ throw new RemoteServiceException("机型【" + v.getProductName() + "】设备数量不可大于维保项目的机型设备数量");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ pgOrderProductService.saveBatch(orderAddBeanDTO.getOrderProducts());
|
|
|
+ this.upOrderProduct(orderBase.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ //师傅信息
|
|
|
+ pgOrderWorkerService.lambdaUpdate().eq(PgOrderWorker::getOrderBaseId, orderBaseId).remove();
|
|
|
+ if (CollectionUtils.isNotEmpty(orderAddBeanDTO.getOrderWorkers())) {
|
|
|
+ for (PgOrderWorker v : orderAddBeanDTO.getOrderWorkers()) {
|
|
|
+ v.setOrderBaseId(orderBase.getId());
|
|
|
+ }
|
|
|
+ pgOrderWorkerService.saveBatch(orderAddBeanDTO.getOrderWorkers());
|
|
|
+ }
|
|
|
+
|
|
|
+ //如果变更了师傅,则需要将“抢单”标识剔除
|
|
|
+ if (changeWorker || (addFlag && CollectionUtils.isNotEmpty(orderAddBeanDTO.getOrderWorkers()))) {
|
|
|
+ orderBase.setIsQd(false);
|
|
|
+ if (orderBase.getIsImportExcel())
|
|
|
+ orderBase.setIsMeet(false);
|
|
|
+ else
|
|
|
+ orderBase.setIsMeet(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ String orderTitle = getOrderTitle(orderAddBeanDTO.getOrderProducts());
|
|
|
+ orderBase.setOrderTitle(orderTitle);
|
|
|
+ orderBase.insertOrUpdate();
|
|
|
+
|
|
|
+
|
|
|
+ orderFlagLogic.saveOrderFlag(Lists.newArrayList(orderBase.getId()),OrderFlagEnum.ORDER);
|
|
|
+
|
|
|
+ //日志记录
|
|
|
+ if (addFlag) {
|
|
|
+ addLogJSM(orderBase, "");
|
|
|
+ }
|
|
|
+
|
|
|
+ //重算机型数量
|
|
|
+ reNum(orderBaseId);
|
|
|
+
|
|
|
+ //增值服务工单
|
|
|
+ increWorkerOrderInsideCode(orderBaseId);
|
|
|
+
|
|
|
+ //维保工单
|
|
|
+ if (StringUtils.isNotBlank(orderAddBeanDTO.getRpProjectRepairId()))
|
|
|
+ repairProjectWorkerOrder(orderBase);
|
|
|
+ if (orderAddBeanDTO.getSaleType() != null && orderAddBeanDTO.getSaleType() == SaleTypeEnum.B.getIntKey()) {
|
|
|
+ if (StringUtils.isAnyBlank(orderAddBeanDTO.getProjectNo(), orderAddBeanDTO.getProjectName())) {
|
|
|
+ throw new RemoteServiceException("工程单的工程编号和工程名称不能为空");
|
|
|
+ }
|
|
|
+ orderFlagLogic.saveOrderFlag(Lists.newArrayList(orderBaseId), OrderFlagEnum.PROJECT);
|
|
|
+ }
|
|
|
+ //租赁单业务处理
|
|
|
+ orderBase = handleZl(orderBase);
|
|
|
+ //变更师傅的通知
|
|
|
+ if (changeWorker) {
|
|
|
+ orderLogLogic.insertNotice(orderBaseId);
|
|
|
+ }
|
|
|
+
|
|
|
+ //创建工单添加消息
|
|
|
+ if (addFlag) {
|
|
|
+ this.sendMaterialExamine(orderBase.getId());
|
|
|
+ }
|
|
|
+ //新建单,或者从旧单的不抢单改成抢单
|
|
|
+// if(addFlag || (!oldIsQd && orderAddBeanDTO.getIsQd())){
|
|
|
+// //抢单的通知,通知给当前网点的所有师傅
|
|
|
+// this.addQdNotice(orderBase);
|
|
|
+// }
|
|
|
+ if (orderAddBeanDTO.getIsQd() && orderBase.getOrderStatus().equals(OrderBaseStatusEnum.DQD.getKey())) {
|
|
|
+ this.addQdNotice(orderBase);
|
|
|
+ }
|
|
|
+ return orderBaseId;
|
|
|
+ }
|
|
|
+
|
|
|
+ private PgOrderBase converJSM(PgOrderBase old, OrderAddBeanDTO orderAddBeanDTO, Boolean isAdd) {
|
|
|
+
|
|
|
+ //工单渠道 (维保的工单渠道是写死的,不能检查)
|
|
|
+// SysDictCompany orderChannelDict = sysDictCompanyLogic.dictByTypeOfCode(SysDictConstant.ORDER_CHANNEL, orderAddBeanDTO.getOrderChannelId(),companyWechatId);
|
|
|
+// if(orderChannelDict == null){
|
|
|
+// throw new RemoteServiceException("工单渠道不存在");
|
|
|
+// }
|
|
|
+ //工单类型
|
|
|
+ OrderSmallType orderSmallType = orderSmallTypeService.getById(orderAddBeanDTO.getOrderSmallType());
|
|
|
+ if (orderSmallType == null) {
|
|
|
+ throw new RemoteServiceException("工单类型不存在【orderSmallType】");
|
|
|
+ }
|
|
|
+ //业务类型,工单大类
|
|
|
+ OrderTypeEnum orderTypeEnum = BaseEnum.keyToEnum(OrderTypeEnum.class, orderSmallType.getOrderType());
|
|
|
+ if (orderTypeEnum == null) {
|
|
|
+ throw new RemoteServiceException("工单类型业务线错误【orderType】");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(orderAddBeanDTO.getWebsitId()) && StringUtils.isBlank(orderAddBeanDTO.getCompanyWechatId())) {
|
|
|
+ throw new RemoteServiceException("请选择网点");
|
|
|
+ }
|
|
|
+
|
|
|
+ //PgOrderBase pgOrderBase = pgOrderBaseService.getById(orderAddBeanDTO.getId());
|
|
|
+// if(pgOrderBase == null){
|
|
|
+// pgOrderBase = new PgOrderBase();
|
|
|
+// }
|
|
|
+ PgOrderBase pgOrderBase = null;
|
|
|
+ if (old != null) {
|
|
|
+ //深拷贝
|
|
|
+ pgOrderBase = ObjectUtil.clone(old);
|
|
|
+ } else {
|
|
|
+ pgOrderBase = new PgOrderBase();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!isAdd && OrderBaseStatusEnum.isOver().contains(pgOrderBase.getOrderStatus())) {
|
|
|
+ throw new RemoteServiceException("当前状态不可编辑工单");
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(orderAddBeanDTO.getSource())) {
|
|
|
+ orderAddBeanDTO.setSource("自建工单");
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(orderAddBeanDTO.getLng()) || StringUtils.isBlank(orderAddBeanDTO.getLat())) {
|
|
|
+ String gpsAddress = orderAddBeanDTO.getProvince() + orderAddBeanDTO.getCity() + orderAddBeanDTO.getArea() + orderAddBeanDTO.getStreet() + orderAddBeanDTO.getAddress();
|
|
|
+ //反查经纬度
|
|
|
+ String location = lbsAmapLogic.getLocationByAddress(gpsAddress);
|
|
|
+ orderAddBeanDTO.setLng(location.split(",")[0]);
|
|
|
+ orderAddBeanDTO.setLat(location.split(",")[1]);
|
|
|
+ }
|
|
|
+
|
|
|
+ Region p = regionService.lambdaQuery().eq(Region::getProvinceName, orderAddBeanDTO.getProvince()).last("limit 1").one();
|
|
|
+ Region c = regionService.lambdaQuery().eq(Region::getProvinceName, orderAddBeanDTO.getProvince())
|
|
|
+ .eq(Region::getCityName, orderAddBeanDTO.getCity())
|
|
|
+ .last("limit 1").one();
|
|
|
+ Region a = regionService.lambdaQuery().eq(Region::getProvinceName, orderAddBeanDTO.getProvince())
|
|
|
+ .eq(Region::getCityName, orderAddBeanDTO.getCity())
|
|
|
+ .eq(Region::getAreaName, orderAddBeanDTO.getArea())
|
|
|
+ .last("limit 1").one();
|
|
|
+ Region s = regionService.lambdaQuery().eq(Region::getProvinceName, orderAddBeanDTO.getProvince())
|
|
|
+ .eq(Region::getCityName, orderAddBeanDTO.getCity())
|
|
|
+ .eq(Region::getAreaName, orderAddBeanDTO.getArea())
|
|
|
+ .eq(Region::getName, orderAddBeanDTO.getStreet())
|
|
|
+ .last("limit 1").one();
|
|
|
+
|
|
|
+ pgOrderBase.setUserName(orderAddBeanDTO.getUserName())
|
|
|
+ .setLinkName(orderAddBeanDTO.getLinkName())
|
|
|
+ .setUserMobile(orderAddBeanDTO.getUserMobile())
|
|
|
+ .setUserMobile2(orderAddBeanDTO.getUserMobile2())
|
|
|
+ .setProvinceId(p.getProvinceCode())
|
|
|
+ .setProvince(orderAddBeanDTO.getProvince())
|
|
|
+ .setCityId(c.getCityCode())
|
|
|
+ .setCity(orderAddBeanDTO.getCity())
|
|
|
+ .setAreaId(a.getAreaCode())
|
|
|
+ .setArea(orderAddBeanDTO.getArea())
|
|
|
+ .setStreetId(s.getId())
|
|
|
+ .setStreet(orderAddBeanDTO.getStreet())
|
|
|
+ .setAddress(orderAddBeanDTO.getAddress())
|
|
|
+ .setGpsAddress(orderAddBeanDTO.getGpsAddress())
|
|
|
+ .setOrderChannelId(orderAddBeanDTO.getOrderChannelId())
|
|
|
+ .setOrderChannelText(orderAddBeanDTO.getOrderChannelText())
|
|
|
+// .setOrderChannelId(orderChannelDict.getDictCode())
|
|
|
+// .setOrderChannelText(orderChannelDict.getDictValue())
|
|
|
+ .setAppointmentTime(orderAddBeanDTO.getAppointmentTime())
|
|
|
+ .setAppointmentEndTime(orderAddBeanDTO.getAppointmentEndTime())
|
|
|
+ .setSaleCompany(orderAddBeanDTO.getSaleCompany())
|
|
|
+ .setRemark(orderAddBeanDTO.getRemark())
|
|
|
+ .setLastOperatorAppointmentTime(new Date())
|
|
|
+ .setRpProjectRepairId(orderAddBeanDTO.getRpProjectRepairId())
|
|
|
+ .setLng(orderAddBeanDTO.getLng())
|
|
|
+ .setLat(orderAddBeanDTO.getLat())
|
|
|
+ .setSaleType(orderAddBeanDTO.getSaleType())
|
|
|
+ .setSaleOrderId(orderAddBeanDTO.getSaleOrderId())
|
|
|
+ .setProjectNo(orderAddBeanDTO.getProjectNo())
|
|
|
+ .setProjectName(orderAddBeanDTO.getProjectName())
|
|
|
+ .setIsZl(orderAddBeanDTO.getIsZl())
|
|
|
+ .setIsQd(orderAddBeanDTO.getIsQd())
|
|
|
+ .setSource(orderAddBeanDTO.getSource())
|
|
|
+ .setServiceStatus(orderAddBeanDTO.getServiceStatus())
|
|
|
+ .setComplaint(orderAddBeanDTO.getComplaint())
|
|
|
+ .setUrgent(orderAddBeanDTO.getUrgent())
|
|
|
+ .setEvaluate(orderAddBeanDTO.getEvaluate())
|
|
|
+ .setSalesPlatform(orderAddBeanDTO.getSalesPlatform())
|
|
|
+ .setBuyName(orderAddBeanDTO.getBuyName())
|
|
|
+ .setSalesTypeName(orderAddBeanDTO.getSalesTypeName())
|
|
|
+ .setReqStatus(orderAddBeanDTO.getReqStatus())
|
|
|
+ .setReqText(orderAddBeanDTO.getReqText())
|
|
|
+ .setReqType(orderAddBeanDTO.getReqType())
|
|
|
+ .setServiceOrderId(orderAddBeanDTO.getServiceOrderId())
|
|
|
+ .setSalesOrderId(orderAddBeanDTO.getSalesOrderId())
|
|
|
+ .setManagerName(orderAddBeanDTO.getManagerName())
|
|
|
+ .setOperateEntity(orderAddBeanDTO.getOperateEntity())
|
|
|
+ .setMainName(orderAddBeanDTO.getMainName())
|
|
|
+ .setIsImportExcel(orderAddBeanDTO.getIsImportExcel())
|
|
|
+ ;
|
|
|
+
|
|
|
+ OrderBaseStatusEnum orderBaseStatusEnum = OrderBaseStatusEnum.DSHPG;
|
|
|
+ AdminWebsit adminWebsit = null;
|
|
|
+ //网点
|
|
|
+ if (StringUtils.isNotBlank(orderAddBeanDTO.getWebsitId())) {
|
|
|
+ adminWebsit = adminWebsitService.getById(orderAddBeanDTO.getWebsitId());
|
|
|
+
|
|
|
+
|
|
|
+ if (adminWebsit == null) {
|
|
|
+
|
|
|
+ WebsitDispatch websitDispatch = websitDispatchService.lambdaQuery()
|
|
|
+ .eq(WebsitDispatch::getStreetCode, pgOrderBase.getStreetId())
|
|
|
+ .eq(WebsitDispatch::getSaleTypeId, pgOrderBase.getSaleType())
|
|
|
+ .eq(WebsitDispatch::getCategoryId, orderAddBeanDTO.getOrderProducts().get(0).getMainId())
|
|
|
+ .eq(WebsitDispatch::getOrderSmallId, pgOrderBase.getOrderSmallType())
|
|
|
+ .last("limit 1").one();
|
|
|
+
|
|
|
+ if (websitDispatch != null) {
|
|
|
+
|
|
|
+ adminWebsit = adminWebsitService.getById(websitDispatch.getWebsitId());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if (adminWebsit == null) {
|
|
|
+ orderBaseStatusEnum = OrderBaseStatusEnum.DSHPG;
|
|
|
+ }else {
|
|
|
+ if (adminWebsit.getType().equals(AdminWebsitTypeEnum.B.getKey())) {
|
|
|
+ orderBaseStatusEnum = OrderBaseStatusEnum.DSHPG;
|
|
|
+ }
|
|
|
+ if (adminWebsit.getType().equals(AdminWebsitTypeEnum.C.getKey())
|
|
|
+ && (orderBaseStatusEnum == OrderBaseStatusEnum.DSHPG || orderBaseStatusEnum == OrderBaseStatusEnum.DWDPG || orderBaseStatusEnum == OrderBaseStatusEnum.DQD)) {
|
|
|
+ orderBaseStatusEnum = OrderBaseStatusEnum.DWDPG;
|
|
|
+ if (pgOrderBase.getIsQd() != null && pgOrderBase.getIsQd()) {
|
|
|
+ orderBaseStatusEnum = OrderBaseStatusEnum.DQD;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ pgOrderBase.setWebsitId(adminWebsit.getWebsitId());
|
|
|
+ pgOrderBase.setWebsitName(adminWebsit.getName());
|
|
|
+ pgOrderBase.setWebsitPhone(adminWebsit.getWebsitPhone());
|
|
|
+ //只记录第一次
|
|
|
+ if (pgOrderBase.getDispatchWebsitTime() == null) {
|
|
|
+ pgOrderBase.setDispatchWebsitTime(new Date());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ //师傅
|
|
|
+ String workerIdsStr = "";
|
|
|
+ if (CollectionUtils.isNotEmpty(orderAddBeanDTO.getOrderWorkers())) {
|
|
|
+ //如果是待网点派工的工单,此时变更状态为待接单
|
|
|
+ if (orderBaseStatusEnum == OrderBaseStatusEnum.DWDPG || orderBaseStatusEnum == OrderBaseStatusEnum.DQD ||
|
|
|
+ orderBaseStatusEnum == OrderBaseStatusEnum.FL ||
|
|
|
+ orderBaseStatusEnum == OrderBaseStatusEnum.CJ ||
|
|
|
+ orderBaseStatusEnum == OrderBaseStatusEnum.YPD ||
|
|
|
+ orderBaseStatusEnum == OrderBaseStatusEnum.DXSPD ||
|
|
|
+ orderBaseStatusEnum == OrderBaseStatusEnum.DZBPG ||
|
|
|
+ orderBaseStatusEnum == OrderBaseStatusEnum.DWDSPGP ||
|
|
|
+ orderBaseStatusEnum == OrderBaseStatusEnum.DXSSPGP ||
|
|
|
+ orderBaseStatusEnum == OrderBaseStatusEnum.DTJXSSPGP ||
|
|
|
+ orderBaseStatusEnum == OrderBaseStatusEnum.DFZXPD ||
|
|
|
+ orderBaseStatusEnum == OrderBaseStatusEnum.DFZXSPGP ||
|
|
|
+ orderBaseStatusEnum == OrderBaseStatusEnum.XSBH ||
|
|
|
+ orderBaseStatusEnum == OrderBaseStatusEnum.TJXSBH ||
|
|
|
+ orderBaseStatusEnum == OrderBaseStatusEnum.ZBBH ||
|
|
|
+ orderBaseStatusEnum == OrderBaseStatusEnum.FZXBH ||
|
|
|
+ orderBaseStatusEnum == OrderBaseStatusEnum.WDBH ||
|
|
|
+ orderBaseStatusEnum == OrderBaseStatusEnum.DFZXPD
|
|
|
+
|
|
|
+
|
|
|
+ )
|
|
|
+ orderBaseStatusEnum = OrderBaseStatusEnum.DJD;
|
|
|
+
|
|
|
+ List<String> workerIds = orderAddBeanDTO.getOrderWorkers().stream().map(PgOrderWorker::getWorkerId).collect(Collectors.toList());
|
|
|
+ workerIdsStr = StringUtils.join(workerIds, ",");
|
|
|
+
|
|
|
+ PgOrderWorker masterWorker = orderAddBeanDTO.getOrderWorkers().stream()
|
|
|
+ .filter(PgOrderWorker::getIsMaster).findFirst().orElse(null);
|
|
|
+
|
|
|
+ if (Objects.isNull(masterWorker)) {
|
|
|
+ throw new RemoteServiceException("请选择主要工程师");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Objects.nonNull(adminWebsit)
|
|
|
+ && adminWebsit.getAttr().equals(WebsitAttrEnum.SELF.getKey())
|
|
|
+ && "安装, 拆移机".contains(orderSmallType.getOrderSmallTypeText())
|
|
|
+ && StringUtils.isBlank(masterWorker.getWorkerNumber())) {
|
|
|
+ throw new RemoteServiceException("工单类型必须是有S编号的主要工程师");
|
|
|
+ }
|
|
|
+
|
|
|
+ pgOrderBase.setWorkerId(masterWorker.getWorkerId());
|
|
|
+ pgOrderBase.setWorkerNumber(masterWorker.getWorkerNumber());
|
|
|
+ pgOrderBase.setWorkerName(masterWorker.getWorkerName());
|
|
|
+ pgOrderBase.setWorkerMobile(masterWorker.getWorkerMobile());
|
|
|
+ pgOrderBase.setWorkerIdcard(masterWorker.getWorkerIdcard());
|
|
|
+ pgOrderBase.setWebsitId(masterWorker.getWebsitId());
|
|
|
+ pgOrderBase.setWebsitName(masterWorker.getWebsitName());
|
|
|
+ pgOrderBase.setWorkerIdList(workerIdsStr);
|
|
|
+ //只记录第一次
|
|
|
+ if (pgOrderBase.getDispatchTime() == null) {
|
|
|
+ pgOrderBase.setDispatchTime(new Date());
|
|
|
+ }
|
|
|
+ //旧单状态,如果是派师傅之后的状态则根据旧单的状态来
|
|
|
+ if (StringUtils.isNotBlank(pgOrderBase.getOrderStatus())) {
|
|
|
+ OrderBaseStatusEnum oldOrderBaseStatusEnum = BaseEnum.keyToEnum(OrderBaseStatusEnum.class, pgOrderBase.getOrderStatus());
|
|
|
+ if (!OrderBaseStatusEnum.notDispatchWorker().contains(oldOrderBaseStatusEnum.getKey())) {
|
|
|
+ orderBaseStatusEnum = oldOrderBaseStatusEnum;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ pgOrderBase.setWorkerId("");
|
|
|
+ pgOrderBase.setWorkerNumber("");
|
|
|
+ pgOrderBase.setWorkerName("");
|
|
|
+ pgOrderBase.setWorkerMobile("");
|
|
|
+ pgOrderBase.setWorkerIdcard("");
|
|
|
+ pgOrderBase.setWorkerIdList("");
|
|
|
+ }
|
|
|
+
|
|
|
+ pgOrderBase.setOrderSmallType(orderAddBeanDTO.getOrderSmallType())
|
|
|
+ .setOrderSmallTypeText(orderSmallType.getOrderSmallTypeText())
|
|
|
+ .setOrderType(orderSmallType.getOrderType())
|
|
|
+ .setOrderTypeText(orderTypeEnum.getRemark());
|
|
|
+
|
|
|
+ if (isAdd) {
|
|
|
+ pgOrderBase.setCreateDate(DateUtil.beginOfDay(new Date()));
|
|
|
+ }
|
|
|
+ pgOrderBase.setOrderStatus(orderBaseStatusEnum.getKey());
|
|
|
+ pgOrderBase.setOrderStatusText(orderBaseStatusEnum.getRemark());
|
|
|
+
|
|
|
+ return pgOrderBase;
|
|
|
+
|
|
|
+ }
|
|
|
}
|