5b9d5e7c3b714b2ccb3e9e355a376e4c85bb9f8d..c7ecb0f33189aff5f8234666c26b75c6621bb83b
5 天以前 czt
单仓移库页面
c7ecb0 对比 | 目录
5 天以前 czt
出入库结算及单据打印
36aea6 对比 | 目录
已修改5个文件
已添加8个文件
2080 ■■■■■ 文件已修改
fzzy-igdss-core/src/main/java/com/fzzy/igds/bill/InoutBill.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutStockChange.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/mapper/InoutStockChangeMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutRecordService.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutStockChangeService.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/MoneyUtil.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutDataPR.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutList.view.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutSettle.view.xml 920 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutSettlePR.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutStockChange.view.xml 582 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutStockChangePR.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/templates/print/pay.html 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/bill/InoutBill.java
@@ -19,5 +19,6 @@
    /**
     * é»˜è®¤ç»“算单
     */
    public static String IN_SETTLE_DEFAULT = "<!DOCTYPE html><html lang='zh-cn'><head><meta http-equiv='Content-Type'content='text/html;charset=UTF-8'><title>入库过磅单</title><style>body{text-align:center;padding:10px}.tit{margin:10px;font-size:24px;font-family:'宋体';padding-top:15px}.div-tit{padding-top:10px}table{width:100%;border-right:1px solid;border-bottom:1px solid;font-size:14px}table td{border-left:1px solid;border-top:1px solid;height:38px}.sp1{width:50%;float:left;padding-bottom:10px}.sp2{width:50%;float:left;text-align:center}</style></head><body><h1 class='tit'>billTitle</h1><div class='div-tit'><span class='sp1'>结算时间:payTime</span><span class='sp1'>入库单号:serId</span></div><table cellspacing='0'cellpadding='0'><tr><td width='12.5%'>发货单位</td><td colspan='3'width='37.5%'>customerName</td><td width='12.5%'>收货单位</td><td colspan='3'width='37.5%'>deptName</td></tr><tr><td width='12.5%'>开户银行</td><td colspan='3'width='37.5%'>bank</td><td>毛重(KG)</td><td>fullWeight</td><td>皮重(KG)</td><td>emptyWeight</td></tr><tr><td width='12.5%'>银行卡号</td><td colspan='3'width='37.5%'>banNum</td><td>净重(KG)</td><td>netWeight</td><td>总扣重(KG)</td><td>deSum</td></tr><tr><td>入库仓库</td><td>depotName</td><td>粮食品种</td><td>foodVariety</td><td>粮食单价</td><td>payPrice</td><td>结算重量</td><td>settleWeight</td></tr><tr><td>保管员</td><td>keeperName</td><td>承运人</td><td>driverName</td><td>其他费用</td><td>otherSum</td><td>结算费用</td><td>paySum</td></tr><tr><td>备注</td><td colspan='3'>remark</td><td>大写金额</td><td colspan='3'>moneyName</td></tr></table><div class='div-tit'><span class=\"sp2\">收货单位签字:</span><span class=\"sp2\">客户签字:</span></div></body></html>";
    public static String IN_SETTLE_DEFAULT = "<!DOCTYPE html><html lang='zh-cn'><head><meta http-equiv='Content-Type'content='text/html;charset=UTF-8'><title>结算单</title><style>body{text-align:center;padding:10px;font-family:'宋体'}.tit{font-size:24px;flex-grow:1;text-align:center}.div-tit{padding-top:6px}table{width:100%;border-right:1px solid;border-bottom:1px solid;font-size:14px;border-collapse:collapse}table td{border-left:1px solid;border-top:1px solid;height:32px}.sp1{width:33%;float:left;padding-bottom:5px}.sp2{width:25%;float:left;text-align:center}.sp3{width:16.6%;float:left;text-align:center}.txt-left{text-align:left}.txt-center{text-align:center}.txt-right{text-align:right}</style></head><body><h1 class='tit'><u>[billTitle]</u></h1><div class='div-tit'><span class='sp1 txt-left'>库区名称:[deptId]</span><span class='sp1 txt-center'>单据号:[id]</span><span class='sp1 txt-right'>打印时间:[payTime]</span></div><table cellspacing='0'cellpadding='0'><tr><td>客户名称</td><td colspan='7'>[customerName]</td></tr><tr><td width='12.5%'>承运人</td><td width='37.5%'colspan='3'>[userName]</td><td width='12.5%'>联系电话</td><td width='37.5%'colspan='3'>[userContact]</td></tr><tr><td>身份证号码</td><td colspan='3'>[userId]</td><td>车牌号</td><td colspan='3'>[plateNum]</td></tr><tr><td>仓库</td><td colspan='3'>[depotId]</td><td>粮食名称</td><td colspan='3'>[foodVariety]</td></tr><tr><td>备注</td><td colspan=\"7\">[remark]</td></tr><tr><td colspan=\"8\">计量信息</td></tr><tr><td>毛重</td><td colspan='2'>[fullWeight]公斤</td><td>皮重</td><td colspan='2'>[emptyWeight]公斤</td><td>扣重</td><td colspan='2'>[deOther]公斤</td></tr><tr><td colspan=\"8\">结算信息</td></tr><tr><td>单价</td><td colspan='2'>[payPrice]元/公斤</td><td>结算重量</td><td colspan='2'>[settleWeight]公斤</td><td>结算金额</td><td colspan='2'>[payMoney]元</td></tr><tr><td>大写金额</td><td colspan=\"7\">[payMoneyName]</td></tr></table><div class='div-tit'><span class='sp2 txt-left '>结算员:_______</span><span class='sp2 txt-left '>保管员:_______</span><span class='sp2 txt-left '>审核人:_______</span><span class='sp2 txt-left '>承运人:_______</span></div></body></html>";
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/InoutStockChange.java
@@ -29,7 +29,6 @@
     */
    private static final long serialVersionUID = 1L;
    public static String SORT_PROP = "updateTime";
    /**
     * å€’仓单号
     */
@@ -77,4 +76,12 @@
    @TableField("number")
    private Double number = 0.0;
    @Column(name = "stock_user", columnDefinition = "varchar(40) COMMENT '倒仓人'")
    @TableField("stock_user")
    private String stockUser;
    @Column(name = "remarks", columnDefinition = "varchar(200) COMMENT '备注信息'")
    @TableField("remarks")
    private String remarks;
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/mapper/InoutStockChangeMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.fzzy.igds.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fzzy.igds.domain.InoutStockChange;
import org.apache.ibatis.annotations.Mapper;
/**
 * @Description
 * @Author CZT
 * @Date 2025/12/08 17:48
 */
@Mapper
public interface InoutStockChangeMapper extends BaseMapper<InoutStockChange> {
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutRecordService.java
@@ -14,6 +14,7 @@
import com.fzzy.igds.mapper.InoutRecordMapper;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.igds.utils.DateUtil;
import com.fzzy.igds.utils.MoneyUtil;
import com.fzzy.igds.utils.NumberUtil;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.redis.RedisCache;
@@ -23,6 +24,7 @@
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.Date;
import java.util.List;
@@ -124,15 +126,16 @@
        if (StringUtils.isNotBlank(param.getType())) {
            queryWrapper.eq("type", param.getType());
        }
        if (StringUtils.isNotBlank(param.getSettleTag())) {
            queryWrapper.eq("settle_tag", param.getSettleTag());
        }
        if (null != param.getStart()) {
            queryWrapper.ge("create_time", DateUtil.getCurZero(param.getStart()));
        }
        if (null != param.getEnd()) {
            queryWrapper.le("create_time", DateUtil.getNextZero(param.getEnd()));
        }
        queryWrapper.eq("record_status", Constant.RECORD_STATUS_NORMAL); //正常状态的单子
        queryWrapper.or();
        queryWrapper.eq("record_status", Constant.RECORD_STATUS_ADD); //补录单子的单子
        queryWrapper.ne("record_status", Constant.RECORD_STATUS_DEL); //不是删除的单子,即正常的单子
        queryWrapper.orderByDesc("create_time");
        return queryWrapper;
@@ -649,4 +652,71 @@
        return bill;
    }
    /**
     * èŽ·å–ç»“ç®—å•
     *
     * @param
     * @return
     */
    public String printPay(InoutRecord data) {
        // è°ƒæ•´æ¨¡ç‰ˆæ•°æ®å¹¶è¿”回
        String htmlStr = InoutBill.IN_SETTLE_DEFAULT;
        //标题
        //清远出发货单位及标题,使用公司名
        String billTitle = data.getType().equals("IN") ? "入库结算单" : "出库结算单";
        htmlStr = htmlStr.replace("[billTitle]", billTitle);
        //库区名称
        SysDept dept = sysDeptService.getCacheDept(data.getCompanyId(), data.getDeptId());
        if (dept != null) {
            htmlStr = htmlStr.replace("[deptId]", null == data.getDeptId() ? "" : dept.getDeptName());
        } else {
            htmlStr = htmlStr.replace("[deptId]", "");
        }
        //业务单号
        htmlStr = htmlStr.replace("[id]", data.getId());
        //打印时间
        htmlStr = htmlStr.replace("[payTime]", null == data.getSettleTime() ? "" : DateFormatUtils.format(data.getSettleTime(), "yyyyå¹´MM月dd日"));
        //客户名称
        htmlStr = htmlStr.replace("[customerName]", null == data.getCustomerName() ? "" : data.getCustomerName());
        //承运人
        htmlStr = htmlStr.replace("[userName]", null == data.getUserName() ? "" : data.getUserName());
        //承运人联系电话
        htmlStr = htmlStr.replace("[userContact]", null == data.getUserContact() ? "" : data.getUserContact());
        //承运人身份证号
        htmlStr = htmlStr.replace("[userId]", null == data.getUserId() ? "" : data.getUserId());
        //承运人车牌号
        htmlStr = htmlStr.replace("[plateNum]", null == data.getPlateNum() ? "" : data.getPlateNum());
        //获取仓库信息
        Depot depot = depotService.getCacheDepot(data.getCompanyId(), data.getDepotId());
        if (null != depot) {
            //货位信息
            htmlStr = htmlStr.replace("[depotId]", depot.getName());
        }
        //粮食名称
        htmlStr = htmlStr.replace("[foodVariety]", null == data.getFoodVariety() ? "" : FoodVariety.getMsg(data.getFoodVariety()));
        //备注
        htmlStr = htmlStr.replace("[remark]", null == data.getRemarks() ? "" : data.getRemarks());
        //毛重
        htmlStr = htmlStr.replace("[fullWeight]", null == data.getFullWeight() ? "" : String.format("%.2f", data.getFullWeight()));
        //皮重
        htmlStr = htmlStr.replace("[emptyWeight]", null == data.getEmptyWeight() ? "" : String.format("%.2f", data.getEmptyWeight()));
        //扣重
        htmlStr = htmlStr.replace("[deOther]", null == data.getDeOther() ? "" : String.format("%.2f", data.getDeOther()));
        //粮油价格
        htmlStr = htmlStr.replace("[payPrice]", null == data.getPrice() ? "" : String.format("%.3f", data.getPrice()));
        //结算重量
        htmlStr = htmlStr.replace("[settleWeight]", String.format("%.2f", data.getSettleWeight()));
        //结算金额
        htmlStr = htmlStr.replace("[payMoney]", null == data.getSettleMoney() ? "" : String.format("%.3f", data.getSettleMoney()));
        //结算重量名称
        htmlStr = htmlStr.replace("[payMoneyName]", MoneyUtil.formatToCN(new BigDecimal(String.format("%.2f", data.getSettleMoney()))));
        return htmlStr;
    }
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutStockChangeService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,109 @@
package com.fzzy.igds.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fzzy.igds.domain.InoutStockChange;
import com.fzzy.igds.mapper.InoutStockChangeMapper;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.igds.utils.DateUtil;
import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
 * @Description
 * @Author CZT
 * @Date 2025/12/08 17:48
 */
@Slf4j
@Service
public class InoutStockChangeService {
    @Resource
    private InoutStockChangeMapper inoutStockChangeMapper;
    public void listPageData(Page<InoutStockChange> page, InoutStockChange param) {
        QueryWrapper<InoutStockChange> queryWrapper = new QueryWrapper<>();
        param.setCompanyId(ContextUtil.getCompanyId());
        param.setDeptId(ContextUtil.subDeptId(null));
        queryWrapper.eq("company_id", param.getCompanyId());
        queryWrapper.eq("dept_id", param.getDeptId());
        if(StringUtils.isNotBlank(param.getDepotIdIn())){
            queryWrapper.eq("depot_id_in", param.getDepotIdIn());
        }
        if(StringUtils.isNotBlank(param.getDepotIdOut())){
            queryWrapper.eq("depot_id_out", param.getDepotIdOut());
        }
        if (null != param.getChangeStartDate()) {
            queryWrapper.ge("change_date", DateUtil.getCurZero(param.getChangeStartDate()));
        }
        if (null != param.getChangeEndDate()) {
            queryWrapper.le("change_date", DateUtil.getNextZero(param.getChangeEndDate()));
        }
        inoutStockChangeMapper.selectPage(page, queryWrapper);
    }
    /**
     * ä¿å­˜æ•°æ®
     * @param data
     */
    public void saveData(InoutStockChange data) {
        if (StringUtils.isEmpty(data.getCompanyId())) {
            data.setCompanyId(ContextUtil.getCompanyId());
        }
        if (StringUtils.isEmpty(data.getDeptId())) {
            data.setDeptId(ContextUtil.subDeptId(null));
        }
        if(StringUtils.isEmpty(data.getId())){
            data.setId(getStrId(data.getDeptId(), data.getChangeDate()));
            data.setCreateBy(ContextUtil.getLoginUserName());
            data.setCreateTime(new Date());
        }
        data.setUpdateBy(ContextUtil.getLoginUserName());
        data.setUpdateTime(new Date());
        inoutStockChangeMapper.insert(data);
    }
    /**
     * åˆ é™¤æ•°æ®
     * @param data
     * @return
     */
    public String delData(InoutStockChange data) {
        inoutStockChangeMapper.deleteById(data);
        return null;
    }
    /**
     * èŽ·å–ä¸»é”®ID
     *
     * @param deptId
     * @param deptId
     */
    public String getStrId(String deptId, Date time) {
        QueryWrapper<InoutStockChange> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("dept_id", deptId);
        queryWrapper.ge("change_date", DateUtil.getCurZero(time));
        queryWrapper.le("change_date", DateUtil.getNextZero(time));
        //ID倒序
        queryWrapper.orderByDesc("id");
        List<InoutStockChange> list = inoutStockChangeMapper.selectList(queryWrapper);
        String oldOrderId = null;
        if (null != list && list.size() > 0) {
            oldOrderId = list.get(0).getId().substring(8);
        }
        return DateFormatUtils.format(time, "yyyyMMdd") + ContextUtil.getOrderId(oldOrderId, 4);
    }
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/MoneyUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,129 @@
package com.fzzy.igds.utils;
import java.math.BigDecimal;
/**
 *
 *
 * æ•°å­—转换为汉语中人民币的大写<br>
 *
 */
public class MoneyUtil {
    /**
     * æ±‰è¯­ä¸­æ•°å­—大写
     */
    private static final String[] CN_UPPER_NUMBER = { "零", "壹", "è´°", "叁", "肆",
            "伍", "陆", "柒", "捌", "玖" };
    /**
     * æ±‰è¯­ä¸­è´§å¸å•位大写,这样的设计类似于占位符
     */
    private static final String[] CN_UPPER_MONETRAY_UNIT = { "分", "角", "元",
            "拾", "ä½°", "仟", "万", "拾", "ä½°", "仟", "亿", "拾", "ä½°", "仟", "兆", "拾",
            "ä½°", "仟" };
    /**
     * ç‰¹æ®Šå­—符:整
     */
    private static final String CN_FULL = "整";
    /**
     * ç‰¹æ®Šå­—符:负
     */
    private static final String CN_NEGATIVE = "负";
    /**
     * é‡‘额的精度,默认值为2
     */
    private static final int MONEY_PRECISION = 2;
    /**
     * ç‰¹æ®Šå­—符:零元整
     */
    private static final String CN_ZEOR_FULL = "零元" + CN_FULL;
    /**
     * æŠŠè¾“入的金额转换为汉语中人民币的大写
     *
     * @param numberOfMoney
     *            è¾“入的金额
     * @return å¯¹åº”的汉语大写
     */
    public static String formatToCN(BigDecimal numberOfMoney) {
        StringBuffer sb = new StringBuffer();
        // -1, 0, or 1 as the value of this BigDecimal is negative, zero, or
        // positive.
        int signum = numberOfMoney.signum();
        // é›¶å…ƒæ•´çš„æƒ…况
        if (signum == 0) {
            return CN_ZEOR_FULL;
        }
        // è¿™é‡Œä¼šè¿›è¡Œé‡‘额的四舍五入
        long number = numberOfMoney.movePointRight(MONEY_PRECISION)
                .setScale(0, 4).abs().longValue();
        // å¾—到小数点后两位值
        long scale = number % 100;
        int numUnit = 0;
        int numIndex = 0;
        boolean getZero = false;
        // åˆ¤æ–­æœ€åŽä¸¤ä½æ•°ï¼Œä¸€å…±æœ‰å››ä¸­æƒ…况:00 = 0, 01 = 1, 10, 11
        if (!(scale > 0)) {
            numIndex = 2;
            number = number / 100;
            getZero = true;
        }
        if ((scale > 0) && (!(scale % 10 > 0))) {
            numIndex = 1;
            number = number / 10;
            getZero = true;
        }
        int zeroSize = 0;
        while (true) {
            if (number <= 0) {
                break;
            }
            // æ¯æ¬¡èŽ·å–åˆ°æœ€åŽä¸€ä¸ªæ•°
            numUnit = (int) (number % 10);
            if (numUnit > 0) {
                if ((numIndex == 9) && (zeroSize >= 3)) {
                    sb.insert(0, CN_UPPER_MONETRAY_UNIT[6]);
                }
                if ((numIndex == 13) && (zeroSize >= 3)) {
                    sb.insert(0, CN_UPPER_MONETRAY_UNIT[10]);
                }
                sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);
                sb.insert(0, CN_UPPER_NUMBER[numUnit]);
                getZero = false;
                zeroSize = 0;
            } else {
                ++zeroSize;
                if (!(getZero)) {
                    sb.insert(0, CN_UPPER_NUMBER[numUnit]);
                }
                if (numIndex == 2) {
                    if (number > 0) {
                        sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);
                    }
                } else if (((numIndex - 2) % 4 == 0) && (number % 1000 > 0)) {
                    sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);
                }
                getZero = true;
            }
            // è®©number每次都去掉最后一个数
            number = number / 10;
            ++numIndex;
        }
        // å¦‚æžœsignum == -1,则说明输入的数字为负数,就在最前面追加特殊字符:负
        if (signum == -1) {
            sb.insert(0, CN_NEGATIVE);
        }
        // è¾“入的数字小数点后两位为"00"的情况,则要在最后追加特殊字符:整
        if (!(scale > 0)) {
            sb.append(CN_FULL);
        }
        return sb.toString();
    }
    public static void main(String[] args) {
        double money = 11901.1;
        BigDecimal numberOfMoney = new BigDecimal(money);
        String s = MoneyUtil.formatToCN(numberOfMoney);
        System.out.println("你输入的金额为:【" + money + "】   #--# [" + s.toString()
                + "]");
    }
}
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutDataPR.java
@@ -32,7 +32,6 @@
     *
     * @param page
     * @param param
     * @throws Exception
     */
    @DataProvider
    public void pageInoutData(Page<InoutRecord> page, InoutParam param) {
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutList.view.xml
@@ -316,7 +316,7 @@
        </Property>
      </PropertyDef>
      <PropertyDef name="plateNum">
        <Property name="label">车牌号号</Property>
        <Property name="label">车牌号</Property>
      </PropertyDef>
      <PropertyDef name="foodVariety">
        <Property></Property>
@@ -712,7 +712,7 @@
      <Property name="iconClass">fa fa-tasks</Property>
      <Property name="caption">单据信息</Property>
      <Property name="width">1200</Property>
      <Property name="showCaptionBar">false</Property>
      <Property name="closeable">false</Property>
      <Buttons>
        <Button id="btnOK">
          <ClientEvent name="onClick">var data = view.get(&quot;#dsMain.data:#&quot;);&#xD;
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutSettle.view.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,920 @@
<?xml version="1.0" encoding="UTF-8"?>
<ViewConfig>
  <Arguments/>
  <Context/>
  <Model>
    <DataType name="dtQuery">
      <Property name="creationType">com.fzzy.igds.data.InoutParam</Property>
      <PropertyDef name="plateNum">
        <Property name="label">车牌号</Property>
      </PropertyDef>
      <PropertyDef name="type">
        <Property name="label">出入库类型</Property>
        <Property name="mapping">
          <Property name="mapValues">
            <Collection>
              <Entity>
                <Property name="name">出库</Property>
                <Property name="value">OUT</Property>
              </Entity>
              <Entity>
                <Property name="name">入库</Property>
                <Property name="value">IN</Property>
              </Entity>
            </Collection>
          </Property>
          <Property name="keyProperty">value</Property>
          <Property name="valueProperty">name</Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="settleTag">
        <Property name="label">是否结算</Property>
        <Property name="mapping">
          <Property name="mapValues">
            <Collection>
              <Entity>
                <Property name="name">未结算</Property>
                <Property name="value">N</Property>
              </Entity>
              <Entity>
                <Property name="name">已结算</Property>
                <Property name="value">Y</Property>
              </Entity>
            </Collection>
          </Property>
          <Property name="keyProperty">value</Property>
          <Property name="valueProperty">name</Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="start">
        <Property name="label">开始时间</Property>
        <Property name="dataType">Date</Property>
      </PropertyDef>
      <PropertyDef name="end">
        <Property name="label">截止时间</Property>
        <Property name="dataType">Date</Property>
      </PropertyDef>
    </DataType>
    <DataType name="dtMain">
      <Property name="creationType">com.fzzy.igds.domain.InoutRecord</Property>
      <PropertyDef name="id">
        <Property></Property>
        <Property name="label">单据号</Property>
        <Property name="readOnly">true</Property>
      </PropertyDef>
      <PropertyDef name="companyId">
        <Property></Property>
        <Property name="label">组织编码</Property>
      </PropertyDef>
      <PropertyDef name="progress">
        <Property></Property>
        <Property name="label">流程进度</Property>
        <Property name="mapping">
          <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#sysDictData&quot;).getResult(&quot;PROCESS_STATUS_&quot;)}</Property>
          <Property name="keyProperty">dictValue</Property>
          <Property name="valueProperty">dictLabel</Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="recordStatus">
        <Property></Property>
        <Property name="label">数据状态</Property>
        <Property name="mapping">
          <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#sysDictData&quot;).getResult(&quot;RECORD_STATUS&quot;)}</Property>
          <Property name="keyProperty">dictValue</Property>
          <Property name="valueProperty">dictLabel</Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="checkStatus">
        <Property></Property>
        <Property name="label">扦样结果</Property>
        <Property name="mapping">
          <Property name="mapValues">${dorado.getDataProvider(&quot;dicPR#sysDictData&quot;).getResult(&quot;CHECK_STATUS&quot;)}</Property>
          <Property name="keyProperty">dictValue</Property>
          <Property name="valueProperty">dictLabel</Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="registerTime">
        <Property name="dataType">DateTime</Property>
        <Property name="label">登记时间</Property>
      </PropertyDef>
      <PropertyDef name="registerUser">
        <Property></Property>
        <Property name="label">登记人员</Property>
      </PropertyDef>
      <PropertyDef name="userName">
        <Property></Property>
        <Property name="label">承运人</Property>
      </PropertyDef>
      <PropertyDef name="userId">
        <Property></Property>
        <Property name="label">身份证号</Property>
      </PropertyDef>
      <PropertyDef name="userContact">
        <Property></Property>
        <Property name="label">联系方式</Property>
      </PropertyDef>
      <PropertyDef name="userAddress">
        <Property></Property>
        <Property name="label">承运人地址</Property>
      </PropertyDef>
      <PropertyDef name="plateNum">
        <Property></Property>
        <Property name="label">车牌号</Property>
        <Property name="readOnly">true</Property>
      </PropertyDef>
      <PropertyDef name="customerName">
        <Property></Property>
        <Property name="label">往来单位</Property>
        <Property name="required">true</Property>
      </PropertyDef>
      <PropertyDef name="foodLocation">
        <Property></Property>
        <Property name="label">粮食产地</Property>
      </PropertyDef>
      <PropertyDef name="foodYear">
        <Property></Property>
        <Property name="label">粮食年份</Property>
      </PropertyDef>
      <PropertyDef name="deOther">
        <Property name="dataType">Double</Property>
        <Property name="label">扣重</Property>
        <Property name="displayFormat">0.0 KG</Property>
      </PropertyDef>
      <PropertyDef name="fullWeight">
        <Property name="dataType">Double</Property>
        <Property name="label">满车称重</Property>
        <Property name="required">true</Property>
        <Property name="displayFormat">0.0 KG</Property>
      </PropertyDef>
      <PropertyDef name="fullWeightTime">
        <Property name="dataType">DateTime</Property>
        <Property name="label">满车称时间</Property>
      </PropertyDef>
      <PropertyDef name="fullWeightUser">
        <Property></Property>
        <Property name="label">满车称重人</Property>
      </PropertyDef>
      <PropertyDef name="emptyWeight">
        <Property name="dataType">Double</Property>
        <Property name="label">空车称重</Property>
        <Property name="required">true</Property>
        <Property name="displayFormat">0.0 KG</Property>
      </PropertyDef>
      <PropertyDef name="emptyWeightTime">
        <Property name="dataType">DateTime</Property>
        <Property name="label">空车称时间</Property>
      </PropertyDef>
      <PropertyDef name="emptyWeightUser">
        <Property></Property>
        <Property name="label">空车称重人</Property>
      </PropertyDef>
      <PropertyDef name="netWeight">
        <Property name="dataType">Double</Property>
        <Property name="label">净重</Property>
        <Property name="displayFormat">0.0 KG</Property>
      </PropertyDef>
      <PropertyDef name="settleWeight">
        <Property name="dataType">Double</Property>
        <Property name="label">结算净重</Property>
        <Property name="required">true</Property>
        <Property name="displayFormat">0.0 KG</Property>
      </PropertyDef>
      <PropertyDef name="recordWeight">
        <Property name="dataType">Double</Property>
        <Property name="label">入库重量</Property>
        <Property name="displayFormat">0.0 KG</Property>
      </PropertyDef>
      <PropertyDef name="handleStart">
        <Property name="dataType">Date</Property>
        <Property name="label">值仓开始时间</Property>
      </PropertyDef>
      <PropertyDef name="handleEnd">
        <Property name="dataType">Date</Property>
        <Property name="label">值仓结束时间</Property>
      </PropertyDef>
      <PropertyDef name="handleUser">
        <Property></Property>
        <Property name="label">值仓操作人</Property>
      </PropertyDef>
      <PropertyDef name="completeTime">
        <Property name="dataType">DateTime</Property>
        <Property name="label">完成时间</Property>
        <Property name="required">true</Property>
      </PropertyDef>
      <PropertyDef name="completeUser">
        <Property></Property>
        <Property name="label">完成确认人</Property>
      </PropertyDef>
      <PropertyDef name="remarks">
        <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="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="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="type">
        <Property name="label">出入库类型</Property>
        <Property name="mapping">
          <Property name="mapValues">
            <Collection>
              <Entity>
                <Property name="name">出库</Property>
                <Property name="value">OUT</Property>
              </Entity>
              <Entity>
                <Property name="name">入库</Property>
                <Property name="value">IN</Property>
              </Entity>
            </Collection>
          </Property>
          <Property name="keyProperty">value</Property>
          <Property name="valueProperty">name</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="checkUser">
        <Property></Property>
        <Property name="label">质检人</Property>
      </PropertyDef>
      <PropertyDef name="price">
        <Property name="dataType">double</Property>
        <Property name="label">粮食定价</Property>
        <Property name="displayFormat">0.00 å…ƒ/公斤</Property>
      </PropertyDef>
      <PropertyDef name="noticeId">
        <Property></Property>
        <Property name="label">通知单编码</Property>
        <Property name="readOnly">true</Property>
      </PropertyDef>
      <PropertyDef name="foodLocationId">
        <Property></Property>
        <Property name="label">产地名称代码</Property>
      </PropertyDef>
      <PropertyDef name="checkTime">
        <Property name="dataType">DateTime</Property>
        <Property name="label">质检时间</Property>
      </PropertyDef>
      <PropertyDef name="perWet">
        <Property name="dataType">Double</Property>
        <Property name="label">水分</Property>
        <Property name="displayFormat">0.00 %</Property>
      </PropertyDef>
      <PropertyDef name="perImpurity">
        <Property name="dataType">Double</Property>
        <Property name="label">杂质</Property>
        <Property name="displayFormat">0.00 %</Property>
      </PropertyDef>
      <PropertyDef name="settleMoney">
        <Property name="dataType">Double</Property>
        <Property name="label">结算金额</Property>
        <Property name="displayFormat">0.00 å…ƒ</Property>
      </PropertyDef>
      <PropertyDef name="settleTag">
        <Property></Property>
        <Property name="label">是否结算</Property>
        <Property name="mapping">
          <Property name="mapValues">
            <Collection>
              <Entity>
                <Property name="name">未结算</Property>
                <Property name="value">N</Property>
              </Entity>
              <Entity>
                <Property name="name">已结算</Property>
                <Property name="value">Y</Property>
              </Entity>
            </Collection>
          </Property>
          <Property name="keyProperty">value</Property>
          <Property name="valueProperty">name</Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="settleTime">
        <Property name="dataType">DateTime</Property>
        <Property name="label">结算时间</Property>
        <Property name="readOnly">true</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>
  </Model>
  <View layout="padding:10">
    <ClientEvent name="onReady">var deptId = window.parent.DEPT_ID;//父页面中的分库编码&#xD;
//默认查询查询提条件&#xD;
view.get(&quot;#dsQuery&quot;).insert({&#xD;
    deptId:deptId&#xD;
});&#xD;
/**&#xD;
 * æŸ¥è¯¢&#xD;
 */&#xD;
query = function(){&#xD;
    var data = view.get(&quot;#dsQuery.data&quot;);&#xD;
    view.get(&quot;#dsMain&quot;).set(&quot;parameter&quot;,data).flushAsync();&#xD;
}&#xD;
query();&#xD;
/**&#xD;
* è‡ªåŠ¨è®¡ç®—&#xD;
* @param name&#xD;
*/&#xD;
payMoney = function () {&#xD;
    &#xD;
    var curData = view.get(&quot;#dsMain.data:#&quot;);&#xD;
    var price = curData.get(&quot;price&quot;);&#xD;
    var settleWeight = curData.get(&quot;settleWeight&quot;);&#xD;
    var settleMoney = Number(price)*Number(settleWeight);&#xD;
    &#xD;
    curData.set(&quot;settleMoney&quot;, settleMoney);&#xD;
};&#xD;
//打印结算单&#xD;
printPay = function () {&#xD;
    var data = view.get(&quot;#dataGridSettle&quot;).get(&quot;selection&quot;);&#xD;
    if (!data) return;&#xD;
        if (&quot;DEL&quot; == data.get(&quot;recordStatus&quot;)) {&#xD;
        $alert(&quot;异常处理的信息不支持打印!&quot;);&#xD;
        return;&#xD;
    }&#xD;
    if (&quot;RECORD&quot; != data.get(&quot;progress&quot;)) {&#xD;
        $alert(&quot;流程未完成不支持打印!&quot;);&#xD;
        return;&#xD;
    }&#xD;
    if (&quot;N&quot; == data.get(&quot;settleTag&quot;)) {&#xD;
        $alert(&quot;未结算的数据不支持打印!&quot;);&#xD;
        return;&#xD;
    }&#xD;
    view.get(&quot;#ajaxPrint&quot;).set(&quot;parameter&quot;, data).execute(function (result) {&#xD;
        printBill(result);&#xD;
    });&#xD;
};&#xD;
/**&#xD;
* æ‰“印&#xD;
*/&#xD;
printBill = function (htmlStr) {&#xD;
    var LODOP = CLODOP;&#xD;
    LODOP.PRINT_INIT(&quot;称重单&quot;);&#xD;
    LODOP.SET_PRINT_PAGESIZE(1, 2100, 1400, &quot;A4&quot;);&#xD;
    LODOP.ADD_PRINT_HTM(0, 0, &quot;100%&quot;, &quot;100%&quot;, htmlStr);&#xD;
    LODOP.PREVIEW();&#xD;
};&#xD;
</ClientEvent>
    <Property name="packages">font-awesome,css-common</Property>
    <Property name="javaScriptFile">./static/js/plugins/lodop/LodopFuncs.js</Property>
    <DataSet id="dsMain">
      <Property name="dataProvider">inoutSettlePR#pageInoutSettleData</Property>
      <Property name="pageSize">20</Property>
      <Property name="dataType">[dtMain]</Property>
      <Property name="loadMode">manual</Property>
    </DataSet>
    <DataSet id="dsQuery">
      <Property name="dataType">dtQuery</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">type</Property>
          <Property name="property">type</Property>
          <Editor/>
        </AutoFormElement>
        <AutoFormElement>
          <Property name="name">settleTag</Property>
          <Property name="property">settleTag</Property>
          <Editor/>
        </AutoFormElement>
        <AutoFormElement>
          <Property name="name">start</Property>
          <Property name="property">start</Property>
          <Property name="trigger">defaultDateDropDown</Property>
          <Editor/>
        </AutoFormElement>
        <AutoFormElement>
          <Property name="name">end</Property>
          <Property name="property">end</Property>
          <Property name="trigger">defaultDateDropDown</Property>
          <Editor/>
        </AutoFormElement>
        <Button>
          <ClientEvent name="onClick">query();&#xD;</ClientEvent>
          <Property name="caption">搜索</Property>
          <Property name="iconClass">fa fa-search</Property>
          <Property name="exClassName">btn-q1</Property>
        </Button>
        <Button>
          <ClientEvent name="onClick">var deptId = window.parent.DEPT_ID;//父页面中的分库编码&#xD;
view.get(&quot;#dsQuery&quot;).setData({deptId:deptId});</ClientEvent>
          <Property name="caption">重置</Property>
          <Property name="exClassName">btn-q2</Property>
          <Property name="iconClass">fa fa-refresh</Property>
        </Button>
      </AutoForm>
    </Container>
    <Container>
      <Property name="className">c-data</Property>
      <ToolBar>
        <ToolBarButton>
          <ClientEvent name="onClick">var data = view.get(&quot;#dataGridSettle&quot;).get(&quot;selection&quot;);&#xD;
            if(data){&#xD;
            view.get(&quot;#dialogMain&quot;).show();&#xD;
            }else{&#xD;
            $notify(&quot;请选择需要结算的信息……&quot;);&#xD;
            }</ClientEvent>
          <Property name="caption">结算</Property>
          <Property name="exClassName">btn1</Property>
          <Property name="width">100</Property>
          <Property name="iconClass">fa fa-plus</Property>
        </ToolBarButton>
        <ToolBarButton>
          <ClientEvent name="onClick">var data = view.get(&quot;#dataGridSettle&quot;).get(&quot;selection&quot;);&#xD;
if(data){&#xD;
    view.get(&quot;#dialogMain&quot;).show();&#xD;
}else{&#xD;
    $notify(&quot;请选择需要修改的信息……&quot;);&#xD;
}</ClientEvent>
          <Property name="caption">查看</Property>
          <Property name="exClassName">btn2</Property>
          <Property name="width">100</Property>
          <Property name="iconClass">fa fa-pencil-square-o</Property>
        </ToolBarButton>
        <ToolBarButton>
          <ClientEvent name="onClick">var data = view.get(&quot;#dataGridSettle&quot;).get(&quot;selection&quot;);&#xD;
            if (!data) {&#xD;
            $alert(&quot;请先选择数据!&quot;);&#xD;
            return;&#xD;
            }&#xD;
            &#xD;
            printPay();&#xD;
          </ClientEvent>
          <Property name="caption">打印结算单</Property>
          <Property name="exClassName">btn4</Property>
          <Property name="iconClass">fa fa-print</Property>
          <Property name="width">120</Property>
        </ToolBarButton>
      </ToolBar>
      <DataGrid id="dataGridSettle" layoutConstraint="padding:8">
        <ClientEvent name="onDataRowClick">view.get(&quot;#dataGridSettle&quot;).set(&quot;selection&quot;,arg.data);</ClientEvent>
        <Property name="dataSet">dsMain</Property>
        <Property name="selectionMode">singleRow</Property>
        <Property name="readOnly">true</Property>
        <RowSelectorColumn/>
        <RowNumColumn>
          <Property name="width">50</Property>
        </RowNumColumn>
        <DataColumn name="id">
          <ClientEvent name="onRenderCell">arg.dom.style.fontWeight = &quot;bold&quot;;&#xD;
            arg.dom.style.color = &quot;#f67d06&quot;;&#xD;
            arg.processDefault = true;</ClientEvent>
          <Property name="property">id</Property>
          <Property name="align">center</Property>
          <Property name="width">150</Property>
        </DataColumn>
        <DataColumn name="type">
          <Property name="property">type</Property>
          <Property name="align">center</Property>
          <Property name="width">90</Property>
        </DataColumn>
        <DataColumn name="plateNum">
          <ClientEvent name="onRenderCell">arg.dom.style.fontWeight = &quot;bold&quot;;&#xD;
            arg.processDefault = true;</ClientEvent>
          <Property name="property">plateNum</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn>
          <Property name="property">customerName</Property>
          <Property name="name">customerName</Property>
          <Property name="align">center</Property>
          <Property name="caption">往来单位</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 name="foodVariety">
          <Property name="property">foodVariety</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn name="settleTag">
          <ClientEvent name="onRenderCell">arg.dom.style.fontWeight = &quot;bold&quot;;&#xD;
            arg.processDefault = true;</ClientEvent>
          <Property name="property">settleTag</Property>
          <Property name="align">center</Property>
          <Property name="width">100</Property>
        </DataColumn>
        <DataColumn name="settleWeight">
          <Property name="property">settleWeight</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn name="price">
          <Property name="property">price</Property>
          <Property name="caption">单价</Property>
          <Property name="align">center</Property>
          <Property name="width">120</Property>
        </DataColumn>
        <DataColumn name="settleMoney">
          <ClientEvent name="onRenderCell">arg.dom.style.fontWeight = &quot;bold&quot;;&#xD;
            arg.processDefault = true;</ClientEvent>
          <Property name="property">settleMoney</Property>
          <Property name="align">center</Property>
          <Property name="width">150</Property>
        </DataColumn>
        <DataColumn name="settleTime">
          <Property name="property">settleTime</Property>
          <Property name="align">center</Property>
          <Property name="width">180</Property>
        </DataColumn>
      </DataGrid>
      <ToolBar layoutConstraint="bottom">
        <Fill/>
        <DataPilot layoutConstraint="right">
          <Property name="itemCodes">pageSize,pages</Property>
          <Property name="dataSet">dsMain</Property>
        </DataPilot>
      </ToolBar>
    </Container>
    <Dialog id="dialogMain" layout="regionPadding:8">
      <Property name="iconClass">fa fa-tasks</Property>
      <Property name="caption">结算信息</Property>
      <Property name="width">1200</Property>
      <Property name="closeable">false</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;#uaSave&quot;).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">self.get(&quot;parent&quot;).close();</ClientEvent>
          <Property name="caption">取消操作</Property>
          <Property name="exClassName">btn3</Property>
          <Property name="iconClass">fa fa-times-circle</Property>
          <Property name="width">120</Property>
        </Button>
      </Buttons>
      <Children>
        <FieldSet layout="padding:5">
          <Property name="caption">基本信息</Property>
          <Buttons/>
          <Children>
            <AutoForm>
              <Property name="dataSet">dsMain</Property>
              <Property name="cols">*,*,*</Property>
              <Property name="labelAlign">right</Property>
              <Property name="labelSeparator">:</Property>
              <Property name="labelWidth">100</Property>
              <AutoFormElement>
                <Property name="name">id</Property>
                <Property name="property">id</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">plateNum</Property>
                <Property name="property">plateNum</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">depotId</Property>
                <Property name="property">depotId</Property>
                <Property name="readOnly">true</Property>
                <Property name="label">装卸仓库</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">foodVariety</Property>
                <Property name="property">foodVariety</Property>
                <Property name="readOnly">true</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">perWet</Property>
                <Property name="property">perWet</Property>
                <Property name="readOnly">true</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">perImpurity</Property>
                <Property name="property">perImpurity</Property>
                <Property name="readOnly">true</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">foodLocation</Property>
                <Property name="property">foodLocation</Property>
                <Property name="trigger">ddDicArea</Property>
                <Property name="readOnly">true</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="label">客户名称</Property>
                <Property name="property">customerName</Property>
                <Property name="editable">false</Property>
                <Property name="trigger">ddNotice</Property>
                <Property name="readOnly">true</Property>
                <Editor/>
              </AutoFormElement>
            </AutoForm>
          </Children>
        </FieldSet>
        <FieldSet layout="padding:5">
          <Property name="caption">重量信息(单位:KG)</Property>
          <Buttons/>
          <Children>
            <AutoForm>
              <Property name="dataSet">dsMain</Property>
              <Property name="cols">*,50,*,50,*,50</Property>
              <Property name="labelAlign">right</Property>
              <Property name="labelWidth">100</Property>
              <Property name="labelSeparator">:</Property>
              <AutoFormElement layoutConstraint="colSpan:2">
                <Property name="name">fullWeight</Property>
                <Property name="property">fullWeight</Property>
                <Property name="readOnly">true</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement layoutConstraint="colSpan:2">
                <Property name="name">emptyWeight</Property>
                <Property name="property">emptyWeight</Property>
                <Property name="readOnly">true</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement layoutConstraint="colSpan:2">
                <Property name="name">netWeight</Property>
                <Property name="property">netWeight</Property>
                <Property name="readOnly">true</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement layoutConstraint="colSpan:2">
                <Property name="name">deOther</Property>
                <Property name="property">deOther</Property>
                <Property name="readOnly">true</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement layoutConstraint="colSpan:2">
                <Property name="name">settleWeight</Property>
                <Property name="property">settleWeight</Property>
                <Property name="readOnly">true</Property>
                <Editor/>
              </AutoFormElement>
            </AutoForm>
          </Children>
        </FieldSet>
        <FieldSet layout="padding:5">
          <Property name="caption">结算信息</Property>
          <Buttons/>
          <Children>
            <AutoForm>
              <Property name="dataSet">dsMain</Property>
              <Property name="cols">*,*,*</Property>
              <Property name="labelAlign">right</Property>
              <Property name="labelSeparator">:</Property>
              <Property name="labelWidth">100</Property>
              <AutoFormElement>
                <ClientEvent name="onBlur">payMoney();</ClientEvent>
                <Property name="name">price</Property>
                <Property name="property">price</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">settleMoney</Property>
                <Property name="property">settleMoney</Property>
                <Property name="readOnly">true</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">settleTime</Property>
                <Property name="property">settleTime</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement layoutConstraint="colSpan:3">
                <Property name="name">remarks</Property>
                <Property name="property">remarks</Property>
                <Editor/>
              </AutoFormElement>
            </AutoForm>
          </Children>
        </FieldSet>
      </Children>
      <Tools/>
    </Dialog>
    <UpdateAction id="uaSave">
      <Property name="dataResolver">inoutSettlePR#saveSettle</Property>
      <UpdateItem>
        <Property name="dataSet">dsMain</Property>
        <Property name="dataPath">[#current]</Property>
        <Property name="validateData">false</Property>
      </UpdateItem>
    </UpdateAction>
    <AjaxAction id="ajaxPrint">
      <Property name="service">inoutSettlePR#printPay</Property>
      <Property name="executingMessage">正在执行打印……</Property>
      <Property name="async">false</Property>
    </AjaxAction>
    <CustomDropDown id="ddNotice">
      <Property name="minHeight">400</Property>
      <Property name="assignmentMap">noticeId=id,customerName=customerName</Property>
      <Property name="minWidth">1000</Property>
      <Property name="autoOpen">true</Property>
      <Container layout="regionPadding:5">
        <DataSet id="dsNotice">
          <Property name="dataProvider">inoutNoticePR#queryNoticeByKey</Property>
          <Property name="parameter">
            <Entity>
              <Property name="type">${request.getParameter('type')}</Property>
            </Entity>
          </Property>
          <Property name="dataType">[dtNoticeDto]</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;
              var type = &quot;${request.getParameter('type')}&quot;;&#xD;
              view.get(&quot;#dsNotice&quot;).set(&quot;parameter&quot;,{key: key,type: type}).flushAsync();</ClientEvent>
            <Property name="caption">查询</Property>
            <Property name="exClassName">btn1</Property>
            <Property name="iconClass">fa fa-search</Property>
          </Button>
          <Button>
            <ClientEvent name="onClick">var data = view.get(&quot;#dsNotice.data:#&quot;);&#xD;
              if(data){&#xD;
              view.get(&quot;#ddNotice&quot;).close(data.toJSON());&#xD;
              }</ClientEvent>
            <Property name="iconClass">fa fa-check</Property>
            <Property name="exClassName">btn2</Property>
            <Property name="caption">确定</Property>
          </Button>
        </Container>
        <DataGrid>
          <ClientEvent name="onDataRowDoubleClick">var data = view.get(&quot;#dsNotice.data:#&quot;);&#xD;
            if(data){&#xD;
            view.get(&quot;#ddNotice&quot;).close(data.toJSON());&#xD;
            }</ClientEvent>
          <Property name="dataSet">dsNotice</Property>
          <Property name="readOnly">true</Property>
          <DataColumn name="name">
            <Property name="property">name</Property>
            <Property name="align">center</Property>
            <Property name="width">100</Property>
          </DataColumn>
          <DataColumn>
            <Property name="property">customerName</Property>
            <Property name="align">center</Property>
            <Property name="name">customerName</Property>
            <Property name="width">240</Property>
          </DataColumn>
          <DataColumn name="foodVariety">
            <Property name="property">foodVariety</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="year">
            <Property name="property">year</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="contract">
            <Property name="property">contract</Property>
            <Property name="align">center</Property>
            <Property name="width">300</Property>
          </DataColumn>
        </DataGrid>
      </Container>
    </CustomDropDown>
    <CustomDropDown id="ddDicArea">
      <Property name="minHeight">500</Property>
      <Property name="minWidth">500</Property>
      <Property name="assignmentMap">foodLocation=name,foodLocationId=code</Property>
      <Container layout="regionPadding:5">
        <DataSet id="dsDicArea">
          <Property name="dataProvider">dicAreaPR#pageList</Property>
          <Property name="parameter"></Property>
          <Property name="dataType">[dtArea]</Property>
          <Property name="pageSize">1000</Property>
        </DataSet>
        <Container layout="hbox regionPadding:5">
          <TextEditor id="key2">
            <Property name="blankText"> -名称或简拼,北京市  bjs -</Property>
            <Property name="width">200</Property>
          </TextEditor>
          <Button>
            <ClientEvent name="onClick">var key = view.get(&quot;#key2.value&quot;);&#xD;
              view.get(&quot;#dsDicArea&quot;).set(&quot;parameter&quot;,{key:key}).flushAsync();</ClientEvent>
            <Property name="caption">查询</Property>
            <Property name="iconClass">fa fa-search</Property>
            <Property name="exClassName">btn1</Property>
          </Button>
          <Button>
            <ClientEvent name="onClick">var data = view.get(&quot;#dsDicArea.data:#&quot;);&#xD;
              if(data){&#xD;
              view.get(&quot;#ddDicArea&quot;).close(data.toJSON());&#xD;
              }</ClientEvent>
            <Property name="iconClass">fa fa-check</Property>
            <Property name="exClassName">btn2</Property>
            <Property name="caption">确定</Property>
          </Button>
        </Container>
        <DataGrid>
          <ClientEvent name="onDataRowDoubleClick">var data = view.get(&quot;#dsDicArea.data:#&quot;);&#xD;
            if(data){&#xD;
            view.get(&quot;#ddDicArea&quot;).close(data.toJSON());&#xD;
            }</ClientEvent>
          <Property name="dataSet">dsDicArea</Property>
          <Property name="readOnly">true</Property>
          <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="readOnly">true</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="code">
            <Property name="property">code</Property>
            <Property name="readOnly">true</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="simple">
            <Property name="property">simple</Property>
            <Property name="readOnly">true</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </DataGrid>
        <DataPilot layoutConstraint="bottom">
          <Property name="dataSet">dsDicArea</Property>
        </DataPilot>
      </Container>
    </CustomDropDown>
    <YearDropDown id="yearDropDown"/>
  </View>
</ViewConfig>
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutSettlePR.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,83 @@
package com.fzzy.igds;
import com.bstek.dorado.annotation.DataProvider;
import com.bstek.dorado.annotation.DataResolver;
import com.bstek.dorado.annotation.Expose;
import com.bstek.dorado.data.provider.Page;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.data.InoutParam;
import com.fzzy.igds.domain.InoutRecord;
import com.fzzy.igds.service.InoutRecordService;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Date;
/**
 * @Description å‡ºå…¥åº“结算
 * @Author CZT
 * @Date 2025/12/8 10:24
 */
@Component
public class InoutSettlePR {
    @Resource
    private InoutRecordService inoutRecordService;
    /**
     * æŸ¥è¯¢å¾…结算的数据
     * inoutSettlePR#pageInoutSettleData
     *
     * @param page
     * @param param
     */
    @DataProvider
    public void pageInoutSettleData(Page<InoutRecord> page, InoutParam param) {
        com.baomidou.mybatisplus.extension.plugins.pagination.Page<InoutRecord> corePage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPageNo(), page.getPageSize());
        if(null == param) {
            param = new InoutParam();
        }
        inoutRecordService.listPageInout(corePage, param);
        // é‡æ–°å°è£…
        page.setEntities(corePage.getRecords());
        page.setEntityCount(Integer.parseInt(String.valueOf(corePage.getTotal())));
    }
    /**
     * ä¿®æ”¹æ•°æ® inoutSettlePR#saveSettle
     */
    @DataResolver
    public String saveSettle(InoutRecord data) {
        if (Constant.RECORD_STATUS_DEL.equals(data.getRecordStatus())) {
            return "系统:已经删除的数据不支持修改!";
        }
        if (!Constant.PROGRESS_RECORD.equals(data.getProgress())) {
            return "系统:未结束流程的数据不支持修改!";
        }
        if(data.getSettleMoney() > 0){
            data.setSettleTag(Constant.YN_Y);
            data.setSettleTime(new Date());
        }
        int i = inoutRecordService.updateInoutRecord(data);
        if (i > 0) {
            return null;
        } else {
            return "保存失败!";
        }
    }
    /**
     * inoutDataPR#printPay èŽ·å–ç»“ç®—æ‰“å°å•ä¿¡æ¯
     *
     * @param data
     * @return
     */
    @Expose
    public String printPay(InoutRecord data) {
        return inoutRecordService.printPay(data);
    }
}
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutStockChange.view.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,582 @@
<?xml version="1.0" encoding="UTF-8"?>
<ViewConfig>
  <Arguments/>
  <Context/>
  <Model>
    <DataType name="dtQuery">
      <Property name="creationType">com.fzzy.igds.domain.InoutStockChange</Property>
      <PropertyDef name="depotIdIn">
        <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="depotIdOut">
        <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="changeStartDate">
        <Property name="label">开始时间</Property>
        <Property name="dataType">Date</Property>
      </PropertyDef>
      <PropertyDef name="changeEndDate">
        <Property name="label">截止时间</Property>
        <Property name="dataType">Date</Property>
      </PropertyDef>
    </DataType>
    <DataType name="dtMain">
      <Property name="creationType">com.fzzy.igds.domain.InoutStockChange</Property>
      <PropertyDef name="id">
        <Property></Property>
        <Property name="label">倒仓单号</Property>
        <Property name="readOnly">true</Property>
      </PropertyDef>
      <PropertyDef name="companyId">
        <Property></Property>
        <Property name="label">组织编码</Property>
      </PropertyDef>
      <PropertyDef name="deptId">
        <Property></Property>
        <Property name="label">所属分库</Property>
        <Property name="mapping">
          <Property name="mapValues">${dorado.getDataProvider(&quot;deptPR#getAllData&quot;).getResult()}</Property>
          <Property name="keyProperty">id</Property>
          <Property name="valueProperty">kqmc</Property>
        </Property>
      </PropertyDef>
      <PropertyDef name="type">
        <Property name="label">倒仓类型</Property>
        <Property name="mapping">
          <Property name="mapValues">
            <Collection>
              <Entity>
                <Property name="name">倒仓</Property>
                <Property name="value">0</Property>
              </Entity>
              <Entity>
                <Property name="name">移库</Property>
                <Property name="value">1</Property>
              </Entity>
            </Collection>
          </Property>
          <Property name="keyProperty">value</Property>
          <Property name="valueProperty">name</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="depotIdIn">
        <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="depotIdOut">
        <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="changeDate">
        <Property name="dataType">Date</Property>
        <Property name="label">倒仓日期</Property>
        <Property name="required">true</Property>
      </PropertyDef>
      <PropertyDef name="changeStartDate">
        <Property name="dataType">Date</Property>
        <Property name="label">倒仓开始日期</Property>
      </PropertyDef>
      <PropertyDef name="changeEndDate">
        <Property name="dataType">Date</Property>
        <Property name="label">倒仓结束日期</Property>
      </PropertyDef>
      <PropertyDef name="number">
        <Property name="dataType">Double</Property>
        <Property name="label">倒仓数量</Property>
        <Property name="displayFormat">0.0 KG</Property>
      </PropertyDef>
      <PropertyDef name="stockUser">
        <Property></Property>
        <Property name="label">倒仓人</Property>
      </PropertyDef>
      <PropertyDef name="remarks">
        <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>
  </Model>
  <View layout="padding:10">
    <ClientEvent name="onReady">var deptId = window.parent.DEPT_ID;//父页面中的分库编码&#xD;
      //默认查询查询提条件&#xD;
      view.get(&quot;#dsQuery&quot;).insert({&#xD;
      deptId:deptId&#xD;
      });&#xD;
      /**&#xD;
      * æŸ¥è¯¢&#xD;
      */&#xD;
      query = function(){&#xD;
      var data = view.get(&quot;#dsQuery.data&quot;);&#xD;
      view.get(&quot;#dsMain&quot;).set(&quot;parameter&quot;,data).flushAsync();&#xD;
      }&#xD;
      query();&#xD;
    </ClientEvent>
    <Property name="packages">font-awesome,css-common</Property>
    <DataSet id="dsMain">
      <Property name="dataProvider">inoutStockChangePR#pageData</Property>
      <Property name="pageSize">20</Property>
      <Property name="dataType">[dtMain]</Property>
      <Property name="loadMode">manual</Property>
    </DataSet>
    <DataSet id="dsQuery">
      <Property name="dataType">dtQuery</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">depotIdIn</Property>
          <Property name="property">depotIdIn</Property>
          <Editor/>
        </AutoFormElement>
        <AutoFormElement>
          <Property name="name">depotIdOut</Property>
          <Property name="property">depotIdOut</Property>
          <Editor/>
        </AutoFormElement>
        <AutoFormElement>
          <Property name="name">changeStartDate</Property>
          <Property name="property">changeStartDate</Property>
          <Property name="trigger">defaultDateDropDown</Property>
          <Editor/>
        </AutoFormElement>
        <AutoFormElement>
          <Property name="name">changeEndDate</Property>
          <Property name="property">changeEndDate</Property>
          <Property name="trigger">defaultDateDropDown</Property>
          <Editor/>
        </AutoFormElement>
        <Button>
          <ClientEvent name="onClick">query();&#xD;</ClientEvent>
          <Property name="caption">搜索</Property>
          <Property name="iconClass">fa fa-search</Property>
          <Property name="exClassName">btn-q1</Property>
        </Button>
        <Button>
          <ClientEvent name="onClick">var deptId = window.parent.DEPT_ID;//父页面中的分库编码&#xD;
            view.get(&quot;#dsQuery&quot;).setData({deptId:deptId});</ClientEvent>
          <Property name="caption">重置</Property>
          <Property name="exClassName">btn-q2</Property>
          <Property name="iconClass">fa fa-refresh</Property>
        </Button>
      </AutoForm>
    </Container>
    <Container>
      <Property name="className">c-data</Property>
      <ToolBar>
        <ToolBarButton>
          <ClientEvent name="onClick">view.get(&quot;#dsMain&quot;).insert();&#xD;
            view.get(&quot;#dialogMain&quot;).show();</ClientEvent>
          <Property name="caption">新增</Property>
          <Property name="exClassName">btn1</Property>
          <Property name="width">100</Property>
          <Property name="iconClass">fa fa-plus</Property>
        </ToolBarButton>
        <ToolBarButton>
          <ClientEvent name="onClick">var data = view.get(&quot;#dataGridData&quot;).get(&quot;selection&quot;);&#xD;
            if(data){&#xD;
            view.get(&quot;#dialogMain&quot;).show();&#xD;
            }else{&#xD;
            $notify(&quot;请选择需要修改的信息……&quot;);&#xD;
            }</ClientEvent>
          <Property name="caption">修改</Property>
          <Property name="exClassName">btn2</Property>
          <Property name="width">100</Property>
          <Property name="iconClass">fa fa-pencil-square-o</Property>
        </ToolBarButton>
        <ToolBarButton>
          <ClientEvent name="onClick">var select = view.get(&quot;#dataGridData&quot;).get(&quot;selection&quot;);&#xD;
            if(select){&#xD;
            view.get(&quot;#ajaxDel&quot;).set(&quot;parameter&quot;,select).execute(function(result){&#xD;
            if(result){&#xD;
            $alert(result);&#xD;
            }else{&#xD;
            query();&#xD;
            }&#xD;
            });
            }else{&#xD;
            $notify(&quot;请选择需要删除的信息……&quot;);&#xD;
            }</ClientEvent>
          <Property name="caption">删除</Property>
          <Property name="exClassName">btn3</Property>
          <Property name="width">100</Property>
          <Property name="iconClass">fa fa-times</Property>
        </ToolBarButton>
      </ToolBar>
      <DataGrid id="dataGridData" layoutConstraint="padding:8">
        <ClientEvent name="onDataRowClick">view.get(&quot;#dataGridData&quot;).set(&quot;selection&quot;,arg.data);</ClientEvent>
        <Property name="dataSet">dsMain</Property>
        <Property name="selectionMode">singleRow</Property>
        <Property name="readOnly">true</Property>
        <RowSelectorColumn/>
        <RowNumColumn>
          <Property name="width">50</Property>
        </RowNumColumn>
        <DataColumn name="id">
          <Property name="property">id</Property>
          <Property name="align">center</Property>
          <Property name="width">150</Property>
        </DataColumn>
        <DataColumn name="type">
          <Property name="property">type</Property>
          <Property name="align">center</Property>
          <Property name="width">90</Property>
        </DataColumn>
        <DataColumn name="depotIdIn">
          <Property name="property">depotIdIn</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn>
          <Property name="property">depotIdOut</Property>
          <Property name="name">depotIdOut</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn name="foodVariety">
          <Property name="property">foodVariety</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn name="changeDate">
          <Property name="property">changeDate</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn name="number">
          <ClientEvent name="onRenderCell">arg.dom.style.fontWeight = &quot;bold&quot;;&#xD;
            arg.processDefault = true;</ClientEvent>
          <Property name="property">number</Property>
          <Property name="align">center</Property>
          <Property name="width">100</Property>
        </DataColumn>
        <DataColumn name="stockUser">
          <Property name="property">stockUser</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn name="updateTime">
          <Property name="property">updateTime</Property>
          <Property name="align">center</Property>
          <Property name="width">160</Property>
        </DataColumn>
      </DataGrid>
      <ToolBar layoutConstraint="bottom">
        <Fill/>
        <DataPilot layoutConstraint="right">
          <Property name="itemCodes">pageSize,pages</Property>
          <Property name="dataSet">dsMain</Property>
        </DataPilot>
      </ToolBar>
    </Container>
    <Dialog id="dialogMain" layout="regionPadding:8">
      <Property name="iconClass">fa fa-tasks</Property>
      <Property name="caption">倒仓信息</Property>
      <Property name="width">1000</Property>
      <Property name="closeable">false</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;#uaSave&quot;).execute(function(result){&#xD;
            if(result){&#xD;
            $alert(result);&#xD;
            return;&#xD;
            }&#xD;
            $notify(&quot;数据执行完成!!&quot;);&#xD;
            query();&#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">self.get(&quot;parent&quot;).close();</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>
        <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">id</Property>
            <Property name="property">id</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">type</Property>
            <Property name="property">type</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">changeDate</Property>
            <Property name="property">changeDate</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">deptId</Property>
            <Property name="property">deptId</Property>
            <Property name="readOnly">true</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">depotIdOut</Property>
            <Property name="property">depotIdOut</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">depotIdIn</Property>
            <Property name="property">depotIdIn</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">foodVariety</Property>
            <Property name="property">foodVariety</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">number</Property>
            <Property name="property">number</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">changeStartDate</Property>
            <Property name="property">changeStartDate</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">changeEndDate</Property>
            <Property name="property">changeEndDate</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">stockUser</Property>
            <Property name="property">stockUser</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement>
            <Property name="name">updateTime</Property>
            <Property name="property">updateTime</Property>
            <Editor/>
          </AutoFormElement>
          <AutoFormElement layoutConstraint="colSpan:2">
            <Property name="name">remarks</Property>
            <Property name="property">remarks</Property>
            <Editor/>
          </AutoFormElement>
        </AutoForm>
      </Children>
      <Tools/>
    </Dialog>
    <UpdateAction id="uaSave">
      <Property name="dataResolver">inoutStockChangePR#saveData</Property>
      <UpdateItem>
        <Property name="dataSet">dsMain</Property>
        <Property name="dataPath">[#current]</Property>
        <Property name="validateData">false</Property>
      </UpdateItem>
    </UpdateAction>
    <AjaxAction id="ajaxDel">
      <Property name="confirmMessage">确定要删除吗?</Property>
      <Property name="service">inoutStockChangePR#delData</Property>
    </AjaxAction>
    <CustomDropDown id="ddNotice">
      <Property name="minHeight">400</Property>
      <Property name="assignmentMap">noticeId=id,customerName=customerName</Property>
      <Property name="minWidth">1000</Property>
      <Property name="autoOpen">true</Property>
      <Container layout="regionPadding:5">
        <DataSet id="dsNotice">
          <Property name="dataProvider">inoutNoticePR#queryNoticeByKey</Property>
          <Property name="parameter">
            <Entity>
              <Property name="type">${request.getParameter('type')}</Property>
            </Entity>
          </Property>
          <Property name="dataType">[dtNoticeDto]</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;
              var type = &quot;${request.getParameter('type')}&quot;;&#xD;
              view.get(&quot;#dsNotice&quot;).set(&quot;parameter&quot;,{key: key,type: type}).flushAsync();</ClientEvent>
            <Property name="caption">查询</Property>
            <Property name="exClassName">btn1</Property>
            <Property name="iconClass">fa fa-search</Property>
          </Button>
          <Button>
            <ClientEvent name="onClick">var data = view.get(&quot;#dsNotice.data:#&quot;);&#xD;
              if(data){&#xD;
              view.get(&quot;#ddNotice&quot;).close(data.toJSON());&#xD;
              }</ClientEvent>
            <Property name="iconClass">fa fa-check</Property>
            <Property name="exClassName">btn2</Property>
            <Property name="caption">确定</Property>
          </Button>
        </Container>
        <DataGrid>
          <ClientEvent name="onDataRowDoubleClick">var data = view.get(&quot;#dsNotice.data:#&quot;);&#xD;
            if(data){&#xD;
            view.get(&quot;#ddNotice&quot;).close(data.toJSON());&#xD;
            }</ClientEvent>
          <Property name="dataSet">dsNotice</Property>
          <Property name="readOnly">true</Property>
          <DataColumn name="name">
            <Property name="property">name</Property>
            <Property name="align">center</Property>
            <Property name="width">100</Property>
          </DataColumn>
          <DataColumn>
            <Property name="property">customerName</Property>
            <Property name="align">center</Property>
            <Property name="name">customerName</Property>
            <Property name="width">240</Property>
          </DataColumn>
          <DataColumn name="foodVariety">
            <Property name="property">foodVariety</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="year">
            <Property name="property">year</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="contract">
            <Property name="property">contract</Property>
            <Property name="align">center</Property>
            <Property name="width">300</Property>
          </DataColumn>
        </DataGrid>
      </Container>
    </CustomDropDown>
    <CustomDropDown id="ddDicArea">
      <Property name="minHeight">500</Property>
      <Property name="minWidth">500</Property>
      <Property name="assignmentMap">foodLocation=name,foodLocationId=code</Property>
      <Container layout="regionPadding:5">
        <DataSet id="dsDicArea">
          <Property name="dataProvider">dicAreaPR#pageList</Property>
          <Property name="parameter"></Property>
          <Property name="dataType">[dtArea]</Property>
          <Property name="pageSize">1000</Property>
        </DataSet>
        <Container layout="hbox regionPadding:5">
          <TextEditor id="key2">
            <Property name="blankText"> -名称或简拼,北京市  bjs -</Property>
            <Property name="width">200</Property>
          </TextEditor>
          <Button>
            <ClientEvent name="onClick">var key = view.get(&quot;#key2.value&quot;);&#xD;
              view.get(&quot;#dsDicArea&quot;).set(&quot;parameter&quot;,{key:key}).flushAsync();</ClientEvent>
            <Property name="caption">查询</Property>
            <Property name="iconClass">fa fa-search</Property>
            <Property name="exClassName">btn1</Property>
          </Button>
          <Button>
            <ClientEvent name="onClick">var data = view.get(&quot;#dsDicArea.data:#&quot;);&#xD;
              if(data){&#xD;
              view.get(&quot;#ddDicArea&quot;).close(data.toJSON());&#xD;
              }</ClientEvent>
            <Property name="iconClass">fa fa-check</Property>
            <Property name="exClassName">btn2</Property>
            <Property name="caption">确定</Property>
          </Button>
        </Container>
        <DataGrid>
          <ClientEvent name="onDataRowDoubleClick">var data = view.get(&quot;#dsDicArea.data:#&quot;);&#xD;
            if(data){&#xD;
            view.get(&quot;#ddDicArea&quot;).close(data.toJSON());&#xD;
            }</ClientEvent>
          <Property name="dataSet">dsDicArea</Property>
          <Property name="readOnly">true</Property>
          <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="readOnly">true</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="code">
            <Property name="property">code</Property>
            <Property name="readOnly">true</Property>
            <Property name="align">center</Property>
          </DataColumn>
          <DataColumn name="simple">
            <Property name="property">simple</Property>
            <Property name="readOnly">true</Property>
            <Property name="align">center</Property>
          </DataColumn>
        </DataGrid>
        <DataPilot layoutConstraint="bottom">
          <Property name="dataSet">dsDicArea</Property>
        </DataPilot>
      </Container>
    </CustomDropDown>
    <YearDropDown id="yearDropDown"/>
  </View>
</ViewConfig>
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutStockChangePR.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
package com.fzzy.igds;
import com.bstek.dorado.annotation.DataProvider;
import com.bstek.dorado.annotation.DataResolver;
import com.bstek.dorado.annotation.Expose;
import com.bstek.dorado.data.provider.Page;
import com.fzzy.igds.domain.Camera;
import com.fzzy.igds.domain.InoutStockChange;
import com.fzzy.igds.service.InoutStockChangeService;
import com.fzzy.igds.service.SecCameraService;
import jdk.nashorn.internal.ir.annotations.Reference;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
 * @Description
 * @Author CZT
 * @Date 2025/12/08 17:48
 */
@Slf4j
@Component
public class InoutStockChangePR {
    @Resource
    private InoutStockChangeService inoutStockChangeService;
    /**
     * inoutStockChangePR#pageData æ ¹æ®æ¡ä»¶èŽ·å–æ‰€æœ‰çš„æ‘„åƒæœºé…ç½®ä¿¡æ¯
     *
     * @param param
     */
    @DataProvider
    public void pageData(Page<InoutStockChange> page, InoutStockChange param) {
        com.baomidou.mybatisplus.extension.plugins.pagination.Page<InoutStockChange> corePage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPageNo(), page.getPageSize());
        if(null == param) {
            param = new InoutStockChange();
        }
        InoutStockChange data = new InoutStockChange();
        BeanUtils.copyProperties(param, data);
        inoutStockChangeService.listPageData(corePage, data);
        // é‡æ–°å°è£…
        page.setEntities(corePage.getRecords());
        page.setEntityCount(Integer.parseInt(String.valueOf(corePage.getTotal())));
    }
    /**
     * inoutStockChangePR#saveData
     *
     * @param data
     */
    @DataResolver
    public void saveData(InoutStockChange data) {
        InoutStockChange item = new InoutStockChange();
        BeanUtils.copyProperties(data, item);
        inoutStockChangeService.saveData(item);
    }
    /**
     * inoutStockChangePR#delData
     *
     * @param data
     * @return
     */
    @Expose
    public String delData(InoutStockChange data) {
        InoutStockChange item = new InoutStockChange();
        BeanUtils.copyProperties(data, item);
        return inoutStockChangeService.delData(item);
    }
}
fzzy-igdss-web/src/main/resources/templates/print/pay.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
<!DOCTYPE html>
<html lang='zh-cn'>
<head>
    <meta http-equiv='Content-Type' content='text/html;charset=UTF-8'>
    <title>结算单</title>
    <style>
        body {text-align: center;padding: 10px;font-family: '宋体';}  .tit {font-size: 24px;flex-grow: 1;text-align: center;}  .div-tit {padding-top: 6px;}  table {width: 100%;border-right: 1px solid;border-bottom: 1px solid;font-size: 14px;border-collapse: collapse;}  table td {border-left: 1px solid;border-top: 1px solid;height: 32px;}  .sp1 {width: 33%;float: left;padding-bottom: 5px;}  .sp2 {width: 25%;float: left;text-align: center;}  .sp3 {width: 16.6%;float: left;text-align: center;}  .txt-left {text-align: left;}  .txt-center {text-align: center;}  .txt-right {text-align: right;}
    </style>
</head>
<body>
<h1 class='tit'><u>[billTitle]</u></h1>
<div class='div-tit'><span class='sp1 txt-left'>库区名称:[deptId]</span><span class='sp1 txt-center'>单据号:[id]</span><span class='sp1 txt-right'>打印时间:[payTime]</span></div>
<table cellspacing='0' cellpadding='0'>
    <tr>
        <td>客户名称</td>
        <td colspan='7'>[customerName]</td>
    </tr>
    <tr>
        <td width='12.5%'>承运人</td>
        <td width='37.5%' colspan='3'>[userName]</td>
        <td width='12.5%'>联系电话</td>
        <td width='37.5%' colspan='3'>[userContact]</td>
    </tr>
    <tr>
        <td>身份证号码</td>
        <td colspan='3'>[userId]</td>
        <td>车牌号</td>
        <td colspan='3'>[plateNum]</td>
    </tr>
    <tr>
        <td>仓库</td>
        <td colspan='3'>[depotId]</td>
        <td>粮食名称</td>
        <td colspan='3'>[foodVariety]</td>
    </tr>
    <tr>
        <td>备注</td>
        <td colspan="7">[remark]</td>
    </tr>
    <tr>
        <td colspan="8">计量信息</td>
    </tr>
    <tr>
        <td>毛重</td>
        <td colspan='2'>[fullWeight]公斤</td>
        <td>皮重</td>
        <td colspan='2'>[emptyWeight]公斤</td>
        <td>扣重</td>
        <td colspan='2'>[deOther]公斤</td>
    </tr>
    <tr>
        <td colspan="8">结算信息</td>
    </tr>
    <tr>
        <td>单价</td>
        <td colspan='2'>[payPrice]元/公斤</td>
        <td>结算重量</td>
        <td colspan='2'>[settleWeight]公斤</td>
        <td>结算金额</td>
        <td colspan='2'>[payMoney]元</td>
    </tr>
    <tr>
        <td>大写金额</td>
        <td colspan="7">[payMoneyName]</td>
    </tr>
</table>
<div class='div-tit'><span class='sp2 txt-left '>结算员:_______</span><span class='sp2 txt-left '>保管员:_______</span><span class='sp2 txt-left '>审核人:_______</span><span class='sp2 txt-left '>承运人:_______</span></div>
</body>
</html>