From 867f65fe7558c1fb1e2b11d23b625cc95dbe88d8 Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期六, 29 十一月 2025 17:34:17 +0800
Subject: [PATCH] 入库通知单提交

---
 fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticeIn.view.xml                   |  636 ++++++++++++++
 fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticePR.java                       |  489 +++++++++++
 fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutNoticeInRepository.java  |   54 +
 fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticeOut.view.xml                  | 1122 ++++++++++++++++++++++++++
 fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutNoticeOutRepository.java |   53 +
 fzzy-igdss-core/src/main/java/com/fzzy/igds/data/NoticeParam.java                    |   74 +
 fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutNoticeOut.java               |    4 
 fzzy-igdss-core/src/main/java/com/fzzy/igds/mapper/InoutNoticeMapper.java            |   29 
 fzzy-igdss-core/src/main/java/com/fzzy/igds/data/NoticeDto.java                      |   91 ++
 9 files changed, 2,552 insertions(+), 0 deletions(-)

diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/data/NoticeDto.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/data/NoticeDto.java
new file mode 100644
index 0000000..e73f223
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/data/NoticeDto.java
@@ -0,0 +1,91 @@
+package com.fzzy.igds.data;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Description 鍑哄叆搴撻�氱煡鍗曟暣浣撲娇鐢ㄥ皝瑁�
+ * @Author CZT
+ * @Date 2025/11/29 16:33
+ */
+@Data
+public class NoticeDto {
+
+
+    /**
+     * 閫氱煡鍗昳d
+     */
+    private String id;
+
+
+    private String name;
+
+    /**
+     * 缁勭粐缂栫爜
+     */
+    private String companyId;
+
+    /**
+     * 搴撳尯缂栫爜
+     */
+    private String deptId;
+
+    /**
+     * 浠撳簱缂栫爜
+     */
+    private String depotId;
+
+    /**
+     * 瀹㈡埛缂栫爜
+     */
+    private String customerId;
+
+    /**
+     * 瀹㈡埛鍚嶇О
+     */
+    private String customerName;
+
+    /**
+     * 鍗曚綅鍚嶇О
+     */
+    private String unitName;
+
+    /**
+     * 绮鍝佺
+     */
+    private String foodVariety;
+
+
+    /**
+     * 绮鎬ц川
+     */
+    private String foodType;
+
+
+    /**
+     * 骞翠唤
+     */
+    private String year;
+
+    /**
+     * 鐩爣鏁伴噺
+     */
+    private Double targetNumber = 0.0;
+
+    /**
+     * 瀹屾垚鏁伴噺
+     */
+    private Double completeNumber = 0.0;
+
+    /**
+     * 瀹屾垚鏃堕棿
+     */
+    private Date completeTime;
+	
+    /**
+     * 鎵�灞炲悎鍚�
+     */
+    private String contractName;
+
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/data/NoticeParam.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/data/NoticeParam.java
new file mode 100644
index 0000000..823a220
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/data/NoticeParam.java
@@ -0,0 +1,74 @@
+package com.fzzy.igds.data;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+
+/**
+ * @Description 鍑哄叆搴撻�氱煡鍗曞弬鏁�
+ * @Author CZT
+ * @Date 2025/11/29 16:33
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+public class NoticeParam {
+
+	private String id;
+
+	private String companyId;
+
+	private String depotId;
+
+	private String deptId;// 鎵�灞炲垎搴�
+
+	private String customerName;// 瀹㈡埛鍚嶇О
+
+	private String foodVariety;// 鍝佺
+
+	private String contractId;//鍚堝悓鍙�
+
+	private String planId;//璁″垝
+
+	private String foodType; // 绮鎬ц川
+
+	private String year;// 骞翠唤
+
+	private String type;
+
+	private Double weight;// 閲嶉噺淇℃伅
+
+	private Double taskNum = 0.0;
+
+	private String completeStatus; // 瀹屾垚鐘舵��
+
+	private Double storageReal;// 搴撳瓨閲嶉噺
+
+	private Date start;
+
+	private Date end;
+
+	private String createUser;
+
+	public NoticeParam() {
+	}
+
+	public NoticeParam(String companyId, String deptId, String customerName,
+                       String foodVariety, String id) {
+		this.companyId = companyId;
+		this.deptId = deptId;
+		this.customerName = customerName;
+		this.foodVariety = foodVariety;
+		this.id = id;
+	}
+
+	public NoticeParam(String companyId, String deptId, String depotId,
+                       String customerName, String foodVariety, String id) {
+		this.companyId = companyId;
+		this.deptId = deptId;
+		this.depotId = depotId;
+		this.customerName = customerName;
+		this.foodVariety = foodVariety;
+		this.id = id;
+	}
+
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutNoticeOut.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutNoticeOut.java
index 455c251..ef221ed 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutNoticeOut.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutNoticeOut.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.bstek.dorado.annotation.PropertyDef;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -107,4 +108,7 @@
     @TableField("remark")
     private String remark;
 
+    @Transient
+    @PropertyDef(label = "鏍囪", description = "鐢ㄤ簬鍒ゆ柇閫氱煡鍗曟槸鍚︿负鏂板")
+    private String tag;
 }
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/mapper/InoutNoticeMapper.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/mapper/InoutNoticeMapper.java
new file mode 100644
index 0000000..50850e2
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/mapper/InoutNoticeMapper.java
@@ -0,0 +1,29 @@
+package com.fzzy.igds.mapper;
+
+import com.fzzy.igds.data.NoticeParam;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/29 16:39
+ */
+public interface InoutNoticeMapper {
+
+    /**
+     * 鍏ュ簱閫氱煡鍗� - 鏍规嵁鍙傛暟閲嶆柊璁$畻瀹屾垚閲�
+     *
+     * @param param
+     * @return
+     */
+    int reSumNoticeInComplete(@Param("param") NoticeParam param);
+
+    /**
+     * 鍑哄簱閫氱煡鍗� - 鏍规嵁鍙傛暟閲嶆柊璁$畻瀹屾垚閲�
+     *
+     * @param param
+     * @return
+     */
+    int reSumNoticeOutComplete(@Param("param") NoticeParam param);
+
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutNoticeInRepository.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutNoticeInRepository.java
new file mode 100644
index 0000000..24eb543
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutNoticeInRepository.java
@@ -0,0 +1,54 @@
+package com.fzzy.igds.repository;
+
+import com.fzzy.igds.domain.InoutNoticeIn;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/29 16:33
+ */
+@Service
+public interface InoutNoticeInRepository extends JpaRepository<InoutNoticeIn, String> , JpaSpecificationExecutor<InoutNoticeIn> {
+
+    /**
+     * 鏍规嵁缁勭粐缂栫爜鍜屽簱鍖虹紪鐮佽幏鍙栦俊鎭�
+     *
+     * @param companyId
+     * @param deptId
+     * @param id
+     * @return
+     */
+    @Query("from InoutNoticeIn where companyId =:companyId and deptId =:deptId and id =:id")
+    InoutNoticeIn getDataById(@Param("companyId") String companyId, @Param("deptId") String deptId, @Param("id") String id);
+
+    /**
+     * 鏍规嵁缁勭粐缂栫爜鍜屽簱鍖虹紪鐮佽幏鍙栦俊鎭�
+     *
+     * @param companyId
+     * @param deptId
+     * @param completeStatus
+     * @return
+     */
+    @Query("from InoutNoticeIn where companyId =:companyId and deptId =:deptId and completeStatus =:completeStatus")
+    List<InoutNoticeIn> listNoticeIn(@Param("companyId") String companyId, @Param("deptId") String deptId, @Param("completeStatus") String completeStatus);
+
+    /**
+     * 鏍规嵁缁勭粐缂栫爜鍜屽簱鍖虹紪鐮佽幏鍙栦俊鎭�
+     *
+     * @param companyId
+     * @param completeStatus
+     * @return
+     */
+    @Query("from InoutNoticeIn where companyId =:companyId and completeStatus =:completeStatus")
+    List<InoutNoticeIn> listNoticeIn(@Param("companyId") String companyId, @Param("completeStatus") String completeStatus);
+
+
+
+}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutNoticeOutRepository.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutNoticeOutRepository.java
new file mode 100644
index 0000000..d1dacde
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutNoticeOutRepository.java
@@ -0,0 +1,53 @@
+package com.fzzy.igds.repository;
+
+import com.fzzy.igds.domain.InoutNoticeOut;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/29 16:34
+ */
+@Service
+public interface InoutNoticeOutRepository extends JpaRepository<InoutNoticeOut, String> , JpaSpecificationExecutor<InoutNoticeOut> {
+
+    /**
+     * 鏍规嵁缁勭粐缂栫爜鍜屽簱鍖虹紪鐮佽幏鍙栦俊鎭�
+     *
+     * @param companyId
+     * @param deptId
+     * @param id
+     * @return
+     */
+    @Query("from InoutNoticeOut where companyId =:companyId and deptId =:deptId and id =:id")
+    InoutNoticeOut getDataById(@Param("companyId") String companyId, @Param("deptId") String deptId, @Param("id") String id);
+
+    /**
+     * 鏍规嵁缁勭粐缂栫爜鍜屽簱鍖虹紪鐮佽幏鍙栦俊鎭�
+     *
+     * @param companyId
+     * @param deptId
+     * @param completeStatus
+     * @return
+     */
+    @Query("from InoutNoticeOut where companyId =:companyId and deptId =:deptId and completeStatus =:completeStatus")
+    List<InoutNoticeOut> listNoticeOut(@Param("companyId") String companyId, @Param("deptId") String deptId, @Param("completeStatus") String completeStatus);
+
+    /**
+     * 鏍规嵁缁勭粐缂栫爜鍜屽簱鍖虹紪鐮佽幏鍙栦俊鎭�
+     *
+     * @param companyId
+     * @param completeStatus
+     * @return
+     */
+    @Query("from InoutNoticeOut where companyId =:companyId and completeStatus =:completeStatus")
+    List<InoutNoticeOut> listNoticeOut(@Param("companyId") String companyId, @Param("completeStatus") String completeStatus);
+
+
+}
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticeIn.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticeIn.view.xml
new file mode 100644
index 0000000..c1e4663
--- /dev/null
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticeIn.view.xml
@@ -0,0 +1,636 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViewConfig>
+  <Arguments/>
+  <Context/>
+  <Model>
+    <DataType name="dtMain">
+      <Property name="creationType">com.fzzy.igds.domain.InoutNoticeIn</Property>
+      <PropertyDef name="id">
+        <Property></Property>
+        <Property name="label">閫氱煡鍗曞彿</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>
+      </PropertyDef>
+      <PropertyDef name="name">
+        <Property></Property>
+        <Property name="label">閫氱煡鍗曞悕绉�</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="type">
+        <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>
+            </Collection>
+          </Property>
+          <Property name="keyProperty">code</Property>
+          <Property name="valueProperty">name</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="contractId">
+        <Property></Property>
+        <Property name="label">璐ㄦ娂鍚堝悓</Property>
+        <Property name="required">false</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="customerName">
+        <Property></Property>
+        <Property name="label">鍙戣揣瀹㈡埛</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="unitName">
+        <Property></Property>
+        <Property name="label">鏀惰揣鍗曚綅</Property>
+        <Property name="required">false</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>
+      </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>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="year">
+        <Property></Property>
+        <Property name="label">骞翠唤</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="targetNumber">
+        <Property name="dataType">Double</Property>
+        <Property name="displayFormat">#0.0 KG</Property>
+        <Property name="required">true</Property>
+        <Property name="label">鐩爣鏁伴噺</Property>
+      </PropertyDef>
+      <PropertyDef name="completeNumber">
+        <Property name="dataType">Double</Property>
+        <Property name="label">瀹屾垚鏁伴噺</Property>
+        <Property name="displayFormat">#0.0 KG</Property>
+      </PropertyDef>
+      <PropertyDef name="auditStatus">
+        <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>
+          <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>
+        <Property name="label">瀹屾垚鐘舵��</Property>
+        <Property name="mapping">
+          <Property name="mapValues">
+            <Collection>
+              <Entity>
+                <Property name="name">鏈畬鎴�</Property>
+                <Property name="code">NONE</Property>
+              </Entity>
+              <Entity>
+                <Property name="name">宸插畬鎴�</Property>
+                <Property name="code">COMPLETE</Property>
+              </Entity>
+            </Collection>
+          </Property>
+          <Property name="keyProperty">code</Property>
+          <Property name="valueProperty">name</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="completeTime">
+        <Property name="dataType">DateTime</Property>
+        <Property name="label">瀹屾垚鏃堕棿</Property>
+      </PropertyDef>
+      <PropertyDef name="remark">
+        <Property></Property>
+        <Property name="label">澶囨敞淇℃伅</Property>
+      </PropertyDef>
+      <PropertyDef name="tag">
+        <Property></Property>
+        <Property name="label">鏍囪</Property>
+      </PropertyDef>
+      <PropertyDef name="createTime">
+        <Property name="dataType">DateTime</Property>
+        <Property name="label">鍒涘缓鏃堕棿</Property>
+        <Property name="readOnly">true</Property>
+      </PropertyDef>
+      <PropertyDef name="createBy">
+        <Property></Property>
+        <Property name="label">鍒涘缓浜�</Property>
+        <Property name="readOnly">true</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>
+    <DataType name="dtQuery">
+      <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="customerName">
+        <Property></Property>
+        <Property name="label">鍙戣揣瀹㈡埛</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="completeStatus">
+        <Property></Property>
+        <Property name="label">瀹屾垚鐘舵��</Property>
+        <Property name="mapping">
+          <Property name="mapValues">
+            <Collection>
+              <Entity>
+                <Property name="name">鏈畬鎴�</Property>
+                <Property name="code">NONE</Property>
+              </Entity>
+              <Entity>
+                <Property name="name">宸插畬鎴�</Property>
+                <Property name="code">COMPLETE</Property>
+              </Entity>
+            </Collection>
+          </Property>
+          <Property name="keyProperty">code</Property>
+          <Property name="valueProperty">name</Property>
+        </Property>
+      </PropertyDef>
+    </DataType>
+    <DataType name="dtQueryTitle">
+      <PropertyDef name="title">
+        <Property name="label">title</Property>
+      </PropertyDef>
+    </DataType>
+  </Model>
+  <View layout="padding:10">
+    <ClientEvent name="onReady">var deptId = window.parent.deptId;//鐖堕〉闈腑鐨勫垎搴撶紪鐮�&#xD;
+var TYPE = &quot;NOTICE_IN&quot;;&#xD;
+query = function(){&#xD;
+    view.get(&quot;#dsQuery&quot;).set(&quot;parameter&quot;,{deptId:deptId}).flushAsync();&#xD;
+};&#xD;
+query();&#xD;
+      &#xD;
+queryTitle = function(){&#xD;
+    view.get(&quot;#dsQueryTitle&quot;).set(&quot;parameter&quot;,{type:TYPE,deptId:deptId}).flushAsync();&#xD;
+};&#xD;
+queryTitle();&#xD;
+      &#xD;
+//鏂板&#xD;
+add = function(){&#xD;
+    view.get(&quot;#ajaxInitAdd&quot;).set(&quot;parameter&quot;, TYPE).execute(function(data){&#xD;
+    	view.get(&quot;#dsMain&quot;).insert(data);&#xD;
+        view.get(&quot;#dialogMain&quot;).show();&#xD;
+    });&#xD;
+};</ClientEvent>
+    <Property name="packages">font-awesome,css-common</Property>
+    <DataSet id="dsMain">
+      <Property name="dataType">[dtMain]</Property>
+      <Property name="dataProvider">inoutNoticePR#pageQueryIn</Property>
+      <Property name="pageSize">15</Property>
+      <Property name="loadMode">lazy</Property>
+    </DataSet>
+    <DataSet id="dsQuery">
+      <Property name="dataType">dtQuery</Property>
+      <Property name="dataProvider">inoutNoticePR#getYearQuery</Property>
+      <Property name="loadMode">manual</Property>
+    </DataSet>
+    <DataSet id="dsQueryTitle">
+      <Property name="dataType">dtQueryTitle</Property>
+      <Property name="dataProvider">inoutNoticePR#getTitle</Property>
+      <Property name="loadMode">manual</Property>
+    </DataSet>
+    <Container>
+      <Property name="className">c-param</Property>
+      <AutoForm>
+        <Property name="cols">*,*,*,*,90,90</Property>
+        <Property name="dataSet">dsQuery</Property>
+        <Property name="labelAlign">right</Property>
+        <Property name="labelWidth">100</Property>
+        <AutoFormElement>
+          <Property name="name">depotId</Property>
+          <Property name="property">depotId</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">customerName</Property>
+          <Property name="property">customerName</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">foodVariety</Property>
+          <Property name="property">foodVariety</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">completeStatus</Property>
+          <Property name="property">completeStatus</Property>
+          <Editor/>
+        </AutoFormElement>
+        <Button>
+          <ClientEvent name="onClick">var data = view.get(&quot;#dsQuery.data&quot;);&#xD;
+            if(data){&#xD;
+            view.get(&quot;#dsMain&quot;).set(&quot;parameter&quot;,data.toJSON()).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;#dsQuery&quot;).flushAsync();</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 layoutConstraint="left">
+          <ClientEvent name="onClick">add();</ClientEvent>
+          <Property name="caption">鏂板</Property>
+          <Property name="exClassName">btn1</Property>
+          <Property name="width">100</Property>
+          <Property name="iconClass">fa fa-plus</Property>
+        </ToolBarButton>
+        <ToolBarButton layoutConstraint="left">
+          <ClientEvent name="onClick">&#xD;
+            var select = view.get(&quot;#dataGridMain&quot;).get(&quot;selection&quot;);&#xD;
+            if(select){&#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 layoutConstraint="left">
+          <ClientEvent name="onClick">&#xD;
+            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;
+            });&#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>
+        <ToolBarButton layoutConstraint="left">
+          <ClientEvent name="onClick">view.get(&quot;#recalculate&quot;).execute(function(result){&#xD;
+            if(result == 'success'){&#xD;
+            $notify(&quot;鏁版嵁鏇存柊瀹屾垚锛侊紒&quot;);&#xD;
+            &#xD;
+            var data = view.get(&quot;#dsQuery.data&quot;);&#xD;
+            view.get(&quot;#dsMain&quot;).set(&quot;parameter&quot;,data.toJSON()).flushAsync();&#xD;
+            }else{&#xD;
+            $notify(&quot;鏁版嵁鏇存柊澶辫触锛侊紒&quot;);&#xD;
+            }&#xD;
+            });</ClientEvent>
+          <Property name="caption">瀹炴椂鏍哥畻</Property>
+          <Property name="exClassName">btn4</Property>
+          <Property name="iconClass">fa fa-refresh</Property>
+          <Property name="width">100</Property>
+          <Property name="tip">瀹屾垚閲忛粯璁ょ粺璁″埌鏄ㄥぉ锛屾煡鐪嬪疄鏃跺畬鎴愰噺璇风偣鍑烩�滃疄鏃舵牳绠椻�濇寜閽�</Property>
+        </ToolBarButton>
+      </ToolBar>
+      <DataGrid id="dataGridMain" layoutConstraint="padding:8">
+        <ClientEvent name="onDataRowClick">view.get(&quot;#dataGridCamera&quot;).set(&quot;selection&quot;,arg.data);</ClientEvent>
+        <Property name="dataSet">dsMain</Property>
+        <Property name="readOnly">true</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">200</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="name">
+          <Property name="property">name</Property>
+          <Property name="align">center</Property>
+          <Property name="width">120</Property>
+        </DataColumn>
+        <DataColumn>
+          <Property name="property">customerName</Property>
+          <Property name="name">customerName</Property>
+          <Property name="align">center</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>
+          <Property name="property">targetNumber</Property>
+          <Property name="name">targetNumber</Property>
+          <Property name="align">center</Property>
+          <Property name="width">200</Property>
+        </DataColumn>
+        <DataColumn>
+          <Property name="property">completeStatus</Property>
+          <Property name="name">completeStatus</Property>
+          <Property name="align">center</Property>
+          <Property name="width">100</Property>
+        </DataColumn>
+        <DataColumn>
+          <Property name="property">createTime</Property>
+          <Property name="align">center</Property>
+          <Property name="name">createTime</Property>
+          <Property name="width">160</Property>
+        </DataColumn>
+        <DataColumn>
+          <Property name="property">updateBy</Property>
+          <Property name="align">center</Property>
+          <Property name="name">updateBy</Property>
+          <Property name="width">120</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>
+    </Container>
+    <Container layoutConstraint="bottom">
+      <Property name="className">c-bottom</Property>
+      <DataPilot layoutConstraint="right">
+        <Property name="itemCodes">pageSize,pages</Property>
+        <Property name="dataSet">dsMain</Property>
+      </DataPilot>
+    </Container>
+    <Dialog id="dialogMain" layout="regionPadding:8">
+      <Property name="closeable">false</Property>
+      <Property name="caption">鍏ュ簱閫氱煡鍗�</Property>
+      <Property name="width">60%</Property>
+      <Property name="iconClass">fa fa-tasks</Property>
+      <Buttons>
+        <Button id="btnOk">
+          <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;#ajaxSave&quot;).set(&quot;parameter&quot;,data).execute(function(result){&#xD;
+            if(result){&#xD;
+            $alert(result);&#xD;
+            return;&#xD;
+            }&#xD;
+            $notify(&quot;鏁版嵁鎵ц瀹屾垚锛侊紒&quot;);&#xD;
+            self.get(&quot;parent&quot;).hide();&#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">view.get(&quot;#dsMain.data:#&quot;).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>
+        <Container>
+          <AutoForm id="autoForm1" layoutConstraint="top padding:10">
+            <Property name="cols">*,*,*,*,*,*,*</Property>
+            <Property name="dataSet">dsQueryTitle</Property>
+            <Property name="labelAlign">right</Property>
+            <Property name="showHint">false</Property>
+            <AutoFormElement layoutConstraint="colSpan:7">
+              <Property name="name">title</Property>
+              <Property name="property">title</Property>
+              <Property name="showLabel">false</Property>
+              <Property name="editorType">Label</Property>
+              <Property name="style">
+                <Property name="font">bold 30px Georgia, serif;</Property>
+                <Property name="text-align">center</Property>
+              </Property>
+              <Editor/>
+            </AutoFormElement>
+          </AutoForm>
+          <Container layout="padding:15">
+            <AutoForm>
+              <Property name="dataSet">dsMain</Property>
+              <Property name="cols">*,*,*</Property>
+              <Property name="labelAlign">right</Property>
+              <Property name="labelSeparator">锛�</Property>
+              <Property name="labelWidth">120</Property>
+              <AutoFormElement>
+                <Property name="name">name</Property>
+                <Property name="property">name</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">depotId</Property>
+                <Property name="property">depotId</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">id</Property>
+                <Property name="property">id</Property>
+                <Property name="readOnly">true</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">foodVariety</Property>
+                <Property name="property">foodVariety</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">customerName</Property>
+                <Property name="property">customerName</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">unitName</Property>
+                <Property name="property">unitName</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">year</Property>
+                <Property name="property">year</Property>
+                <Property name="trigger">defaultYearDropDown</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">completeNumber</Property>
+                <Property name="property">completeNumber</Property>
+                <Property name="readOnly">false</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">type</Property>
+                <Property name="property">type</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">completeStatus</Property>
+                <Property name="property">completeStatus</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">completeTime</Property>
+                <Property name="property">completeTime</Property>
+                <Property name="readOnly">false</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">contractId</Property>
+                <Property name="property">contractId</Property>
+                <Editor/>
+              </AutoFormElement>
+              <Label layoutConstraint="colSpan:2">
+                <Property name="style">
+                  <Property name="color">blue</Property>
+                </Property>
+                <Property name="text">娉細绫诲瀷涓洪摱琛岀洃绠℃椂锛岄渶鍏宠仈璐ㄦ娂鍚堝悓</Property>
+              </Label>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">remark</Property>
+                <Property name="property">remark</Property>
+                <Property name="editorType">TextArea</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>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">updateBy</Property>
+                <Property name="property">updateBy</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">updateTime</Property>
+                <Property name="property">updateTime</Property>
+                <Editor/>
+              </AutoFormElement>
+            </AutoForm>
+          </Container>
+        </Container>
+      </Children>
+      <Tools/>
+    </Dialog>
+    <AjaxAction id="ajaxSave">
+      <Property name="service">inoutNoticePR#saveIn</Property>
+    </AjaxAction>
+    <AjaxAction id="ajaxDel">
+      <Property name="service">inoutNoticePR#delDataIn</Property>
+      <Property name="confirmMessage">纭畾瑕佹墽琛屽垹闄や箞锛�</Property>
+    </AjaxAction>
+    <AjaxAction id="ajaxInitAdd">
+      <Property name="service">inoutNoticePR#initAddIn</Property>
+    </AjaxAction>
+    <AjaxAction id="recalculate">
+      <Property name="service">inoutNoticePR#updateSumNoticeIn</Property>
+    </AjaxAction>
+  </View>
+</ViewConfig>
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticeOut.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticeOut.view.xml
new file mode 100644
index 0000000..f5e3789
--- /dev/null
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticeOut.view.xml
@@ -0,0 +1,1122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViewConfig>
+  <Arguments/>
+  <Context/>
+  <Model>
+    <DataType name="dtMain">
+      <ClientEvent name="onDataChange">if(arg.property ==&quot;depotId&quot;){&#xD;
+	autoByDepot(arg.newValue);&#xD;
+}</ClientEvent>
+      <Property name="creationType">com.fzzy.igds.models.InoutNoticeOut</Property>
+      <PropertyDef name="id">
+        <Property></Property>
+        <Property name="label">閫氱煡鍗曞彿</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#loadParents&quot;).getResult()}</Property>
+          <Property name="keyProperty">deptId</Property>
+          <Property name="valueProperty">deptName</Property>
+        </Property>
+        <Property name="required">false</Property>
+      </PropertyDef>
+      <PropertyDef name="planId">
+        <Property></Property>
+        <Property name="label">鎵�灞炶鍒�</Property>
+        <Property name="required">false</Property>
+      </PropertyDef>
+      <PropertyDef name="planName">
+        <Property></Property>
+        <Property name="label">鎵�灞炶鍒�</Property>
+        <Property name="required">false</Property>
+      </PropertyDef>
+      <PropertyDef name="contractId">
+        <Property></Property>
+        <Property name="label">鎵�灞炲悎鍚�</Property>
+        <Property name="required">false</Property>
+      </PropertyDef>
+      <PropertyDef name="contractName">
+        <Property></Property>
+        <Property name="label">鎵�灞炲悎鍚�</Property>
+        <Property name="required">false</Property>
+      </PropertyDef>
+      <PropertyDef name="name">
+        <Property></Property>
+        <Property name="label">閫氱煡鍗曞悕绉�</Property>
+        <Property name="required">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>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="customerId">
+        <Property></Property>
+        <Property name="label">鏀惰揣瀹㈡埛</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="customerName">
+        <Property></Property>
+        <Property name="label">鏀惰揣瀹㈡埛</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="unitName">
+        <Property></Property>
+        <Property name="label">鍙戣揣鍗曚綅</Property>
+        <Property name="required">false</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;deptPR#loadParents&quot;).getResult()}</Property>
+          <Property name="keyProperty">deptId</Property>
+          <Property name="valueProperty">deptName</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>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="year">
+        <Property></Property>
+        <Property name="label">绮骞翠唤</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="targetNumber">
+        <Property name="dataType">double</Property>
+        <Property name="displayFormat">#,## kG</Property>
+        <Property name="required">true</Property>
+        <Property name="label">璁″垝鏁伴噺</Property>
+      </PropertyDef>
+      <PropertyDef name="completeNumber">
+        <Property name="dataType">double</Property>
+        <Property name="label">瀹屾垚鏁伴噺</Property>
+        <Property name="displayFormat">#,## kG</Property>
+      </PropertyDef>
+      <PropertyDef name="auditStatus">
+        <Property></Property>
+        <Property name="label">瀹℃牳鐘舵��</Property>
+      </PropertyDef>
+      <PropertyDef name="auditUser">
+        <Property></Property>
+        <Property name="label">瀹℃牳浜�</Property>
+      </PropertyDef>
+      <PropertyDef name="completeStatus">
+        <Property></Property>
+        <Property name="label">瀹屾垚鐘舵��</Property>
+        <Property name="mapping">
+          <Property name="mapValues">
+            <Collection>
+              <Entity>
+                <Property name="name">鏈畬鎴�</Property>
+                <Property name="code">NONE</Property>
+              </Entity>
+              <Entity>
+                <Property name="name">宸插畬鎴�</Property>
+                <Property name="code">COMPLETE</Property>
+              </Entity>
+            </Collection>
+          </Property>
+          <Property name="keyProperty">code</Property>
+          <Property name="valueProperty">name</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="createTime">
+        <Property name="dataType">DateTime</Property>
+        <Property name="label">鍒涘缓鏃堕棿</Property>
+      </PropertyDef>
+      <PropertyDef name="createUser">
+        <Property></Property>
+        <Property name="label">鍒涘缓浜�</Property>
+      </PropertyDef>
+      <PropertyDef name="completeTime">
+        <Property name="dataType">DateTime</Property>
+        <Property name="label">瀹屾垚鏃堕棿</Property>
+      </PropertyDef>
+      <PropertyDef name="remark">
+        <Property></Property>
+        <Property name="label">澶囨敞淇℃伅</Property>
+      </PropertyDef>
+      <PropertyDef name="tag">
+        <Property></Property>
+        <Property name="label">鏍囪</Property>
+      </PropertyDef>
+    </DataType>
+    <DataType name="dtQuery">
+      <PropertyDef name="id">
+        <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#loadParents&quot;).getResult()}</Property>
+          <Property name="keyProperty">deptId</Property>
+          <Property name="valueProperty">deptName</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="year">
+        <Property></Property>
+        <Property name="label">骞翠唤</Property>
+      </PropertyDef>
+      <PropertyDef name="completeStatus">
+        <Property></Property>
+        <Property name="label">瀹屾垚鐘舵��</Property>
+        <Property name="mapping">
+          <Property name="mapValues">
+            <Collection>
+              <Entity>
+                <Property name="name">鏈畬鎴�</Property>
+                <Property name="code">NONE</Property>
+              </Entity>
+              <Entity>
+                <Property name="name">宸插畬鎴�</Property>
+                <Property name="code">COMPLETE</Property>
+              </Entity>
+            </Collection>
+          </Property>
+          <Property name="keyProperty">code</Property>
+          <Property name="valueProperty">name</Property>
+        </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>
+        <Property name="required">true</Property>
+      </PropertyDef>
+    </DataType>
+    <DataType name="dtQueryTitle">
+      <PropertyDef name="title">
+        <Property name="label">title</Property>
+      </PropertyDef>
+    </DataType>
+    <DataType name="dtPlan">
+      <Property name="creationType">com.fzzy.igds.models.InoutPlanDetail</Property>
+      <PropertyDef name="id">
+        <Property></Property>
+        <Property name="label">璁″垝鏄庣粏鍙�</Property>
+      </PropertyDef>
+      <PropertyDef name="planId">
+        <Property name="label">璁″垝缂栫爜</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="foodType">
+        <Property></Property>
+        <Property name="label">绮鎬ц川</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#sysDictData&quot;).getResult(&quot;FOOD_TYPE_&quot;)}</Property>
+          <Property name="keyProperty">dictValue</Property>
+          <Property name="valueProperty">dictLabel</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="foodLevel">
+        <Property></Property>
+        <Property name="label">绮绛夌骇</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#triggerFoodLevel&quot;).getResult()}</Property>
+          <Property name="keyProperty">dictValue</Property>
+          <Property name="valueProperty">dictLabel</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="year">
+        <Property></Property>
+        <Property name="label">鏀惰幏骞村害</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="planNum">
+        <Property name="dataType">Double</Property>
+        <Property name="label">璁″垝鏁伴噺</Property>
+      </PropertyDef>
+      <PropertyDef name="type">
+        <Property name="label">璁″垝绫诲瀷</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#triggerPlanType&quot;).getResult()}</Property>
+          <Property name="keyProperty">dictValue</Property>
+          <Property name="valueProperty">dictLabel</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="updateTime">
+        <Property></Property>
+        <Property name="label">鏇存柊鏃堕棿</Property>
+      </PropertyDef>
+    </DataType>
+    <DataType name="dtContract">
+      <Property name="creationType">com.fzzy.igds.models.InoutContract</Property>
+      <PropertyDef name="id">
+        <Property></Property>
+        <Property name="label">ID_</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#loadParents&quot;).getResult()}</Property>
+          <Property name="keyProperty">deptId</Property>
+          <Property name="valueProperty">deptName</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="planId">
+        <Property></Property>
+        <Property name="label">鎵�灞炶鍒�</Property>
+      </PropertyDef>
+      <PropertyDef name="planName">
+        <Property></Property>
+        <Property name="label">鎵�灞炶鍒�</Property>
+      </PropertyDef>
+      <PropertyDef name="type">
+        <Property></Property>
+        <Property name="label">鍚堝悓绫诲瀷</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#triggerContractType&quot;).getResult()}</Property>
+          <Property name="keyProperty">dictValue</Property>
+          <Property name="valueProperty">dictLabel</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="name">
+        <Property></Property>
+        <Property name="label">鍚堝悓鍚嶇О</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="year">
+        <Property></Property>
+        <Property name="label">骞翠唤</Property>
+      </PropertyDef>
+      <PropertyDef name="customerId">
+        <Property></Property>
+        <Property name="label">瀹㈡埛缂栫爜</Property>
+      </PropertyDef>
+      <PropertyDef name="customerName">
+        <Property></Property>
+        <Property name="label">瀹㈡埛鍚嶇О</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="customerType">
+        <Property></Property>
+        <Property name="label">瀹㈡埛绫诲瀷</Property>
+        <Property name="mapping">
+          <Property name="mapValues">
+            <Collection>
+              <Entity>
+                <Property name="code">1</Property>
+                <Property name="name">1-浼佷笟</Property>
+              </Entity>
+              <Entity>
+                <Property name="code">2</Property>
+                <Property name="name">2-涓汉</Property>
+              </Entity>
+            </Collection>
+          </Property>
+          <Property name="keyProperty">code</Property>
+          <Property name="valueProperty">name</Property>
+        </Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="customerBank">
+        <Property></Property>
+        <Property name="label">瀹㈡埛寮�鎴疯</Property>
+      </PropertyDef>
+      <PropertyDef name="customerBankAccount">
+        <Property></Property>
+        <Property name="label">瀹㈡埛寮�鎴疯璐﹀彿</Property>
+      </PropertyDef>
+      <PropertyDef name="customerSignUser">
+        <Property></Property>
+        <Property name="label">瀹㈡埛绛剧害浜�</Property>
+      </PropertyDef>
+      <PropertyDef name="bank">
+        <Property></Property>
+        <Property name="label">鏈柟寮�鎴疯</Property>
+      </PropertyDef>
+      <PropertyDef name="bankAccount">
+        <Property></Property>
+        <Property name="label">鏈柟寮�鎴疯璐﹀彿</Property>
+      </PropertyDef>
+      <PropertyDef name="signUser">
+        <Property></Property>
+        <Property name="label">鏈柟绛剧害浜�</Property>
+      </PropertyDef>
+      <PropertyDef name="signAddress">
+        <Property></Property>
+        <Property name="label">绛剧害鍦板潃</Property>
+      </PropertyDef>
+      <PropertyDef name="price">
+        <Property name="dataType">Double</Property>
+        <Property name="label">鍗曚环</Property>
+        <Property name="displayFormat">#,###0.000 鍏�/鍏枻</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="money">
+        <Property name="dataType">Double</Property>
+        <Property name="label">鎬婚噾棰�</Property>
+        <Property name="displayFormat">#,###0.000 鍏�</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="contactAmount">
+        <Property name="dataType">Double</Property>
+        <Property name="label">鍚堝悓鏁伴噺</Property>
+        <Property name="displayFormat">#,##0.00 KG</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="completeNum">
+        <Property name="dataType">Double</Property>
+        <Property name="label">鍚堝悓瀹屾垚鏁伴噺</Property>
+        <Property name="displayFormat">#,##0.00 KG</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>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="foodType">
+        <Property></Property>
+        <Property name="label">绮鎬ц川</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#sysDictData&quot;).getResult(&quot;FOOD_TYPE_&quot;)}</Property>
+          <Property name="keyProperty">dictValue</Property>
+          <Property name="valueProperty">dictLabel</Property>
+        </Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="payType">
+        <Property></Property>
+        <Property name="label">鏀粯鏂瑰紡</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#sysDictData&quot;).getResult(&quot;PAY_TYPE&quot;)}</Property>
+          <Property name="valueProperty">dictLabel</Property>
+          <Property name="keyProperty">dictValue</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="createUser">
+        <Property></Property>
+        <Property name="label">鍒涘缓浜�</Property>
+      </PropertyDef>
+      <PropertyDef name="createTime">
+        <Property name="dataType">Date</Property>
+        <Property name="label">鍒涘缓鏃堕棿</Property>
+      </PropertyDef>
+      <PropertyDef name="signingTime">
+        <Property name="dataType">Date</Property>
+        <Property name="label">绛捐鏃堕棿</Property>
+        <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="beginTime">
+        <Property name="dataType">Date</Property>
+        <Property name="label">鏈夋晥寮�濮嬫椂闂�</Property>
+      </PropertyDef>
+      <PropertyDef name="endTime">
+        <Property name="dataType">Date</Property>
+        <Property name="label">鏈夋晥鎴鏃堕棿</Property>
+      </PropertyDef>
+      <PropertyDef name="remark">
+        <Property></Property>
+        <Property name="label">澶囨敞璇存槑</Property>
+      </PropertyDef>
+    </DataType>
+  </Model>
+  <View layout="padding:5;regionPadding:5">
+    <ClientEvent name="onReady">var deptId = window.parent.deptId;//鐖堕〉闈腑鐨勫垎搴撶紪鐮�&#xD;
+var TYPE = &quot;NOTICE_OUT&quot;;&#xD;
+query = function(){&#xD;
+	view.get(&quot;#dsQuery&quot;).set(&quot;parameter&quot;,{deptId:deptId}).flushAsync();&#xD;
+};&#xD;
+query();&#xD;
+      &#xD;
+queryTitle = function(){&#xD;
+    view.get(&quot;#dsQueryTitle&quot;).set(&quot;parameter&quot;,{type:TYPE,deptId:deptId}).flushAsync();&#xD;
+};&#xD;
+queryTitle();&#xD;
+      &#xD;
+//鏂板&#xD;
+add = function(){&#xD;
+    view.get(&quot;#ajaxInitAdd&quot;).set(&quot;parameter&quot;, TYPE).execute(function(data){&#xD;
+    	view.get(&quot;#dsMain&quot;).insert(data);&#xD;
+        view.get(&quot;#dialogMain&quot;).show();&#xD;
+    });&#xD;
+};&#xD;
+&#xD;
+//鏍规嵁浠撳簱鑷姩鍥炲~绮鍝佺锛岀瓑绾э紝浜у湴鏂�&#xD;
+autoByDepot = function(depotId){&#xD;
+	view.get(&quot;#ajaxGetDepot&quot;).set(&quot;parameter&quot;,depotId).execute(function(result){&#xD;
+		if(result){&#xD;
+			var data = view.get(&quot;#dataGridMain.currentEntity&quot;);&#xD;
+			data.set(&quot;foodVariety&quot;,result.foodVariety);&#xD;
+			&#xD;
+		}&#xD;
+	});&#xD;
+};</ClientEvent>
+    <Property name="packages">font-awesome,css-common</Property>
+    <DataSet id="dsMain">
+      <Property name="dataType">[dtMain]</Property>
+      <Property name="dataProvider">inoutNoticePR#pageQueryOut</Property>
+      <Property name="pageSize">15</Property>
+      <Property name="loadMode">lazy</Property>
+    </DataSet>
+    <DataSet id="dsQueryTitle">
+      <Property name="dataType">dtQueryTitle</Property>
+      <Property name="dataProvider">inoutNoticePR#getTitle</Property>
+      <Property name="loadMode">manual</Property>
+    </DataSet>
+    <DataSet id="dsQuery">
+      <Property name="dataType">dtQuery</Property>
+      <Property name="dataProvider">inoutNoticePR#getYearQuery</Property>
+      <Property name="loadMode">manual</Property>
+    </DataSet>
+    <AutoForm layoutConstraint="top">
+      <Property name="cols">*,*,*,*</Property>
+      <Property name="dataSet">dsQuery</Property>
+      <Property name="exClassName">bg-color</Property>
+      <AutoFormElement>
+        <Property name="name">foodVariety</Property>
+        <Property name="property">foodVariety</Property>
+        <Property name="editable">false</Property>
+        <Editor/>
+      </AutoFormElement>
+      <AutoFormElement>
+        <Property name="name">year</Property>
+        <Property name="property">year</Property>
+        <Property name="trigger">defaultYearDropDown</Property>
+        <Property name="editable">false</Property>
+        <Editor/>
+      </AutoFormElement>
+      <AutoFormElement>
+        <Property name="name">completeStatus</Property>
+        <Property name="property">completeStatus</Property>
+        <Property name="editable">false</Property>
+        <Editor/>
+      </AutoFormElement>
+      <Container layout="hbox regionPadding:15">
+        <Button>
+          <ClientEvent name="onClick">var data = view.get(&quot;#dsQuery.data&quot;);&#xD;
+            if(data){&#xD;
+            view.get(&quot;#dsMain&quot;).set(&quot;parameter&quot;,data.toJSON()).flushAsync();&#xD;
+            }else{&#xD;
+            view.get(&quot;#dsMain&quot;).flushAsync();&#xD;
+            }</ClientEvent>
+          <Property name="caption">鏌ヨ</Property>
+          <Property name="exClassName">btn1</Property>
+          <Property name="iconClass">fa fa-search</Property>
+        </Button>
+        <Button>
+          <ClientEvent name="onClick">view.get(&quot;#dsQuery&quot;).flushAsync();</ClientEvent>
+          <Property name="exClassName">btn2</Property>
+          <Property name="iconClass">fa fa-refresh</Property>
+          <Property name="caption">閲嶇疆</Property>
+        </Button>
+      </Container>
+      <Container layout="regionPadding:10" layoutConstraint="type:top;colSpan:2">
+        <Property name="exClassName">bg-color</Property>
+        <Property name="contentOverflow">hidden</Property>
+        <Property name="height">55</Property>
+        <Label layoutConstraint="left">
+          <Property name="text">鑿滃崟鏍忥細</Property>
+        </Label>
+        <Button layoutConstraint="left">
+          <ClientEvent name="onClick">add();&#xD;
+          //view.get(&quot;#dsMain&quot;).insert({&#xD;
+          //          name:&quot;鍑哄簱閫氱煡鍗�&quot;&#xD;
+          //          });&#xD;
+          //         view.get(&quot;#dialogMain&quot;).show();</ClientEvent>
+          <Property name="caption">鏂板</Property>
+          <Property name="exClassName">btn1</Property>
+          <Property name="iconClass">fa fa-plus</Property>
+        </Button>
+        <Button layoutConstraint="left">
+          <ClientEvent name="onClick">&#xD;
+var select = view.get(&quot;#dataGridMain&quot;).get(&quot;selection&quot;);&#xD;
+if(select){&#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="iconClass">fa fa-pencil</Property>
+        </Button>
+        <Button layoutConstraint="left">
+          <ClientEvent name="onClick">&#xD;
+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;
+	});&#xD;
+}else{&#xD;
+    $notify(&quot;璇烽�夋嫨闇�瑕佸垹闄ょ殑浠撳簱鈥︹��&quot;);&#xD;
+}&#xD;
+        </ClientEvent>
+          <Property name="caption">鍒犻櫎</Property>
+          <Property name="exClassName">btn3</Property>
+          <Property name="iconClass">fa fa-minus</Property>
+        </Button>
+        <Button layoutConstraint="left">
+          <ClientEvent name="onClick">var data = view.get(&quot;#dsQuery.data&quot;);&#xD;
+var page = view.get(&quot;#dsMain&quot;);&#xD;
+var param = {&#xD;
+    &quot;pageSize&quot;:page.get(&quot;pageSize&quot;),&#xD;
+    &quot;pageNo&quot;:page.get(&quot;pageNo&quot;),&#xD;
+    &quot;foodVariety&quot;:data.get(&quot;foodVariety&quot;),&#xD;
+    &quot;year&quot;:data.get(&quot;year&quot;),&#xD;
+    &quot;completeStatus&quot;:data.get(&quot;completeStatus&quot;)&#xD;
+}&#xD;
+console.log(param);&#xD;
+window.parent.$.table.exportExcelDorado(&quot;./export/noticeOut-excel&quot;, &quot;鍑哄簱閫氱煡鍗曟暟鎹�&quot;, param);</ClientEvent>
+          <Property name="caption">瀵煎嚭EXCEL</Property>
+          <Property name="exClassName">btn4</Property>
+          <Property name="iconClass">fa fa-file-excel-o</Property>
+          <Property name="action">exportExcel</Property>
+        </Button>
+        <Button layoutConstraint="left">
+          <ClientEvent name="onClick">view.get(&quot;#recalculate&quot;).execute(function(result){&#xD;
+    if(result == 'success'){&#xD;
+		$notify(&quot;鏁版嵁鏇存柊瀹屾垚锛侊紒&quot;);&#xD;
+		&#xD;
+		var data = view.get(&quot;#dsQuery.data&quot;);&#xD;
+		view.get(&quot;#dsMain&quot;).set(&quot;parameter&quot;,data.toJSON()).flushAsync();&#xD;
+    }else{&#xD;
+		$notify(&quot;鏁版嵁鏇存柊澶辫触锛侊紒&quot;);&#xD;
+	}&#xD;
+});</ClientEvent>
+          <Property name="caption">瀹炴椂鏍哥畻</Property>
+          <Property name="exClassName">btn2</Property>
+          <Property name="iconClass">fa fa-refresh</Property>
+          <Property name="tip">瀹屾垚閲忛粯璁ょ粺璁″埌鏄ㄥぉ锛屾煡鐪嬪疄鏃跺畬鎴愰噺璇风偣鍑烩�滃疄鏃舵牳绠椻�濇寜閽�</Property>
+        </Button>
+      </Container>
+    </AutoForm>
+    <Container layoutConstraint="center">
+      <Property name="exClassName">bg-color</Property>
+      <DataGrid id="dataGridMain" layoutConstraint="center">
+        <ClientEvent name="onDataRowDoubleClick">var data = view.get(&quot;#dsMain.data:#&quot;);&#xD;
+          if(data){&#xD;
+          view.get(&quot;#dialogMain&quot;).show();&#xD;
+          }</ClientEvent>
+        <Property name="dataSet">dsMain</Property>
+        <Property name="readOnly">true</Property>
+        <Property name="selectionMode">singleRow</Property>
+        <RowSelectorColumn/>
+        <RowNumColumn>
+          <Property name="width">50</Property>
+          <Property name="caption">搴忓彿</Property>
+        </RowNumColumn>
+        <DataColumn name="id">
+          <Property name="property">id</Property>
+          <Property name="width">200</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn name="name">
+          <Property name="property">name</Property>
+          <Property name="align">center</Property>
+          <Property name="width">120</Property>
+        </DataColumn>
+        <DataColumn>
+          <Property name="property">customerName</Property>
+          <Property name="name">customerName</Property>
+          <Property name="align">center</Property>
+        </DataColumn>
+        <DataColumn>
+          <Property name="property">depotId</Property>
+          <Property name="name">depotId</Property>
+          <Property name="align">center</Property>
+          <Property name="width">100</Property>
+        </DataColumn>
+        <DataColumn name="foodVariety">
+          <Property name="property">foodVariety</Property>
+          <Property name="align">center</Property>
+          <Property name="width">150</Property>
+        </DataColumn>
+        <DataColumn>
+          <Property name="property">targetNumber</Property>
+          <Property name="name">targetNumber</Property>
+          <Property name="align">center</Property>
+          <Property name="width">200</Property>
+        </DataColumn>
+        <DataColumn>
+          <Property name="property">completeNumber</Property>
+          <Property name="align">center</Property>
+          <Property name="name">completeNumber</Property>
+          <Property name="width">200</Property>
+        </DataColumn>
+        <DataColumn>
+          <Property name="property">completeStatus</Property>
+          <Property name="name">completeStatus</Property>
+          <Property name="align">center</Property>
+          <Property name="width">100</Property>
+        </DataColumn>
+        <DataColumn>
+          <Property name="property">createTime</Property>
+          <Property name="align">center</Property>
+          <Property name="name">createTime</Property>
+          <Property name="width">200</Property>
+        </DataColumn>
+      </DataGrid>
+    </Container>
+    <Container layoutConstraint="bottom">
+      <Property name="exClassName">bg-color</Property>
+      <DataPilot layoutConstraint="right">
+        <Property name="itemCodes">pageSize,pages</Property>
+        <Property name="dataSet">dsMain</Property>
+      </DataPilot>
+    </Container>
+    <Dialog id="dialogMain">
+      <Property name="closeable">false</Property>
+      <Property name="caption">鍑哄簱鍗�</Property>
+      <Property name="width">60%</Property>
+      <Property name="iconClass">fa fa-tasks</Property>
+      <Buttons>
+        <Button id="btnOk">
+          <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;#ajaxSave&quot;).set(&quot;parameter&quot;,data).execute(function(result){&#xD;
+            if(result){&#xD;
+            $alert(result);&#xD;
+            return;&#xD;
+            }&#xD;
+            $notify(&quot;鏁版嵁鎵ц瀹屾垚锛侊紒&quot;);&#xD;
+            self.get(&quot;parent&quot;).hide();&#xD;
+            });</ClientEvent>
+          <Property name="caption">纭畾</Property>
+          <Property name="iconClass">fa fa-check</Property>
+          <Property name="exClassName">btn1</Property>
+        </Button>
+        <Button>
+          <ClientEvent name="onClick">view.get(&quot;#dsMain.data:#&quot;).cancel();&#xD;
+            self.get(&quot;parent&quot;).hide();</ClientEvent>
+          <Property name="caption">鍙栨秷</Property>
+          <Property name="iconClass">fa fa-times</Property>
+          <Property name="exClassName">btn3</Property>
+        </Button>
+      </Buttons>
+      <Children>
+        <Container>
+          <AutoForm id="autoForm1" layoutConstraint="top padding:10">
+            <Property name="cols">*,*,*,*,*,*,*</Property>
+            <Property name="dataSet">dsQueryTitle</Property>
+            <Property name="labelAlign">right</Property>
+            <Property name="showHint">false</Property>
+            <AutoFormElement layoutConstraint="colSpan:7">
+              <Property name="name">title</Property>
+              <Property name="property">title</Property>
+              <Property name="showLabel">false</Property>
+              <Property name="editorType">Label</Property>
+              <Property name="style">
+                <Property name="font">bold 30px Georgia, serif;</Property>
+                <Property name="text-align">center</Property>
+              </Property>
+              <Editor/>
+            </AutoFormElement>
+          </AutoForm>
+          <Container layout="padding:15">
+            <AutoForm>
+              <Property name="dataSet">dsMain</Property>
+              <Property name="cols">*,*</Property>
+              <Property name="labelAlign">right</Property>
+              <Property name="labelSeparator">锛�</Property>
+              <Property name="labelWidth">120</Property>
+              <AutoFormElement>
+                <Property name="name">name</Property>
+                <Property name="property">name</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">id</Property>
+                <Property name="property">id</Property>
+                <Property name="readOnly">true</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">customerName</Property>
+                <Property name="property">customerName</Property>
+                <Property name="trigger">ddCustomer</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">unitName</Property>
+                <Property name="property">unitName</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">depotId</Property>
+                <Property name="property">depotId</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">foodVariety</Property>
+                <Property name="property">foodVariety</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">year</Property>
+                <Property name="property">year</Property>
+                <Property name="trigger">defaultYearDropDown</Property>
+                <Editor/>
+              </AutoFormElement>
+              <Label layoutConstraint="colSpan:1"/>
+              <AutoFormElement>
+                <Property name="name">targetNumber</Property>
+                <Property name="property">targetNumber</Property>
+                <Property name="readOnly">false</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">completeNumber</Property>
+                <Property name="property">completeNumber</Property>
+                <Property name="readOnly">false</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">planName</Property>
+                <Property name="property">planName</Property>
+                <Property name="trigger">ddPlan</Property>
+                <Editor/>
+              </AutoFormElement>
+              <Label layoutConstraint="colSpan:1">
+                <Property name="style">
+                  <Property name="color">blue</Property>
+                </Property>
+                <Property name="text">娉細褰撳墠閫氱煡鍗曞叧鑱旂殑搴撳尯璁″垝</Property>
+              </Label>
+              <AutoFormElement>
+                <Property name="name">contractName</Property>
+                <Property name="property">contractName</Property>
+                <Property name="trigger">ddContract</Property>
+                <Editor/>
+              </AutoFormElement>
+              <Label layoutConstraint="colSpan:1">
+                <Property name="style">
+                  <Property name="color">blue</Property>
+                </Property>
+                <Property name="text">娉細褰撳墠閫氱煡鍗曞叧鑱旂殑閿�鍞悎鍚�</Property>
+              </Label>
+              <AutoFormElement>
+                <Property name="name">createTime</Property>
+                <Property name="property">createTime</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">completeTime</Property>
+                <Property name="property">completeTime</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement>
+                <Property name="name">completeStatus</Property>
+                <Property name="property">completeStatus</Property>
+                <Editor/>
+              </AutoFormElement>
+              <AutoFormElement layoutConstraint="colSpan:2">
+                <Property name="name">remark</Property>
+                <Property name="property">remark</Property>
+                <Property name="editorType">TextArea</Property>
+                <Editor/>
+              </AutoFormElement>
+            </AutoForm>
+          </Container>
+        </Container>
+      </Children>
+      <Tools/>
+    </Dialog>
+    <AjaxAction id="ajaxGetDepot">
+      <Property name="service">depotPR#getDepot</Property>
+    </AjaxAction>
+    <AjaxAction id="ajaxSave">
+      <Property name="service">inoutNoticePR#saveOut</Property>
+    </AjaxAction>
+    <AjaxAction id="ajaxDel">
+      <Property name="service">inoutNoticePR#delDataOut</Property>
+      <Property name="confirmMessage">纭畾瑕佹墽琛屽垹闄や箞锛�</Property>
+    </AjaxAction>
+    <AjaxAction id="ajaxInitAdd">
+      <Property name="service">inoutNoticePR#initAddOut</Property>
+    </AjaxAction>
+    <CustomDropDown id="ddCustomer">
+      <Property name="minHeight">400</Property>
+      <Property name="assignmentMap">customerId=id,customerName=name</Property>
+      <Property name="minWidth">500</Property>
+      <Property name="autoOpen">true</Property>
+      <Container layout="regionPadding:5">
+        <DataSet id="dsCustomer">
+          <Property name="dataProvider">inoutCustomerPR#queryListByKey</Property>
+          <Property name="dataType">[dtInoutCustomer]</Property>
+          <Property name="parameter">
+            <Entity>
+              <Property name="type">OUT</Property>
+            </Entity>
+          </Property>
+        </DataSet>
+        <Container layout="hbox regionPadding:5">
+          <TextEditor id="key">
+            <Property name="blankText"> -- 缂栫爜鎴栬�呭悕绉� --</Property>
+            <Property name="width">200</Property>
+          </TextEditor>
+          <Button>
+            <ClientEvent name="onClick">var key = view.get(&quot;#key.value&quot;);&#xD;
+var type = &quot;${request.getParameter('type')}&quot;;&#xD;
+view.get(&quot;#dsCustomer&quot;).set(&quot;parameter&quot;,{key:key,type:type}).flushAsync();</ClientEvent>
+            <Property name="caption">鏌ヨ</Property>
+            <Property name="iconClass">fa fa-search</Property>
+          </Button>
+          <Button>
+            <ClientEvent name="onClick">var data = view.get(&quot;#dsCustomer.data:#&quot;);&#xD;
+if(data){&#xD;
+	view.get(&quot;#ddCustomer&quot;).close(data.toJSON());&#xD;
+}</ClientEvent>
+            <Property name="iconClass">fa fa-check</Property>
+            <Property name="caption">纭畾</Property>
+          </Button>
+        </Container>
+        <DataGrid>
+          <ClientEvent name="onDataRowDoubleClick">var data = view.get(&quot;#dsCustomer.data:#&quot;);&#xD;
+if(data){&#xD;
+	view.get(&quot;#ddCustomer&quot;).close(data.toJSON());&#xD;
+}</ClientEvent>
+          <Property name="dataSet">dsCustomer</Property>
+          <Property name="readOnly">true</Property>
+          <DataColumn name="id">
+            <Property name="property">id</Property>
+            <Property name="width">100</Property>
+            <Property name="align">center</Property>
+          </DataColumn>
+          <DataColumn name="name">
+            <ClientEvent name="onRenderCell">arg.dom.style.fontWeight = &quot;bold&quot;;&#xD;
+arg.processDefault = true;</ClientEvent>
+            <Property name="property">name</Property>
+            <Property name="align">center</Property>
+          </DataColumn>
+        </DataGrid>
+      </Container>
+    </CustomDropDown>
+    <AjaxAction id="recalculate">
+      <Property name="service">inoutNoticePR#updateSumNoticeOut</Property>
+    </AjaxAction>
+    <CustomDropDown id="ddPlan">
+      <Property name="minHeight">325</Property>
+      <Property name="assignmentMap">planId=id,planName=planId</Property>
+      <Property name="minWidth">900</Property>
+      <Property name="autoOpen">false</Property>
+      <Container layout="regionPadding:5">
+        <DataSet id="dsPlan">
+          <Property name="dataProvider">planManagePR#pagePlanDetail</Property>
+          <Property name="dataType">[dtPlan]</Property>
+          <Property name="parameter"></Property>
+          <Property name="pageSize">5</Property>
+        </DataSet>
+        <AutoForm layoutConstraint="top">
+          <Property name="cols">*,*,*</Property>
+          <Property name="dataSet">dsQuery</Property>
+          <Property name="exClassName">bg-color</Property>
+          <Property name="labelAlign">right</Property>
+          <Property name="labelSeparator">:</Property>
+          <Property name="labelWidth">100</Property>
+          <AutoFormElement>
+            <Property name="name">depotId</Property>
+            <Property name="property">depotId</Property>
+            <Property name="editable">false</Property>
+            <Property name="label">璁″垝浠撳簱</Property>
+            <Editor/>
+          </AutoFormElement>
+          <AutoFormElement>
+            <Property name="name">year</Property>
+            <Property name="property">year</Property>
+            <Property name="trigger">defaultYearDropDown</Property>
+            <Property name="editable">false</Property>
+            <Property name="label">鏀惰幏骞翠唤</Property>
+            <Editor/>
+          </AutoFormElement>
+          <Container layout="hbox regionPadding:15">
+            <Button>
+              <ClientEvent name="onClick">var data = view.get(&quot;#dsQuery.data&quot;);&#xD;
+if(data){&#xD;
+	view.get(&quot;#dsPlan&quot;).set(&quot;parameter&quot;,data.toJSON()).flushAsync();&#xD;
+}else{&#xD;
+	view.get(&quot;#dsPlan&quot;).flushAsync();&#xD;
+}&#xD;
+</ClientEvent>
+              <Property name="caption">鏌ヨ</Property>
+              <Property name="exClassName">btn-normal</Property>
+              <Property name="iconClass">fa fa-search</Property>
+            </Button>
+            <Button>
+              <ClientEvent name="onClick">var data = view.get(&quot;#dsPlan.data:#&quot;);&#xD;
+if(data){&#xD;
+	view.get(&quot;#ddPlan&quot;).close(data.toJSON());&#xD;
+}</ClientEvent>
+              <Property name="iconClass">fa fa-check</Property>
+              <Property name="caption">纭畾</Property>
+            </Button>
+          </Container>
+        </AutoForm>
+        <DataGrid>
+          <ClientEvent name="onDataRowDoubleClick">var data = view.get(&quot;#dsPlan.data:#&quot;);&#xD;
+if(data){&#xD;
+	view.get(&quot;#ddPlan&quot;).close(data.toJSON());&#xD;
+}</ClientEvent>
+          <Property name="dataSet">dsPlan</Property>
+          <Property name="readOnly">true</Property>
+          <DataColumn>
+            <Property name="property">planId</Property>
+            <Property name="width">100</Property>
+            <Property name="align">center</Property>
+            <Property name="name">planId</Property>
+            <Property name="visible">false</Property>
+          </DataColumn>
+          <DataColumn name="depotId">
+            <ClientEvent name="onRenderCell">arg.dom.style.fontWeight = &quot;bold&quot;;&#xD;
+arg.processDefault = true;</ClientEvent>
+            <Property name="property">depotId</Property>
+            <Property name="align">center</Property>
+          </DataColumn>
+          <DataColumn>
+            <Property name="property">year</Property>
+            <Property name="width">200</Property>
+            <Property name="align">center</Property>
+            <Property name="name">year</Property>
+          </DataColumn>
+          <DataColumn>
+            <Property name="property">planNum</Property>
+            <Property name="width">80</Property>
+            <Property name="align">center</Property>
+            <Property name="name">planNum</Property>
+          </DataColumn>
+          <DataColumn>
+            <Property name="property">foodVariety</Property>
+            <Property name="width">80</Property>
+            <Property name="align">center</Property>
+            <Property name="name">foodVariety</Property>
+          </DataColumn>
+          <DataColumn>
+            <Property name="property">type</Property>
+            <Property name="align">center</Property>
+            <Property name="name">type</Property>
+          </DataColumn>
+        </DataGrid>
+        <DataPilot layoutConstraint="bottom">
+          <Property name="dataSet">dsPlan</Property>
+        </DataPilot>
+      </Container>
+    </CustomDropDown>
+    <CustomDropDown id="ddContract">
+      <Property name="minHeight">317</Property>
+      <Property name="assignmentMap">contractId=id,contractName=name</Property>
+      <Property name="minWidth">550</Property>
+      <Property name="autoOpen">false</Property>
+      <Container layout="regionPadding:5">
+        <DataSet id="dsContract">
+          <Property name="dataProvider">contractManagePR#pageContract</Property>
+          <Property name="dataType">[dtContract]</Property>
+          <Property name="parameter"></Property>
+          <Property name="pageSize">5</Property>
+        </DataSet>
+        <Container layout="hbox regionPadding:5">
+          <TextEditor id="key3">
+            <Property name="blankText"> -- 鍚堝悓鍚嶇О鎴栬�呮墍灞炶鍒� --</Property>
+            <Property name="width">200</Property>
+          </TextEditor>
+          <Button>
+            <ClientEvent name="onClick">var key = view.get(&quot;#key3.value&quot;);&#xD;
+view.get(&quot;#dsContract&quot;).set(&quot;parameter&quot;,{key:key}).flushAsync();</ClientEvent>
+            <Property name="caption">鏌ヨ</Property>
+            <Property name="iconClass">fa fa-search</Property>
+          </Button>
+          <Button>
+            <ClientEvent name="onClick">var data = view.get(&quot;#dsContract.data:#&quot;);&#xD;
+if(data){&#xD;
+	view.get(&quot;#ddContract&quot;).close(data.toJSON());&#xD;
+}</ClientEvent>
+            <Property name="iconClass">fa fa-check</Property>
+            <Property name="caption">纭畾</Property>
+          </Button>
+        </Container>
+        <DataGrid>
+          <ClientEvent name="onDataRowDoubleClick">var data = view.get(&quot;#dsContract.data:#&quot;);&#xD;
+if(data){&#xD;
+	view.get(&quot;#ddContract&quot;).close(data.toJSON());&#xD;
+}</ClientEvent>
+          <Property name="dataSet">dsContract</Property>
+          <Property name="readOnly">true</Property>
+          <DataColumn>
+            <Property name="property">id</Property>
+            <Property name="width">100</Property>
+            <Property name="align">center</Property>
+            <Property name="name">id</Property>
+            <Property name="visible">false</Property>
+          </DataColumn>
+          <DataColumn name="name">
+            <ClientEvent name="onRenderCell">arg.dom.style.fontWeight = &quot;bold&quot;;&#xD;
+arg.processDefault = true;</ClientEvent>
+            <Property name="property">name</Property>
+            <Property name="align">center</Property>
+          </DataColumn>
+          <DataColumn>
+            <Property name="property">planName</Property>
+            <Property name="align">center</Property>
+            <Property name="name">planName</Property>
+          </DataColumn>
+          <DataColumn>
+            <Property name="property">year</Property>
+            <Property name="width">80</Property>
+            <Property name="align">center</Property>
+            <Property name="name">year</Property>
+          </DataColumn>
+        </DataGrid>
+        <DataPilot layoutConstraint="bottom">
+          <Property name="dataSet">dsContract</Property>
+        </DataPilot>
+      </Container>
+    </CustomDropDown>
+  </View>
+</ViewConfig>
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticePR.java b/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticePR.java
new file mode 100644
index 0000000..74ead93
--- /dev/null
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticePR.java
@@ -0,0 +1,489 @@
+package com.fzzy.igds;
+
+
+import com.bstek.dorado.annotation.DataProvider;
+import com.bstek.dorado.annotation.Expose;
+import com.bstek.dorado.data.provider.Page;
+import com.fzzy.igds.constant.Constant;
+import com.fzzy.igds.data.NoticeDto;
+import com.fzzy.igds.service.InoutNoticeService;
+import com.fzzy.igds.domain.InoutNoticeIn;
+import com.fzzy.igds.domain.InoutNoticeOut;
+import com.fzzy.igds.service.SysDeptService;
+import com.fzzy.igds.utils.ContextUtil;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.StringUtils;
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Component;
+import javax.annotation.Resource;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.*;
+
+/**
+ * @Description 閫氱煡鍗曠鐞�
+ * @Author CZT
+ * @Date 2024/12/16 10:10
+ */
+@Component
+public class InoutNoticePR {
+
+	@Resource
+	private InoutNoticeService inoutNoticeService;
+	@Resource
+	private SysDeptService sysDeptService;
+
+	/**
+	 * inoutNoticePR#getTitle 鏍规嵁鎶ヨ〃绫诲瀷锛岃幏鍙栭粯璁ゆ煡璇俊鎭紝姣斿琛ㄥご淇℃伅绛�
+	 *
+	 * @param
+	 * @return
+	 */
+	@DataProvider
+	public Map<String, Object> getTitle(Map<String, Object> param) {
+		Map<String, Object> result = new HashMap<String, Object>();
+		//鑾峰彇鍙傛暟涓姤琛ㄧ被鍨�
+		String type = (String)param.get("type");
+
+		//鑾峰彇鍒嗗簱缂栫爜瀵瑰簲鐨勫垎搴撳悕绉�
+		String deptName = "";
+		SysDept subDept = sysDeptService.getCacheDept(null, ContextUtil.subDeptId(null));
+		if (null != subDept) {
+			deptName = subDept.getDeptName();
+		}
+		if ("NOTICE_IN".equals(type)) {
+			result.put("title", "鍏ュ簱閫氱煡鍗�");
+			if (StringUtils.isNotEmpty(deptName)) {
+				result.put("title", deptName + "鍏ュ簱閫氱煡鍗�");
+			}
+		}
+		if ("NOTICE_OUT".equals(type)) {
+			result.put("title", "鍑哄簱閫氱煡鍗�");
+			if (StringUtils.isNotEmpty(deptName)) {
+				result.put("title", deptName + "鍑哄簱閫氱煡鍗�");
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * inoutNoticePR#getYearQuery 榛樿骞翠唤
+	 *
+	 * @param
+	 * @return
+	 */
+	@DataProvider
+	public Map<String, Object> getYearQuery(Map<String, Object> param) {
+		Map<String, Object> result = new HashMap<String, Object>();
+		//鑾峰彇鍙傛暟涓垎搴撶紪鐮�
+		String deptId = (String)param.get("deptId");
+
+		result.put("year", DateFormatUtils.format(new Date(), "yyyy"));
+		result.put("deptId", deptId);
+		return result;
+	}
+
+	/**
+	 * inoutNoticePR#queryNoticeByKey  鏍规嵁鍙傛暟鏌ヨ鍑哄叆搴撻�氱煡鍗曪紝鐢ㄤ簬鎵嬪姩琛ュ崟鏃讹紝閫夋嫨閫氱煡鍗�
+	 *
+	 * @param
+	 * @return
+	 */
+	@DataProvider
+	public List<NoticeDto> queryNoticeByKey(Map<String, Object> param) {
+		if (param == null) {
+			return null;
+		}
+		String type = (String) param.get("type");
+		if (StringUtils.isEmpty(type)) {
+			return null;
+		}
+		List<NoticeDto> list = new ArrayList<>();
+		NoticeDto dto;
+		if (Constant.TYPE_IN.equals(type)) {
+			List<InoutNoticeIn> listIn = this.queryNoticeIn(param);
+			if (null != listIn && listIn.size() > 0) {
+				for (InoutNoticeIn inoutNoticeIn : listIn) {
+					dto = new NoticeDto();
+					BeanUtils.copyProperties(inoutNoticeIn, dto);
+					list.add(dto);
+				}
+			}
+		}
+		if (Constant.TYPE_OUT.equals(type)) {
+			List<InoutNoticeOut> listOut = this.queryNoticeOut(param);
+			if (null != listOut && listOut.size() > 0) {
+				for (InoutNoticeOut inoutNoticeOut : listOut) {
+					dto = new NoticeDto();
+					BeanUtils.copyProperties(inoutNoticeOut, dto);
+					list.add(dto);
+				}
+			}
+		}
+		return list;
+	}
+
+
+	/*==================== 鍏ュ簱閫氱煡鍗曠浉鍏充笟鍔� ====================*/
+
+	/**
+	 * inoutNoticePR#initAddIn 鍏ュ簱閫氱煡鍗曟柊澧炲垵濮嬪寲
+	 *
+	 * @return
+	 */
+	@Expose
+	public InoutNoticeIn initAddIn() {
+		SysUser user = ContextUtil.getLoginUser();
+		InoutNoticeIn data = new InoutNoticeIn();
+		data.setId("RKTZD_" + ContextUtil.generateId());
+		data.setName("鍏ュ簱閫氱煡鍗�");
+		data.setCompanyId(user.getCompanyId());
+		data.setDeptId(ContextUtil.subDeptId(user));
+		data.setTag(Constant.YN_Y);
+		return data;
+	}
+
+	/**
+	 * inoutNoticePR#pageQueryIn 鑾峰彇鍏ュ簱閫氱煡鍗�
+	 *
+	 * @param param
+	 * @return
+	 */
+	@DataProvider
+	public void pageQueryIn(Page<InoutNoticeIn> page, Map<String, Object> param) {
+		if (null == param) {
+			param = new HashMap<>();
+		}
+		Map<String, Object> finalParam = param;
+
+		//澶氬弬鏁板垎椤垫煡璇�
+		Pageable pageable = PageRequest.of(0, 10000, Sort.Direction.ASC, InoutNoticeIn.SORT_PROP);
+		Specification<InoutNoticeIn> specification = new Specification<InoutNoticeIn>() {
+			private static final long serialVersionUID = 1L;
+
+			public Predicate toPredicate(Root<InoutNoticeIn> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+				List<Predicate> predicates = new ArrayList<Predicate>(); //鎵�鏈夌殑鏂█
+
+				Predicate predicate1 = cb.equal(root.get("companyId"), ContextUtil.getCompanyId());
+				predicates.add(predicate1);
+				Predicate predicate2 = cb.equal(root.get("deptId"), ContextUtil.subDeptId(null));
+				predicates.add(predicate2);
+
+				String key = String.valueOf(finalParam.get("year"));
+				if (StringUtils.isBlank(key)) {
+					Predicate predicate3 = cb.equal(root.get("year"), key);
+					predicates.add(predicate3);
+				}
+				key = (String) finalParam.get("id");
+				if (StringUtils.isBlank(key)) {
+					Predicate predicate4 = cb.equal(root.get("id"),  key);
+					predicates.add(predicate4);
+				}
+				key = (String) finalParam.get("customerName");
+				if (StringUtils.isBlank(key)) {
+					Predicate predicate5 = cb.like(root.get("customerName"), "%" + key + "%");
+					predicates.add(predicate5);
+				}
+				key = (String) finalParam.get("completeStatus");
+				if (StringUtils.isBlank(key)) {
+					Predicate predicate6 = cb.equal(root.get("completeStatus"), key);
+					predicates.add(predicate6);
+				}
+				key = (String) finalParam.get("foodVariety");
+				if (StringUtils.isBlank(key)) {
+					Predicate predicate7 = cb.equal(root.get("foodVariety"), key);
+					predicates.add(predicate7);
+				}
+				return cb.and(predicates.toArray(new Predicate[0]));
+			}
+		};
+		org.springframework.data.domain.Page<InoutNoticeIn> japPage = inoutNoticeService.queryAllNoticeIn(specification, pageable);
+		page.setEntityCount((int) japPage.getTotalElements());
+		page.setEntities(japPage.getContent());
+	}
+
+	/**
+	 * inoutNoticePR#saveIn 鏇存柊鍏ュ簱閫氱煡鍗�
+	 */
+	@Expose
+	public String saveIn(InoutNoticeIn data) {
+		InoutNoticeIn inoutNoticeIn = new InoutNoticeIn();
+		BeanUtils.copyProperties(data, inoutNoticeIn);
+		return inoutNoticeService.saveOrUpdateIn(inoutNoticeIn);
+	}
+
+	/**
+	 * inoutNoticePR#delDataIn
+	 */
+	@Expose
+	public String delDataIn(InoutNoticeIn data) {
+		InoutNoticeIn inoutNoticeIn = new InoutNoticeIn();
+		BeanUtils.copyProperties(data, inoutNoticeIn);
+		return inoutNoticeService.delDataIn(inoutNoticeIn);
+	}
+
+	/**
+	 * 鏍规嵁涓嶅悓鏉′欢鏌ヨ
+	 * @param param
+	 * @return
+	 */
+	public List<InoutNoticeIn> queryNoticeIn(Map<String, Object> param) {
+		if (null == param) {
+			param = new HashMap<>();
+		}
+		Map<String, Object> finalParam = param;
+
+		//澶氬弬鏁板垎椤垫煡璇�
+		Pageable pageable = PageRequest.of(0, 10000, Sort.Direction.ASC, InoutNoticeIn.SORT_PROP);
+		Specification<InoutNoticeIn> specification = new Specification<InoutNoticeIn>() {
+			private static final long serialVersionUID = 1L;
+
+			public Predicate toPredicate(Root<InoutNoticeIn> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+				List<Predicate> predicates = new ArrayList<Predicate>(); //鎵�鏈夌殑鏂█
+
+				Predicate predicate1 = cb.equal(root.get("companyId"), ContextUtil.getCompanyId());
+				predicates.add(predicate1);
+				Predicate predicate2 = cb.equal(root.get("deptId"), ContextUtil.subDeptId(null));
+				predicates.add(predicate2);
+				Predicate predicate3 = cb.equal(root.get("completeStatus"), "NONE");
+				predicates.add(predicate3);
+
+				String key = (String) finalParam.get("customerId");
+				if (StringUtils.isNotEmpty(key)) {
+					Predicate predicate4 = cb.equal(root.get("customerId"), key);
+					predicates.add(predicate4);
+				}
+				key = (String) finalParam.get("foodVariety");
+				if (StringUtils.isNotEmpty(key)) {
+					Predicate predicate5 = cb.equal(root.get("foodVariety"),  key);
+					predicates.add(predicate5);
+				}
+				key = (String) finalParam.get("depotId");
+				if (StringUtils.isNotEmpty(key)) {
+					Predicate predicate6 = cb.equal(root.get("depotId"), key);
+					predicates.add(predicate6);
+				}
+				key = (String) finalParam.get("key");
+				if (StringUtils.isNotEmpty(key)) {
+					Predicate predicate7 = cb.like(root.get("name"), "%" + key + "%");
+					predicates.add(predicate7);
+				}
+				return cb.and(predicates.toArray(new Predicate[0]));
+			}
+		};
+		org.springframework.data.domain.Page<InoutNoticeIn> japPage = inoutNoticeService.queryAllNoticeIn(specification, pageable);
+
+		return japPage.getContent();
+	}
+
+	/**
+	 * 閲嶆柊鏍哥畻鍏ュ簱閫氱煡鍗曞畬鎴愰噺
+	 *
+	 * inoutNoticePR#updateSumNoticeIn
+	 *
+	 * @return
+	 */
+	@Expose
+	public String updateSumNoticeIn() {
+
+		//鑾峰彇鎵�鏈夋湭瀹屾垚鐘舵�佺殑鍏ュ簱閫氱煡鍗�
+		String companyId = ContextUtil.getCompanyId();
+		String deptId = ContextUtil.subDeptId(null);
+
+		List<InoutNoticeIn> noticeInList = inoutNoticeService.getUnComNoticeIn(companyId);
+
+		if (noticeInList != null && noticeInList.size() > 0) {
+			inoutNoticeService.updateSumNoticeIn(noticeInList);
+			return "success";
+		}
+		
+		
+		return "fail";
+	}
+
+	/*==================== 鍑哄簱閫氱煡鍗曠浉鍏充笟鍔� ====================*/
+
+	/**
+	 * inoutNoticePR#initAddOut 鍑哄簱閫氱煡鍗曟柊澧炲垵濮嬪寲
+	 *
+	 * @return
+	 */
+	@Expose
+	public InoutNoticeOut initAddOut() {
+		SysUser user = ContextUtil.getLoginUser();
+		InoutNoticeOut data = new InoutNoticeOut();
+		data.setId("CKTZD_" + ContextUtil.generateId());
+		data.setName("鍑哄簱閫氱煡鍗�");
+		data.setCompanyId(user.getCompanyId());
+		data.setDeptId(ContextUtil.subDeptId(user));
+		data.setTag(Constant.YN_Y);
+		return data;
+	}
+
+	/**
+	 * inoutNoticePR#pageQueryOut 鑾峰彇鍑哄簱閫氱煡鍗�
+	 * @param page
+	 * @param param
+	 */
+	@DataProvider
+	public void pageQueryOut(Page<InoutNoticeOut> page, Map<String, Object> param) {
+
+		if (null == param) {
+			param = new HashMap<>();
+		}
+		Map<String, Object> finalParam = param;
+
+		//澶氬弬鏁板垎椤垫煡璇�
+		Pageable pageable = PageRequest.of(0, 10000, Sort.Direction.ASC, InoutNoticeOut.SORT_PROP);
+		Specification<InoutNoticeOut> specification = new Specification<InoutNoticeOut>() {
+			private static final long serialVersionUID = 1L;
+
+			public Predicate toPredicate(Root<InoutNoticeOut> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+				List<Predicate> predicates = new ArrayList<Predicate>(); //鎵�鏈夌殑鏂█
+
+				Predicate predicate1 = cb.equal(root.get("companyId"), ContextUtil.getCompanyId());
+				predicates.add(predicate1);
+				Predicate predicate2 = cb.equal(root.get("deptId"), ContextUtil.subDeptId(null));
+				predicates.add(predicate2);
+
+				String key = String.valueOf(finalParam.get("year"));
+				if (StringUtils.isNotEmpty(key)) {
+					Predicate predicate3 = cb.equal(root.get("year"), key);
+					predicates.add(predicate3);
+				}
+				key = (String) finalParam.get("id");
+				if (StringUtils.isNotEmpty(key)) {
+					Predicate predicate4 = cb.equal(root.get("id"),  key);
+					predicates.add(predicate4);
+				}
+				key = (String) finalParam.get("customerId");
+				if (StringUtils.isNotEmpty(key)) {
+					Predicate predicate5 = cb.equal(root.get("customerId"), key);
+					predicates.add(predicate5);
+				}
+				key = (String) finalParam.get("completeStatus");
+				if (StringUtils.isNotEmpty(key)) {
+					Predicate predicate6 = cb.equal(root.get("completeStatus"), key);
+					predicates.add(predicate6);
+				}
+				key = (String) finalParam.get("foodVariety");
+				if (StringUtils.isNotEmpty(key)) {
+					Predicate predicate7 = cb.equal(root.get("foodVariety"), key);
+					predicates.add(predicate7);
+				}
+				return cb.and(predicates.toArray(new Predicate[0]));
+			}
+		};
+		org.springframework.data.domain.Page<InoutNoticeOut> japPage = inoutNoticeService.queryAllNoticeOut(specification, pageable);
+		page.setEntityCount((int) japPage.getTotalElements());
+		page.setEntities(japPage.getContent());
+	}
+
+	/**
+	 * inoutNoticePR#saveOut 鏇存柊鍑哄簱閫氱煡鍗�
+	 * @param data
+	 * @return
+	 */
+	@Expose
+	public String saveOut(InoutNoticeOut data) {
+		InoutNoticeOut inoutNoticeOut = new InoutNoticeOut();
+		BeanUtils.copyProperties(data, inoutNoticeOut);
+		return inoutNoticeService.saveOrUpdateOut(inoutNoticeOut);
+	}
+
+	/**
+	 * inoutNoticePR#delDataOut
+	 */
+	@Expose
+	public String delDataOut(InoutNoticeOut data) {
+		InoutNoticeOut inoutNoticeOut = new InoutNoticeOut();
+		BeanUtils.copyProperties(data, inoutNoticeOut);
+		return inoutNoticeService.delDataOut(inoutNoticeOut);
+	}
+
+	/**
+	 * 鏍规嵁涓嶅悓鏉′欢鏌ヨ
+	 * @param param
+	 * @return
+	 */
+	public List<InoutNoticeOut> queryNoticeOut(Map<String, Object> param) {
+		if (null == param) {
+			param = new HashMap<>();
+		}
+		Map<String, Object> finalParam = param;
+
+		//澶氬弬鏁板垎椤垫煡璇�
+		Pageable pageable = PageRequest.of(0, 10000, Sort.Direction.ASC, InoutNoticeOut.SORT_PROP);
+		Specification<InoutNoticeOut> specification = new Specification<InoutNoticeOut>() {
+			private static final long serialVersionUID = 1L;
+
+			public Predicate toPredicate(Root<InoutNoticeOut> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+				List<Predicate> predicates = new ArrayList<Predicate>(); //鎵�鏈夌殑鏂█
+
+				Predicate predicate1 = cb.equal(root.get("companyId"), ContextUtil.getCompanyId());
+				predicates.add(predicate1);
+				Predicate predicate2 = cb.equal(root.get("deptId"), ContextUtil.subDeptId(null));
+				predicates.add(predicate2);
+				Predicate predicate3 = cb.equal(root.get("completeStatus"), "NONE");
+				predicates.add(predicate3);
+
+				String key = (String) finalParam.get("customerId");
+				if (StringUtils.isNotEmpty(key)) {
+					Predicate predicate4 = cb.equal(root.get("customerId"), key);
+					predicates.add(predicate4);
+				}
+				key = (String) finalParam.get("foodVariety");
+				if (StringUtils.isNotEmpty(key)) {
+					Predicate predicate5 = cb.equal(root.get("foodVariety"),  key);
+					predicates.add(predicate5);
+				}
+				key = (String) finalParam.get("depotId");
+				if (StringUtils.isNotEmpty(key)) {
+					Predicate predicate6 = cb.equal(root.get("depotId"), key);
+					predicates.add(predicate6);
+				}
+				key = (String) finalParam.get("key");
+				if (StringUtils.isNotEmpty(key)) {
+					Predicate predicate7 = cb.like(root.get("name"), "%" + key + "%");
+					predicates.add(predicate7);
+				}
+				return cb.and(predicates.toArray(new Predicate[0]));
+			}
+		};
+		org.springframework.data.domain.Page<InoutNoticeOut> japPage = inoutNoticeService.queryAllNoticeOut(specification, pageable);
+
+		return japPage.getContent();
+	}
+
+	/**
+	 * 閲嶆柊鏍哥畻鍑哄簱閫氱煡鍗曞畬鎴愰噺
+	 *
+	 * inoutNoticePR#updateSumNoticeOut
+	 *
+	 * @return
+	 */
+	@Expose
+	public String updateSumNoticeOut() {
+
+		//鑾峰彇鎵�鏈夋湭瀹屾垚鐘舵�佺殑鍏ュ簱閫氱煡鍗�
+		String companyId = ContextUtil.getCompanyId();
+		String deptId = ContextUtil.subDeptId(null);
+
+		List<InoutNoticeOut> noticeOutList = inoutNoticeService.getUnComNoticeOut(companyId);
+
+		if (noticeOutList != null && noticeOutList.size() > 0) {
+			inoutNoticeService.updateSumNoticeOut(noticeOutList);
+			return "success";
+		}
+		return "fail";
+	}
+
+}

--
Gitblit v1.9.3