zq-erp/pom.xml
@@ -364,7 +364,14 @@ <version>2.9.2</version> </dependency> <!-- swagger2 end --> </dependencies> <!-- https://mvnrepository.com/artifact/org.mapstruct/mapstruct --> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>1.3.0.Final</version> </dependency> </dependencies> <build> <resources> <resource> @@ -417,6 +424,18 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8}</target> <annotationProcessorPaths> <path> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>1.3.0.Final</version> </path> </annotationProcessorPaths> </configuration> </plugin> <!-- 热部署插件 --> zq-erp/src/main/java/com/matrix/system/app/action/ApiServiceOrderAction.java
@@ -1,11 +1,30 @@ package com.matrix.system.app.action; import com.matrix.core.exception.GlobleException; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.pojo.PaginationVO; import com.matrix.system.app.dto.ServiceOrderListDto; import com.matrix.system.app.mapper.SysProjUseMapper; import com.matrix.system.app.vo.ServiceOrderListVo; import com.matrix.system.app.vo.ServiceProductListVo; import com.matrix.system.app.vo.ServiceProjVo; import com.matrix.system.app.vo.ServiceTcVo; import com.matrix.system.constance.Dictionary; import com.matrix.system.hive.bean.SysProjUse; import com.matrix.system.hive.bean.SysVipInfo; import com.matrix.system.hive.plugin.util.CollectionUtils; import com.matrix.system.hive.service.SysProjServicesService; import com.matrix.system.hive.service.SysProjUseService; import com.matrix.system.hive.service.SysVipInfoService; import io.swagger.annotations.Api; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; /** * @author wzy @@ -16,9 +35,78 @@ @RequestMapping(value = "/api/serviceOrder") public class ApiServiceOrderAction { @Autowired private SysProjUseService projUseService; @Autowired private SysVipInfoService sysVipInfoService; @Autowired private SysProjServicesService projServicesService; @ApiOperation(value ="获取用户项目/套餐列表", notes = "获取用户项目/套餐列表") @ApiResponses({ @ApiResponse(code = 200, message = "ok", response = ServiceProductListVo.class) }) @GetMapping(value = "/findVipProject/{vipId}") public AjaxResult findVipProject(@PathVariable("vipId") Long vipId) { SysVipInfo vipInfo = sysVipInfoService.findById(vipId); if (vipInfo == null) { throw new GlobleException("会员不存在"); } ServiceProductListVo productListVo = new ServiceProductListVo(); productListVo.setName(vipInfo.getVipName()); productListVo.setVipId(vipId); SysProjUse queryUse = new SysProjUse(); 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); List<ServiceProjVo> serviceProjVos = SysProjUseMapper.INSTANCE.entityListToProjVoList(projList); queryUse.setTaocanId(null); queryUse.setType(Dictionary.SHOPPING_GOODS_TYPE_TC); List<SysProjUse> taoCanList = projUseService.findInPage(queryUse, null); List<ServiceTcVo> serviceTcVos = SysProjUseMapper.INSTANCE.entityListToTcVoList(taoCanList); if (CollectionUtils.isNotEmpty(serviceTcVos)) { serviceTcVos.forEach(item -> { List<SysProjUse> sysProjUses = projUseService.selectTaocanProjUse(item.getId()); List<ServiceProjVo> taocanProj = SysProjUseMapper.INSTANCE.entityListToProjVoList(sysProjUses); item.setProj(taocanProj); }); } productListVo.setProj(serviceProjVos); productListVo.setComposeProj(serviceTcVos); AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功"); ajaxResult.putInMap("proj", productListVo); return ajaxResult; } @ApiOperation(value = "提交服务单", notes = "提交服务单") @PostMapping(value = "/createServiceOrder") public AjaxResult createServiceOrder() { return null; } @ApiOperation(value = "查询服务单列表", notes = "查询服务单列表") @ApiResponses({ @ApiResponse(code = 200, message = "ok", response = ServiceOrderListVo.class) }) @PostMapping(value = "/findServiceOrderList") public AjaxResult findServiceOrderList(@RequestBody @Validated ServiceOrderListDto orderListDto) { PaginationVO pageVo = new PaginationVO(); int offset = (orderListDto.getPageNum() - 1) * orderListDto.getPageSize(); int limit = orderListDto.getPageSize(); pageVo.setOffset(offset); pageVo.setLimit(limit); return AjaxResult.buildSuccessInstance(projServicesService.findApiServiceOrderListInPage(orderListDto, pageVo), projServicesService.findApiServiceOrderListTotal(orderListDto)); } } zq-erp/src/main/java/com/matrix/system/app/dto/ServiceOrderListDto.java
New file @@ -0,0 +1,34 @@ package com.matrix.system.app.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; /** * @author wzy * @date 2020-12-24 **/ @ApiModel(value = "ServiceOrderListDto", description = "服务单列表参数接收类") public class ServiceOrderListDto extends BasePageDto{ @ApiModelProperty(value = "查询参数") private String queryKey; @ApiModelProperty(value = "状态 0/全部 1/带预约 2/带配料 3/待服务 4/服务中 5/已完成") private String status; public String getQueryKey() { return queryKey; } public void setQueryKey(String queryKey) { this.queryKey = queryKey; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } } zq-erp/src/main/java/com/matrix/system/app/mapper/SysProjUseMapper.java
New file @@ -0,0 +1,33 @@ package com.matrix.system.app.mapper; import com.matrix.system.app.vo.ServiceProjVo; import com.matrix.system.app.vo.ServiceTcVo; import com.matrix.system.hive.bean.SysProjUse; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; import java.util.List; /** * @author wzy * @date 2020-12-24 **/ @Mapper public abstract class SysProjUseMapper { public static final SysProjUseMapper INSTANCE = Mappers.getMapper(SysProjUseMapper.class); @Mapping(source = "projName", target = "name") @Mapping(source = "failTime", target = "invalidTime") @Mapping(source = "surplusCount", target = "count") public abstract ServiceTcVo entityToServiceTcVo(SysProjUse sysProjUse); public abstract List<ServiceTcVo> entityListToTcVoList(List<SysProjUse> list); @Mapping(source = "projName", target = "name") @Mapping(source = "failTime", target = "invalidTime") @Mapping(source = "surplusCount", target = "count") public abstract ServiceProjVo entityToServiceProjVo(SysProjUse sysProjUse); public abstract List<ServiceProjVo> entityListToProjVoList(List<SysProjUse> list); } zq-erp/src/main/java/com/matrix/system/app/vo/ServiceOrderListProjVo.java
New file @@ -0,0 +1,34 @@ package com.matrix.system.app.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; /** * @author wzy * @date 2020-12-24 **/ @ApiModel(value = "ServiceOrderListProjVo", description = "服务单列表项目返回参数类") public class ServiceOrderListProjVo { @ApiModelProperty(value = "项目名称") private String projName; @ApiModelProperty(value = "美疗师") private String beautyName; public String getProjName() { return projName; } public void setProjName(String projName) { this.projName = projName; } public String getBeautyName() { return beautyName; } public void setBeautyName(String beautyName) { this.beautyName = beautyName; } } zq-erp/src/main/java/com/matrix/system/app/vo/ServiceOrderListVo.java
New file @@ -0,0 +1,106 @@ package com.matrix.system.app.vo; import com.fasterxml.jackson.annotation.JsonFormat; import com.matrix.core.tools.DateUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.Date; import java.util.List; /** * @author wzy * @date 2020-12-24 **/ @ApiModel(value = "ServiceOrderListVo", description = "服务单列表返回参数类") public class ServiceOrderListVo { @ApiModelProperty(value = "服务单Id") private Long id; @ApiModelProperty(value = "服务单编号") private String serviceNo; @JsonFormat(pattern = DateUtil.DATE_FORMAT_MM) @ApiModelProperty(value = "预约时间") private Date time; @ApiModelProperty(value = "会员名称") private String vipName; @ApiModelProperty(value = "服务时长") private Integer timeLength; @ApiModelProperty(value = "床位") private String bed; @ApiModelProperty(value = "状态") private String status; @ApiModelProperty(value = "服务项目信息") private List<ServiceOrderListProjVo> projs; public List<ServiceOrderListProjVo> getProjs() { return projs; } public void setProjs(List<ServiceOrderListProjVo> projs) { this.projs = projs; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getServiceNo() { return serviceNo; } public void setServiceNo(String serviceNo) { this.serviceNo = serviceNo; } public Date getTime() { return time; } public void setTime(Date time) { this.time = time; } public String getVipName() { return vipName; } public void setVipName(String vipName) { this.vipName = vipName; } public Integer getTimeLength() { return timeLength; } public void setTimeLength(Integer timeLength) { this.timeLength = timeLength; } public String getBed() { return bed; } public void setBed(String bed) { this.bed = bed; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } } zq-erp/src/main/java/com/matrix/system/app/vo/ServiceProductListVo.java
New file @@ -0,0 +1,58 @@ package com.matrix.system.app.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.List; /** * @author wzy * @date 2020-12-24 **/ @ApiModel(value = "ServiceProjListVo", description = "用户产品列表") public class ServiceProductListVo { @ApiModelProperty(value = "会员ID") private Long vipId; @ApiModelProperty(value = "会员名称") private String name; @ApiModelProperty(value = "项目列表") private List<ServiceProjVo> proj; @ApiModelProperty(value = "套餐列表") private List<ServiceTcVo> composeProj; public Long getVipId() { return vipId; } public void setVipId(Long vipId) { this.vipId = vipId; } public List<ServiceProjVo> getProj() { return proj; } public void setProj(List<ServiceProjVo> proj) { this.proj = proj; } public List<ServiceTcVo> getComposeProj() { return composeProj; } public void setComposeProj(List<ServiceTcVo> composeProj) { this.composeProj = composeProj; } public String getName() { return name; } public void setName(String name) { this.name = name; } } zq-erp/src/main/java/com/matrix/system/app/vo/ServiceProjVo.java
New file @@ -0,0 +1,83 @@ package com.matrix.system.app.vo; import com.fasterxml.jackson.annotation.JsonFormat; import com.matrix.core.tools.DateUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.Date; /** * @author wzy * @date 2020-12-24 **/ @ApiModel(value = "ServiceProjVo", description = "用户项目返回参数类") public class ServiceProjVo { @ApiModelProperty(value = "订单ID") private Long projId; @ApiModelProperty(value = "商品名称") private String name; @ApiModelProperty(value = "时长") private Integer timeLength; @JsonFormat(pattern = DateUtil.DATE_FORMAT_DD) @ApiModelProperty(value = "有效期") private Date invalidTime; @ApiModelProperty(value = "剩余数量") private Integer count; @ApiModelProperty(value = "图片") private String img; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getTimeLength() { return timeLength; } public void setTimeLength(Integer timeLength) { this.timeLength = timeLength; } public Long getProjId() { return projId; } public void setProjId(Long projId) { this.projId = projId; } public Date getInvalidTime() { return invalidTime; } public void setInvalidTime(Date invalidTime) { this.invalidTime = invalidTime; } public Integer getCount() { return count; } public void setCount(Integer count) { this.count = count; } public String getImg() { return img; } public void setImg(String img) { this.img = img; } } zq-erp/src/main/java/com/matrix/system/app/vo/ServiceTcVo.java
New file @@ -0,0 +1,105 @@ package com.matrix.system.app.vo; import com.fasterxml.jackson.annotation.JsonFormat; import com.matrix.core.tools.DateUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.Date; import java.util.List; /** * @author wzy * @date 2020-12-24 **/ @ApiModel(value = "ServiceTcVo", description = "用户套餐返回参数类") public class ServiceTcVo { @ApiModelProperty(hidden = true) private Long id; @ApiModelProperty(value = "商品ID") private Long projId; @ApiModelProperty(value = "套餐名称") private String name; @JsonFormat(pattern = DateUtil.DATE_FORMAT_DD) @ApiModelProperty(value = "有效期") private Date invalidTime; @ApiModelProperty(value = "剩余数量") private String count; @ApiModelProperty(value = "固定/任选套餐 Y-任选 N-固定") private String isCourse; @ApiModelProperty(value = "若套餐为任选套餐 则判断是否无限次 Y是 N否") private String isInfinite; @ApiModelProperty(value = "套餐内产品") List<ServiceProjVo> proj; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Long getProjId() { return projId; } public void setProjId(Long projId) { this.projId = projId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getInvalidTime() { return invalidTime; } public void setInvalidTime(Date invalidTime) { this.invalidTime = invalidTime; } public String getCount() { return count; } public void setCount(String count) { this.count = count; } public String getIsCourse() { return isCourse; } public void setIsCourse(String isCourse) { this.isCourse = isCourse; } public String getIsInfinite() { return isInfinite; } public void setIsInfinite(String isInfinite) { this.isInfinite = isInfinite; } public List<ServiceProjVo> getProj() { return proj; } public void setProj(List<ServiceProjVo> proj) { this.proj = proj; } } zq-erp/src/main/java/com/matrix/system/hive/bean/SysProjUse.java
@@ -123,6 +123,26 @@ */ private Integer deductionNum; private Integer timeLength; private String img; public Integer getTimeLength() { return timeLength; } public void setTimeLength(Integer timeLength) { this.timeLength = timeLength; } public String getImg() { return img; } public void setImg(String img) { this.img = img; } public String getIsInfinite() { return isInfinite; } zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjServicesDao.java
@@ -1,5 +1,7 @@ package com.matrix.system.hive.dao; import com.matrix.system.app.dto.ServiceOrderListDto; import com.matrix.system.app.vo.ServiceOrderListVo; import com.matrix.system.hive.bean.SysProjServices; import org.apache.ibatis.annotations.Param; @@ -35,6 +37,8 @@ public SysProjServices selectById(Long id); public void updateOrderTime(@Param("createTime") Date createTime, @Param("id") Long id); List<ServiceOrderListVo> selectApiServiceOrderListInPage(@Param("record") ServiceOrderListDto serviceOrderListDto, @Param("pageVo") PaginationVO pageVo); int selectApiServiceOrderListTotal(@Param("record") ServiceOrderListDto serviceOrderListDto); } zq-erp/src/main/java/com/matrix/system/hive/service/SysProjServicesService.java
@@ -2,6 +2,8 @@ import com.matrix.core.pojo.PaginationVO; import com.matrix.core.pojo.VerifyResult; import com.matrix.system.app.dto.ServiceOrderListDto; import com.matrix.system.app.vo.ServiceOrderListVo; import com.matrix.system.hive.bean.SysProjServices; import com.matrix.system.hive.plugin.util.BaseServices; @@ -97,4 +99,9 @@ public VerifyResult checkArrears(SysProjServices sysProjServices); public VerifyResult checkBalance(SysProjServices sysProjServices); List<ServiceOrderListVo> findApiServiceOrderListInPage(ServiceOrderListDto serviceOrderListDto, PaginationVO pageVo); int findApiServiceOrderListTotal(ServiceOrderListDto serviceOrderListDto); } zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjServicesServiceImpl.java
@@ -5,6 +5,8 @@ import com.matrix.core.pojo.PaginationVO; import com.matrix.core.pojo.VerifyResult; import com.matrix.core.tools.*; import com.matrix.system.app.dto.ServiceOrderListDto; import com.matrix.system.app.vo.ServiceOrderListVo; import com.matrix.system.common.bean.SysUsers; import com.matrix.system.common.dao.SysUsersDao; import com.matrix.system.constance.Dictionary; @@ -803,4 +805,13 @@ } @Override public List<ServiceOrderListVo> findApiServiceOrderListInPage(ServiceOrderListDto serviceOrderListDto, PaginationVO pageVo) { return sysProjServicesDao.selectApiServiceOrderListInPage(serviceOrderListDto, pageVo); } @Override public int findApiServiceOrderListTotal(ServiceOrderListDto serviceOrderListDto) { return sysProjServicesDao.selectApiServiceOrderListTotal(serviceOrderListDto); } } zq-erp/src/main/resources/mybatis/mapper/hive/SysProjServicesDao.xml
@@ -458,4 +458,72 @@ </if> </select> <resultMap id="ServiceOrderListVoMap" type="com.matrix.system.app.vo.ServiceOrderListVo"> <id column="id" property="id" /> <result column="serviceNo" property="serviceNo"/> <result property="time" column="time"/> <result property="bed" column="bed" /> <result property="vipName" column="vipName" /> <result property="timeLength" column="timeLength" /> <result property="status" column="status" /> <collection property="projs" ofType="com.matrix.system.app.vo.ServiceOrderListProjVo"> <result property="projName" column="projName" /> <result property="beautyName" column="beautyName" /> </collection> </resultMap> <select id="selectApiServiceOrderListInPage" resultMap="ServiceOrderListVoMap"> select a.id id, a.SERVICE_NO serviceNo, a.YY_TIME time, a.TOTAL_TIME timeLength, a.state status, d.BED_NAME bed, e.VIP_NAME vipName, f.su_name beautyName, g.proj_name projName from sys_proj_services a left join sys_beautician_state b on a.ID=b.SERVICES_ID left join sys_bed_state c on a.ID = c.SERVICE_ID left join sys_bed_info d on c.BED_ID=d.ID left join sys_vip_info e on a.VIP_ID=e.ID left join sys_users f on f.su_id=b.STAFF_ID left join sys_proj_use g on b.puse_id=g.ID <where> <if test="record.queryKey != null and record.queryKey != ''"> and (instr(a.SERVICE_NO, #{record.queryKey}) or instr(e.phone, #{record.queryKey}) or instr(e.vip_name, #{record.queryKey}) ) </if> <if test="record.status != null and record.status != ''"> and a.state = #{record.status} </if> </where> <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 --> order by a.yy_time desc <if test="pageVo.offset >=0 and pageVo.limit >0"> limit #{pageVo.offset},#{pageVo.limit} </if> </if> </select> <select id="selectApiServiceOrderListTotal" resultType="java.lang.Integer"> select count(1) from sys_proj_services a left join sys_beautician_state b on a.ID=b.SERVICES_ID left join sys_bed_state c on a.ID = c.SERVICE_ID left join sys_bed_info d on c.BED_ID=d.ID left join sys_vip_info e on a.VIP_ID=e.ID left join sys_users f on f.su_id=b.STAFF_ID left join sys_proj_use g on b.puse_id=g.ID <where> <if test="record.queryKey != null and record.queryKey != ''"> and (instr(a.SERVICE_NO, #{record.queryKey}) or instr(e.phone, #{record.queryKey}) or instr(e.vip_name, #{record.queryKey}) ) </if> <if test="record.status != null and record.status != ''"> and a.state = #{record.status} </if> </where> </select> </mapper> zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml
@@ -25,6 +25,7 @@ <result property="projName" column="proj_name"/> <result property="deductionNum" column="deductionNum"/> <result property="isCourse" column="is_course"/> <result property="timeLength" column="time_length"/> @@ -227,7 +228,8 @@ <select id="selectInPage" resultMap="SysProjUseMap"> select a.*, b.TIME_LENGTH b.TIME_LENGTH, b.img from sys_proj_use a left join shopping_goods b on a.proj_id=b.id where 1=1