From 371591d64d37a57e2866e6f0729cf7054b8744ba Mon Sep 17 00:00:00 2001 From: Administrator <zhubaomin> Date: 星期四, 25 一月 2024 14:29:58 +0800 Subject: [PATCH] 2024-01-25 朱宝民 总账生成功能、总账审核功能 --- pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeAuditsMapper.xml | 115 +++++++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeGeneral.java | 85 +++++ pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/dto/DtoGeneral.java | 54 +++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeGeneralMapper.java | 59 +++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoGeneral.java | 14 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeGeneralMapper.xml | 204 ++++++++++++ pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralCtrl.java | 167 ++++++++++ pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralSv.java | 115 +++++++ pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java | 10 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeAudits.java | 76 ++++ pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/qo/QoGeneral.java | 34 ++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeAuditsMapper.java | 27 + 12 files changed, 954 insertions(+), 6 deletions(-) diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeAuditsMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeAuditsMapper.java new file mode 100644 index 0000000..95ef40d --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeAuditsMapper.java @@ -0,0 +1,27 @@ +package com.dy.pipIrrGlobal.daoSe; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dy.pipIrrGlobal.pojoSe.SeAudits; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author ZhuBaoMin + * @date 2024-01-24 18:57 + * @LastEditTime 2024-01-24 18:57 + * @Description + */ + +@Mapper +public interface SeAuditsMapper extends BaseMapper<SeAudits> { + int deleteByPrimaryKey(Long id); + + int insert(SeAudits record); + + int insertSelective(SeAudits record); + + SeAudits selectByPrimaryKey(Long id); + + int updateByPrimaryKeySelective(SeAudits record); + + int updateByPrimaryKey(SeAudits record); +} \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeGeneralMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeGeneralMapper.java new file mode 100644 index 0000000..c1de684 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeGeneralMapper.java @@ -0,0 +1,59 @@ +package com.dy.pipIrrGlobal.daoSe; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dy.pipIrrGlobal.pojoSe.SeGeneral; +import com.dy.pipIrrGlobal.voSe.VoGeneral; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author ZhuBaoMin + * @date 2024-01-24 18:57 + * @LastEditTime 2024-01-24 18:57 + * @Description + */ + +@Mapper +public interface SeGeneralMapper extends BaseMapper<SeGeneral> { + int deleteByPrimaryKey(Long id); + + int insert(SeGeneral record); + + int insertSelective(SeGeneral record); + + SeGeneral selectByPrimaryKey(Long id); + + int updateByPrimaryKeySelective(SeGeneral record); + + int updateByPrimaryKey(SeGeneral record); + + /** + * 鑾峰彇鏈敓鎴愭�昏处鐨勪氦鏄撴棩鏈熷垪琛紙褰撳ぉ鐨勪氦鏄撹褰曚笉鐢熸垚鎬昏处锛� + * @return + */ + List<Map<String, Object>> getDatesOfNotInGenerals(); + + /** + * 鏍规嵁浜ゆ槗鏃ユ湡鑾峰彇鎬昏处璁板綍鍒楄〃锛堝緟鐢熸垚鐨勶級 + * @param operateDate + * @return + */ + List<SeGeneral> getGeneralByOperateDate(@Param("operateDate") String operateDate); + + /** + * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鎬昏处璁板綍鏁� + * @param params + * @return + */ + Long getRecordCount(Map<?, ?> params); + + /** + * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鎬昏处璁板綍 + * @param params + * @return + */ + List<VoGeneral> getGenerals(Map<?, ?> params); +} \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeAudits.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeAudits.java new file mode 100644 index 0000000..9d1a492 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeAudits.java @@ -0,0 +1,76 @@ +package com.dy.pipIrrGlobal.pojoSe; + +import com.alibaba.fastjson2.annotation.JSONField; +import com.alibaba.fastjson2.writer.ObjectWriterImplToString; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.dy.common.po.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Positive; +import lombok.*; +import org.hibernate.validator.constraints.Length; + +import java.util.Date; + +/** + * @author ZhuBaoMin + * @date 2024-01-24 18:57 + * @LastEditTime 2024-01-24 18:57 + * @Description + */ + +@TableName(value="se_audits", autoResultMap = true) +@Data +@Builder +@ToString +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "鎬昏处瀹℃牳璁板綍瀹炰綋") +public class SeAudits implements BaseEntity { + public static final long serialVersionUID = 202401251043001L; + + /** + * 涓婚敭 + */ + @JSONField(serializeUsing= ObjectWriterImplToString.class) + @TableId(type = IdType.INPUT) + @Schema(description = "瀹炰綋id", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + private Long id; + + /** + * 鎬昏处ID + */ + @Schema(description = "鎬昏处ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @NotNull(message = "鎬昏处ID涓嶈兘涓虹┖") + private Long generalId; + + /** + * 瀹℃牳鐘舵��;1-鏈鏍革紝2-鍚屾剰锛�3-椹冲洖 + */ + @Schema(description = "瀹℃牳鐘舵��", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @NotNull(message = "瀹℃牳鐘舵�佷笉鑳戒负绌�") + private Byte auditStatus; + + /** + * 瀹℃牳鎰忚 + */ + @Schema(description = "瀹℃牳鎰忚", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @Length(max = 200, message = "瀹℃牳鎰忚鏈�澶�200瀛�") + private String auditOpinion; + + /** + * 鎿嶄綔浜虹紪鍙� + */ + @Schema(description = "鎿嶄綔浜篒D", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @NotNull(message = "鎿嶄綔浜篒D涓嶈兘涓虹┖") + @Positive(message = "鎿嶄綔浜篒D蹇呴』涓哄ぇ浜�0鐨勬暣鏁�") + private Long operator; + + /** + * 鎿嶄綔鏃堕棿 + */ + @Schema(description = "鎿嶄綔鏃堕棿", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + private Date operateDt; +} \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeGeneral.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeGeneral.java new file mode 100644 index 0000000..7504a19 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeGeneral.java @@ -0,0 +1,85 @@ +package com.dy.pipIrrGlobal.pojoSe; + +import com.alibaba.fastjson2.annotation.JSONField; +import com.alibaba.fastjson2.writer.ObjectWriterImplToString; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.dy.common.po.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.*; + +import java.util.Date; + +/** + * @author ZhuBaoMin + * @date 2024-01-24 18:57 + * @LastEditTime 2024-01-24 18:57 + * @Description + */ + +@TableName(value="se_general", autoResultMap = true) +@Data +@Builder +@ToString +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "鎬昏处瀹炰綋") +public class SeGeneral implements BaseEntity { + public static final long serialVersionUID = 202401241912001L; + + /** + * 涓婚敭 + */ + @JSONField(serializeUsing= ObjectWriterImplToString.class) + @TableId(type = IdType.INPUT) + @Schema(description = "瀹炰綋id", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + private Long id; + + /** + * 鏀堕摱鍛樺鍚� + */ + @Schema(description = "鏀堕摱鍛樺鍚�", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @NotBlank(message = "鏀堕摱鍛樺鍚嶄笉鑳戒负绌�") + private String cashierName; + + /** + * 瀹炴敹閲戦 + */ + @Schema(description = "瀹炴敹閲戦", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @NotNull(message = "瀹炴敹閲戦涓嶈兘涓虹┖") + private Double tradeAmount; + + /** + * 璧犻�侀噾棰� + */ + @Schema(description = "璧犻�侀噾棰�", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @NotNull(message = "璧犻�侀噾棰濅笉鑳戒负绌�") + private Double gift; + + /** + * 鎬婚 + */ + @Schema(description = "鎬婚", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @NotNull(message = "鎬婚涓嶈兘涓虹┖") + private Double totalAmount; + + /** + * 浜ゆ槗鏃ユ湡 + */ + @Schema(description = "浜ゆ槗鏃ユ湡", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @NotNull(message = "浜ゆ槗鏃ユ湡涓嶈兘涓虹┖") + private Date operateDate; + + /** + * 瀹℃牳鐘舵��;1-鏈鏍革紝2-鍚屾剰锛�3-椹冲洖 + */ + @Schema(description = "瀹℃牳鐘舵��", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @Max(message = "瀹℃牳鐘舵�佹渶澶т负3", value = 3) + @Min(message = "瀹℃牳鐘舵�佹渶灏忎负1",value = 1) + private Byte auditStatus; +} \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoGeneral.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoGeneral.java index a144e18..f1df434 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoGeneral.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoGeneral.java @@ -4,8 +4,6 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import java.util.Date; - /** * @author ZhuBaoMin * @date 2024-01-24 17:00 @@ -18,8 +16,11 @@ public class VoGeneral implements BaseEntity { private static final long serialVersionUID = 202401241706001L; + @Schema(title = "鎬昏处ID") + private Long generalId; + @Schema(title = "鏀堕摱鍛樺鍚�") - private String clientNum; + private String cashierName; @Schema(title = "瀹炴敹閲戦") private Float tradeAmount; @@ -30,7 +31,10 @@ @Schema(title = "鎬婚") private Float totalAmount; - @Schema(title = "鏃ユ湡") - private Date operateDate; + @Schema(title = "浜ゆ槗鏃ユ湡") + private String operateDate; + + @Schema(title = "瀹℃牳鐘舵��") + private String auditStatus; } diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeAuditsMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeAuditsMapper.xml new file mode 100644 index 0000000..81f9938 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeAuditsMapper.xml @@ -0,0 +1,115 @@ +<?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.dy.pipIrrGlobal.daoSe.SeAuditsMapper"> + <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSe.SeAudits"> + <!--@mbg.generated--> + <!--@Table se_audits--> + <id column="id" jdbcType="BIGINT" property="id" /> + <result column="general_id" jdbcType="BIGINT" property="generalId" /> + <result column="audit_status" jdbcType="TINYINT" property="auditStatus" /> + <result column="audit_opinion" jdbcType="VARCHAR" property="auditOpinion" /> + <result column="operator" jdbcType="BIGINT" property="operator" /> + <result column="operate_dt" jdbcType="TIMESTAMP" property="operateDt" /> + </resultMap> + <sql id="Base_Column_List"> + <!--@mbg.generated--> + id, general_id, audit_status, audit_opinion, `operator`, operate_dt + </sql> + <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> + <!--@mbg.generated--> + select + <include refid="Base_Column_List" /> + from se_audits + where id = #{id,jdbcType=BIGINT} + </select> + <delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> + <!--@mbg.generated--> + delete from se_audits + where id = #{id,jdbcType=BIGINT} + </delete> + <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeAudits"> + <!--@mbg.generated--> + insert into se_audits (id, general_id, audit_status, + audit_opinion, `operator`, operate_dt + ) + values (#{id,jdbcType=BIGINT}, #{generalId,jdbcType=BIGINT}, #{auditStatus,jdbcType=TINYINT}, + #{auditOpinion,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, #{operateDt,jdbcType=TIMESTAMP} + ) + </insert> + <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeAudits"> + <!--@mbg.generated--> + insert into se_audits + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="id != null"> + id, + </if> + <if test="generalId != null"> + general_id, + </if> + <if test="auditStatus != null"> + audit_status, + </if> + <if test="auditOpinion != null"> + audit_opinion, + </if> + <if test="operator != null"> + `operator`, + </if> + <if test="operateDt != null"> + operate_dt, + </if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="id != null"> + #{id,jdbcType=BIGINT}, + </if> + <if test="generalId != null"> + #{generalId,jdbcType=BIGINT}, + </if> + <if test="auditStatus != null"> + #{auditStatus,jdbcType=TINYINT}, + </if> + <if test="auditOpinion != null"> + #{auditOpinion,jdbcType=VARCHAR}, + </if> + <if test="operator != null"> + #{operator,jdbcType=BIGINT}, + </if> + <if test="operateDt != null"> + #{operateDt,jdbcType=TIMESTAMP}, + </if> + </trim> + </insert> + <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeAudits"> + <!--@mbg.generated--> + update se_audits + <set> + <if test="generalId != null"> + general_id = #{generalId,jdbcType=BIGINT}, + </if> + <if test="auditStatus != null"> + audit_status = #{auditStatus,jdbcType=TINYINT}, + </if> + <if test="auditOpinion != null"> + audit_opinion = #{auditOpinion,jdbcType=VARCHAR}, + </if> + <if test="operator != null"> + `operator` = #{operator,jdbcType=BIGINT}, + </if> + <if test="operateDt != null"> + operate_dt = #{operateDt,jdbcType=TIMESTAMP}, + </if> + </set> + where id = #{id,jdbcType=BIGINT} + </update> + <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeAudits"> + <!--@mbg.generated--> + update se_audits + set general_id = #{generalId,jdbcType=BIGINT}, + audit_status = #{auditStatus,jdbcType=TINYINT}, + audit_opinion = #{auditOpinion,jdbcType=VARCHAR}, + `operator` = #{operator,jdbcType=BIGINT}, + operate_dt = #{operateDt,jdbcType=TIMESTAMP} + where id = #{id,jdbcType=BIGINT} + </update> +</mapper> \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeGeneralMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeGeneralMapper.xml new file mode 100644 index 0000000..8e5ea53 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeGeneralMapper.xml @@ -0,0 +1,204 @@ +<?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.dy.pipIrrGlobal.daoSe.SeGeneralMapper"> + <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSe.SeGeneral"> + <!--@mbg.generated--> + <!--@Table se_general--> + <id column="id" jdbcType="BIGINT" property="id" /> + <result column="cashier_name" jdbcType="VARCHAR" property="cashierName" /> + <result column="trade_amount" jdbcType="FLOAT" property="tradeAmount" /> + <result column="gift" jdbcType="FLOAT" property="gift" /> + <result column="total_amount" jdbcType="FLOAT" property="totalAmount" /> + <result column="operate_date" jdbcType="TIMESTAMP" property="operateDate" /> + <result column="audit_status" jdbcType="TINYINT" property="auditStatus" /> + </resultMap> + <sql id="Base_Column_List"> + <!--@mbg.generated--> + id, cashier_name, trade_amount, gift, total_amount, operate_date, audit_status + </sql> + <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> + <!--@mbg.generated--> + select + <include refid="Base_Column_List" /> + from se_general + where id = #{id,jdbcType=BIGINT} + </select> + <delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> + <!--@mbg.generated--> + delete from se_general + where id = #{id,jdbcType=BIGINT} + </delete> + <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeGeneral"> + <!--@mbg.generated--> + insert into se_general (id, cashier_name, trade_amount, + gift, total_amount, operate_date, + audit_status) + values (#{id,jdbcType=BIGINT}, #{cashierName,jdbcType=VARCHAR}, #{tradeAmount,jdbcType=FLOAT}, + #{gift,jdbcType=FLOAT}, #{totalAmount,jdbcType=FLOAT}, #{operateDate,jdbcType=TIMESTAMP}, + #{auditStatus,jdbcType=TINYINT}) + </insert> + <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeGeneral"> + <!--@mbg.generated--> + insert into se_general + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="id != null"> + id, + </if> + <if test="cashierName != null"> + cashier_name, + </if> + <if test="tradeAmount != null"> + trade_amount, + </if> + <if test="gift != null"> + gift, + </if> + <if test="totalAmount != null"> + total_amount, + </if> + <if test="operateDate != null"> + operate_date, + </if> + <if test="auditStatus != null"> + audit_status, + </if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="id != null"> + #{id,jdbcType=BIGINT}, + </if> + <if test="cashierName != null"> + #{cashierName,jdbcType=VARCHAR}, + </if> + <if test="tradeAmount != null"> + #{tradeAmount,jdbcType=FLOAT}, + </if> + <if test="gift != null"> + #{gift,jdbcType=FLOAT}, + </if> + <if test="totalAmount != null"> + #{totalAmount,jdbcType=FLOAT}, + </if> + <if test="operateDate != null"> + #{operateDate,jdbcType=TIMESTAMP}, + </if> + <if test="auditStatus != null"> + #{auditStatus,jdbcType=TINYINT}, + </if> + </trim> + </insert> + <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeGeneral"> + <!--@mbg.generated--> + update se_general + <set> + <if test="cashierName != null"> + cashier_name = #{cashierName,jdbcType=VARCHAR}, + </if> + <if test="tradeAmount != null"> + trade_amount = #{tradeAmount,jdbcType=FLOAT}, + </if> + <if test="gift != null"> + gift = #{gift,jdbcType=FLOAT}, + </if> + <if test="totalAmount != null"> + total_amount = #{totalAmount,jdbcType=FLOAT}, + </if> + <if test="operateDate != null"> + operate_date = #{operateDate,jdbcType=TIMESTAMP}, + </if> + <if test="auditStatus != null"> + audit_status = #{auditStatus,jdbcType=TINYINT}, + </if> + </set> + where id = #{id,jdbcType=BIGINT} + </update> + <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeGeneral"> + <!--@mbg.generated--> + update se_general + set cashier_name = #{cashierName,jdbcType=VARCHAR}, + trade_amount = #{tradeAmount,jdbcType=FLOAT}, + gift = #{gift,jdbcType=FLOAT}, + total_amount = #{totalAmount,jdbcType=FLOAT}, + operate_date = #{operateDate,jdbcType=TIMESTAMP}, + audit_status = #{auditStatus,jdbcType=TINYINT} + where id = #{id,jdbcType=BIGINT} + </update> + + <!--鑾峰彇鏈敓鎴愭�昏处鐨勪氦鏄撴棩鏈熷垪琛紙褰撳ぉ鐨勪氦鏄撹褰曚笉鐢熸垚鎬昏处锛�--> + <select id="getDatesOfNotInGenerals" resultType="java.util.HashMap"> + SELECT + DISTINCT Date(ope.operate_dt) AS operateDate + FROM se_card_operate ope + WHERE Date(ope.operate_dt) NOT IN(SELECT operate_date FROM se_general) AND Date(ope.operate_dt) != CURDATE() + </select> + + <!--鏍规嵁浜ゆ槗鏃ユ湡鑾峰彇鎬昏处璁板綍鍒楄〃锛堝緟鐢熸垚鐨勶級 --> + <select id="getGeneralByOperateDate" resultType="com.dy.pipIrrGlobal.pojoSe.SeGeneral"> + SELECT + us.`name` AS cashierName, + IFNULL(SUM(ope.trade_amount),0) AS tradeAmount, + IFNULL(SUM(ope.gift),0) AS gift, + IFNULL((SUM(ope.trade_amount) + SUM(ope.gift)),0) AS totalAmount, + Date(ope.operate_dt) AS operateDate, + 1 AS auditStatus + FROM se_card_operate ope + INNER JOIN ba_user us ON ope.operator = us.id + WHERE Date(ope.operate_dt) = #{operateDate} + GROUP BY ope.operator, Date(ope.operate_dt) + </select> + + <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鎬昏处璁板綍鏁�--> + <select id="getRecordCount" parameterType="java.util.Map" resultType="java.lang.Long"> + SELECT + COUNT(*) AS recordCount + FROM se_general + <where> + <if test = "cashierName != null and cashierName !=''"> + AND cashier_name like CONCAT('%',#{cashierName},'%') + </if> + + <if test = "auditStatus != null and auditStatus > 0"> + AND audit_status = ${auditStatus} + </if> + + <if test = "operateDateStart != null and operateDateStop != null"> + AND Date(operate_date) BETWEEN #{operateDateStart} AND #{operateDateStop} + </if> + </where> + </select> + + <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鎬昏处璁板綍--> + <select id="getGenerals" resultType="com.dy.pipIrrGlobal.voSe.VoGeneral"> + SELECT + id AS generalId, + cashier_name AS cashierName, + trade_amount AS tradeAmount, + gift, + total_amount AS totalAmount, + Date(operate_date) AS operateDate, + (CASE + WHEN audit_status = 1 THEN "鏈鏍�" + WHEN audit_status = 2 THEN "鍚屾剰" + WHEN audit_status = 3 THEN "椹冲洖" + END) AS auditStatus + FROM se_general + <where> + <if test = "cashierName != null and cashierName !=''"> + AND cashier_name like CONCAT('%',#{cashierName},'%') + </if> + + <if test = "auditStatus != null and auditStatus > 0"> + AND audit_status = ${auditStatus} + </if> + + <if test = "operateDateStart != null and operateDateStop != null"> + AND Date(operate_date) BETWEEN #{operateDateStart} AND #{operateDateStop} + </if> + </where> + ORDER BY Date(operate_date) DESC + <if test="pageCurr != null and pageSize != null"> + LIMIT ${pageCurr}, ${pageSize} + </if> + </select> + +</mapper> \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralCtrl.java new file mode 100644 index 0000000..6452465 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralCtrl.java @@ -0,0 +1,167 @@ +package com.dy.pipIrrSell.general; + +import com.dy.common.aop.SsoAop; +import com.dy.common.webUtil.BaseResponse; +import com.dy.common.webUtil.BaseResponseUtils; +import com.dy.common.webUtil.QueryResultVo; +import com.dy.common.webUtil.ResultCodeMsg; +import com.dy.pipIrrGlobal.pojoBa.BaClient; +import com.dy.pipIrrGlobal.pojoSe.SeAudits; +import com.dy.pipIrrGlobal.pojoSe.SeGeneral; +import com.dy.pipIrrGlobal.voSe.VoGeneral; +import com.dy.pipIrrSell.general.dto.DtoGeneral; +import com.dy.pipIrrSell.general.qo.QoGeneral; +import com.dy.pipIrrSell.result.SellResultCode; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.MediaType; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import java.util.*; + +/** + * @author ZhuBaoMin + * @date 2024-01-24 19:01 + * @LastEditTime 2024-01-24 19:01 + * @Description + */ + +@Slf4j +@Tag(name = "鎬昏处绠$悊", description = "鎬昏处绠$悊") +@RestController +@RequestMapping(path="general") +@RequiredArgsConstructor +public class GeneralCtrl { + private final GeneralSv generalSv; + + /** + * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鎬昏处璁板綍 + * 鏌ヨ鍓嶅厛鐢熸垚鏈敓鎴愮殑鎬昏处璁板綍 + * @param vo + * @return + */ + @Operation(summary = "鑾峰彇鎬昏处璁板綍", description = "鑾峰彇鎬昏处璁板綍") + @ApiResponses(value = { + @ApiResponse( + responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, + description = "杩斿洖涓�椤靛啘鎴锋暟鎹紙BaseResponse.content:QueryResultVo[{}]锛�", + content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, + schema = @Schema(implementation = BaClient.class))} + ) + }) + @GetMapping(path = "get_generals") + @SsoAop() + public BaseResponse<QueryResultVo<List<VoGeneral>>> getOperates(QoGeneral vo){ + try { + add_general(); + QueryResultVo<List<VoGeneral>> res = generalSv.getGenerals(vo); + return BaseResponseUtils.buildSuccess(res); + } catch (Exception e) { + log.error("鏌ヨ浜ゆ槗璁板綍寮傚父", e); + return BaseResponseUtils.buildException(e.getMessage()) ; + } + } + + /** + * 鐢熸垚鎬昏处 + * 鑾峰彇鏈敓鎴愭�昏处鐨勪氦鏄撴棩鏈熷垪琛紙褰撳ぉ鐨勪氦鏄撹褰曚笉鐢熸垚鎬昏处锛� + * 灏嗘寚瀹氭棩鏈熺殑浜ゆ槗璁板綍姹囨�诲埌鎬昏处琛� + * @return + */ + public void add_general(){ + // 鑾峰彇鏈敓鎴愭�昏处鐨勪氦鏄撴棩鏈熷垪琛紙褰撳ぉ鐨勪氦鏄撹褰曚笉鐢熸垚鎬昏处锛� + List<Map<String, Object>> list_operateDate = Optional.ofNullable(generalSv.getDatesOfNotInGenerals()).orElse(new ArrayList<>()); + if(list_operateDate.size() > 0) { + for(int i = 0; i < list_operateDate.size(); i++) { + String operateDate = list_operateDate.get(i).get("operateDate").toString(); + // 鏍规嵁浜ゆ槗鏃ユ湡鑾峰彇鎬昏处璁板綍鍒楄〃锛堝緟鐢熸垚鐨勶級 + List<SeGeneral> list_general = Optional.ofNullable(generalSv.getGeneralByOperateDate(operateDate)).orElse(new ArrayList<>()); + if(list_general.size() > 0) { + for(int j = 0; j < list_general.size(); j++) { + SeGeneral general = list_general.get(j); + generalSv.addGeneral(general); + } + } + + } + } + } + + /** + * 瀹℃牳鎬昏处 + * 1. 淇敼鎬昏处瀹℃牳鐘舵�� + * 2. 娣诲姞鎬昏处瀹℃牳璁板綍 + * @param po + * @param bindingResult + * @return + */ + @Operation(summary = "瀹℃牳鎬昏处", description = "瀹℃牳鎬昏处") + @ApiResponses(value = { + @ApiResponse( + responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, + description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�", + content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, + schema = @Schema(implementation = Boolean.class))} + ) + }) + @PostMapping(path = "audit", consumes = MediaType.APPLICATION_JSON_VALUE) + @Transactional(rollbackFor = Exception.class) + @SsoAop() + public BaseResponse<Boolean> audit(@RequestBody @Valid DtoGeneral po, BindingResult bindingResult){ + if(bindingResult != null && bindingResult.hasErrors()){ + return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + Long generalId = po.getGeneralId(); + Byte auditStatus = po.getAuditStatus(); + String auditOpinion = po.getAuditOpinion(); + Long operator = po.getOperator(); + Date auditTime = new Date(); + + if(generalId == null) { + return BaseResponseUtils.buildFail(SellResultCode.GENERAL_ID_CANNOT_BE_NULL.getMessage()); + } + + /** + * 鍒ゆ柇鎬昏处鏄惁瀛樺湪 + */ + if(generalSv.getGeneralById(generalId) == null) { + return BaseResponseUtils.buildFail(SellResultCode.GENERAL_NOT_EXIST.getMessage()); + } + + /** + * 淇敼鎬昏处瀹℃牳鐘舵�� + */ + SeGeneral seGeneral = new SeGeneral(); + seGeneral.setId(generalId); + seGeneral.setAuditStatus(auditStatus); + Integer rec_updateGeneral = Optional.ofNullable(generalSv.updateGeneral(seGeneral)).orElse(0); + if(rec_updateGeneral == 0) { + return BaseResponseUtils.buildFail(SellResultCode.GENERAL_AUDIT_FAIL.getMessage()); + } + + /** + * 娣诲姞鎬昏处瀹℃牳璁板綍 + */ + SeAudits seAudits = new SeAudits(); + seAudits.setGeneralId(generalId); + seAudits.setAuditStatus(auditStatus); + seAudits.setAuditOpinion(auditOpinion); + seAudits.setOperator(operator); + seAudits.setOperateDt(auditTime); + Integer rec_addAucits = Optional.ofNullable(generalSv.addAudits(seAudits)).orElse(0); + if(rec_addAucits == 0) { + return BaseResponseUtils.buildFail(SellResultCode.AUDITS_ADD_FAIL.getMessage()); + } + + return BaseResponseUtils.buildSuccess() ; + } +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralSv.java new file mode 100644 index 0000000..8e4279e --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralSv.java @@ -0,0 +1,115 @@ +package com.dy.pipIrrSell.general; + +import com.dy.common.webUtil.QueryResultVo; +import com.dy.pipIrrGlobal.daoSe.SeAuditsMapper; +import com.dy.pipIrrGlobal.daoSe.SeGeneralMapper; +import com.dy.pipIrrGlobal.pojoSe.SeAudits; +import com.dy.pipIrrGlobal.pojoSe.SeGeneral; +import com.dy.pipIrrGlobal.voSe.VoGeneral; +import com.dy.pipIrrSell.general.qo.QoGeneral; +import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.common.utils.PojoUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + * @author ZhuBaoMin + * @date 2024-01-24 19:02 + * @LastEditTime 2024-01-24 19:02 + * @Description + */ + +@Slf4j +@Service +public class GeneralSv { + @Autowired + private SeGeneralMapper seGeneralMapper; + + @Autowired + private SeAuditsMapper seAuditsMapper; + + /** + * 鑾峰彇鏈敓鎴愭�昏处鐨勪氦鏄撴棩鏈熷垪琛紙褰撳ぉ鐨勪氦鏄撹褰曚笉鐢熸垚鎬昏处锛� + * @return + */ + public List<Map<String, Object>> getDatesOfNotInGenerals() { + return seGeneralMapper.getDatesOfNotInGenerals(); + } + + /** + * 娣诲姞鎬昏处 + * @param po 鎬昏处瀵硅薄 + * @return + */ + public Integer addGeneral(SeGeneral po) { + return seGeneralMapper.insert(po); + } + + /** + * 鏍规嵁浜ゆ槗鏃ユ湡鑾峰彇鎬昏处璁板綍鍒楄〃锛堝緟鐢熸垚鐨勶級 + * @param operateDate 浜ゆ槗鏃ユ湡 + * @return 鍙栨�昏处璁板綍鍒楄〃 + */ + public List<SeGeneral> getGeneralByOperateDate(String operateDate) { + return seGeneralMapper.getGeneralByOperateDate(operateDate); + } + + /** + * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鎬昏处璁板綍 + * @param queryVo + * @return + */ + public QueryResultVo<List<VoGeneral>> getGenerals(QoGeneral queryVo) { + Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo); + + Long itemTotal = seGeneralMapper.getRecordCount(params); + + QueryResultVo<List<VoGeneral>> rsVo = new QueryResultVo<>() ; + Integer pageCurr = 0; + Integer pageSize = 10000; + rsVo.pageCurr = 1; + rsVo.pageSize = 10000; + if(queryVo.pageSize != null && queryVo.pageCurr != null) { + rsVo.pageSize = queryVo.pageSize ; + rsVo.pageCurr = queryVo.pageCurr; + pageSize = queryVo.pageSize ; + pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString()); + } + params.put("pageCurr", pageCurr); + params.put("pageSize", pageSize); + + rsVo.calculateAndSet(itemTotal, params); + rsVo.obj = seGeneralMapper.getGenerals(params); + return rsVo ; + } + + /** + * 淇敼鎬昏处瀹℃牳鎰忚 + * @param po + * @return + */ + public Integer updateGeneral(SeGeneral po) { + return seGeneralMapper.updateByPrimaryKeySelective(po); + } + + /** + * 鏍规嵁缂栧彿鏌ヨ鎬昏处 + * @param id + * @return + */ + public SeGeneral getGeneralById(Long id) { + return seGeneralMapper.selectByPrimaryKey(id); + } + + /** + * t娣诲姞鎬昏处瀹℃牳璁板綍 + * @param po + * @return + */ + public Integer addAudits(SeAudits po) { + return seAuditsMapper.insert(po); + } +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/dto/DtoGeneral.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/dto/DtoGeneral.java new file mode 100644 index 0000000..92985c7 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/dto/DtoGeneral.java @@ -0,0 +1,54 @@ +package com.dy.pipIrrSell.general.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Positive; +import lombok.*; +import org.hibernate.validator.constraints.Length; + +/** + * @author ZhuBaoMin + * @date 2024-01-25 10:19 + * @LastEditTime 2024-01-25 10:19 + * @Description + */ + +@Data +@Builder +@ToString +@NoArgsConstructor +@AllArgsConstructor +@Schema(name = "鎬昏处瀹℃牳浼犲叆瀵硅薄") +public class DtoGeneral { + public static final long serialVersionUID = 202401251020001L; + + /** + * 鎬昏处ID + */ + @Schema(description = "鎬昏处ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @NotNull(message = "鎬昏处ID涓嶈兘涓虹┖") + @Positive(message = "鎬昏处缂栧彿蹇呴』涓哄ぇ浜�0鐨勬暣鏁�") + private Long generalId; + + /** + * 瀹℃牳鐘舵�� + */ + @Schema(description = "瀹℃牳鐘舵��", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @NotNull(message = "瀹℃牳鐘舵�佷笉鑳戒负绌�") + private Byte auditStatus; + + /** + * 瀹℃牳鎰忚 + */ + @Schema(description = "瀹℃牳鎰忚", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @Length(max = 200, message = "瀹℃牳鎰忚鏈�澶�200瀛�") + private String auditOpinion; + + /** + * 鎿嶄綔浜虹紪鍙� + */ + @Schema(description = "鎿嶄綔浜虹紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + @NotNull(message = "鎿嶄綔浜虹紪鍙蜂笉鑳戒负绌�") + @Positive(message = "鎿嶄綔浜虹紪鍙峰繀椤讳负澶т簬0鐨勬暣鏁�") + private Long operator; +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/qo/QoGeneral.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/qo/QoGeneral.java new file mode 100644 index 0000000..fde1f9a --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/qo/QoGeneral.java @@ -0,0 +1,34 @@ +package com.dy.pipIrrSell.general.qo; + +import com.dy.common.webUtil.QueryConditionVo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +/** + * @author ZhuBaoMin + * @date 2024-01-24 20:25 + * @LastEditTime 2024-01-24 20:25 + * @Description + */ + +@Data +@EqualsAndHashCode(callSuper = false) +@ToString(callSuper = true) +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Schema(name = "鎬昏处鏌ヨ鏉′欢") +public class QoGeneral extends QueryConditionVo { + @Schema(description = "鏀堕摱鍛樺鍚�") + public String cashierName; + + @Schema(description = "浜ゆ槗鏌ヨ璧峰鏃ユ湡") + public String operateDateStart; + + @Schema(description = "浜ゆ槗鏌ヨ鎴鏃ユ湡") + public String operateDateStop; + + @Schema(description = "瀹℃牳鐘舵��") + private Byte auditStatus; + +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java index cb938b5..2f0b41e 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java @@ -60,7 +60,15 @@ /** * 琛ユ墸 */ - REFUND_FAIL_WRITE_REFUND_ERROR(70001, "琛ユ墸澶辫触-琛ユ墸璁板綍鍐欏叆寮傚父"); + REFUND_FAIL_WRITE_REFUND_ERROR(70001, "琛ユ墸澶辫触-琛ユ墸璁板綍鍐欏叆寮傚父"), + + /** + * 鎬昏处 + */ + GENERAL_ID_CANNOT_BE_NULL(80001, "鎬昏处缂栧彿涓嶈兘涓虹┖"), + GENERAL_NOT_EXIST(80001, "鎬昏处涓嶅瓨鍦�"), + GENERAL_AUDIT_FAIL(80001, "鎬昏处瀹℃牳澶辫触"), + AUDITS_ADD_FAIL(80001, "鎬昏处瀹℃牳璁板綍娣诲姞澶辫触"); private final Integer code; private final String message; -- Gitblit v1.8.0