<?xml version="1.0" encoding="UTF-8"?>
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
<mapper namespace="com.matrix.system.hive.dao.SysBeauticianStateDao">
|
|
<resultMap type="SysBeauticianState" id="SysBeauticianStateMap">
|
<id property="id" column="ID"/>
|
<result property="staffId" column="STAFF_ID"/>
|
<result property="state" column="STATE"/>
|
<result property="beginTime" column="BEGIN_TIME"/>
|
<result property="endTime" column="END_TIME"/>
|
<result property="servicesId" column="SERVICES_ID"/>
|
<result property="excTime" column="EXC_TIME"/>
|
<result property="extract" column="extract"/>
|
<result property="projId" column="proj_id"/>
|
<result property="puseId" column="puse_id"/>
|
<result property="count" column="count"/>
|
|
<!--扩展字段 -->
|
<result property="createTime" column="createTime"/>
|
<result property="bedName" column="bedName"/>
|
<result property="vipName" column="vipName"/>
|
<association property="beautiStaffInfo" resultMap="com.matrix.system.common.dao.SysUsersDao.SysUsersMap"/>
|
<association property="projInfo" resultMap="com.matrix.system.hive.dao.ShoppingGoodsDao.ShoppingGoodsMap"
|
columnPrefix="goods_"/>
|
<association property="projUse" resultMap="com.matrix.system.hive.dao.SysProjUseDao.SysProjUseMap"
|
columnPrefix="pu_"/>
|
|
</resultMap>
|
|
|
<!-- 插入方法 -->
|
<insert id="insert" parameterType="SysBeauticianState"
|
useGeneratedKeys="true" keyProperty="id">
|
INSERT INTO sys_beautician_state (
|
ID,
|
STAFF_ID,
|
STATE,
|
BEGIN_TIME,
|
END_TIME,
|
SERVICES_ID,
|
EXC_TIME,
|
extract,
|
puse_id,
|
count,
|
proj_id
|
)
|
VALUES (
|
#{id},
|
#{staffId},
|
#{state},
|
#{beginTime},
|
#{endTime},
|
#{servicesId},
|
#{excTime},
|
#{extract},
|
#{puseId},
|
#{count},
|
#{projId}
|
)
|
</insert>
|
|
|
<!-- 根据美疗师的占用情况的开始时间 和结束时间查看该时段是否冲突 -->
|
<select id="checkBeauticianClash" resultType="java.lang.Integer">
|
SELECT
|
count(*)
|
FROM
|
sys_beautician_state
|
WHERE 1=1
|
<if test="record!=null">
|
<if test="record.beginTime != null ">
|
AND
|
STAFF_ID=#{record.staffId}
|
AND
|
(STATE = '服务中' OR STATE='已预约')
|
AND
|
(
|
#{record.beginTime} BETWEEN BEGIN_TIME and END_TIME
|
OR
|
#{record.endTime} BETWEEN BEGIN_TIME and END_TIME
|
OR
|
BEGIN_TIME BETWEEN #{record.beginTime} and #{record.endTime}
|
OR
|
END_TIME BETWEEN #{record.beginTime} and #{record.endTime}
|
)
|
AND
|
SERVICES_ID != #{record.servicesId}
|
</if>
|
</if>
|
</select>
|
|
<!-- 根据时间段查询 -->
|
<select id="selectByTimeAndStaff" resultMap="SysBeauticianStateMap">
|
select
|
a.ID,
|
a.STAFF_ID,
|
a.STATE,
|
a.BEGIN_TIME,
|
a.END_TIME,
|
a.SERVICES_ID,
|
a.puse_id,
|
a.count,
|
b.STATE AS serviceOrderStatu,
|
a.extract
|
from sys_beautician_state a
|
left join sys_proj_services b on a.SERVICES_ID=b.ID
|
WHERE (a.STATE='服务中' or a.STATE='服务结束' or a.STATE='已预约')
|
AND a.STAFF_ID =#{staffId}
|
AND a.BEGIN_TIME BETWEEN #{beginTime} and #{endTime}
|
order by a.BEGIN_TIME
|
</select>
|
|
|
<!-- 根据服务人id与 服务单id查询 被占用美疗师
|
|
|
-->
|
<select id="selectBySerIds" resultMap="SysBeauticianStateMap">
|
select
|
a.ID,
|
a.STAFF_ID,
|
a.STATE,
|
a.BEGIN_TIME,
|
a.END_TIME,
|
a.SERVICES_ID,
|
a.EXC_TIME,
|
a.extract,
|
a.puse_id,
|
a.count,
|
a.proj_id,
|
b.su_name,
|
d.proj_name as goods_name,
|
d.price as goods_seal_pice,
|
c.TIME_LENGTH as goods_time_length,
|
d.id as pu_id,
|
d.SURPLUS_COUNT as pu_SURPLUS_COUNT,
|
d.ASSEMBLE_ID as pu_ASSEMBLE_ID,
|
d.price as pu_price,
|
d.taocan_id as pu_taocan_id,
|
d.source as pu_source
|
from sys_beautician_state a
|
left join sys_users b on a.staff_id= b.su_id
|
left join shopping_goods c on a.proj_id=c.id
|
left join sys_proj_use d on a.puse_id=d.id
|
where a.SERVICES_ID =#{serId}
|
</select>
|
|
<!-- EXC_TIME =TIMESTAMPDIFF(MINUTE,BEGIN_TIME,now()) -->
|
<update id="chengItemState">
|
update sys_beautician_state set state=#{record.state}
|
where 1=1
|
<if test="record.staffId != null">
|
and STAFF_ID=#{record.staffId}
|
</if>
|
and SERVICES_ID =#{record.servicesId}
|
</update>
|
|
<!-- 根据id更新 部分更新 -->
|
<update id="update">
|
UPDATE sys_beautician_state
|
<set>
|
<if test="staffId != null and staffId !='' ">
|
STAFF_ID = #{staffId},
|
</if>
|
<if test="state != null and state !='' ">
|
STATE = #{state},
|
</if>
|
<if test="beginTime != null ">
|
BEGIN_TIME = #{beginTime},
|
</if>
|
<if test="endTime != null ">
|
END_TIME = #{endTime},
|
</if>
|
<if test="servicesId != null and servicesId !='' ">
|
SERVICES_ID = #{servicesId},
|
</if>
|
<if test="excTime != null and excTime !='' ">
|
EXC_TIME = #{excTime},
|
</if>
|
|
<if test="extract != null and extract !='' ">
|
extract = #{extract},
|
</if>
|
<if test="puseId != null and puseId !='' ">
|
puse_id = #{puseId},
|
</if>
|
|
<if test="count != null and count !='' ">
|
count = #{count},
|
</if>
|
<if test="projId != null and projId !='' ">
|
proj_id = #{projId},
|
</if>
|
</set>
|
WHERE ID=#{id}
|
</update>
|
|
|
<!-- 批量删除 -->
|
<delete id="deleteByIds" parameterType="java.util.List">
|
delete from sys_beautician_state where ID in
|
<foreach collection="list" index="index" item="item" open="("
|
separator="," close=")">
|
#{item}
|
</foreach>
|
</delete>
|
|
<!-- 根据id删除-->
|
<delete id="deleteById">
|
DELETE FROM sys_beautician_state
|
where ID=#{id}
|
</delete>
|
|
|
<!-- 分页查询 -->
|
<select id="selectInPage" resultMap="SysBeauticianStateMap">
|
<include refid="select1"></include>
|
<include refid="from1"></include>
|
<include refid="where1"></include>
|
<if test="pageVo !=null"><!-- 判断pageVo对象是否为空 -->
|
<if test="pageVo.sort !=null and pageVo.order !=null">
|
order by
|
${pageVo.sort} ${pageVo.order}
|
</if>
|
<if test="pageVo.offset >=0 and pageVo.limit >0">
|
limit
|
#{pageVo.offset},#{pageVo.limit}
|
</if>
|
</if>
|
</select>
|
|
<!-- 查询总条数 -->
|
<select id="selectTotalRecord" resultType="java.lang.Integer">
|
select count(*)
|
<include refid="from1"></include>
|
<include refid="where1"></include>
|
</select>
|
|
<sql id="select1">
|
select *,
|
svi.VIP_NAME vipName,
|
ssi.SHOP_NAME shopName,
|
si.su_name staffName,
|
sps.service_no serviceNo,
|
sc.service service,
|
sc.environment environment,
|
sc.suggestion suggestion,
|
sc.create_time createTime
|
</sql>
|
<sql id="from1">
|
from sys_beautician_state sbs
|
LEFT JOIN service_comment sc on sc.service_id=sbs.SERVICES_ID
|
LEFT JOIN sys_proj_services sps on sps.id=sbs.SERVICES_ID
|
LEFT JOIN sys_vip_info svi on svi.id=sps.vip_id
|
LEFT JOIN sys_shop_info ssi on ssi.id=sps.shop_id
|
LEFT JOIN sys_users si on si.su_id=sbs.STAFF_ID
|
</sql>
|
|
<sql id="where1">
|
where 1=1
|
<if test="record!=null">
|
<if test="record.serviceNo != null and record.serviceNo !='' ">
|
and sps.service_no =#{record.serviceNo}
|
</if>
|
<if test="record.shopName != null and record.shopName !='' ">
|
and ssi.SHOP_NAME =#{record.shopName}
|
</if>
|
<if test="record.vipName != null and record.vipName !='' ">
|
and svi.VIP_NAME =#{record.vipName}
|
</if>
|
<if test="record.staffName!= null and record.staffName !='' ">
|
and si.su_name =#{record.staffName}
|
</if>
|
<if test="record.projServiceState!= null and record.projServiceState !='' ">
|
and sps.STATE =#{record.projServiceState}
|
</if>
|
|
<if test="record.id != null and record.id !='' ">
|
and sbs.ID =#{record.id}
|
</if>
|
<if test="record.staffId != null and record.staffId !='' ">
|
and sbs.STAFF_ID =#{record.staffId}
|
</if>
|
<if test="record.state != null and record.state !='' ">
|
and sbs.STATE =#{record.state}
|
</if>
|
<if test="record.beginTime != null ">
|
and sbs.BEGIN_TIME =#{record.beginTime}
|
</if>
|
<if test="record.endTime != null ">
|
and sbs.END_TIME =#{record.endTime}
|
</if>
|
<if test="record.servicesId != null and record.servicesId !='' ">
|
and sbs.SERVICES_ID =#{record.servicesId}
|
</if>
|
|
|
</if>
|
order by sc.create_time desc
|
</sql>
|
|
|
<!-- 根据id查询-->
|
<select id="selectById" resultMap="SysBeauticianStateMap">
|
<include refid="select"></include>
|
<include refid="from"></include>
|
where ID=#{id}
|
</select>
|
|
|
<!-- 根据对象查询-->
|
<select id="selectByModel" resultMap="SysBeauticianStateMap">
|
<include refid="select"></include>
|
<include refid="from"></include>
|
<include refid="where"></include>
|
</select>
|
|
<select id="selectByTimeAndUset" resultMap="SysBeauticianStateMap">
|
select a.*,
|
c.VIP_NAME as vipName,
|
d.PROJ_NAME as pu_proj_name,
|
e.BED_NAME as bedName
|
from sys_beautician_state a
|
left join sys_proj_services b on a.SERVICES_ID =b.ID
|
left join sys_vip_info c on b.VIP_ID=c.ID
|
left join sys_proj_use d on a.puse_id=d.id
|
left join sys_bed_info e on b.BED_ID=e.id
|
where
|
<![CDATA[ a.BEGIN_TIME > #{beginTime}
|
and a.END_TIME < #{endTime}
|
and a.STAFF_ID = #{suId} ]]>
|
and a.STATE !='预约取消'
|
and a.STATE !='待确认'
|
and a.STATE !='服务单结束'
|
and a.STATE !='待预约'
|
order by a.BEGIN_TIME asc
|
|
</select>
|
|
|
<select id="selectItemByTime" resultMap="SysBeauticianStateMap">
|
select a.*,
|
c.PRICE as pu_PRICE ,
|
c.SOURCE as pu_SOURCE,
|
c.ASSEMBLE_ID as pu_ASSEMBLE_ID
|
from sys_beautician_state a
|
left join sys_proj_services b on a.SERVICES_ID =b.ID
|
left join sys_proj_use c on a.puse_id=c.id
|
where b.SHOP_ID=#{shopId}
|
and to_days(b.consume_time)=to_days(#{time})
|
</select>
|
|
|
<sql id="select">
|
select
|
ID,
|
STAFF_ID,
|
STATE,
|
BEGIN_TIME,
|
END_TIME,
|
SERVICES_ID,
|
EXC_TIME,
|
extract,
|
puse_id,
|
count,
|
proj_id
|
</sql>
|
<sql id="from">
|
from sys_beautician_state
|
</sql>
|
<sql id="where">
|
where 1=1
|
<if test="record!=null">
|
<if test="record.excTime != null ">
|
and EXC_TIME =#{record.excTime}
|
</if>
|
<if test="record.id != null and record.id !='' ">
|
and ID =#{record.id}
|
</if>
|
<if test="record.staffId != null and record.staffId !='' ">
|
and STAFF_ID =#{record.staffId}
|
</if>
|
<if test="record.state != null and record.state !='' ">
|
and STATE =#{record.state}
|
</if>
|
<if test="record.beginTime != null ">
|
and BEGIN_TIME =#{record.beginTime}
|
</if>
|
<if test="record.endTime != null ">
|
and END_TIME =#{record.endTime}
|
</if>
|
<if test="record.servicesId != null and record.servicesId !='' ">
|
and SERVICES_ID =#{record.servicesId}
|
</if>
|
|
<if test="record.extract != null and record.extract !='' ">
|
and extract = #{record.extract}
|
</if>
|
<if test="record.puseId != null and record.puseId !='' ">
|
and puse_id = #{record.puseId}
|
</if>
|
<if test="record.count != null and record.count !='' ">
|
and count = #{record.count}
|
</if>
|
<if test="record.projId != null and record.projId !='' ">
|
and proj_id = #{record.projId}
|
</if>
|
</if>
|
</sql>
|
|
|
<!-- 服务明细查询-->
|
<select id="selectItemDetail" resultType="java.util.HashMap" parameterType="java.util.HashMap">
|
select
|
f.SHOP_NAME,
|
b.yy_time,
|
b.consume_time,
|
b.SERVICE_NO,
|
d.su_name,
|
e.VIP_NAME,
|
h.PROJ_NAME,
|
c.id,
|
g.NAME as TYPE_NAME,
|
a.COUNT,
|
h.PRICE,
|
h.SOURCE,
|
a.STATE,
|
a.extract
|
from sys_beautician_state a
|
left join sys_proj_services b on a.SERVICES_ID=b.ID
|
left join shopping_goods c on a.proj_id=c.id
|
left join sys_users d on d.su_id=a.STAFF_ID
|
left join sys_vip_info e on e.ID=b.VIP_ID
|
left join sys_shop_info f on f.ID=b.SHOP_ID
|
left join shopping_goods_category g on c.cate_id=g.id
|
left join sys_proj_use h on h.id=a.puse_id
|
<where>
|
<if test="shopId != null and shopId != ''">
|
and f.id =#{shopId}
|
</if>
|
<if test="beginTime != null and beginTime != '' ">
|
and b.consume_time <![CDATA[>=]]> #{beginTime}
|
</if>
|
<if test="endTime != null and endTime !='' ">
|
and b.consume_time <![CDATA[<=]]> #{endTime}
|
</if>
|
|
<if test="vipQueryKey != null and vipQueryKey != '' ">
|
and
|
(
|
e.VIP_NAME like concat('%',#{vipQueryKey},'%')
|
or e.VIP_NO like concat('%',#{vipQueryKey},'%')
|
or e.PHONE like concat('%',#{vipQueryKey},'%')
|
)
|
</if>
|
|
<if test="projName != null and projName != '' ">
|
and h.proj_name like concat('%',#{projName},'%')
|
</if>
|
|
<if test="shopId != null and shopId != '' ">
|
and f.id=#{shopId}
|
</if>
|
|
<if test="cateId != null and cateId != '' ">
|
and c.cate_id=#{cateId}
|
</if>
|
|
|
<if test="staffId != null and staffId != '' ">
|
and a.STAFF_ID=#{staffId}
|
</if>
|
|
<if test="state != null and state != '' ">
|
and a.STATE=#{state}
|
</if>
|
|
|
</where>
|
|
<if test="sort !=null and sort!=''"> order by ${sort} ${order}</if>
|
<if test="(offset !=null and offset!='') or offset==0 ">
|
limit ${offset},${limit}
|
</if>
|
</select>
|
|
<select id="selectItemDetailTotal" resultType="java.lang.Integer">
|
select count(a.id)
|
from sys_beautician_state a
|
left join sys_proj_services b on a.SERVICES_ID=b.ID
|
left join shopping_goods c on a.proj_id=c.id
|
left join sys_users d on d.su_id=a.STAFF_ID
|
left join sys_vip_info e on e.ID=b.VIP_ID
|
left join sys_shop_info f on f.ID=b.SHOP_ID
|
left join shopping_goods_category g on c.cate_id=g.id
|
left join sys_proj_use h on h.id=a.puse_id
|
<where>
|
<if test="shopId != null and shopId != ''">
|
and f.id =#{shopId}
|
</if>
|
<if test="beginTime != null and beginTime != '' ">
|
and b.consume_time <![CDATA[>=]]> #{beginTime}
|
</if>
|
<if test="endTime != null and endTime !='' ">
|
and b.consume_time <![CDATA[<=]]> #{endTime}
|
</if>
|
<if test="vipQueryKey != null and vipQueryKey != '' ">
|
and
|
(
|
e.VIP_NAME like concat('%',#{vipQueryKey},'%')
|
or e.VIP_NO like concat('%',#{vipQueryKey},'%')
|
or e.PHONE like concat('%',#{vipQueryKey},'%')
|
)
|
</if>
|
|
<if test="projName != null and projName != '' ">
|
and h.proj_name like concat('%',#{projName},'%')
|
</if>
|
|
<if test="shopId != null and shopId != '' ">
|
and f.id=#{shopId}
|
</if>
|
|
<if test="cateId != null and cateId != '' ">
|
and c.cate_id=#{cateId}
|
</if>
|
|
|
<if test="staffId != null and staffId != '' ">
|
and a.STAFF_ID=#{staffId}
|
</if>
|
<if test="state != null and state != '' ">
|
and a.STATE=#{state}
|
</if>
|
</where>
|
</select>
|
|
|
<select id="summaryItemDetail" resultType="java.util.HashMap" parameterType="java.util.HashMap">
|
select
|
f.SHOP_NAME,
|
h.PROJ_NAME,
|
c.id,
|
g.name as TYPE_NAME,
|
SUM(a.COUNT) as COUNT,
|
ROUND(SUM(h.PRICE*a.count),2) as PRICE
|
from sys_beautician_state a
|
left join sys_proj_services b on a.SERVICES_ID=b.ID
|
left join shopping_goods c on a.proj_id=c.id
|
left join sys_users d on d.su_id=a.STAFF_ID
|
left join sys_vip_info e on e.ID=b.VIP_ID
|
left join sys_shop_info f on f.ID=b.SHOP_ID
|
left join shopping_goods_category g on c.cate_id=g.id
|
left join sys_proj_use h on h.id=a.puse_id
|
<where>
|
<if test="shopId != null and shopId != ''">
|
and f.id =#{shopId}
|
</if>
|
<if test="beginTime != null and beginTime != '' ">
|
and b.consume_time <![CDATA[>=]]> #{beginTime}
|
</if>
|
<if test="endTime != null and endTime !='' ">
|
and b.consume_time <![CDATA[<=]]> #{endTime}
|
</if>
|
<if test="projName != null ">
|
and h.proj_name like concat('%',#{projName},'%')
|
</if>
|
<if test="shopId != null and shopId != '' ">
|
and f.id=#{shopId}
|
</if>
|
|
<if test="cateId != null and cateId != '' ">
|
and c.cate_id=#{cateId}
|
</if>
|
<if test="state != null and state != '' ">
|
and a.STATE=#{state}
|
</if>
|
</where>
|
group by c.id,f.id
|
|
<if test="sort !=null and sort!=''"> order by ${sort} ${order}</if>
|
<if test="(offset !=null and offset!='') or offset==0 ">
|
limit ${offset},${limit}
|
</if>
|
</select>
|
|
<select id="summaryItemDetailTotal" resultType="java.lang.Integer">
|
select count(1) from (
|
select count(1)
|
from sys_beautician_state a
|
left join sys_proj_services b on a.SERVICES_ID=b.ID
|
left join shopping_goods c on a.proj_id=c.id
|
left join sys_users d on d.su_id=a.STAFF_ID
|
left join sys_vip_info e on e.ID=b.VIP_ID
|
left join sys_shop_info f on f.ID=b.SHOP_ID
|
left join shopping_goods_category g on c.cate_id=g.id
|
left join sys_proj_use h on h.id=a.puse_id
|
<where>
|
<if test="shopId != null and shopId != ''">
|
and f.id =#{shopId}
|
</if>
|
<if test="beginTime != null and beginTime != '' ">
|
and b.consume_time <![CDATA[>=]]> #{beginTime}
|
</if>
|
<if test="endTime != null and endTime !='' ">
|
and b.consume_time <![CDATA[<=]]> #{endTime}
|
</if>
|
<if test="projName != null and projName != '' ">
|
and h.proj_name like concat('%',#{projName},'%')
|
</if>
|
<if test="shopId != null and shopId != '' ">
|
and f.id=#{shopId}
|
</if>
|
|
<if test="cateId != null and cateId != '' ">
|
and c.cate_id=#{cateId}
|
</if>
|
<if test="state != null and state != '' ">
|
and a.STATE=#{state}
|
</if>
|
</where>
|
group by c.id,f.id) t
|
</select>
|
|
<select id="selectByProjUse" resultMap="SysBeauticianStateMap">
|
select * from sys_beautician_state
|
where state!=#{state} and puse_id in
|
<foreach collection="list" index="index" item="item" open="("
|
separator="," close=")">
|
#{item.id}
|
</foreach>
|
</select>
|
|
<select id="selectBeauticianStateByPuseIdAndNoStatus" resultMap="SysBeauticianStateMap">
|
select * from sys_beautician_state
|
where puse_id=#{puseId} and state!=#{state}
|
</select>
|
</mapper>
|