xiongwanxiong пре 3 дана
родитељ
комит
1116ca8f9f
21 измењених фајлова са 1168 додато и 41 уклоњено
  1. 2 0
      wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/Application.java
  2. 26 0
      wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/constants/TaskStatusEnum.java
  3. 5 1
      wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/ibmmq/enums/BillTypeEnum.java
  4. 1 1
      wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/ibmmq/utils/XmlBuildTool.java
  5. 4 0
      wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/AbstractCatalogTask.java
  6. 204 0
      wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/BaseBusinessTask.java
  7. 68 0
      wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/ChemicalsCatalogTask.java
  8. 65 0
      wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/GoodsCatalogTask.java
  9. 65 0
      wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/PackCatalogTask.java
  10. 154 0
      wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/ScheduledTasks.java
  11. 76 0
      wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/controller/TaskLogController.java
  12. 75 0
      wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/dao/TaskLogMapper.java
  13. 42 0
      wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/pojo/TaskLog.java
  14. 36 0
      wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/pojo/TaskLogQuery.java
  15. 80 0
      wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/service/ITaskLogService.java
  16. 124 0
      wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/service/impl/TaskLogServiceImpl.java
  17. 33 33
      wxjy-wxjy-service/src/main/resources/application.properties
  18. 2 2
      wxjy-wxjy-service/src/main/resources/mapper/base/ChemicalsCatalogMapper.xml
  19. 2 2
      wxjy-wxjy-service/src/main/resources/mapper/base/GoodsCatalogMapper.xml
  20. 2 2
      wxjy-wxjy-service/src/main/resources/mapper/base/PackCatalogMapper.xml
  21. 102 0
      wxjy-wxjy-service/src/main/resources/mapper/task/TaskLogMapper.xml

+ 2 - 0
wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/Application.java

@@ -3,6 +3,7 @@ package cn.gov.customs.wxjy;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.ComponentScan;
+import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.tsf.annotation.EnableTsf;
 
 import static org.springframework.boot.SpringApplication.run;
@@ -17,6 +18,7 @@ import static org.springframework.boot.SpringApplication.run;
 @SpringBootApplication
 @EnableFeignClients(basePackages = "cn.gov.customs")
 @ComponentScan(basePackages = "cn.gov.customs")
+@EnableScheduling
 public class Application {
   public static void main(String[] args) {
     run(Application.class, args);

+ 26 - 0
wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/constants/TaskStatusEnum.java

@@ -0,0 +1,26 @@
+package cn.gov.customs.wxjy.constants;
+
+/**
+ * 任务状态枚举
+ */
+public enum TaskStatusEnum {
+
+    SUCCESS("1", "成功"),
+    FAILED("0", "失败");
+
+    private final String code;
+    private final String name;
+
+    TaskStatusEnum(String code, String name) {
+        this.code = code;
+        this.name = name;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getName() {
+        return name;
+    }
+}

+ 5 - 1
wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/ibmmq/enums/BillTypeEnum.java

@@ -9,7 +9,11 @@ public enum BillTypeEnum {
     BUS_TYPE_MATERIAL_PP("4","生产加工单"),
     BUS_TYPE_MATERIAL_FGW("5","产成品入库"),
     BUS_TYPE_MATERIAL_SO("6","销售出库单"),
-    BUS_TYPE_SUPERVISION_LOG("7","企业生产日志");
+    BUS_TYPE_SUPERVISION_LOG("7","企业生产日志"),
+
+    BUS_TYPE_PACK_CATALOG("8","包装种类目录"),
+    BUS_TYPE_CHEMICALS_CATALOG("9","危化品目录"),
+    BUS_TYPE_GOODS_CATALOG("10","危险货物目录");
 
     private final String code;
     private final String name;

+ 1 - 1
wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/ibmmq/utils/XmlBuildTool.java

@@ -88,7 +88,7 @@ public class XmlBuildTool {
         StringWriter writer = new StringWriter();
         marshaller.marshal(dxpMsg, writer);
         String xmlString = writer.toString();
-        log.info("XML报文:{}", xmlString);
+//        log.info("XML报文:{}", xmlString);
         return xmlString;
     }
 

+ 4 - 0
wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/AbstractCatalogTask.java

@@ -0,0 +1,4 @@
+package cn.gov.customs.wxjy.task;
+
+public class AbstractCatalogTask {
+}

+ 204 - 0
wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/BaseBusinessTask.java

@@ -0,0 +1,204 @@
+package cn.gov.customs.wxjy.task;
+
+import cn.gov.customs.cacp.sdks.core.user.trans.UserContextHolder;
+import cn.gov.customs.cacp.sdks.hgid.HgidGenerator;
+import cn.gov.customs.wxjy.common.utils.DateUtils;
+import cn.gov.customs.wxjy.constants.TaskStatusEnum;
+import cn.gov.customs.wxjy.ibmmq.async.AsyncPushService;
+import cn.gov.customs.wxjy.ibmmq.config.PushContext;
+import cn.gov.customs.wxjy.ibmmq.enums.IbmmqEnum;
+import cn.gov.customs.wxjy.task.dao.TaskLogMapper;
+import cn.gov.customs.wxjy.task.pojo.TaskLog;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 基础业务任务抽象类
+ * 所有具体业务任务都继承此类
+ */
+@Slf4j
+public abstract class BaseBusinessTask<T> {
+
+    @Autowired
+    protected TaskLogMapper taskLogMapper;
+
+    @Autowired
+    protected AsyncPushService asyncPushService;
+
+    @Autowired
+    protected HgidGenerator idHelper;
+
+    /**
+     * 获取任务编码
+     */
+    public abstract String getTaskCode();
+
+    /**
+     * 获取任务名称
+     */
+    public abstract String getTaskName();
+
+    /**
+     * 获取业务类型编码
+     */
+    public abstract String getBusinessType();
+
+    /**
+     * 获取Mapper类名
+     */
+    public abstract String getMapperClassName();
+
+    /**
+     * 获取实体类
+     */
+    public abstract Class<T> getEntityClass();
+
+    /**
+     * 查询数据
+     * @param lastSyncTime 上次同步时间
+     * @return 需要处理的数据列表
+     */
+    public abstract List<T> queryData(Date lastSyncTime);
+
+    /**
+     * 判断是否为新增数据
+     * @param data 数据对象
+     * @return true-新增,false-修改
+     */
+    public abstract boolean isNewData(T data);
+
+    /**
+     * 获取数据ID
+     * @param data 数据对象
+     * @return 数据ID
+     */
+    public abstract String getDataId(T data);
+
+    /**
+     * 执行任务
+     */
+    public void execute() {
+        Date lastSyncTime = getLastSyncTime();
+        List<T> dataList = queryData(lastSyncTime);
+
+        if (CollectionUtils.isEmpty(dataList)) {
+            log.info("{}:没有需要同步的数据", getTaskName());
+            return;
+        }
+
+        // 区分新增和修改数据
+        List<T> addList = new ArrayList<>();
+        List<T> updateList = new ArrayList<>();
+
+        for (T data : dataList) {
+            if (isNewData(data)) {
+                addList.add(data);
+            } else {
+                updateList.add(data);
+            }
+        }
+
+        // 推送数据
+        if (CollectionUtils.isNotEmpty(addList)) {
+            pushData(addList, IbmmqEnum.SAVE.getCode());
+        }
+
+        if (CollectionUtils.isNotEmpty(updateList)) {
+            pushData(updateList, IbmmqEnum.UPDATE.getCode());
+        }
+    }
+
+    /**
+     * 获取上次同步时间
+     */
+    protected Date getLastSyncTime() {
+        return taskLogMapper.getMaxBussinessDate(getBusinessType());
+    }
+
+    /**
+     * 推送数据
+     */
+    protected void pushData(List<T> dataList, String operType) {
+        String taskName = getTaskName();
+        log.info("{}:开始推送{}条数据,操作类型:{}",
+                taskName, dataList.size(), operType);
+
+        try {
+            // 构建推送上下文
+            T firstData = dataList.get(0);
+            String pushDataId = getDataId(firstData);
+
+            PushContext context = PushContext.of(
+                    getBusinessType(),
+                    pushDataId,
+                    UserContextHolder.currentUser()
+            );
+
+            // 发送异步消息
+            asyncPushService.sendAsync(
+                    context,
+                    dataList,
+                    getMapperClassName(),
+                    operType,
+                    null,
+                    new Class[]{getEntityClass()},
+                    null
+            );
+
+            log.info("{}:数据推送成功,数量:{}", taskName, dataList.size());
+
+        } catch (Exception e) {
+            log.error("{}:数据推送失败", taskName, e);
+            throw e;
+        }
+    }
+
+    /**
+     * 记录任务日志
+     */
+    public void recordTaskLog(TaskStatusEnum status, long startTime, String errorMsg) {
+        try {
+            TaskLog taskLog = new TaskLog();
+            taskLog.setPkTaskLog(idHelper.nextId());
+            taskLog.setBusinessType(getBusinessType());
+            taskLog.setTaskTime(DateUtils.getNowDate());
+            taskLog.setStatus(status.getCode());
+            taskLog.setCostTime(System.currentTimeMillis() - startTime);
+            taskLog.setErrorMessage(errorMsg);
+            taskLogMapper.insert(taskLog);
+        } catch (Exception e) {
+            log.error("保存任务日志失败,业务类型:{}", getBusinessType(), e);
+        }
+    }
+
+    /**
+     * 安全类型转换
+     */
+    protected <R> List<R> safeCastList(List<?> source, Class<R> clazz) {
+        if (source == null) {
+            return Collections.emptyList();
+        }
+
+        List<R> result = new ArrayList<>(source.size());
+        for (Object item : source) {
+            if (item == null) {
+                continue;
+            }
+            if (!clazz.isInstance(item)) {
+                throw new ClassCastException(String.format(
+                        "期望类型: %s, 实际类型: %s",
+                        clazz.getName(),
+                        item.getClass().getName()
+                ));
+            }
+            result.add(clazz.cast(item));
+        }
+        return result;
+    }
+}

+ 68 - 0
wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/ChemicalsCatalogTask.java

@@ -0,0 +1,68 @@
+package cn.gov.customs.wxjy.task;
+
+import cn.gov.customs.wxjy.base.dao.ChemicalsCatalogMapper;
+import cn.gov.customs.wxjy.base.dao.GoodsCatalogMapper;
+import cn.gov.customs.wxjy.base.pojo.ChemicalsCatalog;
+import cn.gov.customs.wxjy.base.pojo.ChemicalsCatalogQuery;
+import cn.gov.customs.wxjy.base.pojo.GoodsCatalogQuery;
+import cn.gov.customs.wxjy.ibmmq.enums.BillTypeEnum;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 危化品目录推送任务
+ */
+@Component
+@Slf4j
+public class ChemicalsCatalogTask extends BaseBusinessTask<ChemicalsCatalog> {
+
+    @Autowired
+    private ChemicalsCatalogMapper chemicalsCatalogMapper;
+
+    @Override
+    public String getTaskCode() {
+        return BillTypeEnum.BUS_TYPE_CHEMICALS_CATALOG.getCode();
+    }
+
+    @Override
+    public String getTaskName() {
+        return BillTypeEnum.getNameByCode(getTaskCode());
+    }
+
+    @Override
+    public String getBusinessType() {
+        return getTaskCode();
+    }
+
+    @Override
+    public String getMapperClassName() {
+        // 返回对应的Mapper类名
+        return ChemicalsCatalogMapper.class.getName();
+    }
+
+    @Override
+    public Class<ChemicalsCatalog> getEntityClass() {
+        return ChemicalsCatalog.class;
+    }
+
+    @Override
+    public List<ChemicalsCatalog> queryData(Date lastSyncTime) {
+        ChemicalsCatalogQuery query = new ChemicalsCatalogQuery();
+        query.setUpdateTime(lastSyncTime);
+        return chemicalsCatalogMapper.selectList(query);
+    }
+
+    @Override
+    public boolean isNewData(ChemicalsCatalog data) {
+        return data.getCreateTime().after(data.getUpdateTime());
+    }
+
+    @Override
+    public String getDataId(ChemicalsCatalog data) {
+        return data.getId();
+    }
+}

+ 65 - 0
wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/GoodsCatalogTask.java

@@ -0,0 +1,65 @@
+package cn.gov.customs.wxjy.task;
+
+import cn.gov.customs.wxjy.base.dao.GoodsCatalogMapper;
+import cn.gov.customs.wxjy.base.pojo.GoodsCatalog;
+import cn.gov.customs.wxjy.base.pojo.GoodsCatalogQuery;
+import cn.gov.customs.wxjy.ibmmq.enums.BillTypeEnum;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 危险货物目录推送任务
+ */
+@Component
+@Slf4j
+public class GoodsCatalogTask extends BaseBusinessTask<GoodsCatalog> {
+    @Autowired
+    private GoodsCatalogMapper goodsCatalogMapper;
+
+    @Override
+    public String getTaskCode() {
+        return BillTypeEnum.BUS_TYPE_GOODS_CATALOG.getCode();
+    }
+
+    @Override
+    public String getTaskName() {
+        return BillTypeEnum.getNameByCode(getTaskCode());
+    }
+
+    @Override
+    public String getBusinessType() {
+        return getTaskCode();
+    }
+
+    @Override
+    public String getMapperClassName() {
+        // 返回对应的Mapper类名
+        return GoodsCatalogMapper.class.getName();
+    }
+
+    @Override
+    public Class<GoodsCatalog> getEntityClass() {
+        return GoodsCatalog.class;
+    }
+
+    @Override
+    public List<GoodsCatalog> queryData(Date lastSyncTime) {
+        GoodsCatalogQuery query = new GoodsCatalogQuery();
+        query.setUpdateTime(lastSyncTime);
+        return goodsCatalogMapper.selectList(query);
+    }
+
+    @Override
+    public boolean isNewData(GoodsCatalog data) {
+        return data.getCreateTime().after(data.getUpdateTime());
+    }
+
+    @Override
+    public String getDataId(GoodsCatalog data) {
+        return data.getId();
+    }
+}

+ 65 - 0
wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/PackCatalogTask.java

@@ -0,0 +1,65 @@
+package cn.gov.customs.wxjy.task;
+
+import cn.gov.customs.wxjy.base.dao.PackCatalogMapper;
+import cn.gov.customs.wxjy.base.pojo.PackCatalog;
+import cn.gov.customs.wxjy.base.pojo.PackCatalogQuery;
+import cn.gov.customs.wxjy.ibmmq.enums.BillTypeEnum;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 包装种类目录推送任务
+ */
+@Component
+@Slf4j
+public class PackCatalogTask extends BaseBusinessTask<PackCatalog> {
+
+    @Autowired
+    private PackCatalogMapper packCatalogMapper;
+
+    @Override
+    public String getTaskCode() {
+        return BillTypeEnum.BUS_TYPE_PACK_CATALOG.getCode();
+    }
+
+    @Override
+    public String getTaskName() {
+        return BillTypeEnum.getNameByCode(getTaskCode());
+    }
+
+    @Override
+    public String getBusinessType() {
+        return getTaskCode();
+    }
+
+    @Override
+    public String getMapperClassName() {
+        return PackCatalogMapper.class.getName();
+    }
+
+    @Override
+    public Class<PackCatalog> getEntityClass() {
+        return PackCatalog.class;
+    }
+
+    @Override
+    public List<PackCatalog> queryData(Date lastSyncTime) {
+        PackCatalogQuery query = new PackCatalogQuery();
+        query.setUpdateTime(lastSyncTime);
+        return packCatalogMapper.selectList(query);
+    }
+
+    @Override
+    public boolean isNewData(PackCatalog data) {
+        return data.getCreateTime().after(data.getUpdateTime());
+    }
+
+    @Override
+    public String getDataId(PackCatalog data) {
+        return data.getId();
+    }
+}

+ 154 - 0
wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/ScheduledTasks.java

@@ -0,0 +1,154 @@
+package cn.gov.customs.wxjy.task;
+
+import cn.gov.customs.wxjy.constants.TaskStatusEnum;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * 定时任务管理类
+ * 负责调度和执行所有定时任务
+ */
+@Component
+@Slf4j
+public class ScheduledTasks {
+
+    // 任务执行线程池
+    private ExecutorService taskExecutor;
+
+    // 任务映射表
+    private final Map<String, BaseBusinessTask<?>> taskMap = new ConcurrentHashMap<>();
+
+    @Autowired(required = false)
+    private PackCatalogTask packCatalogTask;
+
+    @Autowired(required = false)
+    private GoodsCatalogTask goodsCatalogTask;
+
+    @Autowired(required = false)
+    private ChemicalsCatalogTask chemicalsCatalogTask;
+
+    /**
+     * 初始化方法
+     */
+    @PostConstruct
+    public void init() {
+        // 创建任务执行线程池
+        taskExecutor = Executors.newFixedThreadPool(5, new TaskThreadFactory());
+
+        // 注册任务
+        registerTasks();
+
+        log.info("定时任务管理器初始化完成,已注册{}个任务", taskMap.size());
+    }
+
+    /**
+     * 注册所有任务
+     */
+    private void registerTasks() {
+        if (packCatalogTask != null) {
+            taskMap.put(packCatalogTask.getTaskCode(), packCatalogTask);
+            log.info("注册任务:{}", packCatalogTask.getTaskName());
+        }
+
+        if (goodsCatalogTask != null) {
+            taskMap.put(goodsCatalogTask.getTaskCode(), goodsCatalogTask);
+            log.info("注册任务:{}", goodsCatalogTask.getTaskName());
+        }
+
+        if (chemicalsCatalogTask != null) {
+            taskMap.put(chemicalsCatalogTask.getTaskCode(), chemicalsCatalogTask);
+            log.info("注册任务:{}", chemicalsCatalogTask.getTaskName());
+        }
+    }
+
+    /**
+     * 包装种类定时任务调度
+     */
+    @Scheduled(cron = "${task.cron.pack-catalog:30 * * * * ?}")
+    public void schedulePackCatalogTask() {
+        executeTask(packCatalogTask, "包装种类目录推送数据");
+    }
+
+    /**
+     * 危险货物定时任务调度
+     */
+//    @Scheduled(cron = "${task.cron.goods-catalog:30 * * * * ?}")
+//    public void scheduleGoodsCatalogTask() {
+//        executeTask(goodsCatalogTask, "危险货物目录推送数据");
+//    }
+
+    /**
+     * 危化品目录定时任务调度
+     */
+//    @Scheduled(cron = "${task.cron.chemicals-catalog:30 * * * * ?}")
+//    public void scheduleChemicalsCatalogTask() {
+//        executeTask(chemicalsCatalogTask, "危化品目录推送数据");
+//    }
+
+    /**
+     * 执行任务
+     */
+    private void executeTask(BaseBusinessTask<?> task, String taskDescription) {
+        if (task == null) {
+            log.warn("任务未配置: {}", taskDescription);
+            return;
+        }
+
+        String taskName = task.getTaskName();
+        log.info("{}定时任务开始执行", taskName);
+
+        // 提交任务到线程池执行
+        taskExecutor.submit(() -> {
+            long startTime = System.currentTimeMillis();
+            TaskStatusEnum status = TaskStatusEnum.SUCCESS;
+            String errorMsg = null;
+
+            try {
+                // 执行任务
+                task.execute();
+                log.info("{}定时任务执行完成,耗时:{}ms",
+                        taskName, System.currentTimeMillis() - startTime);
+
+            } catch (Exception e) {
+                status = TaskStatusEnum.FAILED;
+                errorMsg = String.format("执行失败:%s", e.getMessage());
+                log.error("{}定时任务执行异常,业务类型:{}",
+                        taskName, task.getTaskCode(), e);
+
+            } finally {
+                // 记录任务执行日志
+                try {
+                    task.recordTaskLog(status, startTime, errorMsg);
+                } catch (Exception logEx) {
+                    log.error("记录任务日志失败,任务:{}", taskName, logEx);
+                }
+            }
+        });
+    }
+
+    /**
+     * 任务线程工厂
+     */
+    private static class TaskThreadFactory implements ThreadFactory {
+        private final AtomicInteger threadNumber = new AtomicInteger(1);
+        private final String namePrefix = "task-thread-";
+
+        @Override
+        public Thread newThread(Runnable r) {
+            Thread t = new Thread(r, namePrefix + threadNumber.getAndIncrement());
+            t.setDaemon(true);
+            t.setPriority(Thread.NORM_PRIORITY);
+            return t;
+        }
+    }
+}

+ 76 - 0
wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/controller/TaskLogController.java

@@ -0,0 +1,76 @@
+package cn.gov.customs.wxjy.task.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import cn.gov.customs.cacp.sdks.core.result.Result;
+import cn.gov.customs.cacp.sdks.core.user.trans.CacpTransUser;
+import cn.gov.customs.cacp.sdks.core.user.trans.UserContextHolder;
+import cn.gov.customs.wxjy.common.utils.StringUtils;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+import cn.gov.customs.wxjy.common.core.controller.BaseController;
+import org.springframework.web.multipart.MultipartFile;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import cn.gov.customs.wxjy.task.pojo.TaskLog;
+import cn.gov.customs.wxjy.task.pojo.TaskLogQuery;
+import cn.gov.customs.wxjy.task.service.ITaskLogService;
+import cn.gov.customs.wxjy.common.utils.poi.ExcelUtil;
+import cn.gov.customs.wxjy.common.core.page.TableDataInfo;
+
+/**
+ * 定时任务执行时间记录Controller
+ *
+ * @author xiong
+ * @date 2025-12-17
+ */
+@RestController
+@RequestMapping("/task/TaskLog")
+@RequiredArgsConstructor
+public class TaskLogController extends BaseController {
+
+    private final ITaskLogService taskLogService;
+
+    /**
+     * 查询定时任务执行时间记录列表
+     */
+    @PostMapping("/get-list")
+    public Result<PageInfo<TaskLog>> list(@RequestBody TaskLogQuery query) {
+        PageHelper.startPage(query.getPageIndex(), query.getPageSize());
+        PageInfo<TaskLog> list = taskLogService.selectPageList(query);
+        return Result.success(list);
+    }
+
+    /**
+     * 获取定时任务执行时间记录详细信息
+     */
+    @GetMapping(value = "/get-detail")
+    public Result<TaskLog> getInfo(@RequestParam String pkTaskLog) {
+        return Result.success(taskLogService.selectByPkTaskLog(pkTaskLog));
+    }
+
+    /**
+     * 新增定时任务执行时间记录
+     */
+    @PostMapping("/insert-taskLog")
+    public Result<Integer> add(@RequestBody TaskLog taskLog) {
+        return Result.success(taskLogService.insert(taskLog));
+    }
+
+    /**
+     * 修改定时任务执行时间记录
+     */
+    @PostMapping("/update-taskLog")
+    public Result<Integer> edit(@RequestBody TaskLog taskLog) {
+        return Result.success(taskLogService.update(taskLog));
+    }
+
+    /**
+     * 删除定时任务执行时间记录
+     */
+    @PostMapping("/delete-taskLog")
+    public Result<Integer> remove(@RequestBody String[] ids) {
+        return Result.success(taskLogService.deleteByPkTaskLogs(ids));
+    }
+}

+ 75 - 0
wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/dao/TaskLogMapper.java

@@ -0,0 +1,75 @@
+package cn.gov.customs.wxjy.task.dao;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.ibatis.annotations.Mapper;
+import cn.gov.customs.wxjy.task.pojo.TaskLog;
+import cn.gov.customs.wxjy.task.pojo.TaskLogQuery;
+
+/**
+ * 定时任务执行时间记录Mapper接口
+ *
+ * @author xiong
+ * @date 2025-12-17
+ */
+@Mapper
+public interface TaskLogMapper {
+    /**
+     * 查询定时任务执行时间记录
+     *
+     * @param pkTaskLog 定时任务执行时间记录主键
+     * @return 定时任务执行时间记录
+     */
+    public TaskLog selectByPkTaskLog(String pkTaskLog);
+
+    /**
+     * 查询定时任务执行时间记录列表
+     *
+     * @param taskLog 定时任务执行时间记录
+     * @return 定时任务执行时间记录集合
+     */
+    public List<TaskLog> selectList(TaskLogQuery taskLog);
+
+    /**
+     * 新增定时任务执行时间记录
+     *
+     * @param taskLog 定时任务执行时间记录
+     * @return 结果
+     */
+    public int insert(TaskLog taskLog);
+
+    /**
+     * 修改定时任务执行时间记录
+     *
+     * @param taskLog 定时任务执行时间记录
+     * @return 结果
+     */
+    public int update(TaskLog taskLog);
+
+    /**
+     * 删除定时任务执行时间记录
+     *
+     * @param pkTaskLog 定时任务执行时间记录主键
+     * @return 结果
+     */
+    public int deleteByPkTaskLog(String pkTaskLog);
+
+    /**
+     * 批量删除定时任务执行时间记录
+     *
+     * @param pkTaskLogs 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteByPkTaskLogs(String[] pkTaskLogs);
+
+    /**
+     * 逻辑删除定时任务执行时间记录
+     *
+     * @param pkTaskLog 定时任务执行时间记录主键
+     * @return 结果
+     */
+    public int logicDelete(String pkTaskLog);
+
+    Date getMaxBussinessDate(String bussinessType);
+}

+ 42 - 0
wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/pojo/TaskLog.java

@@ -0,0 +1,42 @@
+package cn.gov.customs.wxjy.task.pojo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.Data;
+import cn.gov.customs.wxjy.common.annotation.Excel;
+import cn.gov.customs.wxjy.common.core.domain.BaseEntity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 定时任务执行时间记录对象 WXJY_TASK_LOG
+ *
+ * @author xiong
+ * @date 2025-12-17
+ */
+@Data
+public class TaskLog implements Serializable
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    @JsonSerialize(using= ToStringSerializer.class)
+    private String pkTaskLog;
+
+    /** 业务类型:1:危化品目录 2:危险货物目录 3:包装种类目录 */
+    @Excel(name = "业务类型:1:危化品目录 2:危险货物目录 3:包装种类目录")
+    private String businessType;
+
+    /** 定时任务执行时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "定时任务执行时间")
+    private Date taskTime;
+
+    private String status;
+    private Long costTime;
+    private String errorMessage;
+
+
+}

+ 36 - 0
wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/pojo/TaskLogQuery.java

@@ -0,0 +1,36 @@
+package cn.gov.customs.wxjy.task.pojo;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 定时任务执行时间记录对象 WXJY_TASK_LOG
+ *
+ * @author xiong
+ * @date 2025-12-17
+ */
+@Data
+public class TaskLogQuery implements Serializable{
+
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    @JsonSerialize(using= ToStringSerializer.class)
+    private String pkTaskLog;
+
+    /** 业务类型:1:危化品目录 2:危险货物目录 3:包装种类目录 */
+    private String businessType;
+
+    /** 定时任务执行时间 */
+    private String taskTime;
+
+
+    private String beginDate;
+    private String endDate;
+    private int pageIndex;
+    private int pageSize;
+}

+ 80 - 0
wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/service/ITaskLogService.java

@@ -0,0 +1,80 @@
+package cn.gov.customs.wxjy.task.service;
+
+import java.util.List;
+import cn.gov.customs.cacp.sdks.core.user.trans.CacpTransUser;
+import cn.gov.customs.wxjy.task.pojo.TaskLog;
+import cn.gov.customs.wxjy.task.pojo.TaskLogQuery;
+import com.github.pagehelper.PageInfo;
+
+/**
+ * 定时任务执行时间记录Service接口
+ *
+ * @author xiong
+ * @date 2025-12-17
+ */
+public interface ITaskLogService {
+    /**
+     * 查询定时任务执行时间记录
+     *
+     * @param pkTaskLog 定时任务执行时间记录主键
+     * @return 定时任务执行时间记录
+     */
+    public TaskLog selectByPkTaskLog(String pkTaskLog);
+
+    /**
+     * 分页查询定时任务执行时间记录列表
+     *
+     * @param query
+     * @return 定时任务执行时间记录集合
+     */
+    public PageInfo<TaskLog> selectPageList(TaskLogQuery query);
+
+    /**
+     * 查询定时任务执行时间记录列表
+     *
+     * @param query
+     * @return 定时任务执行时间记录集合
+     */
+    public List<TaskLog> selectList(TaskLogQuery query);
+
+    /**
+     * 新增定时任务执行时间记录
+     *
+     * @param taskLog 定时任务执行时间记录
+     * @return 结果
+     */
+    public int insert(TaskLog taskLog);
+
+    /**
+     * 修改定时任务执行时间记录
+     *
+     * @param taskLog 定时任务执行时间记录
+     * @return 结果
+     */
+    public int update(TaskLog taskLog);
+
+    /**
+     * 批量删除定时任务执行时间记录
+     *
+     * @param ids 需要删除的ids主键集合
+     * @return 结果
+     */
+    public int deleteByPkTaskLogs(String[] ids);
+
+    /**
+     * 删除定时任务执行时间记录信息
+     *
+     * @param pkTaskLog 定时任务执行时间记录主键
+     * @return 结果
+     */
+    public int deleteByPkTaskLog(String pkTaskLog);
+
+    /**
+     * 逻辑删除定时任务执行时间记录信息
+     *
+     * @param pkTaskLog 定时任务执行时间记录主键
+     * @return 结果
+     */
+    public int logicDelete(String pkTaskLog);
+
+}

+ 124 - 0
wxjy-wxjy-service/src/main/java/cn/gov/customs/wxjy/task/service/impl/TaskLogServiceImpl.java

@@ -0,0 +1,124 @@
+package cn.gov.customs.wxjy.task.service.impl;
+
+import cn.gov.customs.cacp.sdks.core.user.trans.CacpTransUser;
+import cn.gov.customs.wxjy.common.exception.ServiceException;
+import cn.gov.customs.wxjy.common.utils.StringUtils;
+import cn.gov.customs.wxjy.common.utils.bean.BeanValidators;
+import cn.gov.customs.wxjy.common.utils.uuid.SnowflakeIdWorker;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import javax.validation.Validator;
+import java.util.List;
+import org.apache.commons.collections4.CollectionUtils;
+import cn.gov.customs.wxjy.common.utils.DateUtils;
+import com.github.pagehelper.PageInfo;
+import cn.gov.customs.wxjy.task.dao.TaskLogMapper;
+import cn.gov.customs.wxjy.task.pojo.TaskLog;
+import cn.gov.customs.wxjy.task.pojo.TaskLogQuery;
+import cn.gov.customs.wxjy.task.service.ITaskLogService;
+
+/**
+ * 定时任务执行时间记录Service业务层处理
+ *
+ * @author xiong
+ * @date 2025-12-17
+ */
+@Service
+@Slf4j
+@RequiredArgsConstructor
+public class TaskLogServiceImpl implements ITaskLogService {
+
+    private final TaskLogMapper taskLogMapper;
+
+    private final Validator validator;
+
+    /**
+     * 查询定时任务执行时间记录
+     *
+     * @param pkTaskLog 定时任务执行时间记录主键
+     * @return 定时任务执行时间记录
+     */
+    @Override
+    public TaskLog selectByPkTaskLog(String pkTaskLog) {
+        return taskLogMapper.selectByPkTaskLog(pkTaskLog);
+    }
+
+    /**
+     * 分页查询定时任务执行时间记录列表
+     *
+     * @param query
+     * @return 定时任务执行时间记录
+     */
+    @Override
+    public PageInfo<TaskLog> selectPageList(TaskLogQuery query) {
+        return PageInfo.of(taskLogMapper.selectList(query));
+    }
+
+    /**
+     * 查询定时任务执行时间记录列表
+     *
+     * @param query
+     * @return 定时任务执行时间记录
+     */
+    @Override
+    public List<TaskLog> selectList(TaskLogQuery query) {
+        return taskLogMapper.selectList(query);
+    }
+
+    /**
+     * 新增定时任务执行时间记录
+     *
+     * @param taskLog 定时任务执行时间记录
+     * @return 结果
+     */
+    @Override
+    public int insert(TaskLog taskLog) {
+            return taskLogMapper.insert(taskLog);
+    }
+
+    /**
+     * 修改定时任务执行时间记录
+     *
+     * @param taskLog 定时任务执行时间记录
+     * @return 结果
+     */
+    @Override
+    public int update(TaskLog taskLog) {
+        return taskLogMapper.update(taskLog);
+    }
+
+    /**
+     * 批量删除定时任务执行时间记录
+     *
+     * @param ids 需要删除的定时任务执行时间记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteByPkTaskLogs(String[] ids) {
+        return taskLogMapper.deleteByPkTaskLogs(ids);
+    }
+
+    /**
+     * 删除定时任务执行时间记录信息
+     *
+     * @param pkTaskLog 定时任务执行时间记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteByPkTaskLog(String pkTaskLog) {
+        return taskLogMapper.deleteByPkTaskLog(pkTaskLog);
+    }
+
+    /**
+     * 逻辑删除定时任务执行时间记录信息
+     *
+     * @param pkTaskLog 定时任务执行时间记录主键
+     * @return 结果
+     */
+    @Override
+    public int logicDelete(String pkTaskLog) {
+
+        return taskLogMapper.logicDelete(pkTaskLog);
+    }
+}

+ 33 - 33
wxjy-wxjy-service/src/main/resources/application.properties

@@ -1,58 +1,58 @@
-## 开发环境配置
-## IBM MQ 配置
+## \u5F00\u53D1\u73AF\u5883\u914D\u7F6E
+# IBM MQ \u914D\u7F6E
 ibm.mq.host=43.137.18.189
 ibm.mq.port=1414
 ibm.mq.user=admin
 ibm.mq.password=mqm@2025
 
-# 队列配置
-# 队列管理器名称
+# \u961F\u5217\u914D\u7F6E
+# \u961F\u5217\u7BA1\u7406\u5668\u540D\u79F0
 ibm.mq.queue-manager=QMMng
-# 服务器连接通道名称
+# \u670D\u52A1\u5668\u8FDE\u63A5\u901A\u9053\u540D\u79F0
 ibm.mq.channel=DEV.ADMIN.SVRCONN
 
-# 远程队列 发送消息
+# \u8FDC\u7A0B\u961F\u5217 \u53D1\u9001\u6D88\u606F
 ibm.mq.send-queue=FZX.RECE.ENT.ZYZF
-# 本地队列 接收消息
+# \u672C\u5730\u961F\u5217 \u63A5\u6536\u6D88\u606F
 ibm.mq.receive-queue=ENT.RECE.MNG.ZYZF
- 消息发送方标识
+#\u6D88\u606F\u53D1\u9001\u65B9\u6807\u8BC6
 msg.sender-id=ZYZFCUST00000001
-# 消息接收方标识(如果有多个,用逗号分隔)
+# \u6D88\u606F\u63A5\u6536\u65B9\u6807\u8BC6(\u5982\u679C\u6709\u591A\u4E2A\uFF0C\u7528\u9017\u53F7\u5206\u9694)
 msg.receiver-id=ZYZFPLAT00000001
-# 推送附件地址
-ibm.mq.file-upload-path=/data/whsj/zhsj/jar_api/files/uploadPath
+# \u63A8\u9001\u9644\u4EF6\u5730\u5740(\u5F00\u53D1\u73AF\u5883\u4E0E\u4EE3\u7801\u540C\u4E00\u4E2A\u78C1\u76D8)
+ibm.mq.file-upload-path=/data/swfzsb/files/uploadPath
 
-# 生产环境配置
-# IBM MQ 配置
+# \u751F\u4EA7\u73AF\u5883\u914D\u7F6E
+# IBM MQ \u914D\u7F6E
 #ibm.mq.host=10.79.90.173
 #ibm.mq.port=1416
 #ibm.mq.user=
 #ibm.mq.password=
-### 队列配置
-### 队列管理器名称
+### \u961F\u5217\u914D\u7F6E
+### \u961F\u5217\u7BA1\u7406\u5668\u540D\u79F0
 #ibm.mq.queue-manager=QM.EAN_CUS_JOIN
-### 服务器连接通道名称
+### \u670D\u52A1\u5668\u8FDE\u63A5\u901A\u9053\u540D\u79F0
 #ibm.mq.channel=JAVA.CONN
-## 企业端发送消息队列(海关端接收消息队列-本地队列)
+## \u4F01\u4E1A\u7AEF\u53D1\u9001\u6D88\u606F\u961F\u5217\uFF08\u6D77\u5173\u7AEF\u63A5\u6536\u6D88\u606F\u961F\u5217-\u672C\u5730\u961F\u5217\uFF09
 #ibm.mq.send-queue=QL.ZHSJ_61_TO_173
-## 企业端接收消息队列(海关端发送消息队列-远程队列)
+## \u4F01\u4E1A\u7AEF\u63A5\u6536\u6D88\u606F\u961F\u5217\uFF08\u6D77\u5173\u7AEF\u53D1\u9001\u6D88\u606F\u961F\u5217-\u8FDC\u7A0B\u961F\u5217\uFF09
 #ibm.mq.receive-queue=QR.ZHSJ_173_TO_61
-## 消息发送方标识
+## \u6D88\u606F\u53D1\u9001\u65B9\u6807\u8BC6
 #msg.sender-id=DXPSDC4700100070
-## 消息接收方标识(如果有多个,用逗号分隔)
+## \u6D88\u606F\u63A5\u6536\u65B9\u6807\u8BC6(\u5982\u679C\u6709\u591A\u4E2A\uFF0C\u7528\u9017\u53F7\u5206\u9694)
 #msg.receiver-id=DXPSDC4700ENT272
-### 推送附件地址
-##ibm.mq.file-upload-path=/data/whsj/zhsj/jar_api/files/uploadPath
-#
-##--------------------------------以下为公用配置项---------------------------------
-#
-## 临时分片存储目录
-#ibm.mq.temp-dir=mq-file-temp
-#
-## 默认分片大小 默认2M
-#ibm.mq.default-shard-size=2097152
-#
-## 应用环境类型:企业端:enterprise,管理端:management
-#app.env.type=management
+## \u63A8\u9001\u9644\u4EF6\u5730\u5740(\u6D77\u5173\u7AEFLinux\u670D\u52A1\u5668\u8DEF\u5F84)
+#ibm.mq.file-upload-path=/data/swfzsb/files/uploadPath
+
+#--------------------------------\u4EE5\u4E0B\u4E3A\u516C\u7528\u914D\u7F6E\u9879---------------------------------
+
+# \u4E34\u65F6\u5206\u7247\u5B58\u50A8\u76EE\u5F55
+ibm.mq.temp-dir=mq-file-temp
+
+# \u9ED8\u8BA4\u5206\u7247\u5927\u5C0F \u9ED8\u8BA42M
+ibm.mq.default-shard-size=2097152
+
+# \u5E94\u7528\u73AF\u5883\u7C7B\u578B\uFF1A\u4F01\u4E1A\u7AEF\uFF1Aenterprise\uFF0C\u7BA1\u7406\u7AEF\uFF1Amanagement
+app.env.type=management
 
 

+ 2 - 2
wxjy-wxjy-service/src/main/resources/mapper/base/ChemicalsCatalogMapper.xml

@@ -89,8 +89,8 @@
         <if test="updateUser != null  and updateUser != ''">
             and UPDATE_USER = #{updateUser}
         </if>
-        <if test="updateTime != null  and updateTime != ''">
-            and UPDATE_TIME = #{updateTime}
+        <if test="updateTime != null ">
+            and UPDATE_TIME &gt;= #{updateTime}
         </if>
         <if test="isDeleted != null  and isDeleted != ''">
             and IS_DELETED = #{isDeleted}

+ 2 - 2
wxjy-wxjy-service/src/main/resources/mapper/base/GoodsCatalogMapper.xml

@@ -109,8 +109,8 @@
         <if test="updateUser != null  and updateUser != ''">
             and UPDATE_USER = #{updateUser}
         </if>
-        <if test="updateTime != null  and updateTime != ''">
-            and UPDATE_TIME = #{updateTime}
+        <if test="updateTime != null  ">
+            and UPDATE_TIME &gt;= #{updateTime}
         </if>
         <if test="isDeleted != null  and isDeleted != ''">
             and IS_DELETED = #{isDeleted}

+ 2 - 2
wxjy-wxjy-service/src/main/resources/mapper/base/PackCatalogMapper.xml

@@ -46,8 +46,8 @@
         <if test="updateUser != null  and updateUser != ''">
             and UPDATE_USER = #{updateUser}
         </if>
-        <if test="updateTime != null  and updateTime != ''">
-            and UPDATE_TIME = #{updateTime}
+        <if test="updateTime != null ">
+            and UPDATE_TIME &gt;= #{updateTime}
         </if>
         <if test="isDeleted != null  and isDeleted != ''">
             and IS_DELETED = #{isDeleted}

+ 102 - 0
wxjy-wxjy-service/src/main/resources/mapper/task/TaskLogMapper.xml

@@ -0,0 +1,102 @@
+<?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="cn.gov.customs.wxjy.task.dao.TaskLogMapper">
+
+    <resultMap type="TaskLog" id="TaskLogResult">
+        <result property="pkTaskLog" column="PK_TASK_LOG"/>
+        <result property="businessType" column="BUSINESS_TYPE"/>
+        <result property="taskTime" column="TASK_TIME"/>
+        <result property="status" column="STATUS"/>
+        <result property="costTime" column="COST_TIME"/>
+        <result property="errorMessage" column="ERROR_MESSAGE"/>
+    </resultMap>
+
+    <sql id="baseVo">
+        select PK_TASK_LOG, BUSINESS_TYPE, TASK_TIME,STATUS,COST_TIME,ERROR_MESSAGE
+        from WXJY_TASK_LOG
+    </sql>
+
+    <select id="selectList" parameterType="TaskLogQuery" resultMap="TaskLogResult">
+        <include refid="baseVo"/>
+        <where>
+        <if test="businessType != null  and businessType != ''">
+            and BUSINESS_TYPE = #{businessType}
+        </if>
+        <if test="taskTime != null  and taskTime != ''">
+            and TASK_TIME = #{taskTime}
+        </if>
+        </where>
+    </select>
+
+    <select id="selectByPkTaskLog" parameterType="String"
+        resultMap="TaskLogResult">
+        <include refid="baseVo"/>
+        where PK_TASK_LOG = #{pkTaskLog}
+    </select>
+    <select id="getMaxBussinessDate" resultType="java.util.Date">
+        select max(TASK_TIME) FROM WXJY_TASK_LOG WHERE BUSINESS_TYPE = #{businessType}
+    </select>
+
+    <insert id="insert" parameterType="TaskLog">
+        insert into WXJY_TASK_LOG
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="pkTaskLog != null and pkTaskLog != ''">PK_TASK_LOG,
+            </if>
+            <if test="businessType != null">BUSINESS_TYPE,
+            </if>
+            <if test="taskTime != null">TASK_TIME,
+            </if>
+            <if test="status != null">STATUS,
+            </if>
+            <if test="costTime != null">COST_TIME,
+            </if>
+            <if test="errorMessage != null">ERROR_MESSAGE,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="pkTaskLog != null and pkTaskLog != ''">#{pkTaskLog},
+            </if>
+            <if test="businessType != null">#{businessType},
+            </if>
+            <if test="taskTime != null">#{taskTime},
+            </if>
+            <if test="status != null">#{status},
+            </if>
+            <if test="costTime != null">#{costTime},
+            </if>
+            <if test="errorMessage != null">#{errorMessage},
+            </if>
+        </trim>
+    </insert>
+
+    <update id="update" parameterType="TaskLog">
+        update WXJY_TASK_LOG
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="businessType != null">BUSINESS_TYPE =
+                #{businessType},
+            </if>
+            <if test="taskTime != null">TASK_TIME =
+                #{taskTime},
+            </if>
+        </trim>
+        where PK_TASK_LOG = #{pkTaskLog}
+    </update>
+
+    <delete id="deleteByPkTaskLog" parameterType="String">
+        delete
+        from WXJY_TASK_LOG where PK_TASK_LOG = #{pkTaskLog}
+    </delete>
+
+    <delete id="deleteByPkTaskLogs" parameterType="String">
+        delete from WXJY_TASK_LOG where PK_TASK_LOG in
+        <foreach item="pkTaskLog" collection="array" open="(" separator="," close=")">
+            #{pkTaskLog}
+        </foreach>
+    </delete>
+
+    <delete id="logicDelete" parameterType="String">
+        update  WXJY_TASK_LOG set is_del = 1  where PK_TASK_LOG = #{pkTaskLog}
+    </delete>
+</mapper>