changhaoning 2 лет назад
Родитель
Сommit
e80124f6a8

+ 12 - 4
src/main/java/com/dk/mdm/controller/pur/PurchaseController.java

@@ -8,15 +8,13 @@ import com.dk.mdm.model.query.pur.PurchaseQuery;
 import com.dk.mdm.model.response.pur.PurchaseResponse;
 import com.dk.mdm.model.vo.pur.PurchaseVO;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RestController;
 import io.swagger.annotations.Api;
 import com.dk.mdm.service.pur.PurchaseService;
 
 import javax.validation.Valid;
+import java.util.Map;
 
 @Api(tags = "采购订单API接口")
 @RestController
@@ -53,6 +51,16 @@ public class PurchaseController{
         return purchaseService.insert(Purchasevo);
     }
 
+    /**
+     * @desc   : 通过ID查询
+     * @author : 常皓宁
+     * @date   : 2024/2/28 14:56
+     */
+    @PostMapping({"/{id}"})
+    public ResponseResultVO selectById(@PathVariable String id) {
+        return purchaseService.selectById(id);
+    }
+
     @ApiOperation(
             value = "编辑",
             notes = "编辑"

+ 45 - 0
src/main/java/com/dk/mdm/controller/pur/PurchaseItemController.java

@@ -0,0 +1,45 @@
+package com.dk.mdm.controller.pur;
+
+import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseResultVO;
+import com.dk.mdm.model.pojo.pur.PurchaseItem;
+import com.dk.common.controller.BaseController;
+import com.dk.common.service.BaseService;
+import com.dk.mdm.model.query.pur.PurchaseItemQuery;
+import com.dk.mdm.model.response.pur.PurchaseItemResponse;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RestController;
+import io.swagger.annotations.Api;
+import com.dk.mdm.service.pur.PurchaseItemService;
+
+@Api(tags = "采购明细API接口")
+@RestController
+@RequestMapping("/pur/purchaseItem")
+public class PurchaseItemController{
+
+    public BaseService<PurchaseItem> getService() {
+        return purchaseItemService;
+    }
+
+    @Autowired
+    private PurchaseItemService purchaseItemService;
+
+    /**
+     * @desc   : 条件查询
+     * @author : 常皓宁
+     * @date   : 2024/2/28 15:11
+     */
+    @ApiOperation(
+            value = "分页、关联、条件查询",
+            notes = "分页、关联、条件查询"
+    )
+    @PostMapping({"list_by"})
+    public ResponseResultVO<PageList<PurchaseItemResponse>> selectByCond(@RequestBody PurchaseItemQuery purchaseItemQuery) {
+        return purchaseItemService.selectByCond(purchaseItemQuery);
+    }
+
+}

+ 31 - 0
src/main/java/com/dk/mdm/mapper/pur/PurchaseItemMapper.java

@@ -0,0 +1,31 @@
+package com.dk.mdm.mapper.pur;
+
+import com.dk.mdm.model.pojo.pur.PurchaseItem;
+import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.query.pur.PurchaseItemQuery;
+import com.dk.mdm.model.response.pur.PurchaseItemResponse;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+*  采购明细 Mapper
+*/
+@Repository
+public interface PurchaseItemMapper extends BaseMapper<PurchaseItem>{
+    /**
+     * @desc   : 条件查询
+     * @author : 常皓宁
+     * @date   : 2024/2/28 15:17
+     */
+    List<PurchaseItemResponse> selectByCond(PurchaseItemQuery purchaseItemQuery);
+
+    /**
+     * @desc   : 根据条件进行查询(数量)
+     * @author : 常皓宁
+     * @date   : 2024/2/28 15:17
+     */
+    Long countByCond(PurchaseItemQuery purchaseItemQuery);
+	
+}
+

+ 237 - 0
src/main/java/com/dk/mdm/mapper/pur/PurchaseItemMapper.xml

@@ -0,0 +1,237 @@
+<?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.dk.mdm.mapper.pur.PurchaseItemMapper">
+
+    <!-- 通用设置 -->
+    <!-- 通用查询列 -->
+    <sql id="Base_Column_List">
+        item_id, pur_id, item_index, sku_id, item_qty, price_std, amt_std, price_pur, item_amt, price_discount, non_std_code, into_status, intoing_qty, intoing_amt, into_qty, into_amt, return_qty, return_amt, remarks, flg_valid, cp_id, op_create_time, op_create_user_id, op_update_time, op_update_user_id, op_app_code, op_timestamp, op_db_user
+    </sql>
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.dk.mdm.model.pojo.pur.PurchaseItem">
+        <id column="item_id" property="itemId"/>
+                <result column="pur_id" property="purId" typeHandler="UuidTypeHandler"/>
+                <result column="item_index" property="itemIndex"/>
+                <result column="sku_id" property="skuId" typeHandler="UuidTypeHandler"/>
+                <result column="item_qty" property="itemQty"/>
+                <result column="price_std" property="priceStd"/>
+                <result column="amt_std" property="amtStd"/>
+                <result column="price_pur" property="pricePur"/>
+                <result column="item_amt" property="itemAmt"/>
+                <result column="price_discount" property="priceDiscount"/>
+                <result column="non_std_code" property="nonStdCode"/>
+                <result column="into_status" property="intoStatus"/>
+                <result column="intoing_qty" property="intoingQty"/>
+                <result column="intoing_amt" property="intoingAmt"/>
+                <result column="into_qty" property="intoQty"/>
+                <result column="into_amt" property="intoAmt"/>
+                <result column="return_qty" property="returnQty"/>
+                <result column="return_amt" property="returnAmt"/>
+                <result column="remarks" property="remarks"/>
+                <result column="flg_valid" property="flgValid"/>
+                <result column="cp_id" property="cpId"/>
+            <result column="op_create_time" property="opCreateTime" typeHandler="TimestampTypeHandler"/>
+                <result column="op_create_user_id" property="opCreateUserId" typeHandler="UuidTypeHandler"/>
+            <result column="op_update_time" property="opUpdateTime" typeHandler="TimestampTypeHandler"/>
+                <result column="op_update_user_id" property="opUpdateUserId" typeHandler="UuidTypeHandler"/>
+                <result column="op_app_code" property="opAppCode"/>
+            <result column="op_timestamp" property="opTimestamp" typeHandler="TimestampTypeHandler"/>
+                <result column="op_db_user" property="opDbUser"/>
+    </resultMap>
+
+    <!-- 通用条件列 -->
+    <sql id="Condition">
+        <where>
+            <if test="purId != null and purId != ''">
+                AND pur_id = #{purId}
+            </if>
+            <if test="itemIndex != null">
+                AND item_index = #{itemIndex}
+            </if>
+            <if test="skuId != null and skuId != ''">
+                AND sku_id = #{skuId}
+            </if>
+            <if test="itemQty != null">
+                AND item_qty = #{itemQty}
+            </if>
+            <if test="priceStd != null">
+                AND price_std = #{priceStd}
+            </if>
+            <if test="amtStd != null">
+                AND amt_std = #{amtStd}
+            </if>
+            <if test="pricePur != null">
+                AND price_pur = #{pricePur}
+            </if>
+            <if test="itemAmt != null">
+                AND item_amt = #{itemAmt}
+            </if>
+            <if test="priceDiscount != null">
+                AND price_discount = #{priceDiscount}
+            </if>
+            <if test="nonStdCode != null and nonStdCode != ''">
+                AND non_std_code = #{nonStdCode}
+            </if>
+            <if test="intoStatus != null and intoStatus != ''">
+                AND into_status = #{intoStatus}
+            </if>
+            <if test="intoingQty != null">
+                AND intoing_qty = #{intoingQty}
+            </if>
+            <if test="intoingAmt != null">
+                AND intoing_amt = #{intoingAmt}
+            </if>
+            <if test="intoQty != null">
+                AND into_qty = #{intoQty}
+            </if>
+            <if test="intoAmt != null">
+                AND into_amt = #{intoAmt}
+            </if>
+            <if test="returnQty != null">
+                AND return_qty = #{returnQty}
+            </if>
+            <if test="returnAmt != null">
+                AND return_amt = #{returnAmt}
+            </if>
+            <if test="remarks != null and remarks != ''">
+                AND remarks = #{remarks}
+            </if>
+            <if test="flgValid != null">
+                AND flg_valid = #{flgValid}
+            </if>
+            <if test="cpId != null">
+                AND cp_id = #{cpId}
+            </if>
+            <if test="opCreateTime != null">
+                AND op_create_time = #{opCreateTime}
+            </if>
+            <if test="opCreateUserId != null and opCreateUserId != ''">
+                AND op_create_user_id = #{opCreateUserId}
+            </if>
+            <if test="opUpdateTime != null">
+                AND op_update_time = #{opUpdateTime}
+            </if>
+            <if test="opUpdateUserId != null and opUpdateUserId != ''">
+                AND op_update_user_id = #{opUpdateUserId}
+            </if>
+            <if test="opAppCode != null and opAppCode != ''">
+                AND op_app_code = #{opAppCode}
+            </if>
+            <if test="opTimestamp != null">
+                AND op_timestamp = #{opTimestamp}
+            </if>
+            <if test="opDbUser != null and opDbUser != ''">
+                AND op_db_user = #{opDbUser}
+            </if>
+        </where>
+    </sql>
+
+    <sql id="idsForeach">
+        <!-- 根据主键itemId批量操作 -->
+        WHERE item_id in
+        <foreach collection="ids" index="index" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </sql>
+
+    <!-- 查询表dkic_b.t_psi_purchase_item,(条件查询+分页)列表 -->
+    <select id="selectByCond" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM dkic_b.t_psi_purchase_item
+        <include refid="Condition"/>
+        <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
+            limit #{end} offset #{start}
+        </if>
+    </select>
+
+    <!-- 查询表dkic_b.t_psi_purchase_item,(条件查询)个数 -->
+    <select id="countByCond" resultType="Long">
+        SELECT
+        count(1)
+        FROM dkic_b.t_psi_purchase_item
+        <include refid="Condition"/>
+    </select>
+
+    <!-- 根据主键查询表dkic_b.t_psi_purchase_item的一行数据 -->
+    <select id="selectById" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM dkic_b.t_psi_purchase_item
+        WHERE item_id = #{itemId}::uuid
+    </select>
+
+    <!-- 根据主键锁定表dkic_b.t_psi_purchase_item的一行数据 -->
+    <select id="selectByIdForUpdate" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM dkic_b.t_psi_purchase_item
+        WHERE item_id = #{itemId}
+        for update
+    </select>
+
+    <!-- 根据主键锁定表dkic_b.t_psi_purchase_item的多行数据 -->
+    <select id="selectByIdsForUpdate" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM dkic_b.t_psi_purchase_item
+        <include refid="idsForeach"/>
+        for update
+    </select>
+
+    <insert id="insertBatch">
+        insert into dkic_b.t_psi_purchase_item
+        (
+        <trim suffixOverrides=",">
+            pur_id,
+            item_index,
+            sku_id,
+            item_qty,
+            price_std,
+            amt_std,
+            price_pur,
+            item_amt,
+            price_discount,
+            non_std_code,
+            into_status,
+            intoing_qty,
+            intoing_amt,
+            into_qty,
+            into_amt,
+            return_qty,
+            return_amt,
+            remarks,
+            cp_id,
+            op_app_code,
+        </trim>
+        )
+        values
+        <foreach collection="list" index="index" item="item" separator=",">
+            (
+            <trim suffixOverrides=",">
+                #{item.purId}::uuid,
+                #{item.itemIndex},
+                #{item.skuId}::uuid,
+                #{item.itemQty},
+                #{item.priceStd},
+                #{item.amtStd},
+                #{item.pricePur},
+                #{item.itemAmt},
+                #{item.priceDiscount},
+                #{item.nonStdCode},
+                #{item.intoStatus},
+                #{item.intoingQty},
+                #{item.intoingAmt},
+                #{item.intoQty},
+                #{item.intoAmt},
+                #{item.returnQty},
+                #{item.returnAmt},
+                #{item.remarks},
+                #{item.cpId},
+                #{item.opAppCode},
+            </trim>
+            )
+        </foreach>
+    </insert>
+</mapper>

+ 10 - 1
src/main/java/com/dk/mdm/mapper/pur/PurchaseMapper.java

@@ -4,6 +4,8 @@ import com.dk.mdm.model.pojo.pur.Purchase;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.mdm.model.query.pur.PurchaseQuery;
 import com.dk.mdm.model.response.pur.PurchaseResponse;
+import com.dk.mdm.model.vo.pur.PurchaseVO;
+import io.swagger.models.auth.In;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
@@ -35,7 +37,14 @@ public interface PurchaseMapper extends BaseMapper<Purchase>{
      * @author : 常皓宁
      * @date   : 2024/2/28 9:35
      */
-    String getDocNo(@Param("cpId") Long cpId, @Param("purId") String purId, @Param("docCode") String docCode);
+    String getDocNo(@Param("cpId") Integer cpId, @Param("purId") String purId, @Param("docCode") String docCode);
+
+    /**
+     * @desc   : 采购订单号赋值
+     * @author : 常皓宁
+     * @date   : 2024/2/28 13:18
+     */
+    void updatePurNO(PurchaseVO purchasevo);
 
 
 }

+ 11 - 0
src/main/java/com/dk/mdm/mapper/pur/PurchaseMapper.xml

@@ -386,4 +386,15 @@
     <select id="getDocNo" resultType="java.lang.String">
         select f_create_doc_no(#{cpId}, #{purId}, #{docCode})
     </select>
+
+    <!--修改采购订单号-->
+    <update id="updatePurNO" parameterType="com.dk.mdm.model.pojo.pur.Purchase">
+        update dkic_b.t_psi_purchase
+        <set>
+            <if test="purNo != null">
+                pur_no= #{purNo},
+            </if>
+        </set>
+        where pur_id = #{purId}::uuid
+    </update>
 </mapper>

+ 289 - 0
src/main/java/com/dk/mdm/model/pojo/pur/PurchaseItem.java

@@ -0,0 +1,289 @@
+package com.dk.mdm.model.pojo.pur;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.*;
+import java.io.Serializable;
+
+import com.dk.common.infrastructure.annotaiton.ExportTitle;
+import com.dk.common.infrastructure.handler.*;
+import com.dk.common.model.pojo.PageInfo;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.alibaba.fastjson.JSONObject;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.time.LocalDateTime;
+
+/**
+ *  采购明细
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@ExportTitle("采购明细")
+@TableName(value = "t_psi_purchase_item", autoResultMap = true)
+@ApiModel(value="实体类:采购明细", description="表名:t_psi_purchase_item")
+public class PurchaseItem extends PageInfo<PurchaseItem> implements Serializable {
+
+    /*
+     * 数据库字段
+     */
+
+    /**
+     * 明细ID
+     */
+    @TableId(value = "item_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "明细ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String itemId;
+
+
+    /**
+     * 订单ID
+     */
+    @Excel(name = "订单ID")
+    @ApiModelProperty(value = "订单ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String purId;
+
+
+    /**
+     * 商品顺序
+     */
+    @Excel(name = "商品顺序")
+    @ApiModelProperty(value = "商品顺序")
+    private Integer itemIndex;
+
+
+    /**
+     * 商品ID
+     */
+    @Excel(name = "商品ID")
+    @ApiModelProperty(value = "商品ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String skuId;
+
+
+    /**
+     * 商品数量
+     */
+    @Excel(name = "商品数量")
+    @ApiModelProperty(value = "商品数量")
+    private BigDecimal itemQty;
+
+
+    /**
+     * 标价
+     */
+    @Excel(name = "标价")
+    @ApiModelProperty(value = "标价")
+    private BigDecimal priceStd;
+
+
+    /**
+     * 标价金额 (商品数量*标价)
+     */
+    @Excel(name = "标价金额 (商品数量*标价)")
+    @ApiModelProperty(value = "标价金额 (商品数量*标价)")
+    private BigDecimal amtStd;
+
+
+    /**
+     * 采购价
+     */
+    @Excel(name = "采购价")
+    @ApiModelProperty(value = "采购价")
+    private BigDecimal pricePur;
+
+
+    /**
+     * 采购金额 (商品数量*采购价)
+     */
+    @Excel(name = "采购金额 (商品数量*采购价)")
+    @ApiModelProperty(value = "采购金额 (商品数量*采购价)")
+    private BigDecimal itemAmt;
+
+
+    /**
+     * 折扣 (采购价/标价)
+     */
+    @Excel(name = "折扣 (采购价/标价)")
+    @ApiModelProperty(value = "折扣 (采购价/标价)")
+    private BigDecimal priceDiscount;
+
+
+    /**
+     * 非标号
+     */
+    @Excel(name = "非标号")
+    @ApiModelProperty(value = "非标号")
+    private String nonStdCode;
+
+
+    /**
+     * 入库状态 (【系统字典】)
+     */
+    @Excel(name = "入库状态 (【系统字典】)")
+    @ApiModelProperty(value = "入库状态 (【系统字典】)")
+    private String intoStatus;
+
+
+    /**
+     * 入库中数量
+     */
+    @Excel(name = "入库中数量")
+    @ApiModelProperty(value = "入库中数量")
+    private BigDecimal intoingQty;
+
+
+    /**
+     * 入库中金额
+     */
+    @Excel(name = "入库中金额")
+    @ApiModelProperty(value = "入库中金额")
+    private BigDecimal intoingAmt;
+
+
+    /**
+     * 已入库数量
+     */
+    @Excel(name = "已入库数量")
+    @ApiModelProperty(value = "已入库数量")
+    private BigDecimal intoQty;
+
+
+    /**
+     * 已入库金额
+     */
+    @Excel(name = "已入库金额")
+    @ApiModelProperty(value = "已入库金额")
+    private BigDecimal intoAmt;
+
+
+    /**
+     * 已入库退货数量
+     */
+    @Excel(name = "已入库退货数量")
+    @ApiModelProperty(value = "已入库退货数量")
+    private BigDecimal returnQty;
+
+
+    /**
+     * 已入库退货金额
+     */
+    @Excel(name = "已入库退货金额")
+    @ApiModelProperty(value = "已入库退货金额")
+    private BigDecimal returnAmt;
+
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+
+    /**
+     * 有效标识 (1:正常 0:停用)
+     */
+    @Excel(name = "有效标识 (1:正常 0:停用)")
+    @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
+    private Boolean flgValid;
+
+
+    /**
+     * 企业ID
+     */
+    @Excel(name = "企业ID")
+    @ApiModelProperty(value = "企业ID")
+    private Integer cpId;
+
+
+    /**
+     * 创建时间 (触发器自动处理)
+     */
+    @Excel(name = "创建时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "创建时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opCreateTime;
+
+
+    /**
+     * 创建用户 (触发器自动处理)
+     */
+    @Excel(name = "创建用户 (触发器自动处理)")
+    @ApiModelProperty(value = "创建用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opCreateUserId;
+
+
+    /**
+     * 修改时间 (触发器自动处理)
+     */
+    @Excel(name = "修改时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "修改时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opUpdateTime;
+
+
+    /**
+     * 修改用户 (触发器自动处理)
+     */
+    @Excel(name = "修改用户 (触发器自动处理)")
+    @ApiModelProperty(value = "修改用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opUpdateUserId;
+
+
+    /**
+     * 数据操作应用 (触发器自动处理)
+     */
+    @Excel(name = "数据操作应用 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作应用 (触发器自动处理)")
+    private String opAppCode;
+
+
+    /**
+     * 数据时间戳 (触发器自动处理)
+     */
+    @Excel(name = "数据时间戳 (触发器自动处理)")
+    @ApiModelProperty(value = "数据时间戳 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opTimestamp;
+
+
+    /**
+     * 数据操作数据库用户 (触发器自动处理)
+     */
+    @Excel(name = "数据操作数据库用户 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作数据库用户 (触发器自动处理)")
+    private String opDbUser;
+
+
+    /*
+     * 相关属性
+     * @TableField(exist = false)
+     */
+
+    /*
+     * 关联属性 + 查询条件
+     * @TableField(exist = false)
+     */
+
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 289 - 0
src/main/java/com/dk/mdm/model/query/pur/PurchaseItemQuery.java

@@ -0,0 +1,289 @@
+package com.dk.mdm.model.query.pur;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.*;
+import java.io.Serializable;
+
+import com.dk.common.infrastructure.annotaiton.ExportTitle;
+import com.dk.common.infrastructure.handler.*;
+import com.dk.common.model.pojo.PageInfo;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.alibaba.fastjson.JSONObject;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.time.LocalDateTime;
+
+/**
+ *  采购明细
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@ExportTitle("采购明细")
+@TableName(value = "t_psi_purchase_item", autoResultMap = true)
+@ApiModel(value="实体类:采购明细", description="表名:t_psi_purchase_item")
+public class PurchaseItemQuery extends PageInfo<PurchaseItemQuery> implements Serializable {
+
+    /*
+     * 数据库字段
+     */
+
+    /**
+     * 明细ID
+     */
+    @TableId(value = "item_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "明细ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String itemId;
+
+
+    /**
+     * 订单ID
+     */
+    @Excel(name = "订单ID")
+    @ApiModelProperty(value = "订单ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String purId;
+
+
+    /**
+     * 商品顺序
+     */
+    @Excel(name = "商品顺序")
+    @ApiModelProperty(value = "商品顺序")
+    private Integer itemIndex;
+
+
+    /**
+     * 商品ID
+     */
+    @Excel(name = "商品ID")
+    @ApiModelProperty(value = "商品ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String skuId;
+
+
+    /**
+     * 商品数量
+     */
+    @Excel(name = "商品数量")
+    @ApiModelProperty(value = "商品数量")
+    private BigDecimal itemQty;
+
+
+    /**
+     * 标价
+     */
+    @Excel(name = "标价")
+    @ApiModelProperty(value = "标价")
+    private BigDecimal priceStd;
+
+
+    /**
+     * 标价金额 (商品数量*标价)
+     */
+    @Excel(name = "标价金额 (商品数量*标价)")
+    @ApiModelProperty(value = "标价金额 (商品数量*标价)")
+    private BigDecimal amtStd;
+
+
+    /**
+     * 采购价
+     */
+    @Excel(name = "采购价")
+    @ApiModelProperty(value = "采购价")
+    private BigDecimal pricePur;
+
+
+    /**
+     * 采购金额 (商品数量*采购价)
+     */
+    @Excel(name = "采购金额 (商品数量*采购价)")
+    @ApiModelProperty(value = "采购金额 (商品数量*采购价)")
+    private BigDecimal itemAmt;
+
+
+    /**
+     * 折扣 (采购价/标价)
+     */
+    @Excel(name = "折扣 (采购价/标价)")
+    @ApiModelProperty(value = "折扣 (采购价/标价)")
+    private BigDecimal priceDiscount;
+
+
+    /**
+     * 非标号
+     */
+    @Excel(name = "非标号")
+    @ApiModelProperty(value = "非标号")
+    private String nonStdCode;
+
+
+    /**
+     * 入库状态 (【系统字典】)
+     */
+    @Excel(name = "入库状态 (【系统字典】)")
+    @ApiModelProperty(value = "入库状态 (【系统字典】)")
+    private String intoStatus;
+
+
+    /**
+     * 入库中数量
+     */
+    @Excel(name = "入库中数量")
+    @ApiModelProperty(value = "入库中数量")
+    private BigDecimal intoingQty;
+
+
+    /**
+     * 入库中金额
+     */
+    @Excel(name = "入库中金额")
+    @ApiModelProperty(value = "入库中金额")
+    private BigDecimal intoingAmt;
+
+
+    /**
+     * 已入库数量
+     */
+    @Excel(name = "已入库数量")
+    @ApiModelProperty(value = "已入库数量")
+    private BigDecimal intoQty;
+
+
+    /**
+     * 已入库金额
+     */
+    @Excel(name = "已入库金额")
+    @ApiModelProperty(value = "已入库金额")
+    private BigDecimal intoAmt;
+
+
+    /**
+     * 已入库退货数量
+     */
+    @Excel(name = "已入库退货数量")
+    @ApiModelProperty(value = "已入库退货数量")
+    private BigDecimal returnQty;
+
+
+    /**
+     * 已入库退货金额
+     */
+    @Excel(name = "已入库退货金额")
+    @ApiModelProperty(value = "已入库退货金额")
+    private BigDecimal returnAmt;
+
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+
+    /**
+     * 有效标识 (1:正常 0:停用)
+     */
+    @Excel(name = "有效标识 (1:正常 0:停用)")
+    @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
+    private Boolean flgValid;
+
+
+    /**
+     * 企业ID
+     */
+    @Excel(name = "企业ID")
+    @ApiModelProperty(value = "企业ID")
+    private Integer cpId;
+
+
+    /**
+     * 创建时间 (触发器自动处理)
+     */
+    @Excel(name = "创建时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "创建时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opCreateTime;
+
+
+    /**
+     * 创建用户 (触发器自动处理)
+     */
+    @Excel(name = "创建用户 (触发器自动处理)")
+    @ApiModelProperty(value = "创建用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opCreateUserId;
+
+
+    /**
+     * 修改时间 (触发器自动处理)
+     */
+    @Excel(name = "修改时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "修改时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opUpdateTime;
+
+
+    /**
+     * 修改用户 (触发器自动处理)
+     */
+    @Excel(name = "修改用户 (触发器自动处理)")
+    @ApiModelProperty(value = "修改用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opUpdateUserId;
+
+
+    /**
+     * 数据操作应用 (触发器自动处理)
+     */
+    @Excel(name = "数据操作应用 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作应用 (触发器自动处理)")
+    private String opAppCode;
+
+
+    /**
+     * 数据时间戳 (触发器自动处理)
+     */
+    @Excel(name = "数据时间戳 (触发器自动处理)")
+    @ApiModelProperty(value = "数据时间戳 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opTimestamp;
+
+
+    /**
+     * 数据操作数据库用户 (触发器自动处理)
+     */
+    @Excel(name = "数据操作数据库用户 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作数据库用户 (触发器自动处理)")
+    private String opDbUser;
+
+
+    /*
+     * 相关属性
+     * @TableField(exist = false)
+     */
+
+    /*
+     * 关联属性 + 查询条件
+     * @TableField(exist = false)
+     */
+
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 289 - 0
src/main/java/com/dk/mdm/model/response/pur/PurchaseItemResponse.java

@@ -0,0 +1,289 @@
+package com.dk.mdm.model.response.pur;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.*;
+import java.io.Serializable;
+
+import com.dk.common.infrastructure.annotaiton.ExportTitle;
+import com.dk.common.infrastructure.handler.*;
+import com.dk.common.model.pojo.PageInfo;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.alibaba.fastjson.JSONObject;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.time.LocalDateTime;
+
+/**
+ *  采购明细
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@ExportTitle("采购明细")
+@TableName(value = "t_psi_purchase_item", autoResultMap = true)
+@ApiModel(value="实体类:采购明细", description="表名:t_psi_purchase_item")
+public class PurchaseItemResponse extends PageInfo<PurchaseItemResponse> implements Serializable {
+
+    /*
+     * 数据库字段
+     */
+
+    /**
+     * 明细ID
+     */
+    @TableId(value = "item_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "明细ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String itemId;
+
+
+    /**
+     * 订单ID
+     */
+    @Excel(name = "订单ID")
+    @ApiModelProperty(value = "订单ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String purId;
+
+
+    /**
+     * 商品顺序
+     */
+    @Excel(name = "商品顺序")
+    @ApiModelProperty(value = "商品顺序")
+    private Integer itemIndex;
+
+
+    /**
+     * 商品ID
+     */
+    @Excel(name = "商品ID")
+    @ApiModelProperty(value = "商品ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String skuId;
+
+
+    /**
+     * 商品数量
+     */
+    @Excel(name = "商品数量")
+    @ApiModelProperty(value = "商品数量")
+    private BigDecimal itemQty;
+
+
+    /**
+     * 标价
+     */
+    @Excel(name = "标价")
+    @ApiModelProperty(value = "标价")
+    private BigDecimal priceStd;
+
+
+    /**
+     * 标价金额 (商品数量*标价)
+     */
+    @Excel(name = "标价金额 (商品数量*标价)")
+    @ApiModelProperty(value = "标价金额 (商品数量*标价)")
+    private BigDecimal amtStd;
+
+
+    /**
+     * 采购价
+     */
+    @Excel(name = "采购价")
+    @ApiModelProperty(value = "采购价")
+    private BigDecimal pricePur;
+
+
+    /**
+     * 采购金额 (商品数量*采购价)
+     */
+    @Excel(name = "采购金额 (商品数量*采购价)")
+    @ApiModelProperty(value = "采购金额 (商品数量*采购价)")
+    private BigDecimal itemAmt;
+
+
+    /**
+     * 折扣 (采购价/标价)
+     */
+    @Excel(name = "折扣 (采购价/标价)")
+    @ApiModelProperty(value = "折扣 (采购价/标价)")
+    private BigDecimal priceDiscount;
+
+
+    /**
+     * 非标号
+     */
+    @Excel(name = "非标号")
+    @ApiModelProperty(value = "非标号")
+    private String nonStdCode;
+
+
+    /**
+     * 入库状态 (【系统字典】)
+     */
+    @Excel(name = "入库状态 (【系统字典】)")
+    @ApiModelProperty(value = "入库状态 (【系统字典】)")
+    private String intoStatus;
+
+
+    /**
+     * 入库中数量
+     */
+    @Excel(name = "入库中数量")
+    @ApiModelProperty(value = "入库中数量")
+    private BigDecimal intoingQty;
+
+
+    /**
+     * 入库中金额
+     */
+    @Excel(name = "入库中金额")
+    @ApiModelProperty(value = "入库中金额")
+    private BigDecimal intoingAmt;
+
+
+    /**
+     * 已入库数量
+     */
+    @Excel(name = "已入库数量")
+    @ApiModelProperty(value = "已入库数量")
+    private BigDecimal intoQty;
+
+
+    /**
+     * 已入库金额
+     */
+    @Excel(name = "已入库金额")
+    @ApiModelProperty(value = "已入库金额")
+    private BigDecimal intoAmt;
+
+
+    /**
+     * 已入库退货数量
+     */
+    @Excel(name = "已入库退货数量")
+    @ApiModelProperty(value = "已入库退货数量")
+    private BigDecimal returnQty;
+
+
+    /**
+     * 已入库退货金额
+     */
+    @Excel(name = "已入库退货金额")
+    @ApiModelProperty(value = "已入库退货金额")
+    private BigDecimal returnAmt;
+
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+
+    /**
+     * 有效标识 (1:正常 0:停用)
+     */
+    @Excel(name = "有效标识 (1:正常 0:停用)")
+    @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
+    private Boolean flgValid;
+
+
+    /**
+     * 企业ID
+     */
+    @Excel(name = "企业ID")
+    @ApiModelProperty(value = "企业ID")
+    private Integer cpId;
+
+
+    /**
+     * 创建时间 (触发器自动处理)
+     */
+    @Excel(name = "创建时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "创建时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opCreateTime;
+
+
+    /**
+     * 创建用户 (触发器自动处理)
+     */
+    @Excel(name = "创建用户 (触发器自动处理)")
+    @ApiModelProperty(value = "创建用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opCreateUserId;
+
+
+    /**
+     * 修改时间 (触发器自动处理)
+     */
+    @Excel(name = "修改时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "修改时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opUpdateTime;
+
+
+    /**
+     * 修改用户 (触发器自动处理)
+     */
+    @Excel(name = "修改用户 (触发器自动处理)")
+    @ApiModelProperty(value = "修改用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opUpdateUserId;
+
+
+    /**
+     * 数据操作应用 (触发器自动处理)
+     */
+    @Excel(name = "数据操作应用 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作应用 (触发器自动处理)")
+    private String opAppCode;
+
+
+    /**
+     * 数据时间戳 (触发器自动处理)
+     */
+    @Excel(name = "数据时间戳 (触发器自动处理)")
+    @ApiModelProperty(value = "数据时间戳 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opTimestamp;
+
+
+    /**
+     * 数据操作数据库用户 (触发器自动处理)
+     */
+    @Excel(name = "数据操作数据库用户 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作数据库用户 (触发器自动处理)")
+    private String opDbUser;
+
+
+    /*
+     * 相关属性
+     * @TableField(exist = false)
+     */
+
+    /*
+     * 关联属性 + 查询条件
+     * @TableField(exist = false)
+     */
+
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 289 - 0
src/main/java/com/dk/mdm/model/vo/pur/PurchaseItemVO.java

@@ -0,0 +1,289 @@
+package com.dk.mdm.model.vo.pur;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.*;
+import java.io.Serializable;
+
+import com.dk.common.infrastructure.annotaiton.ExportTitle;
+import com.dk.common.infrastructure.handler.*;
+import com.dk.common.model.pojo.PageInfo;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.alibaba.fastjson.JSONObject;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.time.LocalDateTime;
+
+/**
+ *  采购明细
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@ExportTitle("采购明细")
+@TableName(value = "t_psi_purchase_item", autoResultMap = true)
+@ApiModel(value="实体类:采购明细", description="表名:t_psi_purchase_item")
+public class PurchaseItemVO extends PageInfo<PurchaseItemVO> implements Serializable {
+
+    /*
+     * 数据库字段
+     */
+
+    /**
+     * 明细ID
+     */
+    @TableId(value = "item_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "明细ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String itemId;
+
+
+    /**
+     * 订单ID
+     */
+    @Excel(name = "订单ID")
+    @ApiModelProperty(value = "订单ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String purId;
+
+
+    /**
+     * 商品顺序
+     */
+    @Excel(name = "商品顺序")
+    @ApiModelProperty(value = "商品顺序")
+    private Integer itemIndex;
+
+
+    /**
+     * 商品ID
+     */
+    @Excel(name = "商品ID")
+    @ApiModelProperty(value = "商品ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String skuId;
+
+
+    /**
+     * 商品数量
+     */
+    @Excel(name = "商品数量")
+    @ApiModelProperty(value = "商品数量")
+    private BigDecimal itemQty;
+
+
+    /**
+     * 标价
+     */
+    @Excel(name = "标价")
+    @ApiModelProperty(value = "标价")
+    private BigDecimal priceStd;
+
+
+    /**
+     * 标价金额 (商品数量*标价)
+     */
+    @Excel(name = "标价金额 (商品数量*标价)")
+    @ApiModelProperty(value = "标价金额 (商品数量*标价)")
+    private BigDecimal amtStd;
+
+
+    /**
+     * 采购价
+     */
+    @Excel(name = "采购价")
+    @ApiModelProperty(value = "采购价")
+    private BigDecimal pricePur;
+
+
+    /**
+     * 采购金额 (商品数量*采购价)
+     */
+    @Excel(name = "采购金额 (商品数量*采购价)")
+    @ApiModelProperty(value = "采购金额 (商品数量*采购价)")
+    private BigDecimal itemAmt;
+
+
+    /**
+     * 折扣 (采购价/标价)
+     */
+    @Excel(name = "折扣 (采购价/标价)")
+    @ApiModelProperty(value = "折扣 (采购价/标价)")
+    private BigDecimal priceDiscount;
+
+
+    /**
+     * 非标号
+     */
+    @Excel(name = "非标号")
+    @ApiModelProperty(value = "非标号")
+    private String nonStdCode;
+
+
+    /**
+     * 入库状态 (【系统字典】)
+     */
+    @Excel(name = "入库状态 (【系统字典】)")
+    @ApiModelProperty(value = "入库状态 (【系统字典】)")
+    private String intoStatus;
+
+
+    /**
+     * 入库中数量
+     */
+    @Excel(name = "入库中数量")
+    @ApiModelProperty(value = "入库中数量")
+    private BigDecimal intoingQty;
+
+
+    /**
+     * 入库中金额
+     */
+    @Excel(name = "入库中金额")
+    @ApiModelProperty(value = "入库中金额")
+    private BigDecimal intoingAmt;
+
+
+    /**
+     * 已入库数量
+     */
+    @Excel(name = "已入库数量")
+    @ApiModelProperty(value = "已入库数量")
+    private BigDecimal intoQty;
+
+
+    /**
+     * 已入库金额
+     */
+    @Excel(name = "已入库金额")
+    @ApiModelProperty(value = "已入库金额")
+    private BigDecimal intoAmt;
+
+
+    /**
+     * 已入库退货数量
+     */
+    @Excel(name = "已入库退货数量")
+    @ApiModelProperty(value = "已入库退货数量")
+    private BigDecimal returnQty;
+
+
+    /**
+     * 已入库退货金额
+     */
+    @Excel(name = "已入库退货金额")
+    @ApiModelProperty(value = "已入库退货金额")
+    private BigDecimal returnAmt;
+
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+
+    /**
+     * 有效标识 (1:正常 0:停用)
+     */
+    @Excel(name = "有效标识 (1:正常 0:停用)")
+    @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
+    private Boolean flgValid;
+
+
+    /**
+     * 企业ID
+     */
+    @Excel(name = "企业ID")
+    @ApiModelProperty(value = "企业ID")
+    private Integer cpId;
+
+
+    /**
+     * 创建时间 (触发器自动处理)
+     */
+    @Excel(name = "创建时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "创建时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opCreateTime;
+
+
+    /**
+     * 创建用户 (触发器自动处理)
+     */
+    @Excel(name = "创建用户 (触发器自动处理)")
+    @ApiModelProperty(value = "创建用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opCreateUserId;
+
+
+    /**
+     * 修改时间 (触发器自动处理)
+     */
+    @Excel(name = "修改时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
+    @ApiModelProperty(value = "修改时间 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opUpdateTime;
+
+
+    /**
+     * 修改用户 (触发器自动处理)
+     */
+    @Excel(name = "修改用户 (触发器自动处理)")
+    @ApiModelProperty(value = "修改用户 (触发器自动处理)")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opUpdateUserId;
+
+
+    /**
+     * 数据操作应用 (触发器自动处理)
+     */
+    @Excel(name = "数据操作应用 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作应用 (触发器自动处理)")
+    private String opAppCode;
+
+
+    /**
+     * 数据时间戳 (触发器自动处理)
+     */
+    @Excel(name = "数据时间戳 (触发器自动处理)")
+    @ApiModelProperty(value = "数据时间戳 (触发器自动处理)")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime opTimestamp;
+
+
+    /**
+     * 数据操作数据库用户 (触发器自动处理)
+     */
+    @Excel(name = "数据操作数据库用户 (触发器自动处理)")
+    @ApiModelProperty(value = "数据操作数据库用户 (触发器自动处理)")
+    private String opDbUser;
+
+
+    /*
+     * 相关属性
+     * @TableField(exist = false)
+     */
+
+    /*
+     * 关联属性 + 查询条件
+     * @TableField(exist = false)
+     */
+
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 49 - 0
src/main/java/com/dk/mdm/service/pur/PurchaseItemService.java

@@ -0,0 +1,49 @@
+package com.dk.mdm.service.pur;
+
+import com.dk.common.infrastructure.annotaiton.Pagination;
+import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseResultVO;
+import com.dk.mdm.model.pojo.pur.PurchaseItem;
+import com.dk.mdm.mapper.pur.PurchaseItemMapper;
+import com.dk.common.service.BaseService;
+import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.query.pur.PurchaseItemQuery;
+import com.dk.mdm.model.response.pur.PurchaseItemResponse;
+import org.springframework.stereotype.Service;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional
+public class PurchaseItemService extends BaseService<PurchaseItem> {
+
+	@Override
+	public BaseMapper<PurchaseItem> getRepository() {
+		return purchaseItemMapper;
+	}
+
+	@Autowired
+	private PurchaseItemMapper purchaseItemMapper;
+
+	/**
+	 * @desc   : 重写主键
+	 * @author : 常皓宁
+	 * @date   : 2024/2/28 15:16
+	 */
+	@Override
+	public String getPrimaryKey() {
+		return "item_id";
+	}
+
+
+	/**
+	 * @desc   : 条件查询
+	 * @author : 常皓宁
+	 * @date   : 2024/2/28 15:16
+	 */
+	@Pagination
+	public ResponseResultVO<PageList<PurchaseItemResponse>> selectByCond(PurchaseItemQuery purchaseItemQuery) {
+		return super.mergeListWithCount(purchaseItemMapper, purchaseItemMapper.selectByCond(purchaseItemQuery), purchaseItemMapper.countByCond(purchaseItemQuery));
+	}
+
+}

+ 37 - 1
src/main/java/com/dk/mdm/service/pur/PurchaseService.java

@@ -1,8 +1,12 @@
 package com.dk.mdm.service.pur;
 
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.dk.common.exception.BaseBusinessException;
 import com.dk.common.infrastructure.annotaiton.Pagination;
+import com.dk.common.infrastructure.constant.Constant;
+import com.dk.common.infrastructure.enums.ErrorCodeEnum;
 import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseCodeEnum;
 import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.infrastructure.convert.pur.PurChaseConvert;
@@ -18,7 +22,11 @@ import com.dk.mdm.model.vo.pur.PurchaseVO;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
 
+import java.time.LocalDateTime;
+import java.util.Map;
 import java.util.UUID;
 
 @Service
@@ -52,7 +60,35 @@ public class PurchaseService extends BaseService<Purchase> {
 	 * @date   : 2024/2/28 9:42
 	 */
 	@Transactional(rollbackFor = {Exception.class})
-	public ResponseResultVO<Boolean> insert(PurchaseVO Purchasevo) {
+	public ResponseResultVO<Boolean> insert(PurchaseVO purchasevo) {
+		//region  组织结构不能为空
+		if (purchasevo.getOrgId() == null) {
+			throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORGANIZATION_CANNOT_BE_EMPTY.getMessage());
+		}
+		//endregion
+
+		//region  员工不能为空
+		if (purchasevo.getStaffId() == null) {
+			throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.STAFF_CANNOT_BE_EMPTY.getMessage());
+		}
+		//endregion
+
+		//region  供应商不能为空
+		if (purchasevo.getSupId() == null) {
+			throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.SUPLIER_CANNOT_BE_EMPTY.getMessage());
+		}
+		//endregion
+
+		//region 设置销售订单总单信息并新建
+		purchasevo.setPurId(null);
+		purchasevo.setMakeTime(LocalDateTime.now());
+		purchasevo.setPurType(Constant.DocumentType.PUR_CHASE.getName());
+		Purchase purchase = purChaseConvert.convertToPo(purchasevo);
+		purchaseMapper.insert(purchase);
+		purchasevo.setPurId(purchase.getPurId());
+		purchasevo.setPurNo(purchaseMapper.getDocNo(purchasevo.getCpId(),purchase.getPurId(),Constant.DocumentType.PUR_CHASE.getName()));
+		purchaseMapper.updatePurNO(purchasevo);
+		//endregion
 		return ResponseResultUtil.success();
 	}