ソースを参照

Merge remote-tracking branch 'remotes/origin/feature-batchSeriesNo-20250807'

wwh 1 週間 前
コミット
32ee993a79

+ 8 - 1
app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/JsDistribution.java

@@ -3,8 +3,12 @@ package com.ruoyi.web.v2.v1.entity;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
 import java.io.Serializable;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.deser.std.NumberDeserializers;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -85,4 +89,7 @@ public class JsDistribution implements Serializable {
 
     private String unit;
 
+    @ApiModelProperty(value = "批次序列号集")
+    private String seriesNoGroup;
+
 }

+ 6 - 1
app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/JsDivideCircle.java

@@ -3,10 +3,13 @@ package com.ruoyi.web.v2.v1.entity;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
 import java.io.Serializable;
 import java.util.Date;
 
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.deser.std.NumberDeserializers;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -69,6 +72,8 @@ public class JsDivideCircle implements Serializable {
     @ApiModelProperty(value = "批次id")
     private Integer entranceBatchId;
 
+    @ApiModelProperty(value = "批次序列号")
+    private String seriesNo;
 
 
 }

+ 4 - 1
app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/JsDrugCheck.java

@@ -3,8 +3,8 @@ package com.ruoyi.web.v2.v1.entity;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
 import java.io.Serializable;
+
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -58,4 +58,7 @@ public class JsDrugCheck implements Serializable {
     @ApiModelProperty(value = "批次号")
     private Integer entranceBatchId;
 
+    @ApiModelProperty(value = "批次序列号集")
+    private String seriesNoGroup;
+
 }

+ 8 - 1
app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/JsRestInspection.java

@@ -3,8 +3,12 @@ package com.ruoyi.web.v2.v1.entity;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
 import java.io.Serializable;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.deser.std.NumberDeserializers;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -54,4 +58,7 @@ public class JsRestInspection implements Serializable {
 
     @ApiModelProperty(value = "分圈id")
     private Integer divideCircleId;
+
+    @ApiModelProperty(value = "批次序列号")
+    private String seriesNo;
 }

+ 8 - 1
app-admin/src/main/java/com/ruoyi/web/v2/v1/entity/JsSample.java

@@ -3,8 +3,12 @@ package com.ruoyi.web.v2.v1.entity;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
 import java.io.Serializable;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.deser.std.NumberDeserializers;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -60,5 +64,8 @@ public class JsSample implements Serializable {
 
     private Integer entranceBatchId;
 
+    @ApiModelProperty(value = "批次序列号集")
+    private String seriesNoGroup;
+
 
 }

+ 36 - 7
app-admin/src/main/java/com/ruoyi/web/v2/v1/service/impl/JsDistributionServiceImpl.java

@@ -2,10 +2,9 @@ package com.ruoyi.web.v2.v1.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.app.domain.EntranceBatch;
-import com.ruoyi.app.domain.Pigpen;
-import com.ruoyi.app.domain.ProductCategory;
 import com.ruoyi.app.domain.Purchaser;
 import com.ruoyi.app.mapper.EntranceBatchMapper;
 import com.ruoyi.app.mapper.PigpenMapper;
@@ -15,7 +14,6 @@ import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.uuid.UUID;
 import com.ruoyi.web.v2.v1.entity.*;
-import com.ruoyi.web.v2.v1.entity.vo.HarmlessVo;
 import com.ruoyi.web.v2.v1.entity.vo.ProductionVo;
 import com.ruoyi.web.v2.v1.mapper.*;
 import com.ruoyi.web.v2.v1.service.IJsDistributionService;
@@ -23,12 +21,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.web.v2.v1.utils.PaginationUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Base64;
-import java.util.Date;
-import java.util.List;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
 
 import static com.ruoyi.common.core.domain.AjaxResult.success;
 
@@ -58,6 +56,7 @@ public class JsDistributionServiceImpl extends ServiceImpl<JsDistributionMapper,
     @Autowired
     private JsProduceCodeMapper produceCodeMapper;
 
+    @Transactional
     @Override
     public AjaxResult add(JsDistribution distribution) {
         Integer supplierId = distribution.getSupplierId();
@@ -79,10 +78,40 @@ public class JsDistributionServiceImpl extends ServiceImpl<JsDistributionMapper,
         jsProduceCode.setOneCode(shortUUID);
         distribution.setOneCode(shortUUID);
         produceCodeMapper.insert(jsProduceCode);
+        distribution.setSeriesNoGroup(genSeriesNoGroup(distribution));
         distributionMapper.insert(distribution);
         return success();
     }
 
+    private String genSeriesNoGroup(JsDistribution distribution) {
+        if(ObjectUtil.isNotEmpty(distribution.getSeriesNoGroup())) {
+            //如果提交的表单直接带有分圈后的批次序列号集,那么做一次存在性检测,检测成功直接采用,否则置空
+            String[] seriesNoGroup = distribution.getSeriesNoGroup().split(",");
+            List<JsDivideCircle> circles = circleMapper.selectList(
+                    Wrappers.<JsDivideCircle>lambdaQuery().in(JsDivideCircle::getSeriesNo, seriesNoGroup));
+            return circles.size() > 0 ? distribution.getSeriesNoGroup() : "";
+        }else {
+            //如果提交的表单未带有分圈的批次序列号,那么根据入场id或者检疫证号查分圈批次序列号集,进行设置
+            if(ObjectUtil.isNotEmpty(distribution.getEntranceBatchId())) {
+                //查询进场数据
+                EntranceBatch entranceBatch = entranceBatchMapper.selectEntranceBatchById(distribution.getEntranceBatchId().longValue());
+                //查询分圈数据
+                List<JsDivideCircle> circles = circleMapper.selectList(
+                        Wrappers.<JsDivideCircle>lambdaQuery()
+                                .eq(JsDivideCircle::getEntranceBatchId, distribution.getEntranceBatchId()));
+                if(entranceBatch != null && circles.size() > 0) {
+                    //返回本条生产数据关联的分圈批次序列号集合
+                    return circles.stream().map(
+                            item -> entranceBatch.getAnimalCertNo() +
+                                    item.getPigpenId() +
+                                    new SimpleDateFormat("yyyyMMdd").format(entranceBatch.getEntranceTime()))
+                            .collect(Collectors.joining(","));
+                }
+            }
+        }
+        return "";
+    }
+
     @Override
     public AjaxResult edit(JsDistribution distribution) {
         distributionMapper.updateById(distribution);

+ 23 - 0
app-admin/src/main/java/com/ruoyi/web/v2/v1/service/impl/JsDivideCircleServiceImpl.java

@@ -17,7 +17,10 @@ import com.ruoyi.web.v2.v1.service.IJsDivideCircleService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.text.SimpleDateFormat;
+import java.time.ZoneId;
 import java.util.Date;
 import java.util.List;
 
@@ -44,6 +47,7 @@ public class JsDivideCircleServiceImpl extends ServiceImpl<JsDivideCircleMapper,
     @Autowired
     private EntranceBatchMapper entranceBatchMapper;
 
+    @Transactional
     @Override
     public AjaxResult add(JsDivideCircle divideCircle) {
         Pigpen pigpen = pigpenMapper.selectPigpenById(divideCircle.getPigpenId().longValue());
@@ -77,12 +81,31 @@ public class JsDivideCircleServiceImpl extends ServiceImpl<JsDivideCircleMapper,
             return error("该批次中所剩需分圈猪只不足");
         }
         divideCircle.setCreateTime(new Date());
+        divideCircle.setSeriesNo(
+                generateSeriesNo(animalCertNo, pigpen.getPigpenName(), Date.from(entranceBatch.getEntranceTime().atZone(ZoneId.systemDefault()).toInstant())));
         jsDivideCircleMapper.insert(divideCircle);
         pigpen.setIsUse(1);
         pigpenMapper.updatePigpen(pigpen);
         return success();
     }
 
+    /**
+     * 批次序列号处理
+     */
+    private String generateSeriesNo(String animalCertNo, String pigpenName, Date entranceTime) {
+        try {
+            if(ObjectUtil.isNotEmpty(animalCertNo) && ObjectUtil.isNotEmpty(pigpenName) && entranceTime != null) {
+                StringBuilder strBuilder = new StringBuilder();
+                strBuilder.append(animalCertNo).append(pigpenName)
+                        .append(new SimpleDateFormat("yyyyMMdd").format(entranceTime));
+                return strBuilder.toString();
+            }
+        }catch (Exception e) {
+            log.error("生成批次序列号出现异常,异常详细是:{}", e);
+        }
+        return "";
+    }
+
     @Override
     public AjaxResult edit(JsDivideCircle divideCircle) {
         Pigpen pigpen = pigpenMapper.selectPigpenById(divideCircle.getPigpenId().longValue());

+ 11 - 9
app-admin/src/main/java/com/ruoyi/web/v2/v1/service/impl/JsDrugCheckServiceImpl.java

@@ -8,7 +8,6 @@ import com.ruoyi.app.domain.EntranceBatch;
 import com.ruoyi.app.domain.HarmlessTreatment;
 import com.ruoyi.app.domain.Purchaser;
 import com.ruoyi.app.domain.Supplier;
-import com.ruoyi.app.domain.response.DrugCheckParam;
 import com.ruoyi.app.mapper.*;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.StringUtils;
@@ -20,17 +19,15 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.web.v2.v1.utils.PaginationUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.math.BigDecimal;
 import java.text.DecimalFormat;
-import java.text.SimpleDateFormat;
-import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.*;
 import java.util.stream.Collectors;
 
 import static com.ruoyi.common.core.domain.AjaxResult.error;
 import static com.ruoyi.common.core.domain.AjaxResult.success;
-import static com.ruoyi.common.utils.PageUtils.startPage;
 
 /**
  * <p>
@@ -64,6 +61,7 @@ public class JsDrugCheckServiceImpl extends ServiceImpl<JsDrugCheckMapper, JsDru
     @Autowired
     private JsProduceCodeMapper produceCodeMapper;
 
+    @Transactional
     @Override
     public AjaxResult add(JsDrugCheck drugCheck) {
         EntranceBatch entranceBatch = entranceBatchMapper.selectEntranceBatchById(drugCheck.getEntranceBatchId().longValue());
@@ -80,6 +78,9 @@ public class JsDrugCheckServiceImpl extends ServiceImpl<JsDrugCheckMapper, JsDru
             queryWrapper1.select(" IFNULL(sum(deal_amount),'0') dealAmount");
             JsRestInspection restInspection = restInspectionMapper.selectOne(queryWrapper1);//静养病死病害数量
             dealAmount = restInspection.getDealAmount();
+            //新增加批次序列号字段,多个批次序列号使用逗号分割
+            drugCheck.setSeriesNoGroup(circles.stream().map(JsDivideCircle::getSeriesNo)
+                    .collect(Collectors.joining(",")));
         }
         int amount = entranceBatch.getAmount() - dealAmount -
                 harmlessTreatment.getIllnessDeadAmount() - harmlessTreatment.getIllnessDiseaseAmount()
@@ -91,6 +92,7 @@ public class JsDrugCheckServiceImpl extends ServiceImpl<JsDrugCheckMapper, JsDru
         return success();
     }
 
+    @Transactional
     @Override
     public AjaxResult edit(JsDrugCheck drugCheck) {
         EntranceBatch entranceBatch = entranceBatchMapper.selectEntranceBatchById(drugCheck.getEntranceBatchId().longValue());
@@ -214,7 +216,7 @@ public class JsDrugCheckServiceImpl extends ServiceImpl<JsDrugCheckMapper, JsDru
 
                 drugAndProduce.setWeight(weight.toString());
                 drugAndProduce.setQualifiedAmountAfter((amount*2-number)/2.0);
-                drugAndProduce.setCreateTime(entranceBatch.getEntranceTime());
+                drugAndProduce.setCreateTime(Date.from(entranceBatch.getEntranceTime().atZone(ZoneId.systemDefault()).toInstant()));
                 drugAndProduces.add(drugAndProduce);
             }
         }
@@ -237,7 +239,7 @@ public class JsDrugCheckServiceImpl extends ServiceImpl<JsDrugCheckMapper, JsDru
                 harmlessVo.setId(id);
                 Supplier supplier = supplierMapper.selectSupplierById(entranceBatch.getSupplierId());
                 harmlessVo.setCargoOwner(supplier.getSupplierName());
-                harmlessVo.setCreateTime(entranceBatch.getEntranceTime());
+                harmlessVo.setCreateTime(Date.from(entranceBatch.getEntranceTime().atZone(ZoneId.systemDefault()).toInstant()));
                 HarmlessTreatment harmlessTreatment = harmlessTreatmentMapper.selectByEntraceBatchId(entranceBatch.getId());
                 if (ObjectUtil.isNotEmpty(harmlessTreatment)) {
                     harmlessVo.setDealReason(harmlessTreatment.getDealReason());
@@ -275,7 +277,7 @@ public class JsDrugCheckServiceImpl extends ServiceImpl<JsDrugCheckMapper, JsDru
         if (entranceBatchList.size() != 0) {
             for (EntranceBatch entranceBatch : entranceBatchList) {
                 AdmissionVo admissionVo = new AdmissionVo();
-                admissionVo.setCreateTime(entranceBatch.getEntranceTime());
+                admissionVo.setCreateTime(Date.from(entranceBatch.getEntranceTime().atZone(ZoneId.systemDefault()).toInstant()));
                 admissionVo.setNum(entranceBatch.getId());
                 Supplier supplier = supplierMapper.selectSupplierById(entranceBatch.getSupplierId());
                 admissionVo.setCargoOwner(supplier.getSupplierName());
@@ -390,7 +392,7 @@ public class JsDrugCheckServiceImpl extends ServiceImpl<JsDrugCheckMapper, JsDru
         if (entranceBatchList.size() != 0) {
             for (EntranceBatch entranceBatch : entranceBatchList) {
                 SummaryVo summaryVo = new SummaryVo();
-                summaryVo.setCreateTime(entranceBatch.getEntranceTime());
+                summaryVo.setCreateTime(Date.from(entranceBatch.getEntranceTime().atZone(ZoneId.systemDefault()).toInstant()));
                 summaryVo.setAmount(entranceBatch.getAmount());
                 QueryWrapper<JsDrugCheck> queryWrapper = new QueryWrapper<>();
                 queryWrapper.eq("entrance_batch_id", entranceBatch.getId());

+ 14 - 6
app-admin/src/main/java/com/ruoyi/web/v2/v1/service/impl/JsRestInspectionServiceImpl.java

@@ -14,11 +14,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.web.v2.v1.utils.UploadImage;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.io.IOException;
-
-import static com.ruoyi.common.core.domain.AjaxResult.error;
 import static com.ruoyi.common.core.domain.AjaxResult.success;
 
 /**
@@ -41,11 +38,22 @@ public class JsRestInspectionServiceImpl extends ServiceImpl<JsRestInspectionMap
     @Autowired
     private PigpenMapper pigpenMapper;
 
+    @Transactional
     @Override
     public AjaxResult add(JsRestInspection jsRestInspection) {
-        restInspectionMapper.insert(jsRestInspection);
-        JsRestInspection restInspection = restInspectionMapper.selectOne(new QueryWrapper<JsRestInspection>().orderByDesc("id").last(" limit 1"));
         JsDivideCircle jsDivideCircle = divideCircleMapper.selectById(jsRestInspection.getDivideCircleId());
+        if(jsDivideCircle != null) {
+            jsRestInspection.setSeriesNo(jsDivideCircle.getSeriesNo() != null ? jsDivideCircle.getSeriesNo() : "");
+        }
+        restInspectionMapper.insert(jsRestInspection);
+        //JsRestInspection restInspection = restInspectionMapper.selectOne(new QueryWrapper<JsRestInspection>().orderByDesc("id").last(" limit 1"));
+        JsRestInspection restInspection;
+        if(jsRestInspection.getId() != null && jsRestInspection.getId() > 0) {
+            restInspection = restInspectionMapper.selectById(jsRestInspection.getId());
+        }else {
+            restInspection = restInspectionMapper.selectOne(new QueryWrapper<JsRestInspection>().orderByDesc("id").last(" limit 1"));
+        }
+
         if ("".equals(jsDivideCircle.getRestInspectionId()) || null == jsDivideCircle.getRestInspectionId()) {
             jsDivideCircle.setRestInspectionId(restInspection.getId().toString());
         } else {

+ 2 - 1
app-admin/src/main/java/com/ruoyi/web/v2/v1/service/impl/JsSampleServiceImpl.java

@@ -5,13 +5,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.web.v2.v1.entity.JsInstrumentMaintenance;
 import com.ruoyi.web.v2.v1.entity.JsSample;
 import com.ruoyi.web.v2.v1.mapper.JsSampleMapper;
 import com.ruoyi.web.v2.v1.service.IJsSampleService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -32,6 +32,7 @@ public class JsSampleServiceImpl extends ServiceImpl<JsSampleMapper, JsSample> i
     @Autowired
     private JsSampleMapper sampleMapper;
 
+    @Transactional
     @Override
     public AjaxResult add(JsSample sample) {
         JsSample jsSample = sampleMapper.selectOne(new QueryWrapper<JsSample>().orderByDesc("id").last(" limit 1"));

+ 10 - 0
app-system/pom.xml

@@ -28,6 +28,16 @@
             <optional>true</optional>
         </dependency>
 
+
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.datatype</groupId>
+            <artifactId>jackson-datatype-jsr310</artifactId>
+        </dependency>
+
     </dependencies>
 
 </project>

+ 34 - 5
app-system/src/main/java/com/ruoyi/app/domain/EntranceBatch.java

@@ -1,12 +1,20 @@
 package com.ruoyi.app.domain;
 
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.ZoneId;
 import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import javax.validation.constraints.*;
 
@@ -28,9 +36,12 @@ public class EntranceBatch extends BaseEntity
     private Long supplierId;
 
     /** 进场时间 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "进场时间", width = 30, dateFormat = "yyyy-MM-dd")
-    private Date entranceTime;
+    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+    @JsonSerialize(using = LocalDateTimeSerializer.class)
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "进场时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime entranceTime;
 
     /** 产地:三选一:1-本市、2-市外、3-省外,默认本市 */
     @Excel(name = "产地:三选一:1-本市、2-市外、3-省外,默认本市")
@@ -140,13 +151,29 @@ public class EntranceBatch extends BaseEntity
         return supplierId;
     }
 
-    public void setEntranceTime(Date entranceTime) 
+    public void setEntranceTime(LocalDateTime entranceTime)
     {
         this.entranceTime = entranceTime;
     }
 
+    public void entranceTimeAdapter() {
+        if(entranceTime != null) {
+            LocalDateTime realTime = entranceTime;
+            if((realTime.getHour() == 0) && (realTime.getMinute() == 0) && (realTime.getSecond() == 0)) {
+                LocalTime nowTime = LocalTime.now();
+                realTime = realTime.withHour(nowTime.getHour())
+                        .withMinute(nowTime.getMinute())
+                        .minusSeconds(nowTime.getSecond())
+                        .withNano(nowTime.getNano());
+                entranceTime = realTime;
+            }
+        }else {
+            this.entranceTime = LocalDateTime.now();
+        }
+    }
+
     @NotNull(message = "进场时间不能为空")
-    public Date getEntranceTime() 
+    public LocalDateTime getEntranceTime()
     {
         return entranceTime;
     }
@@ -373,11 +400,13 @@ public class EntranceBatch extends BaseEntity
         return animalEartags;
     }
 
+    @Override
     public void setRemark(String remark)
     {
         this.remark = remark;
     }
 
+    @Override
     @Size(min = 0, max = 50, message = "备注输入超出最大长度限制(50位)")
     public String getRemark()
     {

+ 2 - 0
app-system/src/main/java/com/ruoyi/app/service/impl/EntranceBatchServiceImpl.java

@@ -97,6 +97,8 @@ public class EntranceBatchServiceImpl implements IEntranceBatchService {
     @Override
     public int insertEntranceBatch(EntranceBatch entranceBatch) {
         entranceBatch.setCreateTime(DateUtils.getNowDate());
+        //对入场时间进行适配,前端填报的入场时间只有日期,没有时分秒(时间被初始化为凌晨12点),那么自动设置当前系统的时分秒
+        entranceBatch.entranceTimeAdapter();
         return entranceBatchMapper.insertEntranceBatch(entranceBatch);
     }
 

+ 2 - 0
app-system/src/main/java/com/ruoyi/app/service/impl/ProductTraceServiceImpl.java

@@ -36,6 +36,7 @@ public class ProductTraceServiceImpl implements IProductTraceService {
      *@param productTraceParam 查询条件
      * @return 结果
      */
+    @Override
     public List<ProductTraceDTO> selectProductTrace(ProductTraceParam productTraceParam) {
         return entranceBatchMapper.selectProductTrace(productTraceParam).stream()
                 .map(item -> {
@@ -93,6 +94,7 @@ public class ProductTraceServiceImpl implements IProductTraceService {
      * @param  reqEntranceAndDistribute 入场和分销批次信息
      * @return 结果
      */
+    @Override
     public List<PorkProduceDTO> selectPorkProduceByBatch(ReqEntranceAndDistribute reqEntranceAndDistribute){
         return slaughterBatchMapper.selectPorkProduceByBatch(reqEntranceAndDistribute);
     }