czt
2025-12-01 b9ab518f6ede8ff871d1554c199e7ce4b5117dac
出库通知单
已删除3个文件
已修改6个文件
已添加1个文件
1831 ■■■■ 文件已修改
fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutNoticeOut.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/mapper/InoutNoticeMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/mapper/InoutNoticeOutMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutNoticeInRepository.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutNoticeOutRepository.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutNoticeService.java 204 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticeOut.view.xml 1191 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticePR.java 266 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/templates/inout/inout-register.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/templates/inout/inout-weight.html 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutNoticeOut.java
@@ -46,17 +46,13 @@
    @TableField("type")
    private String type;
    @Column(name = "contract_id", columnDefinition = "varchar(40) COMMENT '所属合同'")
    @TableField("contract_id")
    private String contractId;
    @Column(name = "contract", columnDefinition = "varchar(40) COMMENT '关联合同'")
    @TableField("contract")
    private String contract;
    @Column(name = "depot_id", columnDefinition = "varchar(40) COMMENT '出库仓库'")
    @TableField("depot_id")
    private String depotId;
    @Column(name = "customer_id", columnDefinition = "varchar(40) COMMENT '发货客户'")
    @TableField("customer_id")
    private String customerId;
    @Column(name = "customer_name", columnDefinition = "varchar(40) COMMENT '发货单位'")
    @TableField("customer_name")
@@ -82,7 +78,7 @@
    @TableField("complete_number")
    private Double completeNumber = 0.0;
    @Column(name = "audit_status", columnDefinition = "varchar(2) COMMENT '审核状态(10=监管审核,20=银行审核,30=通过)'")
    @Column(name = "audit_status", columnDefinition = "varchar(10) COMMENT '审核状态(10=监管审核,20=银行审核,30=通过)'")
    @TableField("audit_status")
    private String auditStatus = "10";
@@ -108,7 +104,4 @@
    @TableField("remark")
    private String remark;
    @Transient
    @PropertyDef(label = "标记", description = "用于判断通知单是否为新增")
    private String tag;
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/mapper/InoutNoticeMapper.java
ÎļþÒÑɾ³ý
fzzy-igdss-core/src/main/java/com/fzzy/igds/mapper/InoutNoticeOutMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
package com.fzzy.igds.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fzzy.igds.domain.InoutNoticeOut;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface InoutNoticeOutMapper extends BaseMapper<InoutNoticeOut> {
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutNoticeInRepository.java
ÎļþÒÑɾ³ý
fzzy-igdss-core/src/main/java/com/fzzy/igds/repository/InoutNoticeOutRepository.java
ÎļþÒÑɾ³ý
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutNoticeService.java
@@ -5,26 +5,18 @@
import com.fzzy.igds.data.NoticeDto;
import com.fzzy.igds.data.NoticeParam;
import com.fzzy.igds.mapper.InoutNoticeInMapper;
import com.fzzy.igds.mapper.InoutNoticeMapper;
import com.fzzy.igds.repository.InoutNoticeInRepository;
import com.fzzy.igds.repository.InoutNoticeOutRepository;
import com.fzzy.igds.mapper.InoutNoticeOutMapper;
import com.fzzy.igds.domain.InoutNoticeIn;
import com.fzzy.igds.domain.InoutNoticeOut;
import com.fzzy.igds.utils.ContextUtil;
import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * @Description å‡ºå…¥åº“通知单service层,包含入库通知单和出库通知单
@@ -36,47 +28,86 @@
public class InoutNoticeService {
    @Resource
    private InoutNoticeInRepository noticeInRepository;
    @Resource
    private InoutNoticeOutRepository noticeOutRepository;
    @Resource
    private InoutNoticeMapper noticeMapper;
    @Resource
    private InoutNoticeInMapper noticeInMapper;
    @Resource
    private InoutNoticeOutMapper noticeOutMapper;
/*    *//**
     * JPA分页查询数据
     *
     *//*
    public Page<InoutNoticeIn> queryAllNoticeIn(Specification<InoutNoticeIn> specification, Pageable pageable) {
        return noticeInRepository.findAll(specification, pageable);
    }*/
    /*----------------------入库通知单信息-------------------------*/
    /**
     * åˆ†é¡µæŸ¥è¯¢æ•°æ®
     * @param page
     * @param param
     */
    public void pageQueryIn(Page<InoutNoticeIn> page, NoticeParam param) {
        QueryWrapper<InoutNoticeIn> queryWrapper = new QueryWrapper<>();
        if(null == param) param = new NoticeParam();
        if(null == param) {
            param = new NoticeParam();
        }
        param.setCompanyId(ContextUtil.getCompanyId());
        queryWrapper.eq("company_id", param.getCompanyId());
        if(StringUtils.isNotBlank(param.getCustomerName())){
            queryWrapper.like("customer_name", param.getCustomerName());
        }
        if(StringUtils.isNotBlank(param.getFoodVariety())){
            queryWrapper.like("food_variety", param.getFoodVariety());
        }
        if(StringUtils.isNotBlank(param.getCompleteStatus())){
            queryWrapper.like("complete_status", param.getCompleteStatus());
        }
        noticeInMapper.selectPage(page, queryWrapper);
    }
    /**
     * JPA查询数据
     * æ ¹æ®æ¡ä»¶æŸ¥è¯¢
     * @param companyId
     * @param deptId
     * @param completeStatus
     * @return
     */
    public List<InoutNoticeIn> getNoticeIn(String companyId, String deptId, String completeStatus) {
        QueryWrapper<InoutNoticeIn> queryWrapper = new QueryWrapper<>();
        if(StringUtils.isNotBlank(companyId)){
            queryWrapper.eq("company_id", companyId);
        }
        if(StringUtils.isNotBlank(deptId)){
            queryWrapper.eq("dept_id", deptId);
        }
        if(StringUtils.isNotBlank(completeStatus)){
            queryWrapper.eq("complete_status", completeStatus);
        }
        queryWrapper.orderByDesc("create_time");
        return noticeInMapper.selectList(queryWrapper);
    }
    /**
     * æ ¹æ®æ¡ä»¶æŸ¥è¯¢
     * @param id
     * @return
     */
    public InoutNoticeIn getNoticeInOne(String id) {
        QueryWrapper<InoutNoticeIn> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id", id);
        return noticeInMapper.selectOne(queryWrapper);
    }
    /**
     * æŸ¥è¯¢æ•°æ®
     * @param companyId
     * @param deptId
     * @return
     */
    public List<InoutNoticeIn> listNoticeIn(String companyId, String deptId) {
        return noticeInRepository.listNoticeIn(companyId, deptId, Constant.COMPLETE_STATUS_NONE);
        return this.getNoticeIn(companyId, deptId, Constant.COMPLETE_STATUS_NONE);
    }
    /**
     * jpa èŽ·å–ä¿¡æ¯
     *  æŸ¥è¯¢æ•°æ®
     * @param companyId
     * @return
     */
@@ -84,11 +115,11 @@
        if (StringUtils.isEmpty(companyId)) {
            companyId = ContextUtil.getCompanyId();
        }
        return noticeInRepository.listNoticeIn(companyId, Constant.COMPLETE_STATUS_NONE);
        return this.getNoticeIn(companyId, null, Constant.COMPLETE_STATUS_NONE);
    }
    /**
     * JPA - ä¿å­˜æ›´æ–°æ•°æ®
     *  - ä¿å­˜æ›´æ–°æ•°æ®
     *
     * @param data
     * @return
@@ -101,47 +132,99 @@
            data.setCreateTime(new Date());
            data.setAuditStatus(Constant.COMPLETE_STATUS_NONE);
            data.setCompleteStatus(Constant.COMPLETE_STATUS_NONE);
            noticeInRepository.save(data);
            noticeInMapper.insert(data);
        } else {
            data.setUpdateBy(ContextUtil.getLoginUserName());
            data.setUpdateTime(new Date());
            noticeInRepository.save(data);
            noticeInMapper.updateById(data);
        }
        return null;
    }
    /**
     * JPA - åˆ é™¤æ•°æ®
     *  - åˆ é™¤æ•°æ®
     *
     * @param data
     * @return
     */
    public String delDataIn(InoutNoticeIn data) {
        noticeInRepository.delete(data);
        noticeInMapper.deleteById(data);
        return null;
    }
    /*----------------------出库通知单信息-------------------------*/
    /**
     * JPA分页查询数据
     *
     * @param specification
     * @param pageable
     * åˆ†é¡µæŸ¥è¯¢æ•°æ®
     * @param page
     * @param param
     */
    public void pageQueryOut(Page<InoutNoticeOut> page, NoticeParam param) {
        QueryWrapper<InoutNoticeOut> queryWrapper = new QueryWrapper<>();
        if(null == param) {
            param = new NoticeParam();
        }
        param.setCompanyId(ContextUtil.getCompanyId());
        queryWrapper.eq("company_id", param.getCompanyId());
        if(StringUtils.isNotBlank(param.getCustomerName())){
            queryWrapper.like("customer_name", param.getCustomerName());
        }
        if(StringUtils.isNotBlank(param.getFoodVariety())){
            queryWrapper.like("food_variety", param.getFoodVariety());
        }
        if(StringUtils.isNotBlank(param.getCompleteStatus())){
            queryWrapper.like("complete_status", param.getCompleteStatus());
        }
        noticeOutMapper.selectPage(page, queryWrapper);
    }
    /**
     * æ ¹æ®æ¡ä»¶æŸ¥è¯¢
     * @param companyId
     * @param deptId
     * @param completeStatus
     * @return
     */
    public Page<InoutNoticeOut> queryAllNoticeOut(Specification<InoutNoticeOut> specification, Pageable pageable) {
        //return noticeOutRepository.findAll(specification, pageable);
        return null;
    public List<InoutNoticeOut> getNoticeOut(String companyId, String deptId, String completeStatus) {
        QueryWrapper<InoutNoticeOut> queryWrapper = new QueryWrapper<>();
        if(StringUtils.isNotBlank(companyId)){
            queryWrapper.eq("company_id", companyId);
        }
        if(StringUtils.isNotBlank(deptId)){
            queryWrapper.eq("dept_id", deptId);
        }
        if(StringUtils.isNotBlank(completeStatus)){
            queryWrapper.eq("complete_status", completeStatus);
        }
        queryWrapper.orderByDesc("create_time");
        return noticeOutMapper.selectList(queryWrapper);
    }
    /**
     * JPA查询数据
     * æ ¹æ®æ¡ä»¶æŸ¥è¯¢
     * @param id
     * @return
     */
    public InoutNoticeOut getNoticeOutOne(String id) {
        QueryWrapper<InoutNoticeOut> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id", id);
        return noticeOutMapper.selectOne(queryWrapper);
    }
    /**
     * æŸ¥è¯¢æ•°æ®
     * @param companyId
     * @param deptId
     * @return
     */
    public List<InoutNoticeOut> listNoticeOut(String companyId, String deptId) {
        return noticeOutRepository.listNoticeOut(companyId, deptId, Constant.COMPLETE_STATUS_NONE);
        return this.getNoticeOut(companyId, deptId, Constant.COMPLETE_STATUS_NONE);
    }
    /**
@@ -153,41 +236,45 @@
        if (StringUtils.isEmpty(companyId)) {
            companyId = ContextUtil.getCompanyId();
        }
        return noticeOutRepository.listNoticeOut(companyId, Constant.COMPLETE_STATUS_NONE);
        return this.getNoticeOut(companyId, null,Constant.COMPLETE_STATUS_NONE);
    }
    /**
     * JPA - ä¿å­˜æ›´æ–°æ•°æ®
     *  - ä¿å­˜æ›´æ–°æ•°æ®
     *
     * @param data
     * @return
     */
    public String saveOrUpdateOut(InoutNoticeOut data) {
        if (Constant.YN_Y.equals(data.getTag())) {
        if (null == data.getUpdateBy()) {
            data.setUpdateBy(ContextUtil.getLoginUserName());
            data.setUpdateTime(new Date());
            data.setCreateBy(ContextUtil.getLoginUserName());
            data.setCreateTime(new Date());
            data.setAuditStatus(Constant.COMPLETE_STATUS_NONE);
            data.setCompleteStatus(Constant.COMPLETE_STATUS_NONE);
            noticeOutMapper.insert(data);
        } else {
            data.setUpdateBy(ContextUtil.getLoginUserName());
            data.setUpdateTime(new Date());
            noticeOutMapper.updateById(data);
        }
        data.setUpdateBy(ContextUtil.getLoginUserName());
        data.setUpdateTime(new Date());
        noticeOutRepository.save(data);
        return null;
    }
    /**
     * JPA - åˆ é™¤æ•°æ®
     * åˆ é™¤æ•°æ®
     *
     * @param data
     * @return
     */
    public String delDataOut(InoutNoticeOut data) {
        noticeOutRepository.delete(data);
        noticeOutMapper.deleteById(data);
        return null;
    }
    /**
     * JPA - æ ¹æ®ID获取通知单信息
     * æ ¹æ®ID获取通知单信息
     * @param id
     * @param type
     * @return
@@ -198,10 +285,10 @@
        }
        NoticeDto noticeDto = new NoticeDto();
        if (Constant.TYPE_IN.equals(type)) {
            InoutNoticeIn noticeIn = noticeInRepository.getDataById(ContextUtil.getCompanyId(), ContextUtil.subDeptId(null), id);
            InoutNoticeIn noticeIn = this.getNoticeInOne(id);
            BeanUtils.copyProperties(noticeIn, noticeDto);
        } else {
            InoutNoticeOut noticeOut = noticeOutRepository.getDataById(ContextUtil.getCompanyId(), ContextUtil.subDeptId(null), id);
            InoutNoticeOut noticeOut = this.getNoticeOutOne(id);
            BeanUtils.copyProperties(noticeOut, noticeDto);
        }
        return noticeDto;
@@ -240,6 +327,7 @@
     * @return
     */
    public String reSumNoticeInComplete(NoticeParam param) {
        //TODO å¾…实现,后续根据需求进行实现
        if (StringUtils.isEmpty(param.getCustomerName())) {
            return "客户编码为空!";
        }
@@ -252,7 +340,6 @@
        if (StringUtils.isEmpty(param.getDeptId())) {
            param.setDeptId(ContextUtil.subDeptId(null));
        }
        noticeMapper.reSumNoticeInComplete(param);
        return null;
    }
@@ -272,7 +359,7 @@
        for (InoutNoticeOut noticeOut : noticeOutList) {
            param = new NoticeParam(noticeOut.getCompanyId(), noticeOut.getDeptId(), noticeOut.getDepotId(),
                    noticeOut.getCustomerId(), noticeOut.getFoodVariety(), noticeOut.getId());
                    noticeOut.getCustomerName(), noticeOut.getFoodVariety(), noticeOut.getId());
            log.info("开始更新出库通知单={}", param.toString());
@@ -289,6 +376,7 @@
     * @return
     */
    public String reSumNoticeOutComplete(NoticeParam param) {
        //TODO å¾…实现,后续根据需求进行实现
        if (StringUtils.isEmpty(param.getCustomerName())) {
            return "客户编码为空!";
        }
@@ -304,9 +392,7 @@
        if (StringUtils.isEmpty(param.getDeptId())) {
            param.setDeptId(ContextUtil.subDeptId(null));
        }
        noticeMapper.reSumNoticeOutComplete(param);
        return null;
    }
}
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticeOut.view.xml
@@ -4,10 +4,7 @@
  <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>
      <Property name="creationType">com.fzzy.igds.domain.InoutNoticeOut</Property>
      <PropertyDef name="id">
        <Property></Property>
        <Property name="label">通知单号</Property>
@@ -19,37 +16,37 @@
      <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="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>
        <Property name="required">true</Property>
      </PropertyDef>
      <PropertyDef name="contract">
        <Property></Property>
        <Property name="label">关联合同</Property>
        <Property name="required">false</Property>
      </PropertyDef>
      <PropertyDef name="depotId">
        <Property></Property>
@@ -59,11 +56,6 @@
          <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">
@@ -76,9 +68,9 @@
        <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 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">
@@ -93,27 +85,50 @@
      </PropertyDef>
      <PropertyDef name="year">
        <Property></Property>
        <Property name="label">粮食年份</Property>
        <Property name="required">true</Property>
        <Property name="label">年份</Property>
      </PropertyDef>
      <PropertyDef name="targetNumber">
        <Property name="dataType">double</Property>
        <Property name="displayFormat">#,## kG</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">#,## kG</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>
@@ -135,339 +150,33 @@
          <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="dataType">Date</Property>
        <Property name="label">完成时间</Property>
      </PropertyDef>
      <PropertyDef name="remark">
        <Property></Property>
        <Property name="label">备注信息</Property>
      </PropertyDef>
      <PropertyDef name="tag">
      <PropertyDef name="createTime">
        <Property name="dataType">DateTime</Property>
        <Property name="label">制单时间</Property>
      </PropertyDef>
      <PropertyDef name="createBy">
        <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>
        <Property name="label">制单人</Property>
      </PropertyDef>
      <PropertyDef name="updateTime">
        <Property></Property>
        <Property name="dataType">DateTime</Property>
        <Property name="label">更新时间</Property>
      </PropertyDef>
    </DataType>
    <DataType name="dtContract">
      <Property name="creationType">com.fzzy.igds.models.InoutContract</Property>
      <PropertyDef name="id">
      <PropertyDef name="updateBy">
        <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>
        <Property name="label">更新人</Property>
      </PropertyDef>
    </DataType>
  </Model>
  <View layout="padding:5;regionPadding:5">
  <View layout="padding:10">
    <ClientEvent name="onReady">var deptId = window.parent.deptId;//父页面中的分库编码&#xD;
var TYPE = &quot;NOTICE_OUT&quot;;&#xD;
query = function(){&#xD;
@@ -475,29 +184,14 @@
};&#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;#ajaxInitAdd&quot;).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>
&#xD;</ClientEvent>
    <Property name="packages">font-awesome,css-common</Property>
    <DataSet id="dsMain">
      <Property name="dataType">[dtMain]</Property>
@@ -505,40 +199,38 @@
      <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="dataType">dtNoticeParam</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">
    <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;
@@ -546,106 +238,81 @@
            }else{&#xD;
            view.get(&quot;#dsMain&quot;).flushAsync();&#xD;
            }</ClientEvent>
          <Property name="caption">查询</Property>
          <Property name="exClassName">btn1</Property>
          <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="exClassName">btn2</Property>
          <Property name="iconClass">fa fa-refresh</Property>
          <Property name="caption">重置</Property>
          <Property name="exClassName">btn-q2</Property>
          <Property name="iconClass">fa fa-refresh</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>
      </AutoForm>
    </Container>
    <Container>
      <Property name="className">c-data</Property>
      <ToolBar>
        <ToolBarButton layoutConstraint="left">
          <ClientEvent name="onClick">add();&#xD;</ClientEvent>
          <Property name="caption">新增</Property>
          <Property name="exClassName">btn1</Property>
          <Property name="width">100</Property>
          <Property name="iconClass">fa fa-plus</Property>
        </Button>
        <Button layoutConstraint="left">
        </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>
            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">
          <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;
}&#xD;
        </ClientEvent>
            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">
          <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>
            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="exClassName">btn4</Property>
          <Property name="iconClass">fa fa-refresh</Property>
          <Property name="width">100</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>
        </ToolBarButton>
      </ToolBar>
      <DataGrid id="dataGridMain" layoutConstraint="padding:8">
        <ClientEvent name="onDataRowDoubleClick">view.get(&quot;#dataGridMain&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>
@@ -661,16 +328,14 @@
          <Property name="align">center</Property>
          <Property name="width">120</Property>
        </DataColumn>
        <DataColumn>
        <DataColumn name="customerName">
          <Property name="property">customerName</Property>
          <Property name="name">customerName</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn>
        <DataColumn name="depotId">
          <Property name="property">depotId</Property>
          <Property name="name">depotId</Property>
          <Property name="align">center</Property>
          <Property name="width">100</Property>
          <Property name="width">150</Property>
        </DataColumn>
        <DataColumn name="foodVariety">
          <Property name="property">foodVariety</Property>
@@ -681,12 +346,6 @@
          <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>
@@ -701,28 +360,35 @@
          <Property name="name">createTime</Property>
          <Property name="width">200</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="exClassName">bg-color</Property>
      <DataPilot layoutConstraint="right">
        <Property name="itemCodes">pageSize,pages</Property>
        <Property name="dataSet">dsMain</Property>
      </DataPilot>
      <ToolBar layoutConstraint="bottom">
        <Fill/>
        <DataPilot layoutConstraint="right">
          <Property name="itemCodes">pageSize,pages</Property>
          <Property name="dataSet">dsMain</Property>
        </DataPilot>
      </ToolBar>
    </Container>
    <Dialog id="dialogMain">
      <Property name="closeable">false</Property>
      <Property name="caption">出库单</Property>
      <Property name="width">60%</Property>
      <Property name="caption">出库通知单</Property>
      <Property name="width">1200</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;
          <ClientEvent name="onClick">view.get(&quot;#updateSave&quot;).execute(function(result){&#xD;
            if(result){&#xD;
            $alert(result);&#xD;
            return;&#xD;
@@ -730,146 +396,175 @@
            $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="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="iconClass">fa fa-times</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>
          <AutoForm layoutConstraint="top ">
            <Property name="dataSet">dsMain</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="cols">210,*,210</Property>
            <Control/>
            <AutoFormElement>
              <Property name="name">name</Property>
              <Property name="property">name</Property>
              <Property name="editorType">Label</Property>
              <Property name="style">
                <Property name="font">bold 30px Georgia, serif;</Property>
                <Property name="text-align">center</Property>
              </Property>
              <Property name="showLabel">false</Property>
              <Property name="showHint">false</Property>
              <Property name="className">f-title</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
              <Property name="name">id</Property>
              <Property name="property">id</Property>
              <Property name="editorType">Label</Property>
              <Property name="showHint">false</Property>
              <Property name="labelAlign">right</Property>
              <Property name="showLabel">false</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">110</Property>
              <AutoFormElement>
                <Property name="name">name</Property>
                <Property name="property">name</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>
          <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 layoutConstraint="colSpan:2">
              <Property name="name">name</Property>
              <Property name="property">name</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
              <Property name="name">type</Property>
              <Property name="property">type</Property>
              <Property name="editorType">RadioGroup</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>
            <AutoFormElement layoutConstraint="colSpan:2">
              <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">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">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">createBy</Property>
              <Property name="property">createBy</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
              <Property name="name">auditStatus</Property>
              <Property name="property">auditStatus</Property>
              <Property name="readOnly">true</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement layoutConstraint="colSpan:2">
              <Property name="name">contract</Property>
              <Property name="property">contract</Property>
              <Editor/>
            </AutoFormElement>
            <Label>
              <Property name="style">
                <Property name="color">blue</Property>
              </Property>
              <Property name="text">注:监管通知单,可填写质押合同名称</Property>
            </Label>
            <AutoFormElement layoutConstraint="colSpan:3">
              <Property name="name">remark</Property>
              <Property name="property">remark</Property>
              <Property name="editorType">TextArea</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
              <Property name="name">createTime</Property>
              <Property name="property">createTime</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
              <Property name="name">auditUser</Property>
              <Property name="property">auditUser</Property>
              <Property name="readOnly">true</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
              <Property name="name">auditDate</Property>
              <Property name="property">auditDate</Property>
              <Property name="readOnly">true</Property>
              <Editor/>
            </AutoFormElement>
            <HtmlContainer layoutConstraint="colSpan:3">
              <Property name="content">1.出库通知单作为出库作业的前置条件,必须配置,否则无法进行入库作业。&lt;br>&#xD;
                2.单据类型=库区通知单,表示库区自己作业业务,不受监管管理。</Property>
              <Property name="exClassName">h-tip</Property>
              <Property name="contentOverflow">hidden</Property>
            </HtmlContainer>
          </AutoForm>
        </Container>
      </Children>
      <Tools/>
    </Dialog>
    <AjaxAction id="ajaxGetDepot">
      <Property name="service">depotPR#getDepot</Property>
    </AjaxAction>
    <AjaxAction id="ajaxSave">
      <Property name="service">inoutNoticePR#saveOut</Property>
    </AjaxAction>
    <UpdateAction id="updateSave">
      <Property name="dataResolver">inoutNoticePR#saveOut</Property>
      <UpdateItem>
        <Property name="dataPath">[#current]</Property>
        <Property name="dataSet">dsMain</Property>
      </UpdateItem>
    </UpdateAction>
    <AjaxAction id="ajaxDel">
      <Property name="service">inoutNoticePR#delDataOut</Property>
      <Property name="confirmMessage">确定要执行删除么?</Property>
@@ -877,240 +572,8 @@
    <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>
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticePR.java
@@ -5,76 +5,28 @@
import com.bstek.dorado.annotation.DataResolver;
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.data.NoticeParam;
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
 * @Date 2025/11/29 16:42
 */
@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 é»˜è®¤å¹´ä»½
@@ -92,47 +44,6 @@
        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;
    }
    /*==================== å…¥åº“通知单相关业务 ====================*/
@@ -193,61 +104,6 @@
    }
    /**
     * æ ¹æ®ä¸åŒæ¡ä»¶æŸ¥è¯¢
     * @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();
        return null;
    }
    /**
     * é‡æ–°æ ¸ç®—入库通知单完成量
     *
     * inoutNoticePR#updateSumNoticeIn
@@ -259,7 +115,6 @@
        //获取所有未完成状态的入库通知单
        String companyId = ContextUtil.getCompanyId();
        String deptId = ContextUtil.subDeptId(null);
        List<InoutNoticeIn> noticeInList = inoutNoticeService.getUnComNoticeIn(companyId);
@@ -267,8 +122,6 @@
            inoutNoticeService.updateSumNoticeIn(noticeInList);
            return "success";
        }
        return "fail";
    }
@@ -283,11 +136,13 @@
    public InoutNoticeOut initAddOut() {
        SysUser user = ContextUtil.getLoginUser();
        InoutNoticeOut data = new InoutNoticeOut();
        data.setId("CKTZD_" + ContextUtil.generateId());
        data.setId(ContextUtil.generateOrderId("CK"));
        data.setName("出库通知单");
        data.setCompanyId(user.getCompanyId());
        data.setDeptId(ContextUtil.subDeptId(user));
        data.setTag(Constant.YN_Y);
        data.setYear(DateFormatUtils.format(new Date(), "yyyy"));
        data.setCreateBy(ContextUtil.getLoginUserName());
        data.setCreateTime(new Date());
        return data;
    }
@@ -297,57 +152,15 @@
     * @param param
     */
    @DataProvider
    public void pageQueryOut(Page<InoutNoticeOut> page, Map<String, Object> param) {
    public void pageQueryOut(Page<InoutNoticeOut> page, NoticeParam param) {
        if (null == param) {
            param = new HashMap<>();
        }
        Map<String, Object> finalParam = param;
        com.baomidou.mybatisplus.extension.plugins.pagination.Page<InoutNoticeOut> corePage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPageNo(), page.getPageSize());
        //多参数分页查询
        Pageable pageable = PageRequest.of(0, 10000, Sort.Direction.ASC, InoutNoticeOut.SORT_PROP);
        Specification<InoutNoticeOut> specification = new Specification<InoutNoticeOut>() {
            private static final long serialVersionUID = 1L;
        inoutNoticeService.pageQueryOut(corePage, param);
            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());
        // é‡æ–°å°è£…
        page.setEntities(corePage.getRecords());
        page.setEntityCount(Integer.parseInt(String.valueOf(corePage.getTotal())));
    }
    /**
@@ -355,7 +168,7 @@
     * @param data
     * @return
     */
    @Expose
    @DataResolver
    public String saveOut(InoutNoticeOut data) {
        InoutNoticeOut inoutNoticeOut = new InoutNoticeOut();
        BeanUtils.copyProperties(data, inoutNoticeOut);
@@ -372,60 +185,6 @@
        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();
        return null;
    }
    /**
     * é‡æ–°æ ¸ç®—出库通知单完成量
@@ -439,7 +198,6 @@
        //获取所有未完成状态的入库通知单
        String companyId = ContextUtil.getCompanyId();
        String deptId = ContextUtil.subDeptId(null);
        List<InoutNoticeOut> noticeOutList = inoutNoticeService.getUnComNoticeOut(companyId);
fzzy-igdss-web/src/main/resources/templates/inout/inout-register.html
@@ -295,7 +295,7 @@
                        <h3>称重数据<span id="text-param"></span></h3>
                        <div style="float: right;margin-top: -35px">
                            <button class="rkbk-quick-btn layui-btn" onclick="selectByHand()">
                                <i><img th:src="@{/img/web/inout/icon-hyd.png}"/></i>选择车辆
                                <i><img th:src="@{/img/web/inout/icon-hyd.png}"/></i>选择车辆称重
                            </button>
                            <button class="rkbk-quick-btn layui-btn btn-blue" onclick="weight()">
                                <i><img th:src="@{/img/web/inout/icon-chengzhong.png}"/></i>步骤1:称重及抓拍
fzzy-igdss-web/src/main/resources/templates/inout/inout-weight.html
@@ -174,7 +174,9 @@
        <div class="qyzj-btnbox layui-clear">
            <div class="rkbk-quick fl">
                <button class="rkbk-quick-btn layui-btn" onclick="selectByHand()">
                    <i><img th:src="@{/img/web/inout/icon-hyd.png}"/></i>选择车辆称重
                </button>
                <button class="rkbk-quick-btn layui-btn btn-blue"
                        onclick="weight()">
                    <i><img th:src="@{/img/web/inout/icon-chengzhong.png}"/></i>步骤1:称重确认及抓拍
@@ -184,9 +186,6 @@
                </button>
                <button class="rkbk-quick-btn layui-btn btn-blue" onclick="printBill()">
                    <i><img th:src="@{/img/web/inout/icon-dayin.png}"/></i>步骤3:打印过磅单
                </button>
                <button class="rkbk-quick-btn layui-btn" onclick="showCheck()">
                    <i><img th:src="@{/img/web/inout/icon-hyd.png}"/></i>质检详细
                </button>
                <button class="rkbk-quick-btn layui-btn btn-violet" onclick="flushPage()">
                    <i><img th:src="@{/img/web/inout/icon-shuaxin2.png}"/></i>刷新页面