jiazx0107
2026-01-17 7411561962ca6e45e32844d7a626a6e89b8292e5
调整出入库通知单功能
已删除1个文件
已修改14个文件
445 ■■■■ 文件已修改
fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/AuditStatus.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutNoticeOut.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DicService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutNoticeService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/work/service/BizWorkService.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderProcessService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/FileUploadManage.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticeIn.view.xml 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticeOut.view.xml 138 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutStockChangePR.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrder.view.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrderPR.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/java/com/fzzy/work/WorkOrderController.java 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/templates/work/flow-his.html 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/AuditStatus.java
ÎļþÒÑɾ³ý
fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutNoticeOut.java
@@ -81,14 +81,14 @@
    @TableField("audit_status")
    private String auditStatus = "10";
    @Column(name = "audit_user", columnDefinition = "varchar(20) COMMENT '审核人'")
    @TableField("audit_user")
    private String auditUser;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Column(name = "audit_date", columnDefinition = "datetime COMMENT '审批时间'")
    @TableField("audit_date")
    private Date auditDate;
//    @Column(name = "audit_user", columnDefinition = "varchar(20) COMMENT '审核人'")
//    @TableField("audit_user")
//    private String auditUser;
//
//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
//    @Column(name = "audit_date", columnDefinition = "datetime COMMENT '审批时间'")
//    @TableField("audit_date")
//    private Date auditDate;
    @Column(name = "complete_status", columnDefinition = "varchar(20) COMMENT '完成状态(NONE=未完成,COMPLETE=已完成)'")
    @TableField("complete_status")
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DicService.java
@@ -2,6 +2,7 @@
import com.fzzy.igds.constant.*;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.work.data.WorkStatus;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.utils.DictUtils;
import com.ruoyi.common.utils.StringUtils;
@@ -252,10 +253,9 @@
     */
    public List<SysDictData> triggerStatusType() {
        List<SysDictData> list = new ArrayList<SysDictData>();
        for (AuditStatus w : AuditStatus.values()) {
        for (WorkStatus w : WorkStatus.values()) {
            list.add(new SysDictData(w.getMsg(), w.getCode()));
        }
        return list;
    }
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutNoticeService.java
@@ -1,7 +1,6 @@
package com.fzzy.igds.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fzzy.igds.constant.AuditStatus;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.constant.InoutConstant;
import com.fzzy.igds.data.*;
@@ -10,6 +9,7 @@
import com.fzzy.igds.mapper.InoutNoticeOutMapper;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.work.data.WorkBizType;
import com.fzzy.work.data.WorkStatus;
import com.fzzy.work.domain.WorkOrderConf;
import com.fzzy.work.service.BizWorkService;
import com.ruoyi.common.utils.StringUtils;
@@ -177,15 +177,14 @@
        data.setUpdateTime(new Date());
        data.setCreateBy(ContextUtil.getLoginUserName());
        data.setCreateTime(new Date());
        data.setAuditStatus(AuditStatus.STATUS_10.getCode());
        data.setAuditStatus(WorkStatus.STATUS_10.getCode());
        data.setCompleteStatus(Constant.COMPLETE_STATUS_NONE);
        //执行流程
        WorkOrderConf conf = workService.getConfByDeptId(data.getDeptId(), WorkBizType.TYPE_10);
        //流程不启用
        if (null == conf || Constant.YN_N.equals(conf.getValTag())) {
            data.setAuditStatus(AuditStatus.STATUS_20.getCode());
            //data.setAuditDate(data.getCreateTime());
            data.setAuditStatus(WorkStatus.STATUS_50.getCode());
        } else {
            BaseResp resp = workService.startByNoticeIn(data, conf);
            log.info("---------启动工单流程------{}", resp);
@@ -367,15 +366,14 @@
        data.setUpdateTime(new Date());
        data.setCreateBy(ContextUtil.getLoginUserName());
        data.setCreateTime(new Date());
        data.setAuditStatus(AuditStatus.STATUS_10.getCode());
        data.setAuditStatus(WorkStatus.STATUS_10.getCode());
        data.setCompleteStatus(Constant.COMPLETE_STATUS_NONE);
        //执行流程
        WorkOrderConf conf = workService.getConfByDeptId(data.getDeptId(), WorkBizType.TYPE_10);
        WorkOrderConf conf = workService.getConfByDeptId(data.getDeptId(), WorkBizType.TYPE_20);
        //流程不启用
        if (null == conf || Constant.YN_N.equals(conf.getValTag())) {
            data.setAuditStatus(AuditStatus.STATUS_20.getCode());
            data.setAuditDate(data.getCreateTime());
            data.setAuditStatus(WorkStatus.STATUS_50.getCode());
        } else {
            BaseResp resp = workService.startByNoticeOut(data, conf);
            log.info("---------启动工单流程------{}", resp);
fzzy-igdss-core/src/main/java/com/fzzy/work/service/BizWorkService.java
@@ -85,7 +85,7 @@
        process.setAssigneeName(work.getCreateBy());
        process.setAssigneeId(work.getCreateById());
        process.setNode(WorkNode.NODE_START.getCode());
        orderProcessService.addData(process);
        orderProcessService.addData(process,false);
        return BaseResp.success();
    }
@@ -130,7 +130,7 @@
        process.setAssigneeName(work.getCreateBy());
        process.setAssigneeId(work.getCreateById());
        process.setNode(WorkNode.NODE_START.getCode());
        orderProcessService.addData(process);
        orderProcessService.addData(process,false);
        return BaseResp.success();
    }
@@ -201,22 +201,21 @@
        process.setAssigneeName(ContextUtil.getLoginUserName());
        process.setAssigneeId(ContextUtil.getLoginName());
        WorkNode node = this.getNextNode(work.getNode(), conf);
        WorkNode nextNode = this.getNextNode(work.getNode(), conf);
        log.info("工单审批:{},当前节点:{},下一节点:{}", work.getTitle(), work.getNode(), node);
        log.info("工单审批:{},当前节点:{},下一节点:{}", work.getTitle(), work.getNode(), nextNode);
        //通过操作
        if ("pass".equals(action)) {
            process.setAction("通过");
            process.setNode(node.getCode());
            process.setNode(work.getNode());
            //结束判断,如果是结束节点,则结束工单
            if (WorkNode.NODE_END.getCode().equals(process.getNode())) {
            if (WorkNode.NODE_END.getCode().equals(nextNode.getCode())) {
                work.setStatus(WorkStatus.STATUS_50.getCode());
                work.setAssigneeName(process.getAssigneeName());
                work.setAssigneeId(process.getAssigneeId());
                work.setNode(nextNode.getCode());
                orderService.complete(work);
            }
        }
@@ -231,7 +230,7 @@
        }
        //增加审批记录
        orderProcessService.addData(process);
        orderProcessService.addData(process,nextNode.equals(WorkNode.NODE_END));
        return BaseResp.success();
    }
fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderProcessService.java
@@ -2,12 +2,14 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.work.data.WorkNode;
import com.fzzy.work.domain.WorkOrderProcess;
import com.fzzy.work.mapper.WorkOrderProcessMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
@@ -31,8 +33,16 @@
        return mapper.selectList(queryWrapper);
    }
    public void addData(WorkOrderProcess process) {
    public void addData(WorkOrderProcess process, boolean isEnd) {
        if(null == process.getId()) process.setId(ContextUtil.UUID());
        mapper.insert(process);
        if (isEnd) {
            process.setId(ContextUtil.UUID());
            process.setNode(WorkNode.NODE_END.getCode());
            process.setRemark("流程结束");
            process.setCreateTime(new Date());
            mapper.insert(process);
        }
    }
}
fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderService.java
@@ -3,7 +3,6 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.constant.InoutConstant;
import com.fzzy.igds.mapper.InoutNoticeInMapper;
import com.fzzy.igds.mapper.InoutNoticeOutMapper;
import com.fzzy.igds.utils.ContextUtil;
@@ -136,6 +135,26 @@
        return list;
    }
    public List<SysDictData> triggerNode() {
        List<SysDictData> list = new ArrayList<SysDictData>();
        for (WorkNode w : WorkNode.values()) {
            list.add(new SysDictData(w.getMsg(), w.getCode()));
        }
        return list;
    }
    public WorkOrder selectByBusinessId(String businessId) {
        QueryWrapper<WorkOrder> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("business_id", businessId);
        List<WorkOrder> list = workOrderMapper.selectList(queryWrapper);
        if (null == list || list.isEmpty()) return null;
        return list.get(0);
    }
    /**
     * èŽ·å–ç”¨æˆ·å¾…å¤„ç†å·¥å•æ•°
     * @param status
fzzy-igdss-view/src/main/java/com/fzzy/igds/FileUploadManage.java
@@ -1,7 +1,5 @@
package com.fzzy.igds;
import com.bstek.dorado.uploader.DownloadFile;
import com.bstek.dorado.uploader.annotation.FileProvider;
import com.bstek.dorado.uploader.UploadFile;
import com.bstek.dorado.uploader.annotation.FileResolver;
import com.fzzy.igds.service.FileService;
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticeIn.view.xml
@@ -4,10 +4,6 @@
  <Context/>
  <Model>
    <DataType name="dtMain">
      <ClientEvent name="onDataChange">&#xD;
&#xD;
&#xD;
</ClientEvent>
      <Property name="creationType">com.fzzy.igds.domain.InoutNoticeIn</Property>
      <PropertyDef name="id">
        <Property></Property>
@@ -110,14 +106,6 @@
          <Property name="keyProperty">dictValue</Property>
          <Property name="valueProperty">dictLabel</Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="auditUser">
        <Property></Property>
        <Property name="label">审核人</Property>
      </PropertyDef>
      <PropertyDef name="auditDate">
        <Property name="dataType">DateTime</Property>
        <Property name="label">审批时间</Property>
      </PropertyDef>
      <PropertyDef name="completeStatus">
        <Property></Property>
@@ -278,8 +266,7 @@
          <Property name="iconClass">fa fa-pencil-square-o</Property>
        </ToolBarButton>
        <ToolBarButton layoutConstraint="left">
          <ClientEvent name="onClick">&#xD;
            var select = view.get(&quot;#dataGridMain&quot;).get(&quot;selection&quot;);&#xD;
          <ClientEvent name="onClick">var select = view.get(&quot;#dataGridMain&quot;).get(&quot;selection&quot;);&#xD;
            if(select){&#xD;
            view.get(&quot;#ajaxDel&quot;).set(&quot;parameter&quot;,select).execute(function(result){&#xD;
            select.remove();&#xD;
@@ -308,6 +295,7 @@
          <Property name="iconClass">fa fa-refresh</Property>
          <Property name="width">120</Property>
          <Property name="tip">完成量默认统计到昨天,查看实时完成量请点击“实时核算”按钮</Property>
          <Property name="ignored">true</Property>
        </ToolBarButton>
        <ToolBarButton layoutConstraint="left">
          <ClientEvent name="onClick">&#xD;
@@ -323,6 +311,20 @@
          <Property name="exClassName">btn2</Property>
          <Property name="width">120</Property>
          <Property name="iconClass">fa fa-print</Property>
        </ToolBarButton>
        <Separator/>
        <ToolBarButton layoutConstraint="left">
          <ClientEvent name="onClick">var select = view.get(&quot;#dataGridMain&quot;).get(&quot;selection&quot;);&#xD;
if(select){&#xD;
    view.get(&quot;#iFrameFlowHis&quot;).set(&quot;path&quot;,&quot;/work/flow-his2?businessId=&quot;+select.get(&quot;id&quot;));&#xD;
    view.get(&quot;#dialogHis&quot;).show();&#xD;
}else{&#xD;
    $notify(&quot;请选择需要查看的数据……&quot;);&#xD;
}</ClientEvent>
          <Property name="caption">审批记录</Property>
          <Property name="exClassName">btn4</Property>
          <Property name="iconClass">fa fa-th-list</Property>
          <Property name="width">120</Property>
        </ToolBarButton>
        <Fill/>
      </ToolBar>
@@ -378,11 +380,10 @@
          <Property name="align">center</Property>
          <Property name="width">100</Property>
        </DataColumn>
        <DataColumn>
          <Property name="property">updateBy</Property>
        <DataColumn name="auditStatus">
          <Property name="property">auditStatus</Property>
          <Property name="width">100</Property>
          <Property name="align">center</Property>
          <Property name="name">updateBy</Property>
          <Property name="width">120</Property>
        </DataColumn>
        <DataColumn>
          <Property name="property">createTime</Property>
@@ -406,7 +407,11 @@
      <Property name="iconClass">fa fa-tasks</Property>
      <Buttons>
        <Button id="btnOk">
          <ClientEvent name="onClick">view.get(&quot;#updateSave&quot;).execute(function(result){&#xD;
          <ClientEvent name="onClick">//赋值收货单位等于当前库区&#xD;
var data = view.get(&quot;#dsMain.data:#&quot;);&#xD;
data.set('unitName',data.getText('deptId'));&#xD;
&#xD;
view.get(&quot;#updateSave&quot;).execute(function(result){&#xD;
    if(result.code != '200'){&#xD;
        $alert(result.message);&#xD;
        return;&#xD;
@@ -565,18 +570,6 @@
              <Property name="readOnly">true</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
              <Property name="name">auditUser</Property>
              <Property name="property">auditUser</Property>
              <Property name="readOnly">true</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
              <Property name="name">auditDate</Property>
              <Property name="property">auditDate</Property>
              <Property name="readOnly">true</Property>
              <Editor/>
            </AutoFormElement>
            <HtmlContainer layoutConstraint="colSpan:3">
              <Property name="content">1.入库通知单作为入库作业的前置条件,必须配置,否则无法进行入库作业。&lt;br>&#xD;
2.单据类型=库区通知单,表示库区自己作业业务,不受监管管理。&lt;br>&#xD;
@@ -631,5 +624,18 @@
    <AjaxAction id="recalculate">
      <Property name="service">inoutNoticePR#updateSumNoticeIn</Property>
    </AjaxAction>
    <Dialog id="dialogHis">
      <Property name="width">80%</Property>
      <Property name="height">80%</Property>
      <Property name="iconClass">fa fa-th-list</Property>
      <Property name="caption">审批记录</Property>
      <Buttons/>
      <Children>
        <IFrame id="iFrameFlowHis">
          <Property name="path">/work/flow-his?businessId=1</Property>
        </IFrame>
      </Children>
      <Tools/>
    </Dialog>
  </View>
</ViewConfig>
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticeOut.view.xml
@@ -103,33 +103,10 @@
        <Property></Property>
        <Property name="label">审核状态</Property>
        <Property name="mapping">
          <Property name="mapValues">
            <Collection>
              <Entity>
                <Property name="name">监管审核</Property>
                <Property name="code">10</Property>
              </Entity>
              <Entity>
                <Property name="name">银行审核</Property>
                <Property name="code">20</Property>
              </Entity>
              <Entity>
                <Property name="name">已审核</Property>
                <Property name="code">30</Property>
              </Entity>
            </Collection>
          <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#triggerStatusType&quot;).getResult()}</Property>
          <Property name="keyProperty">dictValue</Property>
          <Property name="valueProperty">dictLabel</Property>
          </Property>
          <Property name="keyProperty">code</Property>
          <Property name="valueProperty">name</Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="auditUser">
        <Property></Property>
        <Property name="label">审核人</Property>
      </PropertyDef>
      <PropertyDef name="auditDate">
        <Property name="dataType">DateTime</Property>
        <Property name="label">审批时间</Property>
      </PropertyDef>
      <PropertyDef name="completeStatus">
        <Property></Property>
@@ -322,6 +299,7 @@
          <Property name="iconClass">fa fa-refresh</Property>
          <Property name="width">100</Property>
          <Property name="tip">完成量默认统计到昨天,查看实时完成量请点击“实时核算”按钮</Property>
          <Property name="ignored">true</Property>
        </ToolBarButton>
        <ToolBarButton layoutConstraint="left">
          <ClientEvent name="onClick">&#xD;
@@ -337,6 +315,20 @@
          <Property name="exClassName">btn2</Property>
          <Property name="width">120</Property>
          <Property name="iconClass">fa fa-print</Property>
        </ToolBarButton>
        <Separator/>
        <ToolBarButton layoutConstraint="left">
          <ClientEvent name="onClick">var select = view.get(&quot;#dataGridMain&quot;).get(&quot;selection&quot;);&#xD;
if(select){&#xD;
    view.get(&quot;#iFrameFlowHis&quot;).set(&quot;path&quot;,&quot;/work/flow-his2?businessId=&quot;+select.get(&quot;id&quot;));&#xD;
    view.get(&quot;#dialogHis&quot;).show();&#xD;
}else{&#xD;
    $notify(&quot;请选择需要查看的数据……&quot;);&#xD;
}</ClientEvent>
          <Property name="caption">审批记录</Property>
          <Property name="exClassName">btn4</Property>
          <Property name="iconClass">fa fa-th-list</Property>
          <Property name="width">120</Property>
        </ToolBarButton>
        <Fill/>
      </ToolBar>
@@ -392,11 +384,10 @@
          <Property name="align">center</Property>
          <Property name="width">100</Property>
        </DataColumn>
        <DataColumn>
          <Property name="property">updateBy</Property>
        <DataColumn name="auditStatus">
          <Property name="property">auditStatus</Property>
          <Property name="width">100</Property>
          <Property name="align">center</Property>
          <Property name="name">updateBy</Property>
          <Property name="width">120</Property>
        </DataColumn>
        <DataColumn>
          <Property name="property">createTime</Property>
@@ -421,7 +412,10 @@
      <Property name="iconClass">fa fa-tasks</Property>
      <Buttons>
        <Button id="btnOk">
          <ClientEvent name="onClick">view.get(&quot;#updateSave&quot;).execute(function(result){&#xD;
          <ClientEvent name="onClick">var data = view.get(&quot;#dsMain.data:#&quot;);&#xD;
data.set('unitName',data.getText('deptId'));&#xD;
&#xD;
view.get(&quot;#updateSave&quot;).execute(function(result){&#xD;
    if(result.code != '200'){&#xD;
        $alert(result.message);&#xD;
        return;&#xD;
@@ -475,7 +469,7 @@
            <Property name="labelAlign">right</Property>
            <Property name="labelSeparator">:</Property>
            <Property name="labelWidth">120</Property>
            <AutoFormElement layoutConstraint="colSpan:2">
            <AutoFormElement>
              <Property name="name">name</Property>
              <Property name="property">name</Property>
              <Editor/>
@@ -484,6 +478,8 @@
              <Property name="name">type</Property>
              <Property name="property">type</Property>
              <Property name="trigger">autoMappingDropDown1</Property>
              <Property name="editorType">RadioGroup</Property>
              <Property name="showHint">false</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement id="formItemBank">
@@ -514,20 +510,38 @@
              <Property name="trigger">defaultYearDropDown</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement layoutConstraint="colSpan:2">
              <Property name="name">customerName</Property>
              <Property name="property">customerName</Property>
            <AutoFormElement>
              <Property name="name">createTime</Property>
              <Property name="property">createTime</Property>
              <Property name="readOnly">true</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
              <Property name="name">unitName</Property>
              <Property name="property">unitName</Property>
              <Property name="name">customerName</Property>
              <Property name="property">customerName</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
              <Property name="name">targetNumber</Property>
              <Property name="property">targetNumber</Property>
              <Property name="readOnly">false</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
              <Property name="name">createBy</Property>
              <Property name="property">createBy</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
              <Property name="name">createTime</Property>
              <Property name="property">createTime</Property>
              <Property name="readOnly">true</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement layoutConstraint="colSpan:3">
              <Property name="name">remark</Property>
              <Property name="property">remark</Property>
              <Property name="editorType">TextArea</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
@@ -547,17 +561,6 @@
              <Property name="readOnly">false</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
              <Property name="name">createBy</Property>
              <Property name="property">createBy</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
              <Property name="name">auditStatus</Property>
              <Property name="property">auditStatus</Property>
              <Property name="readOnly">true</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement layoutConstraint="colSpan:2">
              <Property name="name">contract</Property>
              <Property name="property">contract</Property>
@@ -569,32 +572,16 @@
              </Property>
              <Property name="text">注:监管通知单,可填写质押合同名称</Property>
            </Label>
            <AutoFormElement layoutConstraint="colSpan:3">
              <Property name="name">remark</Property>
              <Property name="property">remark</Property>
              <Property name="editorType">TextArea</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
              <Property name="name">createTime</Property>
              <Property name="property">createTime</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
              <Property name="name">auditUser</Property>
              <Property name="property">auditUser</Property>
              <Property name="readOnly">true</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
              <Property name="name">auditDate</Property>
              <Property name="property">auditDate</Property>
              <Property name="name">auditStatus</Property>
              <Property name="property">auditStatus</Property>
              <Property name="readOnly">true</Property>
              <Editor/>
            </AutoFormElement>
            <HtmlContainer layoutConstraint="colSpan:3">
              <Property name="content">1.出库通知单作为出库作业的前置条件,必须配置,否则无法进行入库作业。&lt;br>&#xD;
                2.单据类型=库区通知单,表示库区自己作业业务,不受监管管理。</Property>
              <Property name="content">1.入库通知单作为入库作业的前置条件,必须配置,否则无法进行入库作业。&lt;br>&#xD;
2.单据类型=库区通知单,表示库区自己作业业务,不受监管管理。&lt;br>&#xD;
3.单据类型=质押监管通知单,单据必须填写监督银行。</Property>
              <Property name="exClassName">h-tip</Property>
              <Property name="contentOverflow">hidden</Property>
            </HtmlContainer>
@@ -645,5 +632,18 @@
    <AjaxAction id="recalculate">
      <Property name="service">inoutNoticePR#updateSumNoticeOut</Property>
    </AjaxAction>
    <Dialog id="dialogHis">
      <Property name="width">80%</Property>
      <Property name="height">80%</Property>
      <Property name="iconClass">fa fa-th-list</Property>
      <Property name="caption">审批记录</Property>
      <Buttons/>
      <Children>
        <IFrame id="iFrameFlowHis">
          <Property name="path">/work/flow-his?businessId=1</Property>
        </IFrame>
      </Children>
      <Tools/>
    </Dialog>
  </View>
</ViewConfig>
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutStockChangePR.java
@@ -4,14 +4,10 @@
import com.bstek.dorado.annotation.DataResolver;
import com.bstek.dorado.annotation.Expose;
import com.bstek.dorado.data.provider.Page;
import com.fzzy.igds.domain.Camera;
import com.fzzy.igds.domain.InoutStockChange;
import com.fzzy.igds.service.InoutStockChangeService;
import com.fzzy.igds.service.SecCameraService;
import jdk.nashorn.internal.ir.annotations.Reference;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrder.view.xml
@@ -81,6 +81,12 @@
      </PropertyDef>
      <PropertyDef name="node">
        <Property></Property>
        <Property name="mapping">
          <Property name="mapValues">${dorado.getDataProvider(&quot;workOrderPR#triggerNode&quot;).getResult()}</Property>
          <Property name="keyProperty">dictValue</Property>
          <Property name="valueProperty">dictLabel</Property>
        </Property>
        <Property name="label">流程环节</Property>
      </PropertyDef>
      <PropertyDef name="createById">
        <Property></Property>
@@ -132,7 +138,7 @@
        <Property name="label">截止时间</Property>
      </PropertyDef>
      <PropertyDef name="scope">
        <Property/>
        <Property></Property>
      </PropertyDef>
    </DataType>
    <DataType name="dtWordProcess">
@@ -501,6 +507,11 @@
                <Property name="align">center</Property>
                <Property name="name">status</Property>
              </DataColumn>
              <DataColumn name="node">
                <Property name="property">node</Property>
                <Property name="width">120</Property>
                <Property name="align">center</Property>
              </DataColumn>
              <DataColumn name="bizType">
                <Property name="property">bizType</Property>
                <Property name="width">120</Property>
@@ -579,6 +590,11 @@
                <Property name="align">center</Property>
                <Property name="name">status</Property>
              </DataColumn>
              <DataColumn name="node">
                <Property name="property">node</Property>
                <Property name="width">120</Property>
                <Property name="align">center</Property>
              </DataColumn>
              <DataColumn name="bizType">
                <Property name="property">bizType</Property>
                <Property name="width">120</Property>
fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrderPR.java
@@ -6,7 +6,6 @@
import com.bstek.dorado.data.provider.Page;
import com.fzzy.igds.data.BaseResp;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.work.data.WorkStatus;
import com.fzzy.work.domain.WorkOrder;
import com.fzzy.work.data.WorkOrderParam;
import com.fzzy.work.domain.WorkOrderConf;
@@ -17,7 +16,6 @@
import com.fzzy.work.service.WorkOrderService;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.domain.entity.SysUser;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
@@ -157,6 +155,17 @@
        return workOrderService.triggerType();
    }
    
    /**
     * æµç¨‹èŠ‚ç‚¹
     * ${dorado.getDataProvider("workOrderPR#triggerNode").getResult()}
     *
     * @return
     */
    @DataProvider
    public List<SysDictData> triggerNode() {
        return workOrderService.triggerNode();
    }
    //-----------------------流程处理---------------------------//
    /**
    *
fzzy-igdss-web/src/main/java/com/fzzy/work/WorkOrderController.java
@@ -1,10 +1,14 @@
package com.fzzy.work;
import com.fzzy.igds.utils.DateUtil;
import com.fzzy.work.data.WorkNode;
import com.fzzy.work.data.WorkStatus;
import com.fzzy.work.domain.WorkOrder;
import com.fzzy.work.domain.WorkOrderConf;
import com.fzzy.work.domain.WorkOrderProcess;
import com.fzzy.work.service.WorkOrderConfService;
import com.fzzy.work.service.WorkOrderProcessService;
import com.fzzy.work.service.WorkOrderService;
import com.ruoyi.common.core.controller.BaseController;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
@@ -32,6 +36,8 @@
    private WorkOrderConfService workOrderConfService;
    @Resource
    private WorkOrderProcessService workOrderProcessService;
    @Resource
    private WorkOrderService workOrderService;
    /**
@@ -81,14 +87,45 @@
        log.info("工单记录-工单ID:{}", orderId);
        List<WorkOrderProcess> list = workOrderProcessService.queryList(orderId);
        mmap.put("list", list);
        mmap.put("tipTime", 1);
        mmap.put("tipCount", 1);
        mmap.put("tipTime", "0分钟");
        mmap.put("tipCount", "0次");
        if (null != list && !list.isEmpty()) {
        if (null == list || list.isEmpty()) return prefix + "/flow-his";
            //次数默认减去第一次提交
            mmap.put("tipCount", list.size() - 1);
        mmap.put("tipCount", list.size() - 1 + "次");
        WorkOrderProcess last = list.get(0);
        if(!last.getNode().equals(WorkNode.NODE_END.getCode())){
            long tipTime = DateUtil.difMin(list.get(0).getCreateTime(), new Date());
            mmap.put("tipTime", tipTime);
            mmap.put("tipTime", tipTime + "分钟");
        }
        return prefix + "/flow-his";
    }
    @GetMapping("/flow-his2")
    public String flowHis2(@RequestParam("businessId") String businessId, ModelMap mmap) {
        log.info("工单记录-业务ID:{}", businessId);
        //获取工单
        WorkOrder order = workOrderService.selectByBusinessId(businessId);
        mmap.put("list", null);
        mmap.put("tipTime", "0分钟");
        mmap.put("tipCount", "0次");
        if (null == order) return prefix + "/flow-his";
        List<WorkOrderProcess> list = workOrderProcessService.queryList(order.getId());
        if (null == list || list.isEmpty()) return prefix + "/flow-his";
        //次数默认减去第一次提交
        mmap.put("tipCount", list.size() - 1 + "次");
        WorkOrderProcess last = list.get(0);
        if(!last.getNode().equals(WorkNode.NODE_END.getCode())){
            long tipTime = DateUtil.difMin(list.get(0).getCreateTime(), new Date());
            mmap.put("tipTime", tipTime + "分钟");
        }
        return prefix + "/flow-his";
fzzy-igdss-web/src/main/resources/templates/work/flow-his.html
@@ -12,21 +12,17 @@
            scrollbar-width: none; /* Firefox */
            -ms-overflow-style: none; /* IE å’Œ Edge */
        }
        /* Chrome, Safari å’Œ Opera */
        .hide-scrollbar::-webkit-scrollbar {
            display: none;
        }
        /* å¹³æ»‘滚动效果 */
        .smooth-scroll {
            scroll-behavior: smooth;
        }
        html {
            overflow: hidden;
        }
        /* é¡µé¢åŸºç¡€æ ·å¼ */
        body {
            background-color: #FFF;
@@ -35,7 +31,6 @@
            font-size: 14px;
            overflow-x: hidden;
        }
        .container {
            margin: 0 auto;
            background-color: #fff;
@@ -43,13 +38,11 @@
            box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
            overflow: hidden;
        }
        .header {
            background-color: #e6e6e6;
            padding: 15px;
            font-weight: bold;
        }
        .summary-box {
            margin: 20px;
            padding: 15px;
@@ -58,22 +51,18 @@
            border-radius: 4px;
            font-size: 14px;
        }
        .summary-box .layui-icon {
            margin-right: 8px;
            color: #1E9FFF;
        }
        .timeline-container {
            padding: 0 20px 20px;
        }
        /* è‡ªå®šä¹‰æ—¶é—´è½´æ ·å¼ */
        .custom-timeline {
            position: relative;
            padding: 20px 0;
        }
        .custom-timeline:before {
            content: '';
            position: absolute;
@@ -83,17 +72,14 @@
            width: 2px;
            background-color: #e8e8e8;
        }
        .timeline-item {
            position: relative;
            padding-left: 50px;
            margin-bottom: 25px;
        }
        .timeline-item:last-child {
            margin-bottom: 0;
        }
        .timeline-icon {
            position: absolute;
            left: 0;
@@ -107,7 +93,6 @@
            color: white;
            z-index: 2;
        }
        .timeline-content {
            background-color: #f9f9f9;
            border-radius: 6px;
@@ -115,7 +100,6 @@
            border-left: 3px solid #1E9FFF;
            font-size: 14px;
        }
        .operator-info {
            font-weight: bold;
            color: #333;
@@ -129,31 +113,25 @@
            color: #888;
            font-size: 13px;
        }
        .time-info {
            text-align: right;
            color: #999;
            font-size: 13px;
            margin-top: 8px;
        }
        /* ä¸åŒçŠ¶æ€çš„å›¾æ ‡é¢œè‰² */
        .status-created {
            background-color: #FFB800;
        }
        .status-waiting {
            background-color: #FF5722;
        }
        .status-processing {
            background-color: #1E9FFF;
        }
        .status-completed {
            background-color: #009688;
        }
        /* å¯æ»šåŠ¨åŒºåŸŸæ ·å¼ */
        .scrollable-area {
            max-height: 400px; /* è®¾ç½®æœ€å¤§é«˜åº¦ */
@@ -205,8 +183,8 @@
    <!--    </div>-->
    <div class="summary-box">
        <i class="layui-icon layui-icon-tips"></i>
        å¤„理记录:该工单累计处理时长 <span style="color:#1E9FFF; font-weight:bold;">1分钟</span>,累计处理次数 <span
            style="color:#1E9FFF; font-weight:bold;">3次</span>
        å¤„理记录:该工单累计处理时长 <span style="color:#1E9FFF; font-weight:bold;" th:text="${tipTime}">0分钟</span>,累计处理次数 <span
            style="color:#1E9FFF; font-weight:bold;" th:text="${tipCount}">0次</span>
    </div>
    <div class="timeline-container">