浏览代码

v3项目-修改0910

wwh 2 月之前
父节点
当前提交
9a42cf6a7e

+ 1 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/model/JsReport.java

@@ -36,5 +36,6 @@ public class JsReport implements Serializable {
 
     private String userName;
 
+    private String operationLog;
 
 }

+ 3 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/model/JsSample.java

@@ -85,4 +85,7 @@ public class JsSample extends AbstractEntity implements Serializable {
     @ApiModelProperty(value = "清除人")
     private String clearPerson;
 
+    @ApiModelProperty(value = "检测项目集")
+    private String examineItems;
+
 }

+ 26 - 3
app-admin/src/main/java/com/ruoyi/web/v2/v1/service/impl/JsReportServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ruoyi.web.v2.v1.service.impl;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.ruoyi.app.mapper.PigpenMapper;
@@ -18,9 +19,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 
-import java.util.Date;
-import java.util.List;
-import java.util.Optional;
+import java.time.LocalDateTime;
+import java.util.*;
 
 /**
  * <p>
@@ -43,7 +43,13 @@ public class JsReportServiceImpl extends ServiceImpl<JsReportMapper, JsReport> i
     @Transactional
     @Override
     public boolean register(List<JsDivideCircle> circles) {
+        //当日是否已提交完工报告检测
+        boolean doubleReport = checkDuplicatedReport();
+        if(doubleReport) {
+            throw new RuntimeException("每日只能提交一次完工报告,本日已有提交记录,请勿重复提交...");
+        }
         //根据提交的分圈登记,计算每个批次的剩余存栏量(每个猪圈的存栏量为0后视为该批次完结),然后决定猪圈状态和待宰栏中的该批次数据状态
+        List<Map<String, String>> logList = new ArrayList<>();
         for (JsDivideCircle circle : circles) {
             if(ObjectUtils.isEmpty(circle.getAmount()) || circle.getAmount() < 0) {
                 throw new IllegalArgumentException("待宰栏【" + circle.getPigpenName() + "】的猪只数量不能为空,或小于0...");
@@ -67,6 +73,10 @@ public class JsReportServiceImpl extends ServiceImpl<JsReportMapper, JsReport> i
                         //系统自动插入的数据,分圈时间设置为空
                         circle.setDivideTime(null);
                         circle.setCreateTime(new Date());
+                        //插入猪圈数据前,同时生成日志记录
+                        Map<String, String> logRecord = new HashMap<>();
+                        logRecord.put(circle.getPigpenName(), String.valueOf(circle.getAmount()));
+                        logList.add(logRecord);
                         jsDivideCircleMapper.insert(circle);
                     }
                 }else {
@@ -75,6 +85,9 @@ public class JsReportServiceImpl extends ServiceImpl<JsReportMapper, JsReport> i
                         //系统自动插入的数据,分圈时间设置为空
                         circle.setDivideTime(null);
                         circle.setCreateTime(new Date());
+                        Map<String, String> logRecord = new HashMap<>();
+                        logRecord.put(circle.getPigpenName(), String.valueOf(circle.getAmount()));
+                        logList.add(logRecord);
                         jsDivideCircleMapper.insert(circle);
                         jsDivideCircleMapper.update(null, new LambdaUpdateWrapper<JsDivideCircle>()
                                 .eq(JsDivideCircle::getSeriesNo, circle.getSeriesNo())
@@ -91,10 +104,20 @@ public class JsReportServiceImpl extends ServiceImpl<JsReportMapper, JsReport> i
         //保存完工报告记录
         JsReport jsReport = new JsReport();
         jsReport.setCreateTime(new Date());
+        jsReport.setOperationLog(JSONObject.toJSONString(logList));
         LoginUser loginUser = SecurityUtils.getLoginUser();
         jsReport.setUserName(Optional.ofNullable(loginUser.getUser())
                 .map(SysUser::getNickName)
                 .orElse("系统管理员"));
         return save(jsReport);
     }
+
+    private boolean checkDuplicatedReport() {
+        LocalDateTime start = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0);
+        LocalDateTime end = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59);
+        int count = this.count(new LambdaQueryWrapper<JsReport>().between(JsReport::getCreateTime, start,end));
+        return count > 0;
+    }
+
+
 }

+ 1 - 1
app-admin/src/main/resources/mapper/JsDistributionMapper.xml

@@ -24,7 +24,7 @@ on a.produceName=b.productName
         </if>
         GROUP BY produce_name)
         as a right JOIN
-        (select product_name productName,unit unit FROM product_category WHERE del_flag='0') AS b
+        (select product_name productName,unit unit FROM product_category WHERE del_flag='0' and on_sale_flag='1') AS b
         on a.produceName=b.productName
 
     </select>

+ 12 - 0
app-system/src/main/java/com/ruoyi/app/model/ProductCategory.java

@@ -30,6 +30,17 @@ public class ProductCategory extends BaseEntity {
 
     private String unit;
 
+    public Integer getOnSaleFlag() {
+        return onSaleFlag;
+    }
+
+    public void setOnSaleFlag(Integer onSaleFlag) {
+        this.onSaleFlag = onSaleFlag;
+    }
+
+    /** 是否在售标识 **/
+    private Integer onSaleFlag;
+
     public String getUnit() {
         return unit;
     }
@@ -90,6 +101,7 @@ public class ProductCategory extends BaseEntity {
                 .append("updateBy", getUpdateBy())
                 .append("delFlag", getDelFlag())
                 .append("unit", getUnit())
+                .append("onSaleFlag", getOnSaleFlag())
                 .toString();
     }
 }

+ 5 - 1
app-system/src/main/resources/mapper/app/ProductCategoryMapper.xml

@@ -13,10 +13,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateBy"    column="update_by"    />
         <result property="delFlag"    column="del_flag"    />
         <result property="unit"    column="unit"    />
+        <result property="onSaleFlag"    column="on_sale_flag"    />
     </resultMap>
 
     <sql id="selectProductCategoryVo">
-        select id, product_name, create_time, create_by, update_time, update_by, del_flag,unit from product_category
+        select id, product_name, create_time, create_by, update_time, update_by, del_flag,unit, on_sale_flag from product_category
     </sql>
 
     <select id="selectProductCategoryList" parameterType="ProductCategory" resultMap="ProductCategoryResult">
@@ -44,6 +45,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">create_time,</if>
             <if test="createBy != null">create_by,</if>
             <if test="unit != null">unit,</if>
+            <if test="onSaleFlag != null">on_sale_flag,</if>
             del_flag
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -51,6 +53,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">#{createTime},</if>
             <if test="createBy != null">#{createBy},</if>
             <if test="unit != null">#{unit},</if>
+            <if test="onSaleFlag != null">#{onSaleFlag},</if>
             '0'
          </trim>
     </insert>
@@ -62,6 +65,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateTime != null">update_time = #{updateTime},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="unit != null">unit = #{unit},</if>
+            <if test="onSaleFlag != null">on_sale_flag = #{onSaleFlag},</if>
         </trim>
         where id = #{id}
     </update>

+ 10 - 1
sql/v3_biz_20250814.sql

@@ -597,4 +597,13 @@ INSERT INTO `hb_org_info` VALUES (1, '杭州慧牧科技有限公司', '杭州i
 -- 药物管理 添加“药物类型”
 ALTER TABLE `js_drug` ADD COLUMN `type` VARCHAR(30) COMMENT '药物类型:1.违禁药物2.疫病检测3.抗生素';
 -- 药物登记 添加“药物类型”
-ALTER TABLE `js_drug_check` ADD COLUMN `type` VARCHAR(30) COMMENT '药物类型:1.违禁药物2.疫病检测3.抗生素';
+ALTER TABLE `js_drug_check` ADD COLUMN `type` VARCHAR(30) COMMENT '药物类型:1.违禁药物2.疫病检测3.抗生素';
+
+-- 样品留存登记 添加“检测项目数组”字段,用于存放多个检测项目及对应的检测值
+ALTER TABLE `js_sample` ADD COLUMN `examine_items` VARCHAR(1000) COMMENT '检测项目集,包含多个检测项目名称及对应检测值,key/value方式的数组';
+
+-- 产品种类管理 添加“是否可销售”字段,用于控制产品种类是否展示可选
+ALTER TABLE `product_category` ADD COLUMN `on_sale_flag` TINYINT ( 1 ) DEFAULT 1 COMMENT '是否可销售标志,用于控制可售状态;0.不可销售;1.可销售';
+
+-- 完工记录添加“操作信息”字段,记录数据的变化情况
+ALTER TABLE `js_report` ADD COLUMN `operation_log` VARCHAR(600) COMMENT '操作信息,用于记录数据的变化情况';