czt
2026-01-16 a99c35bb764b1208141541e32034a973c34a3cd1
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutRecordService.java
@@ -6,6 +6,7 @@
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.constant.FoodVariety;
import com.fzzy.igds.constant.RedisConst;
import com.fzzy.igds.data.IgdsBaseParam;
import com.fzzy.igds.data.InoutData;
import com.fzzy.igds.data.InoutParam;
import com.fzzy.igds.data.InoutPrintBill;
@@ -14,6 +15,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;
@@ -22,7 +24,9 @@
import org.apache.commons.lang3.time.DateFormatUtils;
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;
@@ -49,14 +53,15 @@
    /**
     * 分页查询数据
     *
     * @param page
     * @param param
     */
    public void listPageInout(Page<InoutRecord> page, InoutParam param) {
        if(StringUtils.isBlank(param.getCompanyId())){
        if (StringUtils.isBlank(param.getCompanyId())) {
            param.setCompanyId(ContextUtil.getCompanyId());
        }
        if(StringUtils.isBlank(param.getDeptId())){
        if (StringUtils.isBlank(param.getDeptId())) {
            param.setDeptId(ContextUtil.subDeptId(null));
        }
        QueryWrapper<InoutRecord> queryWrapper = getQueryWrapper(param);
@@ -65,13 +70,14 @@
    /**
     * 查询数据集合
     *
     * @param param
     */
    public List<InoutRecord> listInout(InoutParam param) {
        if(StringUtils.isBlank(param.getCompanyId())){
        if (StringUtils.isBlank(param.getCompanyId())) {
            param.setCompanyId(ContextUtil.getCompanyId());
        }
        if(StringUtils.isBlank(param.getDeptId())){
        if (StringUtils.isBlank(param.getDeptId())) {
            param.setDeptId(ContextUtil.subDeptId(null));
        }
        QueryWrapper<InoutRecord> queryWrapper = getQueryWrapper(param);
@@ -81,6 +87,7 @@
    /**
     * 封装查询条件
     *
     * @param param
     */
    public QueryWrapper<InoutRecord> getQueryWrapper(InoutParam param) {
@@ -89,7 +96,7 @@
            queryWrapper.eq("company_id", param.getCompanyId());
        }
        if (StringUtils.isNotBlank(param.getDeptId())) {
            queryWrapper.eq("dept_id", param.getDeptId());
            queryWrapper.likeRight("dept_id", param.getDeptId());
        }
        if (StringUtils.isNotBlank(param.getCustomerName())) {
            queryWrapper.like("customer_name", param.getCustomerName());
@@ -124,28 +131,52 @@
        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;
    }
    /**
     * 根据时间类型,获取已完成的正常单据
     * @param timeType
     * @param param
     * @return
     */
    public List<InoutRecord> getCompleteInoutByTime(String timeType, IgdsBaseParam param) {
        if(StringUtils.isBlank(timeType)){
             return null;
        }
        QueryWrapper<InoutRecord> queryWrapper = new QueryWrapper<>();
        queryWrapper.likeRight("dept_id", param.getDeptId());
        queryWrapper.likeRight("progress", Constant.PROGRESS_RECORD); //已完成的单据
        queryWrapper.ne("record_status", Constant.RECORD_STATUS_DEL); //不是删除的单子,即正常的单子
        queryWrapper.ge(timeType, param.getStart());
        queryWrapper.le(timeType, param.getEnd());
        queryWrapper.orderByAsc("complete_time");
        return inoutRecordMapper.selectList(queryWrapper);
    }
    /**
     * 查询数据
     *
     * @param param
     * @return
     */
    public InoutRecord selectOne(InoutParam param) {
        if(StringUtils.isBlank(param.getCompanyId())){
        if (StringUtils.isBlank(param.getCompanyId())) {
            param.setCompanyId(ContextUtil.getCompanyId());
        }
        QueryWrapper<InoutRecord> queryWrapper = getQueryWrapper(param);
@@ -155,6 +186,7 @@
    /**
     * 验证车牌号是否在流程中
     *
     * @param companyId
     * @param plateNum
     * @return
@@ -168,15 +200,13 @@
        queryWrapper.eq("company_id", companyId);
        queryWrapper.eq("plate_num", plateNum);
        queryWrapper.ne("progress", Constant.PROGRESS_RECORD);
        queryWrapper.eq("record_status", "NORMAL");
        queryWrapper.or();
        queryWrapper.eq("record_status", Constant.RECORD_STATUS_ADD); //补录单子的单子
        return inoutRecordMapper.selectCount(queryWrapper);
    }
    /**
     * 手动补单
     *
     * @param data
     * @return
     */
@@ -185,7 +215,7 @@
        //补单数据直接到结果状态
        data.setRecordStatus(Constant.RECORD_STATUS_ADD);
        data.setProgress(Constant.PROGRESS_RECORD);
        if(null != data.getPerWet() && data.getPerWet() > 0){
        if (null != data.getPerWet() && data.getPerWet() > 0) {
            data.setCheckStatus(Constant.STATUS_CHECK);
        }
        String loginUser = ContextUtil.getLoginUserName();
@@ -238,7 +268,7 @@
                data.setId("R_" + id);
            } else if (Constant.TYPE_OUT.equals(data.getType())) {
                data.setId("C_" + id);
            }else {
            } else {
                data.setId("M_" + id);
            }
        }
@@ -251,7 +281,7 @@
        //TODO 更新缓存
        //updateInoutCache(data);
        return num;
    }
    /**
@@ -274,6 +304,7 @@
    /**
     * 异常终止
     *
     * @param data
     * @return
     */
@@ -297,15 +328,16 @@
        //TODO 删除缓存
        if(i > 0){
        if (i > 0) {
            return null;
        }else {
        } else {
            return "操作失败!";
        }
    }
    /**
     * 出入库流程ID创建 202001030001 202001030001
     *
     * @param registerTime
     * @param companyId
     * @return
@@ -369,6 +401,7 @@
    /**
     * 查询最大id号,为空则返回null
     *
     * @param companyId
     * @param timeKey
     * @return
@@ -385,9 +418,9 @@
        queryWrapper.orderByDesc("create_time");
        List<InoutRecord> inoutRecords = inoutRecordMapper.selectList(queryWrapper);
        if(null == inoutRecords || inoutRecords.isEmpty()){
        if (null == inoutRecords || inoutRecords.isEmpty()) {
            return null;
        }else {
        } else {
            return inoutRecords.get(0).getId();
        }
    }
@@ -649,4 +682,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;
    }
}