czt
9 天以前 db67639449287bcec461916a7dca6003ee5dd03c
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutRecordService.java
@@ -2,18 +2,28 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fzzy.igds.bill.InoutBill;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.constant.FoodVariety;
import com.fzzy.igds.constant.RedisConst;
import com.fzzy.igds.data.InoutData;
import com.fzzy.igds.data.InoutParam;
import com.fzzy.igds.data.InoutPrintBill;
import com.fzzy.igds.domain.Depot;
import com.fzzy.igds.domain.InoutRecord;
import com.fzzy.igds.mapper.InoutRecordMapper;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.igds.utils.DateUtil;
import com.fzzy.igds.utils.NumberUtil;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.DecimalFormat;
import java.util.Date;
import java.util.List;
@@ -29,6 +39,12 @@
    @Resource
    private InoutRecordMapper inoutRecordMapper;
    @Resource
    private FileService fileService;
    @Resource
    private SysDeptService sysDeptService;
    @Resource
    private DepotService depotService;
    @Resource
    private RedisCache redisCache;
    /**
@@ -37,35 +53,104 @@
     * @param param
     */
    public void listPageInout(Page<InoutRecord> page, InoutParam param) {
        if(StringUtils.isBlank(param.getCompanyId())){
            param.setCompanyId(ContextUtil.getCompanyId());
        }
        if(StringUtils.isBlank(param.getDeptId())){
            param.setDeptId(ContextUtil.subDeptId(null));
        }
        QueryWrapper<InoutRecord> queryWrapper = getQueryWrapper(param);
        inoutRecordMapper.selectPage(page, queryWrapper);
    }
    /**
     * 查询数据集合
     * @param param
     */
    public List<InoutRecord> listInout(InoutParam param) {
        if(StringUtils.isBlank(param.getCompanyId())){
            param.setCompanyId(ContextUtil.getCompanyId());
        }
        if(StringUtils.isBlank(param.getDeptId())){
            param.setDeptId(ContextUtil.subDeptId(null));
        }
        QueryWrapper<InoutRecord> queryWrapper = getQueryWrapper(param);
        return inoutRecordMapper.selectList(queryWrapper);
    }
    /**
     * 封装查询条件
     * @param param
     */
    public QueryWrapper<InoutRecord> getQueryWrapper(InoutParam param) {
        QueryWrapper<InoutRecord> queryWrapper = new QueryWrapper<>();
        if (StringUtils.isNotBlank(param.getCompanyId())) {
            queryWrapper.eq("company_id", param.getCompanyId());
        }
        if (StringUtils.isNotBlank(param.getDeptId())) {
            queryWrapper.eq("dept_id", param.getDeptId());
        }
        if (StringUtils.isNotBlank(param.getCustomerName())) {
            queryWrapper.like("customer_name", param.getCustomerName());
        }
        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.getId())) {
            queryWrapper.eq("id", param.getId());
        }
        if (StringUtils.isNotBlank(param.getPlateNum())) {
            queryWrapper.like("plate_num", param.getPlateNum());
        }
        if (StringUtils.isNotBlank(param.getWeightTag())) {
            //查询待称重的
            queryWrapper.likeRight("progress", param.getWeightTag());
        }
        if (StringUtils.isNotBlank(param.getProgressTag())) {
            //未完成的
            queryWrapper.ne("progress", param.getProgressTag());
        }
        if (StringUtils.isNotBlank(param.getProgress())) {
            queryWrapper.eq("progress", param.getProgress());
        }
        if (StringUtils.isNotBlank(param.getFoodVariety())) {
            queryWrapper.eq("food_variety", param.getFoodVariety());
        }
        if (StringUtils.isNotBlank(param.getCheckStatus())) {
            queryWrapper.eq("check_status", param.getCheckStatus());
        }
        if (StringUtils.isNotBlank(param.getDepotId())) {
            queryWrapper.eq("depot_id", param.getDepotId());
        }
        if (StringUtils.isNotBlank(param.getType())) {
            queryWrapper.eq("type", param.getType());
        }
        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.orderByDesc("create_time");
        inoutRecordMapper.selectPage(page, queryWrapper);
        return queryWrapper;
    }
    /**
     * 根据id查询数据
     * @param id
     * 查询数据
     * @param param
     * @return
     */
    public InoutRecord selectById(String id) {
        if(StringUtils.isBlank(id)){
            return null;
    public InoutRecord selectOne(InoutParam param) {
        if(StringUtils.isBlank(param.getCompanyId())){
            param.setCompanyId(ContextUtil.getCompanyId());
        }
        return inoutRecordMapper.selectById(id);
        QueryWrapper<InoutRecord> queryWrapper = getQueryWrapper(param);
        return inoutRecordMapper.selectOne(queryWrapper);
    }
    /**
@@ -84,8 +169,59 @@
        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
     */
    public String handAddInoutRecord(InoutData data) {
        //补单数据直接到结果状态
        data.setRecordStatus(Constant.RECORD_STATUS_ADD);
        data.setProgress(Constant.PROGRESS_RECORD);
        if(null != data.getPerWet() && data.getPerWet() > 0){
            data.setCheckStatus(Constant.STATUS_CHECK);
        }
        String loginUser = ContextUtil.getLoginUserName();
        if (StringUtils.isEmpty(data.getRegisterUser())) {
            data.setRegisterUser(loginUser);
        }
        if (StringUtils.isEmpty(data.getFullWeightUser())) {
            data.setFullWeightUser(loginUser);
        }
        if (StringUtils.isEmpty(data.getEmptyWeightUser())) {
            data.setEmptyWeightUser(loginUser);
        }
        if (StringUtils.isEmpty(data.getHandleUser())) {
            data.setHandleUser(loginUser);
        }
        if (StringUtils.isEmpty(data.getCompleteUser())) {
            data.setCompleteUser(loginUser);
        }
        if (null == data.getCompleteTime()) {
            data.setCompleteTime(new Date());
        }
        InoutRecord record = new InoutRecord();
        BeanUtils.copyProperties(data, record);
        //保存
        int num = this.addInoutRecord(record);
        //附件处理
        fileService.saveInoutFiles(data.getFiles(), record.getId(), null, "INOUT");
        if (num > 0) {
            return null;
        } else {
            return "保存失败!";
        }
    }
    /**
@@ -134,6 +270,38 @@
        //updateInoutCache(data);
        return num;
    }
    /**
     * 异常终止
     * @param data
     * @return
     */
    public String errorInoutData(InoutRecord data) {
        InoutParam param = new InoutParam();
        param.setId(data.getId());
        data = this.selectOne(param);
        if (Constant.RECORD_STATUS_DEL.equals(data.getRecordStatus())) {
            return "当前信息已做异常处理,不支持重复执行!";
        }
        String msg = " 于" + DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm") + " 被 " + ContextUtil.getLoginUserName() + " 执行终止,原因:" + data.getRemarks();
        data.setRemarks(msg);
        data.setProgress(Constant.PROGRESS_RECORD);
        data.setRecordStatus(Constant.RECORD_STATUS_DEL);
        data.setCompleteTime(new Date());
        int i = this.updateInoutRecord(data);
        //TODO 删除缓存
        if(i > 0){
            return null;
        }else {
            return "操作失败!";
        }
    }
    /**
@@ -224,4 +392,261 @@
        }
    }
    /**
     * 获取入库过磅单数据信息
     *
     * @param data
     * @return
     */
    public String inWeightBill(InoutRecord data) {
        // 获取表单数据
        InoutPrintBill bill = this.createBillData(data, "入库划码单");
        // 调整模版数据并返回
        String htmlStr = InoutBill.IN_WEIGHT_DEFAULT;
        htmlStr = htmlStr.replace("billTitle", bill.getBillTitle());
        htmlStr = htmlStr.replace("registerTime", bill.getRegisterTime());
        htmlStr = htmlStr.replace("completeTime", bill.getCompleteTime());
        htmlStr = htmlStr.replace("fullTime", bill.getFullTime());
        htmlStr = htmlStr.replace("emptyTime", bill.getEmptyTime());
        htmlStr = htmlStr.replace("serId", bill.getSerId());
        htmlStr = htmlStr.replace("customerName", bill.getCustomerName());
        htmlStr = htmlStr.replace("deptName", bill.getUnitName());
        htmlStr = htmlStr.replace("driverName", bill.getDriverName());
        htmlStr = htmlStr.replace("userNumberId", bill.getUserId());
        htmlStr = htmlStr.replace("userContact", bill.getUserContact());
        htmlStr = htmlStr.replace("userAddress", bill.getUserAddress());
        htmlStr = htmlStr.replace("foodVariety", bill.getFoodVariety());
        htmlStr = htmlStr.replace("depotName", bill.getDepotName());
        htmlStr = htmlStr.replace("foodLocation", bill.getFoodLocation());
        htmlStr = htmlStr.replace("plateNum", bill.getPlateNum());
        htmlStr = htmlStr.replace("fullWeight",
                new DecimalFormat("0.00").format(bill.getFullWeight()));
        htmlStr = htmlStr.replace("emptyWeight",
                new DecimalFormat("0.00").format(bill.getEmptyWeight()));
        htmlStr = htmlStr.replace("netWeight",
                new DecimalFormat("0.00").format(bill.getNetWeight()));
        htmlStr = htmlStr.replace("deImpurity", bill.getDeImpurity() + "");
        htmlStr = htmlStr.replace("deWet", bill.getDeWet() + "");
        htmlStr = htmlStr.replace("recordWeight", new DecimalFormat("0.00").format(bill.getRecordWeight()));
        htmlStr = htmlStr.replace("deCheck", bill.getDeCheck() + "");
        htmlStr = htmlStr.replace("addCheck", bill.getAddCheck() + "");
        htmlStr = htmlStr.replace("deSum", bill.getDeSum() + "");
        htmlStr = htmlStr.replace("settleWeight",
                new DecimalFormat("0.00").format(bill.getSettleWeight()));
        htmlStr = htmlStr.replace("dePackage", bill.getDePackage() + "");
        htmlStr = htmlStr.replace("deHandle", bill.getDeHandle() + "");
        htmlStr = htmlStr.replace("deOther", bill.getDeOther() + "");
        htmlStr = htmlStr.replace("price", bill.getPrice());
        htmlStr = htmlStr.replace("settleMoney", bill.getSettleMoney() + "");
        htmlStr = htmlStr.replace("wet", bill.getWet() + "");
        htmlStr = htmlStr.replace("impurity", bill.getImpurity() + "");
        htmlStr = htmlStr.replace("checkStatus", bill.getCheckStatus());
        htmlStr = htmlStr.replace("remark", bill.getRemark());
        htmlStr = htmlStr.replace("moneyName", bill.getMoneyName());
        htmlStr = htmlStr.replace("unitName", bill.getUnitName());
        htmlStr = htmlStr.replace("time", bill.getRegisterTime());
        htmlStr = htmlStr.replace("handleStart", "");
        htmlStr = htmlStr.replace("handleEnd", "");
        htmlStr = htmlStr.replace("noticeId", bill.getNoticeId() == null ? "" : bill.getNoticeId());
        htmlStr = htmlStr.replace("phone", data.getUserContact() == null ? "" : data.getUserContact() + "");
        htmlStr = htmlStr.replace("printTime", DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm"));
        htmlStr = htmlStr.replaceAll("weightUser",
                bill.getWeightUser() == null ? "" : bill.getWeightUser());
        htmlStr = htmlStr.replaceAll("handleUser",
                bill.getHandleUser() == null ? "" : bill.getHandleUser());
        htmlStr = htmlStr.replaceAll("keeperName",
                bill.getKeeperUser() == null ? "" : bill.getKeeperUser());
        return htmlStr;
    }
    /**
     * 获取出库过磅单
     *
     * @param data
     * @return
     */
    public String outWeightBill(InoutRecord data) {
        // 获取表单数据
        InoutPrintBill bill = this.createBillData(data, "出库划码单");
        //默认模版
        String htmlStr = InoutBill.OUT_WEIGHT_DEFAULT;
        htmlStr = htmlStr.replace("billTitle", bill.getBillTitle());
        htmlStr = htmlStr.replace("registerTime", bill.getRegisterTime());
        htmlStr = htmlStr.replace("completeTime", bill.getCompleteTime());
        htmlStr = htmlStr.replace("fullTime", bill.getFullTime());
        htmlStr = htmlStr.replace("emptyTime", bill.getEmptyTime());
        htmlStr = htmlStr.replace("serId", bill.getSerId());
        htmlStr = htmlStr.replace("customerName", bill.getCustomerName());
        htmlStr = htmlStr.replace("deptName", bill.getUnitName());
        htmlStr = htmlStr.replace("driverName", bill.getDriverName());
        htmlStr = htmlStr.replace("userNumberId", bill.getUserId());
        htmlStr = htmlStr.replace("userContact", bill.getUserContact());
        htmlStr = htmlStr.replace("userAddress", bill.getUserAddress());
        htmlStr = htmlStr.replace("foodVariety", bill.getFoodVariety());
        htmlStr = htmlStr.replace("depotName", bill.getDepotName());
        htmlStr = htmlStr.replace("foodLocation", bill.getFoodLocation());
        htmlStr = htmlStr.replace("plateNum", bill.getPlateNum());
        htmlStr = htmlStr.replace("fullWeight",
                new DecimalFormat("0.00").format(bill.getFullWeight()));
        htmlStr = htmlStr.replace("emptyWeight",
                new DecimalFormat("0.00").format(bill.getEmptyWeight()));
        htmlStr = htmlStr.replace("netWeight",
                new DecimalFormat("0.00").format(bill.getNetWeight()));
        htmlStr = htmlStr.replace("dePackage",
                new DecimalFormat("0.00").format(bill.getDePackage()));
        htmlStr = htmlStr.replace("remark", bill.getRemark());
        htmlStr = htmlStr.replace("settleWeight",
                new DecimalFormat("0.00").format(bill.getSettleWeight()));
        htmlStr = htmlStr.replace("deHandle", bill.getDeHandle() + "");
        htmlStr = htmlStr.replace("recordWeight", new DecimalFormat("0.00").format(bill.getRecordWeight()));
        htmlStr = htmlStr.replace("deSum", bill.getDeSum() + "");
        htmlStr = htmlStr.replace("deOther", bill.getDeOther() + "");
        htmlStr = htmlStr.replace("price", bill.getPrice());
        htmlStr = htmlStr.replace("settleMoney", bill.getSettleMoney() + "");
        htmlStr = htmlStr.replace("wet", bill.getWet() + "");
        htmlStr = htmlStr.replace("impurity", bill.getImpurity() + "");
        htmlStr = htmlStr.replace("unitName", getValue(bill.getUnitName()));
        htmlStr = htmlStr.replace("time", bill.getRegisterTime());
        htmlStr = htmlStr.replace("handleStart", "");
        htmlStr = htmlStr.replace("handleEnd", "");
        htmlStr = htmlStr.replace("noticeId", bill.getNoticeId() == null ? "" : bill.getNoticeId());
        htmlStr = htmlStr.replace("phone", data.getUserContact() == null ? "" : data.getUserContact() + "");
        htmlStr = htmlStr.replace("printTime", DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm"));
        htmlStr = htmlStr.replaceAll("weightUser", getValue(bill.getWeightUser()));
        htmlStr = htmlStr.replace("handleUser", getValue(bill.getHandleUser()));
        htmlStr = htmlStr.replaceAll("keeperName", getValue(bill.getKeeperUser()));
        return htmlStr;
    }
    public String getValue(String value) {
        if (null == value) return "";
        return value;
    }
    /**
     * 封装过磅单数据
     *
     * @param data
     * @param billTitle
     * @return
     */
    private InoutPrintBill createBillData(InoutRecord data, String billTitle) {
        InoutPrintBill bill = new InoutPrintBill();
        bill.setBillTitle(billTitle);
        SysDept dept = sysDeptService.getCacheDept(data.getCompanyId(), data.getDeptId());
        if (null != dept && StringUtils.isNotEmpty(dept.getDeptName())) {
            bill.setBillTitle(dept.getDeptName() + billTitle);
            bill.setDeptId(dept.getDeptId() + "");
            bill.setDeptName(dept.getDeptName() + "");
            bill.setUnitName(dept.getDeptName());
        }
        bill.setCompanyId(data.getCompanyId() == null ? "" : data
                .getCompanyId());
        if (null == data.getRegisterTime()) {
            data.setRegisterTime(new Date());
        }
        bill.setRegisterTime(DateFormatUtils.format(data.getRegisterTime(),
                "yyyy-MM-dd HH:mm"));
        if (null == data.getCompleteTime()) {
            data.setCompleteTime(new Date());
        }
        bill.setCompleteTime(DateFormatUtils.format(data.getCompleteTime(),
                "yyyy-MM-dd HH:mm"));
        bill.setEmptyTime(DateFormatUtils.format(data.getEmptyWeightTime(),
                "yyyy-MM-dd HH:mm:ss"));
        bill.setFullTime(DateFormatUtils.format(data.getFullWeightTime(),
                "yyyy-MM-dd HH:mm:ss"));
        bill.setSerId(data.getId());
        if ("5016".equals(data.getCompanyId()) || "5347".equals(data.getCompanyId()) || "5352".equals(data.getCompanyId())) {
            bill.setCompleteTime(DateFormatUtils.format(data.getCompleteTime(), "yyyy-MM-dd"));
            bill.setSerId(data.getId().substring(2));
        }
        //客户信息
        bill.setCustomerName(data.getCustomerName() == null ? "" : data.getCustomerName());
        bill.setUserId(data.getUserId() == null ? "" : data.getUserId());
        bill.setUserAddress(data.getUserAddress() == null ? "" : data.getUserAddress());
        bill.setUserContact(data.getUserContact() == null ? "" : data.getUserContact());
        bill.setNoticeId(data.getNoticeId());
        bill.setDriverName(data.getUserName() == null ? "" : data.getUserName());
        // 获取仓库信息
        Depot depot = depotService.getCacheDepot(data.getCompanyId(),
                data.getDepotId());
        if (depot != null) {
            bill.setDepotName(depot.getName() == null ? "" : depot.getName());
            bill.setHandleUser(depot.getStoreKeeperName() == null ? "" : depot
                    .getStoreKeeperName());
        }
        bill.setFoodVariety(FoodVariety.getMsg(data.getFoodVariety()));
        bill.setFoodLocation(data.getFoodLocation() == null ? "" : data
                .getFoodLocation());
        bill.setPlateNum(data.getPlateNum());
        bill.setFullWeight(data.getFullWeight());
        bill.setEmptyWeight(data.getEmptyWeight());
        bill.setNetWeight(data.getNetWeight());
        bill.setRecordWeight(data.getRecordWeight());
        bill.setCheckStatus(data.getCheckStatus().equals(Constant.STATUS_CHECK) ? "合格" : "不合格");
        bill.setDeOther(data.getDeOther());
        bill.setSettleWeight(data.getSettleWeight());
        bill.setPrice(data.getPrice() == null ? "" : data.getPrice() + "");
        if (data.getSettleMoney() <= 0) {
            if (null != data.getPrice() && null != data.getRecordWeight()) {
                data.setSettleMoney(NumberUtil.keepPrecision(data.getPrice() * data.getRecordWeight(), 2));
            }
        }
        bill.setSettleMoney(data.getSettleMoney() == null ? "" : data.getSettleMoney() + "");
        bill.setRemark(data.getRemarks() == null ? "" : data.getRemarks());
        if (Constant.TYPE_IN.equals(data.getType())) {
            bill.setWeightUser(data.getFullWeightUser());
        }
        if (Constant.TYPE_OUT.equals(data.getType())) {
            bill.setWeightUser(data.getEmptyWeightUser());
        }
        bill.setHandleUser(data.getHandleUser());
        bill.setKeeperUser(depot.getStoreKeeperName());
        return bill;
    }
}