| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | |
| | | /** |
| | | * 分页查询数据 |
| | | * |
| | | * @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); |
| | |
| | | |
| | | /** |
| | | * 查询数据集合 |
| | | * |
| | | * @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); |
| | |
| | | |
| | | /** |
| | | * 封装查询条件 |
| | | * |
| | | * @param param |
| | | */ |
| | | public QueryWrapper<InoutRecord> getQueryWrapper(InoutParam param) { |
| | |
| | | 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()); |
| | |
| | | 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); |
| | |
| | | |
| | | /** |
| | | * 验证车牌号是否在流程中 |
| | | * |
| | | * @param companyId |
| | | * @param plateNum |
| | | * @return |
| | |
| | | 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 |
| | | */ |
| | |
| | | //补单数据直接到结果状态 |
| | | 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(); |
| | |
| | | data.setId("R_" + id); |
| | | } else if (Constant.TYPE_OUT.equals(data.getType())) { |
| | | data.setId("C_" + id); |
| | | }else { |
| | | } else { |
| | | data.setId("M_" + id); |
| | | } |
| | | } |
| | |
| | | //TODO 更新缓存 |
| | | //updateInoutCache(data); |
| | | return num; |
| | | |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | |
| | | /** |
| | | * 异常终止 |
| | | * |
| | | * @param data |
| | | * @return |
| | | */ |
| | |
| | | |
| | | //TODO 删除缓存 |
| | | |
| | | if(i > 0){ |
| | | if (i > 0) { |
| | | return null; |
| | | }else { |
| | | } else { |
| | | return "操作失败!"; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 出入库流程ID创建 202001030001 202001030001 |
| | | * |
| | | * @param registerTime |
| | | * @param companyId |
| | | * @return |
| | |
| | | |
| | | /** |
| | | * 查询最大id号,为空则返回null |
| | | * |
| | | * @param companyId |
| | | * @param timeKey |
| | | * @return |
| | |
| | | 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(); |
| | | } |
| | | } |
| | |
| | | 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; |
| | | } |
| | | |
| | | } |