czt
12 小时以前 1360cdb47a4306039abb3bcbed77fb7093779081
损益管理
已修改13个文件
已添加5个文件
723 ■■■■■ 文件已修改
fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/Constant.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutLossOver.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/mapper/InoutLossOverMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutLossOverService.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/websocket/WebSocketPacket.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutLossOver.view.xml 397 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutLossOverPR.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/Patrol.view.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/models/core.model.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/group/GroupController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/static/group/gis.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/static/group/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/static/group/master.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/static/group/video.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/templates/group/gis.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/templates/group/index.html 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/templates/group/video.html 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/templates/security/patrol/patrolRecord/patrolRecord.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/constant/Constant.java
@@ -114,6 +114,15 @@
    public static final String TYPE_OUT = "OUT";
    /**
     * æŸæº¢ç±»åž‹-损耗
     */
    public static final String TYPE_LOSS = "LOSS";
    /**
     * æŸæº¢ç±»åž‹-溢出
     */
    public static final String TYPE_OVER = "OVER";
    /**
     * å‡ºå…¥åº“流程
     */
    // æµç¨‹-登记
fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutLossOver.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package com.fzzy.igds.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
 * @Description æŸç›Šå®žä½“
 * @Author CZT
 * @Date 2025/12/18 20:53
 */
@Data
@Entity
@Table(name = "d_inout_loss_over")
@TableName("d_inout_loss_over")
@EqualsAndHashCode(callSuper = false)
public class InoutLossOver extends BizBaseEntity implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "id", columnDefinition = "varchar(40) COMMENT '损耗单号(yyyyMMdd + 3位顺序号)'")
    @TableField("id")
    private String id;
    @Column(name = "dept_id", columnDefinition = "varchar(40) COMMENT '所属库区'")
    @TableField("dept_id")
    private String deptId;
    @Column(name = "depot_id", columnDefinition = "varchar(40) COMMENT '入库仓库'")
    @TableField("depot_id")
    private String depotId;
    @Column(name = "type", columnDefinition = "varchar(40) COMMENT '损益类型(LOSS-损耗,OVER-溢出)'")
    @TableField("type")
    private String type;
    @Column(name = "food_variety", columnDefinition = "varchar(7) COMMENT '粮食品种'")
    @TableField("food_variety")
    private String foodVariety;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Column(name = "loss_time", columnDefinition = "datetime COMMENT '损益日期'")
    @TableField("loss_time")
    private Date lossTime;
    @Column(name = "amount", columnDefinition = "decimal(20,6) COMMENT '重量(单位:KG)'")
    @TableField("amount")
    private Double amount;
    @Column(name = "info", columnDefinition = "varchar(200) COMMENT '损益原因'")
    @TableField("info")
    private String info;
    @Column(name = "remark", columnDefinition = "varchar(100) COMMENT '备注说明'")
    @TableField("remark")
    private String remark;
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/mapper/InoutLossOverMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.fzzy.igds.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fzzy.igds.domain.InoutLossOver;
import org.apache.ibatis.annotations.Mapper;
/**
 * @Description
 * @Author CZT
 * @Date 2025/12/19 09:05
 */
@Mapper
public interface InoutLossOverMapper extends BaseMapper<InoutLossOver> {
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutLossOverService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,127 @@
package com.fzzy.igds.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fzzy.igds.data.IgdsBaseParam;
import com.fzzy.igds.domain.InoutLossOver;
import com.fzzy.igds.mapper.InoutLossOverMapper;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.igds.utils.DateUtil;
import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
 * @Description
 * @Author CZT
 * @Date 2025/12/19 09:05
 */
@Slf4j
@Service
public class InoutLossOverService {
    @Resource
    private InoutLossOverMapper inoutLossOverMapper;
    /**
     * åˆ—表分页查询
     * @param page
     * @param param
     */
    public void pageData(Page<InoutLossOver> page, IgdsBaseParam param) {
        QueryWrapper<InoutLossOver> queryWrapper = new QueryWrapper<>();
        param.setCompanyId(ContextUtil.getCompanyId());
        param.setDeptId(ContextUtil.subDeptId(null));
        queryWrapper.eq("company_id", param.getCompanyId());
        queryWrapper.eq("dept_id", param.getDeptId());
        if(StringUtils.isNotBlank(param.getDepotId())){
            queryWrapper.like("depot_id", param.getDepotId());
        }
        if(null != param.getStart()){
            queryWrapper.ge("loss_time", DateUtil.getCurZero(param.getStart()));
        }
        if(null != param.getEnd()){
            queryWrapper.le("loss_time", DateUtil.getNextZero(param.getEnd()));
        }
        inoutLossOverMapper.selectPage(page, queryWrapper);
    }
    /**
     * æŸ¥è¯¢åº“区下所有信息
     * @return
     */
    public List<InoutLossOver> listData(String companyId, String deptId) {
        QueryWrapper<InoutLossOver> queryWrapper = new QueryWrapper<>();
        if(StringUtils.isNotBlank(companyId)){
            queryWrapper.eq("company_id", companyId);
        }
        if(StringUtils.isNotBlank(deptId)){
            queryWrapper.eq("dept_id", deptId);
        }
        queryWrapper.orderByDesc("id");
        return inoutLossOverMapper.selectList(queryWrapper);
    }
    /**
     * ä¿å­˜æ•°æ®
     * @param data
     */
    public void saveData(InoutLossOver data) {
        if (StringUtils.isEmpty(data.getCompanyId())) {
            data.setCompanyId(ContextUtil.getCompanyId());
        }
        if (StringUtils.isEmpty(data.getDeptId())) {
            data.setDeptId(ContextUtil.subDeptId(null));
        }
        data.setUpdateBy(ContextUtil.getLoginUserName());
        data.setUpdateTime(new Date());
        if(StringUtils.isEmpty(data.getId())){
            data.setId(getStrId(data.getLossTime()));
            data.setCreateBy(ContextUtil.getLoginUserName());
            data.setCreateTime(new Date());
            inoutLossOverMapper.insert(data);
        }else {
            inoutLossOverMapper.updateById(data);
        }
    }
    /**
     * èŽ·å–ä¸»é”®ID
     *
     * @param time
     */
    public String getStrId(Date time) {
        QueryWrapper<InoutLossOver> queryWrapper = new QueryWrapper<>();
        queryWrapper.ge("loss_time", DateUtil.getCurZero(time));
        queryWrapper.le("loss_time", DateUtil.getNextZero(time));
        queryWrapper.orderByDesc("id");
        List<InoutLossOver> list = inoutLossOverMapper.selectList(queryWrapper);
        String oldOrderId = null;
        if (null != list && list.size() > 0) {
            oldOrderId = list.get(0).getId().substring(8);
        }
        return DateFormatUtils.format(time, "yyyyMMdd") + ContextUtil.getOrderId(oldOrderId, 3);
    }
    /**
     * åˆ é™¤æ•°æ®
     * @param data
     * @return
     */
    public String delData(InoutLossOver data) {
        inoutLossOverMapper.deleteById(data);
        return null;
    }
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/websocket/WebSocketPacket.java
@@ -14,11 +14,11 @@
    public static final String BIZ_TAG_COMMON = "common";
    public static final String BIZ_TAG_SCREEN_CHECK = "check";
    public static final String BIZ_TAG_SCREEN_INDEX = "index";
    public static final String BIZ_TAG_SCREEN_INOUT = "inout";
    public static final String BIZ_TAG_SCREEN_GIS = "gis";
    public static final String BIZ_TAG_SCREEN_GROUP = "group";
    public static final String BIZ_TAG_SCREEN_VIDEO = "video";
    /**
     * 
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutLossOver.view.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,397 @@
<?xml version="1.0" encoding="UTF-8"?>
<ViewConfig>
  <Arguments/>
  <Context/>
  <Model>
    <DataType name="dtMain">
      <Property name="creationType">com.fzzy.igds.domain.InoutLossOver</Property>
      <PropertyDef name="id">
        <Property></Property>
        <Property name="label">损益单号</Property>
        <Property name="readOnly">true</Property>
      </PropertyDef>
      <PropertyDef name="companyId">
        <Property></Property>
        <Property name="label">收储公司</Property>
      </PropertyDef>
      <PropertyDef name="deptId">
        <Property></Property>
        <Property name="label">所属库区</Property>
        <Property name="mapping">
          <Property name="mapValues">${dorado.getDataProvider(&quot;deptPR#getAllData&quot;).getResult()}</Property>
          <Property name="keyProperty">id</Property>
          <Property name="valueProperty">kqmc</Property>
        </Property>
        <Property name="readOnly">true</Property>
      </PropertyDef>
      <PropertyDef name="depotId">
        <Property></Property>
        <Property name="label">损益仓库</Property>
        <Property name="mapping">
          <Property name="mapValues">${dorado.getDataProvider(&quot;depotPR#getAllCache&quot;).getResult()}</Property>
          <Property name="keyProperty">id</Property>
          <Property name="valueProperty">name</Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="type">
        <Property></Property>
        <Property name="label">损益类型</Property>
        <Property name="mapping">
          <Property name="keyProperty">key</Property>
          <Property name="valueProperty">value</Property>
          <Property name="mapValues">
            <Collection>
              <Entity>
                <Property name="key">LOSS</Property>
                <Property name="value">损耗</Property>
              </Entity>
              <Entity>
                <Property name="key">OVER</Property>
                <Property name="value">溢出</Property>
              </Entity>
            </Collection>
          </Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="foodVariety">
        <Property></Property>
        <Property name="label">粮食品种</Property>
        <Property name="mapping">
          <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#sysDictData&quot;).getResult(&quot;FOOD_VARIETY_&quot;)}</Property>
          <Property name="keyProperty">dictValue</Property>
          <Property name="valueProperty">dictLabel</Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="lossTime">
        <Property name="dataType">Date</Property>
        <Property name="label">损益日期</Property>
      </PropertyDef>
      <PropertyDef name="amount">
        <Property name="dataType">Double</Property>
        <Property name="label">损益数量</Property>
        <Property name="displayFormat">0.00 KG</Property>
      </PropertyDef>
      <PropertyDef name="confName">
        <Property></Property>
        <Property name="label">班次名称</Property>
      </PropertyDef>
      <PropertyDef name="info">
        <Property></Property>
        <Property name="label">损益原因</Property>
      </PropertyDef>
      <PropertyDef name="remark">
        <Property></Property>
        <Property name="label">备注信息</Property>
      </PropertyDef>
      <PropertyDef name="createTime">
        <Property name="dataType">DateTime</Property>
        <Property name="label">创建时间</Property>
      </PropertyDef>
      <PropertyDef name="createBy">
        <Property></Property>
        <Property name="label">创建人</Property>
      </PropertyDef>
      <PropertyDef name="updateTime">
        <Property name="dataType">DateTime</Property>
        <Property name="label">更新时间</Property>
        <Property name="readOnly">true</Property>
      </PropertyDef>
      <PropertyDef name="updateBy">
        <Property></Property>
        <Property name="label">更新人</Property>
        <Property name="readOnly">true</Property>
      </PropertyDef>
    </DataType>
  </Model>
  <View layout="padding:10">
    <ClientEvent name="onReady">
/**&#xD;
* æŸ¥è¯¢&#xD;
*/&#xD;
query = function(){&#xD;
    view.get(&quot;#dsMain&quot;).flushAsync();&#xD;
}&#xD;
query();&#xD;
</ClientEvent>
    <Property name="packages">font-awesome,css-common</Property>
    <DataSet id="dsMain">
      <Property name="dataType">[dtMain]</Property>
      <Property name="dataProvider">inoutLossOverPR#pageData</Property>
      <Property name="pageSize">15</Property>
      <Property name="loadMode">lazy</Property>
    </DataSet>
    <DataSet id="dsParam">
      <ClientEvent name="onReady">self.insert({});</ClientEvent>
      <Property name="dataType">dtBaseParam</Property>
    </DataSet>
    <Container>
      <Property name="className">c-param</Property>
      <AutoForm>
        <Property name="cols">*,*,*,90,90</Property>
        <Property name="dataSet">dsParam</Property>
        <Property name="labelAlign">right</Property>
        <Property name="labelWidth">100</Property>
        <AutoFormElement>
          <Property name="name">depotId</Property>
          <Property name="property">depotId</Property>
          <Property name="label">损益仓库</Property>
          <Editor/>
        </AutoFormElement>
        <AutoFormElement>
          <Property name="name">start</Property>
          <Property name="property">start</Property>
          <Editor/>
        </AutoFormElement>
        <AutoFormElement>
          <Property name="name">end</Property>
          <Property name="property">end</Property>
          <Editor/>
        </AutoFormElement>
        <Button>
          <ClientEvent name="onClick">var data = view.get(&quot;#dsParam.data&quot;);&#xD;
            if(data){&#xD;
            view.get(&quot;#dsMain&quot;).set(&quot;parameter&quot;,data).flushAsync();&#xD;
            }else{&#xD;
            view.get(&quot;#dsMain&quot;).flushAsync();&#xD;
            }</ClientEvent>
          <Property name="caption">搜索</Property>
          <Property name="iconClass">fa fa-search</Property>
          <Property name="exClassName">btn-q1</Property>
        </Button>
        <Button>
          <ClientEvent name="onClick">view.get(&quot;#dsParam&quot;).setData({});</ClientEvent>
          <Property name="caption">重置</Property>
          <Property name="exClassName">btn-q2</Property>
          <Property name="iconClass">fa fa-refresh</Property>
        </Button>
      </AutoForm>
    </Container>
    <Container>
      <Property name="className">c-data</Property>
      <ToolBar>
        <ToolBarButton>
          <ClientEvent name="onClick">view.get(&quot;#dsMain&quot;).insert();&#xD;
            view.get(&quot;#dialogMain&quot;).show();</ClientEvent>
          <Property name="caption">新增</Property>
          <Property name="exClassName">btn1</Property>
          <Property name="width">100</Property>
          <Property name="iconClass">fa fa-plus</Property>
        </ToolBarButton>
        <ToolBarButton>
          <ClientEvent name="onClick">var data = view.get(&quot;#dataGridCamera&quot;).get(&quot;selection&quot;);&#xD;
            if(data){&#xD;
            view.get(&quot;#dialogMain&quot;).show();&#xD;
            }else{&#xD;
            $notify(&quot;请选择需要修改的监控信息……&quot;);&#xD;
            }</ClientEvent>
          <Property name="caption">修改</Property>
          <Property name="exClassName">btn2</Property>
          <Property name="width">100</Property>
          <Property name="iconClass">fa fa-pencil-square-o</Property>
        </ToolBarButton>
        <ToolBarButton>
          <ClientEvent name="onClick">var select = view.get(&quot;#dataGridCamera&quot;).get(&quot;selection&quot;);&#xD;
            if(select){&#xD;
            view.get(&quot;#ajaxDel&quot;).set(&quot;parameter&quot;,select).execute(function(result){&#xD;
            if(result){&#xD;
            $alert(result);&#xD;
            }else{&#xD;
            query();&#xD;
            }&#xD;
            });
            }else{&#xD;
            $notify(&quot;请选择需要删除的监控信息……&quot;);&#xD;
            }</ClientEvent>
          <Property name="caption">删除</Property>
          <Property name="exClassName">btn3</Property>
          <Property name="width">100</Property>
          <Property name="iconClass">fa fa-times</Property>
        </ToolBarButton>
      </ToolBar>
      <DataGrid id="dataGridMain" layoutConstraint="padding:8">
        <ClientEvent name="onDataRowClick">view.get(&quot;#dataGridMain&quot;).set(&quot;selection&quot;,arg.data);</ClientEvent>
        <Property name="dataSet">dsMain</Property>
        <Property name="selectionMode">singleRow</Property>
        <Property name="readOnly">true</Property>
        <RowSelectorColumn/>
        <RowNumColumn>
          <Property name="width">50</Property>
          <Property name="caption">序号</Property>
        </RowNumColumn>
        <DataColumn name="id">
          <Property name="property">id</Property>
          <Property name="width">120</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn>
          <Property name="property">deptId</Property>
          <Property name="align">left</Property>
          <Property name="name">deptId</Property>
        </DataColumn>
        <DataColumn name="depotId">
          <Property name="property">depotId</Property>
          <Property name="align">center</Property>
          <Property name="width">150</Property>
        </DataColumn>
        <DataColumn name="foodVariety">
          <Property name="property">foodVariety</Property>
          <Property name="align">center</Property>
          <Property name="width">150</Property>
        </DataColumn>
        <DataColumn name="type">
          <Property name="property">type</Property>
          <Property name="align">center</Property>
          <Property name="width">150</Property>
        </DataColumn>
        <DataColumn name="lossTime">
          <Property name="property">lossTime</Property>
          <Property name="align">center</Property>
          <Property name="width">150</Property>
        </DataColumn>
        <DataColumn name="amount">
          <Property name="property">amount</Property>
          <Property name="align">center</Property>
          <Property name="width">150</Property>
        </DataColumn>
        <DataColumn name="remark">
          <Property name="property">remark</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn>
          <Property name="property">updateTime</Property>
          <Property name="align">center</Property>
          <Property name="name">updateTime</Property>
          <Property name="width">160</Property>
        </DataColumn>
      </DataGrid>
      <ToolBar layoutConstraint="bottom">
        <Fill/>
        <DataPilot layoutConstraint="right">
          <Property name="itemCodes">pageSize,pages</Property>
          <Property name="dataSet">dsMain</Property>
        </DataPilot>
      </ToolBar>
    </Container>
    <Dialog id="dialogMain" layout="regionPadding:8">
      <Property name="iconClass">fa fa-tasks</Property>
      <Property name="width">60%</Property>
      <Property name="caption">损益信息</Property>
      <Property name="closeable">false</Property>
      <Buttons>
        <Button>
          <ClientEvent name="onClick">var data = view.get(&quot;#dsMain.data:#&quot;);&#xD;
            if(data.validate() != 'ok'){&#xD;
            $notify(&quot;数据校验失败!!&quot;);&#xD;
            return;&#xD;
            }&#xD;
            view.get(&quot;#uaAction&quot;).set(&quot;parameter&quot;,data).execute(function(){&#xD;
            self.get(&quot;parent&quot;).hide();&#xD;
            query();&#xD;
            });</ClientEvent>
          <Property name="caption">保存</Property>
          <Property name="iconClass">fa fa-check-circle</Property>
          <Property name="exClassName">btn1</Property>
          <Property name="width">120</Property>
        </Button>
        <Button>
          <ClientEvent name="onClick">var cur = view.get(&quot;#dsMain.data:#&quot;);&#xD;
            if(cur) cur.cancel();&#xD;
            self.get(&quot;parent&quot;).hide();</ClientEvent>
          <Property name="caption">取消</Property>
          <Property name="exClassName">btn3</Property>
          <Property name="iconClass">fa fa-times-circle</Property>
          <Property name="width">120</Property>
        </Button>
      </Buttons>
      <Children>
        <FieldSet layout="padding:5">
          <Property name="caption">基本信息</Property>
          <Buttons/>
          <Children>
            <AutoForm>
              <Property name="dataSet">dsMain</Property>
              <Property name="cols">*,*,*</Property>
              <Property name="labelWidth">100</Property>
              <Property name="labelAlign">right</Property>
              <Property name="labelSeparator">:</Property>
              <AutoFormElement>
                <Property name="name">id</Property>
                <Property name="property">id</Property>
                <Editor>
                  <TextEditor id="sn">
                    <Property name="blankText"> -- ç³»ç»Ÿè‡ªåŠ¨ç”Ÿæˆ --</Property>
                  </TextEditor>
                </Editor>
              </AutoFormElement>
              <AutoFormElement layoutConstraint="colSpan:2">
                <Property name="name">deptId</Property>
                <Property name="property">deptId</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">depotId</Property>
                <Property name="property">depotId</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">type</Property>
                <Property name="property">type</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">foodVariety</Property>
                <Property name="property">foodVariety</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">lossTime</Property>
                <Property name="property">lossTime</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">amount</Property>
                <Property name="property">amount</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">updateBy</Property>
                <Property name="property">updateBy</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement layoutConstraint="colSpan:2">
                <Property name="name">info</Property>
                <Property name="property">info</Property>
                <Property name="editorType">TextArea</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">updateBy</Property>
                <Property name="property">updateBy</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement layoutConstraint="colSpan:3">
                <Property name="name">remark</Property>
                <Property name="property">remark</Property>
                <Property name="editorType">TextArea</Property>
                <Editor/>
              </AutoFormElement>
            </AutoForm>
          </Children>
        </FieldSet>
      </Children>
      <Tools/>
    </Dialog>
    <UpdateAction id="uaAction">
      <Property name="dataResolver">inoutLossOverPR#saveData</Property>
      <UpdateItem>
        <Property name="dataSet">dsMain</Property>
        <Property name="dataPath">[#current]</Property>
      </UpdateItem>
    </UpdateAction>
    <AjaxAction id="ajaxDel">
      <Property name="confirmMessage">确定要删除吗?</Property>
      <Property name="service">inoutLossOverPR#delData</Property>
    </AjaxAction>
  </View>
</ViewConfig>
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutLossOverPR.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
package com.fzzy.igds;
import com.bstek.dorado.annotation.DataProvider;
import com.bstek.dorado.annotation.DataResolver;
import com.bstek.dorado.annotation.Expose;
import com.bstek.dorado.data.provider.Page;
import com.fzzy.igds.data.IgdsBaseParam;
import com.fzzy.igds.domain.InoutLossOver;
import com.fzzy.igds.service.InoutLossOverService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
 * @Description æŸç›Šç®¡ç†
 * @Author CZT
 * @Date 2025/12/19 09:05
 */
@Component
public class InoutLossOverPR {
    @Resource
    private InoutLossOverService inoutLossOverService;
    /**
     * inoutLossOverPR#pageData èŽ·å–ä¿¡æ¯
     *
     * @param param
     * @return
     */
    @DataProvider
    public void pageData(Page<InoutLossOver> page, IgdsBaseParam param) {
        if(null == param) {
            param = new IgdsBaseParam();
        }
        com.baomidou.mybatisplus.extension.plugins.pagination.Page<InoutLossOver> corePage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPageNo(), page.getPageSize());
        inoutLossOverService.pageData(corePage, param);
        // é‡æ–°å°è£…
        page.setEntities(corePage.getRecords());
        page.setEntityCount(Integer.parseInt(String.valueOf(corePage.getTotal())));
    }
    /**
     * inoutLossOverPR#saveData
     *
     * @param data
     */
    @DataResolver
    public void saveData(InoutLossOver data) {
        InoutLossOver item = new InoutLossOver();
        BeanUtils.copyProperties(data, item);
        inoutLossOverService.saveData(item);
    }
    /**
     * inoutLossOverPR#delData
     *
     * @param data
     * @return
     */
    @Expose
    public String delData(InoutLossOver data) {
        InoutLossOver item = new InoutLossOver();
        BeanUtils.copyProperties(data, item);
        return inoutLossOverService.delData(item);
    }
}
fzzy-igdss-view/src/main/java/com/fzzy/igds/Patrol.view.xml
@@ -132,7 +132,7 @@
          <Property name="exClassName">btn-q1</Property>
        </Button>
        <Button>
          <ClientEvent name="onClick">view.get(&quot;#dsParam&quot;).flushAsync();</ClientEvent>
          <ClientEvent name="onClick">view.get(&quot;#dsParam&quot;).setData({});</ClientEvent>
          <Property name="caption">重置</Property>
          <Property name="exClassName">btn-q2</Property>
          <Property name="iconClass">fa fa-refresh</Property>
fzzy-igdss-view/src/main/java/models/core.model.xml
@@ -84,6 +84,12 @@
    </PropertyDef>
    <PropertyDef name="depotId">
      <Property></Property>
      <Property name="label">仓库</Property>
      <Property name="mapping">
        <Property name="mapValues">${dorado.getDataProvider(&quot;depotPR#getAllCache&quot;).getResult()}</Property>
        <Property name="keyProperty">id</Property>
        <Property name="valueProperty">name</Property>
      </Property>
    </PropertyDef>
  </DataType>
  <DataType name="dtArea">
fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/group/GroupController.java
@@ -5,6 +5,7 @@
import com.fzzy.igds.domain.DicArea;
import com.fzzy.igds.domain.Slogan;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.igds.websocket.WebSocketPacket;
import com.fzzy.sys.manager.common.CommonManager;
import com.fzzy.sys.manager.gropu.GroupManager;
import com.ruoyi.common.core.domain.entity.SysUser;
@@ -48,6 +49,9 @@
        Slogan dicSlogan = commonManager.getDicSlogan();
        view.put("dicSlogan", dicSlogan);
        view.put("bizType", "screen");
        view.put("bizTag", WebSocketPacket.BIZ_TAG_COMMON);
        //查询库区信息
        List<Dept> deptList = groupManager.getAllDept(user.getCompanyId());
        view.put("deptList", deptList);
@@ -71,6 +75,10 @@
        Slogan dicSlogan = commonManager.getDicSlogan();
        view.put("dicSlogan", dicSlogan);
        view.put("bizType", "screen");
        view.put("bizTag", WebSocketPacket.BIZ_TAG_COMMON);
        //查询库区信息
        List<Dept> deptList = groupManager.getAllDept(user.getCompanyId());
        view.put("deptList", deptList);
@@ -94,6 +102,9 @@
        Slogan dicSlogan = commonManager.getDicSlogan();
        view.put("dicSlogan", dicSlogan);
        view.put("bizType", "screen");
        view.put("bizTag", WebSocketPacket.BIZ_TAG_COMMON);
        view.put("defaultAreaCode", "650000");
        //获取新疆区划信息
fzzy-igdss-web/src/main/resources/static/group/gis.js
@@ -65,7 +65,7 @@
    });
    // åˆå§‹åŒ–WebSocket
    initWS(companyId,"screen",null,null);
    initWS(companyId,bizType, bizTag, userId);
});
// socket信息返回處理
fzzy-igdss-web/src/main/resources/static/group/index.js
@@ -26,7 +26,7 @@
    init();
    // åˆå§‹åŒ–WebSocket
    initWS(companyId,"screen",null,null);
    initWS(companyId,bizType, bizTag, userId);
});
// åˆå§‹åŒ–页面
fzzy-igdss-web/src/main/resources/static/group/master.css
@@ -31,7 +31,6 @@
.i-icon img,
.i-icon32 img {
    width: 100%;
    height: 100%;
    vertical-align: top;
}
fzzy-igdss-web/src/main/resources/static/group/video.js
@@ -79,7 +79,7 @@
    initHtml();
    // åˆå§‹åŒ–WebSocket
    initWS(companyId,"screen",null,null);
    initWS(companyId,bizType, bizTag, userId);
});
// åˆå§‹åŒ–页面
fzzy-igdss-web/src/main/resources/templates/group/gis.html
@@ -447,6 +447,7 @@
        var allArea = [[${allArea}]];
        var deptList = [[${deptList}]];
        var bizType = [[${bizType}]];
        var bizTag = [[${bizTag}]];
        var dicSlogan = [[${dicSlogan}]];
        var defaultAreaCode = [[${defaultAreaCode}]];
    </script>
fzzy-igdss-web/src/main/resources/templates/group/index.html
@@ -273,6 +273,8 @@
    var deptId = [[${deptId}]];
    var dicSlogan = [[${dicSlogan}]];
    var deptList = [[${deptList}]];
    var bizType = [[${bizType}]];
    var bizTag = [[${bizTag}]];
</script>
</body>
</html>
fzzy-igdss-web/src/main/resources/templates/group/video.html
@@ -402,6 +402,8 @@
<script th:src="@{/group/video.js}"></script>
<script th:inline="javascript">
    var bizType = [[${bizType}]];
    var bizTag = [[${bizTag}]];
    var deptCur = [[${deptInfo}]]
    var deptId = [[${deptId}]];
    var dicSlogan = [[${dicSlogan}]];
fzzy-igdss-web/src/main/resources/templates/security/patrol/patrolRecord/patrolRecord.html
@@ -23,7 +23,7 @@
            <!-- è½¨è¿¹å¡ç‰‡åˆ—表(Thymeleaf循环渲染) -->
            <div th:each="record,stat : ${patrolRecordList}" class="track-card" data-index="${stat.index}">
                <div style="margin-bottom: 10px">
                    <img style="width: 100%" th:src="${record.imgName ?: '/logo-sm.png'}" th:data-id="${record.id}">
                    <img style="width: 100%;max-height: 200px;" th:src="${record.imgName ?: '/logo-sm.png'}" th:data-id="${record.id}">
                </div>
                <div class="card-row">
                    <span class="label">å·¡&nbsp;&nbsp;检&nbsp;&nbsp;人:</span>