添加服务指令接口

This commit is contained in:
yangjun 2025-12-16 14:07:16 +08:00
parent 3f394d029a
commit 185b579a2d
7 changed files with 553 additions and 0 deletions

View File

@ -0,0 +1,89 @@
package com.nu.modules.pad.care.api;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.nu.entity.*;
import com.nu.modules.care.api.ICarePadApi;
import com.nu.modules.invoicing.api.IInvoicingApi;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
/**
* 采购单pad接口
*/
@RestController
@RequestMapping("/api/pad/care")
public class CareApi {
@Autowired
private ICarePadApi carePadApi;
@ApiOperation(value = "服务指令工单-查询工单列表", notes = "服务指令工单-查询工单列表")
@GetMapping(value = "/queryCareList")
public Result<IPage<CareOrdersEntity>> queryCareList(CareOrdersEntity careOrdersEntityDto,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
if(StringUtils.isBlank(careOrdersEntityDto.getNuId())){
return Result.error("参数错误,请选择正确的护理单元");
}
if(StringUtils.isBlank(careOrdersEntityDto.getCustomerId())){
return Result.error("参数错误,请选择正确的客户信息");
}
IPage<CareOrdersEntity> pageList = carePadApi.queryCareList(pageNo, pageSize, careOrdersEntityDto,req);
return Result.OK(pageList);
}
@ApiOperation(value = "服务指令工单-查询工单详细信息", notes = "服务指令工单-查询工单详细信息")
@GetMapping(value = "/queryCareInfoList")
public Result<List<CareOrdersSubEntity>> queryCareInfoList(CareOrdersSubEntity careOrdersSubEntityDto, HttpServletRequest req) {
if(StringUtils.isBlank(careOrdersSubEntityDto.getMainId())){
return Result.error("请选择工单");
}
List<CareOrdersSubEntity> pageList = carePadApi.queryCareInfoList( careOrdersSubEntityDto,req);
return Result.OK(pageList);
}
@ApiOperation(value="服务指令工单-开始服务", notes="服务指令工单-开始服务")
@AutoLog(value = "服务指令工单-开始服务",clientType="app", operateType = 2)
@PostMapping(value = "/startOrder")
public Result<String> startOrder(@RequestBody CareOrdersSubEntity careOrdersSubEntity) {
Map<String, Object> pddMap = carePadApi.startOrder(careOrdersSubEntity);
return Result.OK("操作成功!");
}
@ApiOperation(value="服务指令工单-结束服务", notes="服务指令工单-结束服务")
@AutoLog(value = "服务指令工单-结束服务",clientType="app", operateType = 2)
@PostMapping(value = "/endOrder")
public Result<String> endOrder(@RequestBody CareOrdersSubEntity careOrdersSubEntity) {
Map<String, Object> pddMap = carePadApi.endOrder(careOrdersSubEntity);
return Result.OK("操作成功!");
}
@ApiOperation(value="服务指令工单-上传mp4", notes="服务指令工单-上传mp4")
@AutoLog(value = "服务指令工单-上传mp4",clientType="app", operateType = 2)
@PostMapping(value = "/editSubMp4")
public Result<String> editSubMp4(@RequestBody CareOrdersSubEntity careOrdersSubEntity) {
Map<String, Object> pddMap = carePadApi.editSubMp4(careOrdersSubEntity);
return Result.OK("操作成功!");
}
@ApiOperation(value="服务指令工单-上传mp4", notes="服务指令工单-上传mp4")
@AutoLog(value = "服务指令工单-上传mp4",clientType="app", operateType = 2)
@PostMapping(value = "/editSubPicPath")
public Result<String> editSubPicPath(@RequestBody CareOrdersSubEntity careOrdersSubEntity) {
Map<String, Object> pddMap = carePadApi.editSubPicPath(careOrdersSubEntity);
return Result.OK("操作成功!");
}
}

View File

@ -0,0 +1,158 @@
package com.nu.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @Description: 服务指令工单主表
* @Author: caolei
* @Date: 2025-11-14
* @Version: V1.0
*/
@Data
public class CareOrdersEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
@TableId(type = IdType.ASSIGN_ID)
private String id;
/**数据池子表ID*/
private String poolId;
/**主表id*/
private String bizId;
/**护理单元id*/
private String nuId;
/**护理单元名称*/
private String nuName;
/**客户id*/
private String customerId;
/**客户姓名*/
private String customerName;
/**员工ID*/
private String employeeId;
/**员工姓名*/
private String employeeName;
/**服务指令id*/
private String directiveId;
/**服务指令名称*/
private String directiveName;
/**周期类型ID*/
private String cycleTypeId;
/**周期类型*/
private String cycleType;
/**周期值*/
private String cycleValue;
/**服务指令图片大图*/
private String previewFile;
/**服务指令图片大图-网络地址*/
private String netPreviewFile;
/**服务指令图片小图*/
private String previewFileSmall;
/**服务指令图片小图-网络地址*/
private String netPreviewFileSmall;
/**指令音频文件*/
private String mp3File;
/**指令音频文件-网络地址*/
private String netMp3File;
/**指令视频文件*/
private String mp4File;
/**指令视频文件-网络地址*/
private String netMp4File;
/**服务时长(分钟)*/
private String serviceDuration;
/**服务描述*/
private String serviceContent;
/**指令包id*/
private String packageId;
/**指令包名称*/
private String packageName;
/**是否是服务指令包 Y是 N否*/
private String izPackage;
/**开始时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date startTime;
/**结束时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date endTime;
/**实际开始时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date beginTime;
/**实际结束时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date finishTime;
/**是否开始 Y是 N否*/
private String izStart;
/**是否完成 Y是 N否*/
private String izFinish;
/**创建人*/
private String createBy;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**更新人*/
private String updateBy;
/**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/**是否删除 0未删除 1删除*/
private String delFlag;
/**接单上限*/
@TableField(exist = false)
private Integer orderCap;
/**最大时间*/
@TableField(exist = false)
private Date maxTime;
/**单次*/
@TableField(exist = false)
private Integer orderNum;
/**总服务时长*/
@TableField(exist = false)
private Integer totalDuration;
/**总服务收益*/
@TableField(exist = false)
private BigDecimal totalComPrice;
/**是否空闲 1空闲 0非空闲*/
@TableField(exist = false)
private Integer izFree;
/**员工身上挂载的工单数,未完成工单即为挂单*/
@TableField(exist = false)
private Integer ownCn;
/**员工id集合逗号分隔*/
@TableField(exist = false)
private String employeeIds;
/**服务指令id集合逗号分隔*/
@TableField(exist = false)
private String directiveIds;
/**优先级 数值越高优先级越高*/
//空闲状态提高3级 指定护理员提高2级
@TableField(exist = false)
private Integer level;
}

View File

@ -0,0 +1,135 @@
package com.nu.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Description: 服务指令工单子表
* @Author: caolei
* @Date: 2025-11-13
* @Version: V1.0
*/
@Data
public class CareOrdersSubEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
private String id;
/**主表id*/
private String mainId;
/**数据池子表ID*/
private String poolSubId;
/**护理单元id*/
private String nuId;
/**护理单元名称*/
private String nuName;
/**客户id*/
private String customerId;
/**客户姓名*/
private String customerName;
/**员工ID*/
private String employeeId;
/**员工姓名*/
private String employeeName;
/**分类标签id*/
private String instructionTagId;
/**分类标签*/
private String instructionTagName;
/**服务类别id*/
private String categoryId;
/**服务类别名称*/
private String categoryName;
/**服务类型id*/
private String typeId;
/**服务类型名称*/
private String typeName;
/**服务指令id*/
private String directiveId;
/**服务指令名称*/
private String directiveName;
/**周期类型ID*/
private String cycleTypeId;
/**周期类型*/
private String cycleType;
/**周期值*/
private String cycleValue;
/**服务指令图片大图*/
private String previewFile;
/**服务指令图片大图-网络地址*/
private String netPreviewFile;
/**服务指令图片小图*/
private String previewFileSmall;
/**服务指令图片小图-网络地址*/
private String netPreviewFileSmall;
/**指令音频文件*/
private String mp3File;
/**指令音频文件-网络地址*/
private String netMp3File;
/**指令视频文件*/
private String mp4File;
/**指令视频文件-网络地址*/
private String netMp4File;
/**服务时长(分钟)*/
private String serviceDuration;
/**服务描述*/
private String serviceContent;
/**收费价格*/
private BigDecimal tollPrice;
/**提成价格*/
private BigDecimal comPrice;
/**实际提成价格*/
private BigDecimal realComPrice;
/**指令包id*/
private String packageId;
/**指令包名称*/
private String packageName;
/**是否是服务指令包 Y是 N否*/
private String izPackage;
/**开始时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date startTime;
/**结束时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date endTime;
/**实际开始时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date beginTime;
/**实际结束时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date finishTime;
/**是否开始 Y是 N否*/
private String izStart;
/**是否完成 Y是 N否*/
private String izFinish;
/**创建人*/
private String createBy;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**更新人*/
private String updateBy;
/**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/**是否删除 0未删除 1删除*/
private String delFlag;
private String tplinkPath;
private String manuallyPicPath;
private String manuallyMp4Path;
}

View File

@ -0,0 +1,23 @@
package com.nu.modules.care.api;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.nu.entity.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
public interface ICarePadApi {
IPage<CareOrdersEntity> queryCareList(Integer pageNo, Integer pageSize, CareOrdersEntity careOrdersEntityDto, HttpServletRequest req);
List<CareOrdersSubEntity> queryCareInfoList(CareOrdersSubEntity careOrdersSubEntityDto, HttpServletRequest req);
Map<String, Object> editSubMp4(CareOrdersSubEntity careOrdersSubEntity);
Map<String, Object> editSubPicPath(CareOrdersSubEntity careOrdersSubEntity);
Map<String, Object> startOrder(CareOrdersSubEntity careOrdersSubEntity);
Map<String, Object> endOrder(CareOrdersSubEntity careOrdersSubEntity);
}

View File

@ -134,4 +134,8 @@ public class CareOrdersSub implements Serializable {
private Date updateTime;
/**是否删除 0未删除 1删除*/
private String delFlag;
private String tplinkPath;
private String manuallyPicPath;
private String manuallyMp4Path;
}

View File

@ -0,0 +1,139 @@
package com.nu.modules.biz.care.order.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.entity.CareOrdersEntity;
import com.nu.entity.CareOrdersSubEntity;
import com.nu.entity.CgdSxdEntity;
import com.nu.modules.biz.care.order.entity.CareOrders;
import com.nu.modules.biz.care.order.entity.CareOrdersSub;
import com.nu.modules.biz.care.order.mapper.CareOrdersMapper;
import com.nu.modules.biz.care.order.mapper.CareOrdersSubMapper;
import com.nu.modules.biz.care.order.service.ICareOrdersService;
import com.nu.modules.biz.care.order.service.ICareOrdersSubService;
import com.nu.modules.care.api.ICarePadApi;
import com.nu.modules.config.sendorderrule.entity.SendOrderRule;
import com.nu.modules.config.sendorderrule.entity.SendOrderRuleSub;
import com.nu.modules.config.sendorderrule.service.ISendOrderRuleService;
import com.nu.modules.config.sendorderrule.service.ISendOrderRuleSubService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description: 服务指令工单主表
* @Author: caolei
* @Date: 2025-11-18
* @Version: V1.0
*/
@Service
@Slf4j
public class CarePadServiceImpl extends ServiceImpl<CareOrdersMapper, CareOrders> implements ICarePadApi {
@Autowired
private CareOrdersSubMapper careOrdersSubMapper;
@Override
public IPage<CareOrdersEntity> queryCareList(Integer pageNo, Integer pageSize, CareOrdersEntity careOrdersEntityDto, HttpServletRequest req) {
CareOrders careOrders = new CareOrders();
BeanUtils.copyProperties(careOrdersEntityDto,careOrders);
QueryWrapper<CareOrders> queryWrapper = QueryGenerator.initQueryWrapper(careOrders, req.getParameterMap());
Page<CareOrders> page = new Page<>(pageNo, pageSize);
List<CareOrders> list = baseMapper.selectList(page,queryWrapper);
IPage<CareOrdersEntity> entityPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
entityPage.setRecords(BeanUtil.copyToList(list, CareOrdersEntity.class));
return entityPage;
}
@Override
public List<CareOrdersSubEntity> queryCareInfoList(CareOrdersSubEntity careOrdersSubEntityDto, HttpServletRequest req) {
CareOrdersSub careOrdersSub = new CareOrdersSub();
BeanUtils.copyProperties(careOrdersSubEntityDto,careOrdersSub);
QueryWrapper<CareOrdersSub> queryWrapper = QueryGenerator.initQueryWrapper(careOrdersSub, req.getParameterMap());
List<CareOrdersSub> list = careOrdersSubMapper.selectList(queryWrapper);
List<CareOrdersSubEntity> list1 = new ArrayList<>();
list1 = BeanUtil.copyToList(list, CareOrdersSubEntity.class);
return list1;
}
@Override
public Map<String, Object> startOrder(CareOrdersSubEntity careOrdersSubEntity) {
CareOrdersSub careOrdersSub = careOrdersSubMapper.selectById(careOrdersSubEntity.getId());
CareOrders careOrders = baseMapper.selectById(careOrdersSub.getMainId());
careOrdersSub.setIzStart("Y");
careOrdersSub.setBeginTime(new Date());
careOrdersSubMapper.updateById(careOrdersSub);
if(!StringUtils.equals("Y",careOrdersSub.getIzStart())){
careOrders.setIzStart("Y");
careOrders.setBeginTime(new Date());
baseMapper.updateById(careOrders);
}
Map<String, Object> map = new HashMap<>();
map.put("success",true);
map.put("message","操作成功");
map.put("careOrders",careOrders);
map.put("careOrdersSub",careOrdersSub);
return map;
}
@Override
public Map<String, Object> endOrder(CareOrdersSubEntity careOrdersSubEntity) {
CareOrdersSub careOrdersSub = careOrdersSubMapper.selectById(careOrdersSubEntity.getId());
CareOrders careOrders = baseMapper.selectById(careOrdersSub.getMainId());
careOrdersSub.setIzFinish("Y");
careOrdersSub.setFinishTime(new Date());
careOrdersSubMapper.updateById(careOrdersSub);
List<CareOrdersSub> list = careOrdersSubMapper.selectList(new QueryWrapper<CareOrdersSub>().eq("main_id",careOrders.getId()).ne("iz_finish","Y"));
if(list.size()==0){
careOrders.setIzFinish("Y");
careOrders.setFinishTime(new Date());
baseMapper.updateById(careOrders);
}
Map<String, Object> map = new HashMap<>();
map.put("success",true);
map.put("message","操作成功");
map.put("careOrders",careOrders);
map.put("careOrdersSub",careOrdersSub);
return map;
}
@Override
public Map<String, Object> editSubMp4(CareOrdersSubEntity careOrdersSubEntity) {
CareOrdersSub careOrdersSub = new CareOrdersSub();
careOrdersSub.setId(careOrdersSubEntity.getId());
careOrdersSub.setManuallyMp4Path(careOrdersSubEntity.getManuallyMp4Path());
careOrdersSubMapper.updateById(careOrdersSub);
Map<String, Object> map = new HashMap<>();
map.put("success",true);
map.put("message","操作成功");
return map;
}
@Override
public Map<String, Object> editSubPicPath(CareOrdersSubEntity careOrdersSubEntity) {
CareOrdersSub careOrdersSub = new CareOrdersSub();
careOrdersSub.setId(careOrdersSubEntity.getId());
careOrdersSub.setManuallyPicPath(careOrdersSubEntity.getManuallyPicPath());
careOrdersSubMapper.updateById(careOrdersSub);
Map<String, Object> map = new HashMap<>();
map.put("success",true);
map.put("message","操作成功");
return map;
}
}

View File

@ -241,6 +241,11 @@ public class ConfigServiceDirective implements Serializable {
*/
@ApiModelProperty(value = "即时指令图标md5")
private java.lang.String immediateFileFocusMd5;
/**
* 是否下载tplink视频 Y下载 N不下载
*/
@ApiModelProperty(value = "是否下载tplink视频 Y下载 N不下载")
private java.lang.String izDownTplink;
//即时指令图标是否变更
@TableField(exist = false)