Browse Source

新增送样卡记录表,定时去原始记录同步当班的数据,质检统计修改为去送样卡记录表统计

lingpeng.li 1 week ago
parent
commit
bf21bf6ca1

+ 2 - 0
zgztBus/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java

@@ -174,6 +174,8 @@ public class ShiroConfig {
         filterChainDefinitionMap.put("/actualControl/rollbackNotice/saveNotice", "anon");
         //接收轧钢平台的取消退坯通知接口排除
         filterChainDefinitionMap.put("/actualControl/cancelRollback/saveCancel", "anon");
+        //同步原始记录数据到送样卡记录表排除
+        filterChainDefinitionMap.put("/billet/billetOriginalProductRecord/queryBilletRecordByCcmNo", "anon");
 
         // update-begin--author:liusq Date:20230522 for:[issues/4829]访问不存在的url时会提示Token失效,请重新登录呢
         //错误路径排除

+ 17 - 21
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/billetOriginalProductRecord/service/impl/BilletOriginalProductRecordServiceImpl.java

@@ -9,8 +9,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.commons.lang.StringUtils;
 import org.jeecg.common.util.DateUtils;
 import org.jeecg.common.util.oConvertUtils;
-import org.jeecg.modules.actualControl.billetActual.billetActual.entity.BilletRulerConfig;
-import org.jeecg.modules.actualControl.billetActual.billetActual.mapper.BilletRulerConfigMapper;
 import org.jeecg.modules.billet.billetHotsend.entity.BilletHotsend;
 import org.jeecg.modules.billet.billetHotsend.mapper.BilletHotsendBaseMapper;
 import org.jeecg.modules.billet.billetHotsendChangeShift.entity.BilletHotsendChangeShift;
@@ -23,7 +21,8 @@ import org.jeecg.modules.billet.billetOriginalProductRecord.vo.QualityInspection
 import org.jeecg.modules.billet.billetOriginalProductRecord.vo.QualityInspectionVO;
 import org.jeecg.modules.billet.qualityInspectionStatistics.entity.QualityInspectionStatistics;
 import org.jeecg.modules.billet.qualityInspectionStatistics.mapper.QualityInspectionStatisticsMapper;
-import org.jeecg.modules.carUnit.service.ISysDictService;
+import org.jeecg.modules.billet.sampleCardDeliveryRecord.entity.SampleCardDeliveryRecord;
+import org.jeecg.modules.billet.sampleCardDeliveryRecord.mapper.SampleCardDeliveryRecordMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
@@ -52,18 +51,15 @@ public class BilletOriginalProductRecordServiceImpl extends ServiceImpl<BilletOr
     @Autowired
     private IBilletHotsendChangeShiftService billetHotsendChangeShiftService;
 
-    @Autowired
-    private ISysDictService sysDictService;
-
-    @Autowired
-    private BilletRulerConfigMapper billetRulerConfigMapper;
-
     @Autowired
     private QualityInspectionStatisticsMapper qualityInspectionStatisticsMapper;
 
     @Autowired
     private BilletHotsendBaseMapper billetHotsendBaseMapper;
 
+    @Autowired
+    private SampleCardDeliveryRecordMapper sampleCardDeliveryRecordMapper;
+
     @Override
     public Map<String, Object> getQualityInspectionMenu(QualityInspectionQueryDTO queryDTO) {
         if (queryDTO == null || StringUtils.isBlank(queryDTO.getCcmNo())) {
@@ -476,13 +472,13 @@ public class BilletOriginalProductRecordServiceImpl extends ServiceImpl<BilletOr
                 : BigDecimal.ONE; // 如果没有米重数据,使用1作为系数
 
         // 查询当前班次的原始记录
-        LambdaQueryWrapper<BilletOriginalProductRecord> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(BilletOriginalProductRecord::getCcmNo, ccmNo)
-                .eq(BilletOriginalProductRecord::getShift, shiftRecord.getShift())
-                .eq(BilletOriginalProductRecord::getShiftGroup, shiftRecord.getShiftGroup())
-                .between(BilletOriginalProductRecord::getCreateTime, classStartTime, classEndTime)
-                .orderByAsc(BilletOriginalProductRecord::getCreateTime);
-        List<BilletOriginalProductRecord> records = this.list(queryWrapper);
+        LambdaQueryWrapper<SampleCardDeliveryRecord> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(SampleCardDeliveryRecord::getCcmNo, ccmNo)
+                .eq(SampleCardDeliveryRecord::getShift, shiftRecord.getShift())
+                .eq(SampleCardDeliveryRecord::getShiftGroup, shiftRecord.getShiftGroup())
+                .between(SampleCardDeliveryRecord::getCreateTime, classStartTime, classEndTime)
+                .orderByAsc(SampleCardDeliveryRecord::getCreateTime);
+        List<SampleCardDeliveryRecord> records = sampleCardDeliveryRecordMapper.selectList(queryWrapper);
 
         // 获取当前班次逻辑日期,用作日统计参考
         LocalDate logicalDay = getShiftDate(classStartTime, shiftRecord.getShift());
@@ -497,7 +493,7 @@ public class BilletOriginalProductRecordServiceImpl extends ServiceImpl<BilletOr
 
         ObjectMapper objectMapper = new ObjectMapper();
 
-        for (BilletOriginalProductRecord record : records) {
+        for (SampleCardDeliveryRecord record : records) {
             Map<String, Integer> mergedCount = new HashMap<>();
             Map<String, BigDecimal> mergedWeight = new HashMap<>();
 
@@ -657,10 +653,10 @@ public class BilletOriginalProductRecordServiceImpl extends ServiceImpl<BilletOr
         // 获取本月第一天的起始时间:2025-07-01 00:00:00
         LocalDate logicalMonth = logicalDay.withDayOfMonth(1);
         Date monthStartTime = Date.from(logicalMonth.atStartOfDay(ZoneId.systemDefault()).toInstant());
-        LambdaQueryWrapper<BilletOriginalProductRecord> monthQuery = new LambdaQueryWrapper<>();
-        monthQuery.eq(BilletOriginalProductRecord::getCcmNo, ccmNo)
-                .between(BilletOriginalProductRecord::getCreateTime, monthStartTime, classEndTime);
-        List<BilletOriginalProductRecord> monthRecords = this.list(monthQuery);
+        LambdaQueryWrapper<SampleCardDeliveryRecord> monthQuery = new LambdaQueryWrapper<>();
+        monthQuery.eq(SampleCardDeliveryRecord::getCcmNo, ccmNo)
+                .between(SampleCardDeliveryRecord::getCreateTime, monthStartTime, classEndTime);
+        List<SampleCardDeliveryRecord> monthRecords = sampleCardDeliveryRecordMapper.selectList(monthQuery);
 
         // 当前班次开始之前的炉数(止上班)
         int monthStartHeatCount = (int) monthRecords.stream()

+ 163 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/sampleCardDeliveryRecord/controller/SampleCardDeliveryRecordController.java

@@ -0,0 +1,163 @@
+package org.jeecg.modules.billet.sampleCardDeliveryRecord.controller;
+
+import java.util.Arrays;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.billet.sampleCardDeliveryRecord.entity.SampleCardDeliveryRecord;
+import org.jeecg.modules.billet.sampleCardDeliveryRecord.service.ISampleCardDeliveryRecordService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: 送样卡记录
+ * @Author: jeecg-boot
+ * @Date:   2025-07-14
+ * @Version: V1.0
+ */
+@Api(tags="送样卡记录")
+@RestController
+@RequestMapping("/sampleCardDeliveryRecord/sampleCardDeliveryRecord")
+@Slf4j
+public class SampleCardDeliveryRecordController extends JeecgController<SampleCardDeliveryRecord, ISampleCardDeliveryRecordService> {
+	@Autowired
+	private ISampleCardDeliveryRecordService sampleCardDeliveryRecordService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param sampleCardDeliveryRecord
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "送样卡记录-分页列表查询")
+	@ApiOperation(value="送样卡记录-分页列表查询", notes="送样卡记录-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<SampleCardDeliveryRecord>> queryPageList(SampleCardDeliveryRecord sampleCardDeliveryRecord,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<SampleCardDeliveryRecord> queryWrapper = QueryGenerator.initQueryWrapper(sampleCardDeliveryRecord, req.getParameterMap());
+		Page<SampleCardDeliveryRecord> page = new Page<SampleCardDeliveryRecord>(pageNo, pageSize);
+		IPage<SampleCardDeliveryRecord> pageList = sampleCardDeliveryRecordService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param sampleCardDeliveryRecord
+	 * @return
+	 */
+	@AutoLog(value = "送样卡记录-添加")
+	@ApiOperation(value="送样卡记录-添加", notes="送样卡记录-添加")
+	@RequiresPermissions("sampleCardDeliveryRecord:sample_card_delivery_record:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody SampleCardDeliveryRecord sampleCardDeliveryRecord) {
+		sampleCardDeliveryRecordService.save(sampleCardDeliveryRecord);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param sampleCardDeliveryRecord
+	 * @return
+	 */
+	@AutoLog(value = "送样卡记录-编辑")
+	@ApiOperation(value="送样卡记录-编辑", notes="送样卡记录-编辑")
+	@RequiresPermissions("sampleCardDeliveryRecord:sample_card_delivery_record:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody SampleCardDeliveryRecord sampleCardDeliveryRecord) {
+		sampleCardDeliveryRecordService.updateById(sampleCardDeliveryRecord);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "送样卡记录-通过id删除")
+	@ApiOperation(value="送样卡记录-通过id删除", notes="送样卡记录-通过id删除")
+	@RequiresPermissions("sampleCardDeliveryRecord:sample_card_delivery_record:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		sampleCardDeliveryRecordService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "送样卡记录-批量删除")
+	@ApiOperation(value="送样卡记录-批量删除", notes="送样卡记录-批量删除")
+	@RequiresPermissions("sampleCardDeliveryRecord:sample_card_delivery_record:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.sampleCardDeliveryRecordService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "送样卡记录-通过id查询")
+	@ApiOperation(value="送样卡记录-通过id查询", notes="送样卡记录-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<SampleCardDeliveryRecord> queryById(@RequestParam(name="id",required=true) String id) {
+		SampleCardDeliveryRecord sampleCardDeliveryRecord = sampleCardDeliveryRecordService.getById(id);
+		if(sampleCardDeliveryRecord==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(sampleCardDeliveryRecord);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param sampleCardDeliveryRecord
+    */
+    @RequiresPermissions("sampleCardDeliveryRecord:sample_card_delivery_record:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, SampleCardDeliveryRecord sampleCardDeliveryRecord) {
+        return super.exportXls(request, sampleCardDeliveryRecord, SampleCardDeliveryRecord.class, "送样卡记录");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequiresPermissions("sampleCardDeliveryRecord:sample_card_delivery_record:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, SampleCardDeliveryRecord.class);
+    }
+
+}

+ 178 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/sampleCardDeliveryRecord/entity/SampleCardDeliveryRecord.java

@@ -0,0 +1,178 @@
+package org.jeecg.modules.billet.sampleCardDeliveryRecord.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 送样卡记录
+ * @Author: jeecg-boot
+ * @Date:   2025-07-14
+ * @Version: V1.0
+ */
+@Data
+@TableName("sample_card_delivery_record")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="sample_card_delivery_record对象", description="送样卡记录")
+public class SampleCardDeliveryRecord implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**ID*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "ID")
+    private java.lang.String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private java.util.Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private java.util.Date updateTime;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+	/**铸机号*/
+	@Excel(name = "铸机号", width = 15)
+    @ApiModelProperty(value = "铸机号")
+    private java.lang.String ccmNo;
+	/**炉号*/
+	@Excel(name = "炉号", width = 15)
+    @ApiModelProperty(value = "炉号")
+    private java.lang.String heatNo;
+	/**班别*/
+	@Excel(name = "班别", width = 15)
+    @ApiModelProperty(value = "班别")
+    private java.lang.String shift;
+	/**班组*/
+	@Excel(name = "班组", width = 15)
+    @ApiModelProperty(value = "班组")
+    private java.lang.String shiftGroup;
+	/**牌号*/
+	@Excel(name = "牌号", width = 15)
+    @ApiModelProperty(value = "牌号")
+    private java.lang.String grade;
+	/**定尺*/
+	@Excel(name = "定尺", width = 15)
+    @ApiModelProperty(value = "定尺")
+    private java.lang.Integer length;
+	/**合计*/
+	@Excel(name = "合计", width = 15)
+    @ApiModelProperty(value = "合计")
+    private java.lang.Integer amount;
+	/**棒一定尺明细*/
+	@Excel(name = "棒一定尺明细", width = 15)
+    @ApiModelProperty(value = "棒一定尺明细")
+    private java.lang.String rollClubOneDetails;
+	/**棒二定尺明细*/
+	@Excel(name = "棒二定尺明细", width = 15)
+    @ApiModelProperty(value = "棒二定尺明细")
+    private java.lang.String rollClubTwoDetails;
+	/**棒三定尺明细*/
+	@Excel(name = "棒三定尺明细", width = 15)
+    @ApiModelProperty(value = "棒三定尺明细")
+    private java.lang.String rollClubThreeDetails;
+	/**定尺明细*/
+	@Excel(name = "定尺明细", width = 15)
+    @ApiModelProperty(value = "定尺明细")
+    private java.lang.String lengthDetails;
+	/**1流支数*/
+	@Excel(name = "1流支数", width = 15)
+    @ApiModelProperty(value = "1流支数")
+    private java.lang.Integer oneStrandSum;
+	/**2流支数*/
+	@Excel(name = "2流支数", width = 15)
+    @ApiModelProperty(value = "2流支数")
+    private java.lang.Integer twoStrandSum;
+	/**3流支数*/
+	@Excel(name = "3流支数", width = 15)
+    @ApiModelProperty(value = "3流支数")
+    private java.lang.Integer threeStrandSum;
+	/**4流支数*/
+	@Excel(name = "4流支数", width = 15)
+    @ApiModelProperty(value = "4流支数")
+    private java.lang.Integer fourStrandSum;
+	/**5流支数*/
+	@Excel(name = "5流支数", width = 15)
+    @ApiModelProperty(value = "5流支数")
+    private java.lang.Integer fiveStrandSum;
+	/**6流支数*/
+	@Excel(name = "6流支数", width = 15)
+    @ApiModelProperty(value = "6流支数")
+    private java.lang.Integer sixStrandSum;
+	/**7流支数*/
+	@Excel(name = "7流支数", width = 15)
+    @ApiModelProperty(value = "7流支数")
+    private java.lang.Integer sevenStrandSum;
+	/**8流支数*/
+	@Excel(name = "8流支数", width = 15)
+    @ApiModelProperty(value = "8流支数")
+    private java.lang.Integer eightStrandSum;
+	/**热送定尺*/
+	@Excel(name = "热送定尺", width = 15)
+    @ApiModelProperty(value = "热送定尺")
+    private java.lang.String hotChargeLength;
+	/**堆垛定尺*/
+	@Excel(name = "堆垛定尺", width = 15)
+    @ApiModelProperty(value = "堆垛定尺")
+    private java.lang.String stackLength;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private java.lang.String remark;
+	/**确认人*/
+	@Excel(name = "确认人", width = 15)
+    @ApiModelProperty(value = "确认人")
+    private java.lang.String confirmBy;
+	/**确认日期*/
+	@Excel(name = "确认日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "确认日期")
+    private java.util.Date confirmTime;
+	/**是否编辑热装(1:未编辑,2:已编辑)*/
+	@Excel(name = "是否编辑热装(1:未编辑,2:已编辑)", width = 15)
+    @ApiModelProperty(value = "是否编辑热装(1:未编辑,2:已编辑)")
+    private java.lang.String isEditCharge;
+	/**起垛信息*/
+	@Excel(name = "起垛信息", width = 15)
+    @ApiModelProperty(value = "起垛信息")
+    private java.lang.String stackInfo;
+	/**质检牌号*/
+	@Excel(name = "质检牌号", width = 15)
+    @ApiModelProperty(value = "质检牌号")
+    private java.lang.String brandNum;
+	/**送样时间*/
+	@Excel(name = "送样时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "送样时间")
+    private java.util.Date deliveryTime;
+	/**质检备注*/
+	@Excel(name = "质检备注", width = 15)
+    @ApiModelProperty(value = "质检备注")
+    private java.lang.String notes;
+}

+ 14 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/sampleCardDeliveryRecord/mapper/SampleCardDeliveryRecordMapper.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.billet.sampleCardDeliveryRecord.mapper;
+
+import org.jeecg.modules.billet.sampleCardDeliveryRecord.entity.SampleCardDeliveryRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 送样卡记录
+ * @Author: jeecg-boot
+ * @Date:   2025-07-14
+ * @Version: V1.0
+ */
+public interface SampleCardDeliveryRecordMapper extends BaseMapper<SampleCardDeliveryRecord> {
+
+}

+ 5 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/sampleCardDeliveryRecord/mapper/xml/SampleCardDeliveryRecordMapper.xml

@@ -0,0 +1,5 @@
+<?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="org.jeecg.modules.billet.sampleCardDeliveryRecord.mapper.SampleCardDeliveryRecordMapper">
+
+</mapper>

+ 14 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/sampleCardDeliveryRecord/service/ISampleCardDeliveryRecordService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.billet.sampleCardDeliveryRecord.service;
+
+import org.jeecg.modules.billet.sampleCardDeliveryRecord.entity.SampleCardDeliveryRecord;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 送样卡记录
+ * @Author: jeecg-boot
+ * @Date:   2025-07-14
+ * @Version: V1.0
+ */
+public interface ISampleCardDeliveryRecordService extends IService<SampleCardDeliveryRecord> {
+
+}

+ 19 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/sampleCardDeliveryRecord/service/impl/SampleCardDeliveryRecordServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.billet.sampleCardDeliveryRecord.service.impl;
+
+import org.jeecg.modules.billet.sampleCardDeliveryRecord.entity.SampleCardDeliveryRecord;
+import org.jeecg.modules.billet.sampleCardDeliveryRecord.mapper.SampleCardDeliveryRecordMapper;
+import org.jeecg.modules.billet.sampleCardDeliveryRecord.service.ISampleCardDeliveryRecordService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 送样卡记录
+ * @Author: jeecg-boot
+ * @Date:   2025-07-14
+ * @Version: V1.0
+ */
+@Service
+public class SampleCardDeliveryRecordServiceImpl extends ServiceImpl<SampleCardDeliveryRecordMapper, SampleCardDeliveryRecord> implements ISampleCardDeliveryRecordService {
+
+}

+ 89 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/sampleCardDeliveryRecord/task/SampleCardSyncTask.java

@@ -0,0 +1,89 @@
+package org.jeecg.modules.billet.sampleCardDeliveryRecord.task;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.billet.sampleCardDeliveryRecord.entity.SampleCardDeliveryRecord;
+import org.jeecg.modules.billet.sampleCardDeliveryRecord.service.ISampleCardDeliveryRecordService;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.util.*;
+
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class SampleCardSyncTask {
+
+    private final RestTemplate restTemplate;
+    private final ISampleCardDeliveryRecordService sampleCardDeliveryRecordService;
+
+    // 请求接口的地址
+    private static final String URL = "http://localhost:7005/billet/billetOriginalProductRecord/queryBilletRecordByCcmNo?queryType=1&ccmNo=";
+
+    @Scheduled(fixedRate = 10000) // 每10秒执行一次
+    public void syncSampleCardRecords() {
+        for (String ccmNo : Arrays.asList("5", "6")) {
+            try {
+                String requestUrl = URL + ccmNo;
+                Result result = restTemplate.getForObject(requestUrl, Result.class);
+
+                if (result != null && result.isSuccess()) {
+                    JSONObject jsonObject = new JSONObject((Map) result.getResult());
+                    JSONArray jsonArray = jsonObject.getJSONArray("billetOriginalProductRecordList");
+
+                    List<SampleCardDeliveryRecord> recordsToSave = new ArrayList<>();
+
+                    for (int i = 0; i < jsonArray.size(); i++) {
+                        JSONObject json = jsonArray.getJSONObject(i);
+                        SampleCardDeliveryRecord record = json.toJavaObject(SampleCardDeliveryRecord.class);
+
+                        // 判重:同一天 + heatNo + shift + shiftGroup + ccmNo
+                        Date createDate = DateUtils.str2Date(json.getString("createTime"), DateUtils.datetimeFormat.get());
+                        LocalDate createLocalDate = createDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+                        LocalDate dayStart = createLocalDate;
+                        LocalDate dayEnd = createLocalDate;
+
+                        LambdaQueryWrapper<SampleCardDeliveryRecord> wrapper = new LambdaQueryWrapper<>();
+                        wrapper.eq(SampleCardDeliveryRecord::getCcmNo, record.getCcmNo())
+                                .eq(SampleCardDeliveryRecord::getHeatNo, record.getHeatNo())
+                                .eq(SampleCardDeliveryRecord::getShift, record.getShift())
+                                .eq(SampleCardDeliveryRecord::getShiftGroup, record.getShiftGroup())
+                                .between(SampleCardDeliveryRecord::getCreateTime,
+                                        Date.from(dayStart.atStartOfDay(ZoneId.systemDefault()).toInstant()),
+                                        Date.from(dayEnd.plusDays(1).atStartOfDay(ZoneId.systemDefault()).minusNanos(1).toInstant()))
+                                .last("LIMIT 1");
+
+                        boolean exists = sampleCardDeliveryRecordService.getOne(wrapper, false) != null;
+
+                        if (!exists) {
+                            record.setId(String.valueOf(IdWorker.getId()));
+                            recordsToSave.add(record);
+                        }
+                    }
+
+                    if (!recordsToSave.isEmpty()) {
+                        sampleCardDeliveryRecordService.saveBatch(recordsToSave);
+                        log.info("成功新增 SampleCardDeliveryRecord {} 条,ccmNo={}", recordsToSave.size(), ccmNo);
+                    } else {
+//                        log.info("没有可新增的数据,ccmNo={}", ccmNo);
+                    }
+                } else {
+                    log.warn("接口请求失败:{}", result != null ? result.getMessage() : "null response");
+                }
+            } catch (Exception e) {
+                log.error("同步 SampleCardDeliveryRecord 出错,ccmNo={}", ccmNo, e);
+            }
+        }
+    }
+
+
+}