| | |
| | | package com.fzzy.igds.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.fzzy.igds.constant.AuditStatus; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.fzzy.igds.constant.Constant; |
| | | import com.fzzy.igds.constant.InoutConstant; |
| | | import com.fzzy.igds.data.*; |
| | |
| | | import com.fzzy.igds.mapper.InoutNoticeOutMapper; |
| | | import com.fzzy.igds.utils.ContextUtil; |
| | | import com.fzzy.work.data.WorkBizType; |
| | | import com.fzzy.work.data.WorkStatus; |
| | | import com.fzzy.work.domain.WorkOrderConf; |
| | | import com.fzzy.work.service.BizWorkService; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | |
| | | param.setCompanyId(ContextUtil.getCompanyId()); |
| | | |
| | | queryWrapper.eq("company_id", param.getCompanyId()); |
| | | if (StringUtils.isNotBlank(param.getDeptId())) { |
| | | queryWrapper.eq("dept_id", param.getDeptId()); |
| | | }else { |
| | | queryWrapper.likeRight("dept_id", ContextUtil.subDeptId(null)); |
| | | } |
| | | if (StringUtils.isNotBlank(param.getCustomerName())) { |
| | | queryWrapper.like("customer_name", param.getCustomerName()); |
| | | } |
| | |
| | | queryWrapper.like("complete_status", param.getCompleteStatus()); |
| | | } |
| | | |
| | | queryWrapper.orderByDesc("id"); |
| | | noticeInMapper.selectPage(page, queryWrapper); |
| | | } |
| | | |
| | |
| | | } |
| | | if (StringUtils.isNotBlank(param.getDeptId())) { |
| | | queryWrapper.eq("dept_id", param.getDeptId()); |
| | | } |
| | | if (StringUtils.isNotBlank(param.getAuditStatus())) { |
| | | queryWrapper.eq("audit_status", param.getAuditStatus()); |
| | | } |
| | | if (StringUtils.isNotBlank(param.getCompleteStatus())) { |
| | | queryWrapper.eq("complete_status", param.getCompleteStatus()); |
| | |
| | | //获取质押合同数据 |
| | | PledgeContract pledge = this.getPledgeByDepotId(data); |
| | | if (null != pledge && pledge.getStatus().equals(Constant.YN_N)) { |
| | | return BaseResp.error("当前仓库有未解压的质押合同,质押合同=" + pledge.getName()); |
| | | return BaseResp.error("当前仓库有未解押的质押合同,质押合同=" + pledge.getName()); |
| | | } |
| | | } |
| | | |
| | |
| | | data.setUpdateTime(new Date()); |
| | | data.setCreateBy(ContextUtil.getLoginUserName()); |
| | | data.setCreateTime(new Date()); |
| | | data.setAuditStatus(AuditStatus.STATUS_10.getCode()); |
| | | data.setAuditStatus(WorkStatus.STATUS_10.getCode()); |
| | | data.setCompleteStatus(Constant.COMPLETE_STATUS_NONE); |
| | | |
| | | //执行流程 |
| | | WorkOrderConf conf = workService.getConfByDeptId(data.getDeptId(), WorkBizType.TYPE_10); |
| | | //流程不启用 |
| | | if (null == conf || Constant.YN_N.equals(conf.getValTag())) { |
| | | data.setAuditStatus(AuditStatus.STATUS_20.getCode()); |
| | | data.setAuditDate(data.getCreateTime()); |
| | | data.setAuditStatus(WorkStatus.STATUS_50.getCode()); |
| | | } else { |
| | | BaseResp resp = workService.startByNoticeIn(data, conf); |
| | | log.info("---------启动工单流程------{}", resp); |
| | |
| | | |
| | | |
| | | /** |
| | | * 判断当前仓库是否在质押合同中未解压 |
| | | * 判断当前仓库是否在质押合同中未解押 |
| | | * @param data 当前数据 |
| | | * @return true-在质押合同中未解压,false-在质押合同中已解压 |
| | | * @return true-在质押合同中未解押,false-在质押合同中已解押 |
| | | */ |
| | | private PledgeContract getPledgeByDepotId(InoutNoticeIn data) { |
| | | IgdsBaseParam param = new IgdsBaseParam(); |
| | |
| | | param.setDepotId(data.getDepotId()); |
| | | param.setBankId(data.getBankId()); |
| | | return pledgeContractService.getByDepotId(param); |
| | | } |
| | | |
| | | /** |
| | | * 更新审核状态 |
| | | * @param id |
| | | * @param status |
| | | */ |
| | | public void updateNoticeInStatus(String id, String status) { |
| | | UpdateWrapper<InoutNoticeIn> updateWrapper = new UpdateWrapper<>(); |
| | | updateWrapper.eq("id", id).set("audit_status", status); |
| | | |
| | | noticeInMapper.update(null, updateWrapper); |
| | | } |
| | | |
| | | /** |
| | |
| | | param.setCompanyId(ContextUtil.getCompanyId()); |
| | | |
| | | queryWrapper.eq("company_id", param.getCompanyId()); |
| | | if (StringUtils.isNotBlank(param.getDeptId())) { |
| | | queryWrapper.eq("dept_id", param.getDeptId()); |
| | | }else { |
| | | queryWrapper.likeRight("dept_id", ContextUtil.subDeptId(null)); |
| | | } |
| | | if (StringUtils.isNotBlank(param.getCustomerName())) { |
| | | queryWrapper.like("customer_name", param.getCustomerName()); |
| | | } |
| | |
| | | if (StringUtils.isNotBlank(param.getCompleteStatus())) { |
| | | queryWrapper.like("complete_status", param.getCompleteStatus()); |
| | | } |
| | | |
| | | queryWrapper.orderByDesc("id"); |
| | | noticeOutMapper.selectPage(page, queryWrapper); |
| | | } |
| | | |
| | |
| | | } |
| | | if (StringUtils.isNotBlank(param.getDeptId())) { |
| | | queryWrapper.eq("dept_id", param.getDeptId()); |
| | | } |
| | | if (StringUtils.isNotBlank(param.getAuditStatus())) { |
| | | queryWrapper.eq("audit_status", param.getAuditStatus()); |
| | | } |
| | | if (StringUtils.isNotBlank(param.getCompleteStatus())) { |
| | | queryWrapper.eq("complete_status", param.getCompleteStatus()); |
| | |
| | | * @return |
| | | */ |
| | | public InoutNoticeOut getNoticeOutOne(String id) { |
| | | |
| | | QueryWrapper<InoutNoticeOut> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("id", id); |
| | | return noticeOutMapper.selectOne(queryWrapper); |
| | |
| | | * @param data |
| | | * @return |
| | | */ |
| | | public String saveOrUpdateOut(InoutNoticeOut data) { |
| | | //如果出库通知单类型为库区通知单,验证仓库是否是未解压得仓库,是则不允许保存 |
| | | //获取所有质押合同数据 |
| | | List<PledgeContract> pledgeContracts = pledgeContractService.listAll(null); |
| | | if ("10".equals(data.getType())) { |
| | | //在质押合同找到未解压,且质押仓库包含当前仓库的数据 |
| | | for (PledgeContract pledgeContract : pledgeContracts) { |
| | | if (pledgeContract.getDepotIds().contains(data.getDepotId())) { |
| | | if (pledgeContract.getStatus().equals(Constant.YN_N)) { |
| | | return "出库仓库未解压,无法保存!"; |
| | | } |
| | | } |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public BaseResp saveOrUpdateOut(InoutNoticeOut data) { |
| | | //如果出库通知单类型为库区通知单,验证仓库是否是未解押得仓库,是则不允许保存 |
| | | if (InoutConstant.NOTICE_IN_TYPE_10.equals(data.getType())) { |
| | | //在质押合同找到未解押,且质押仓库包含当前仓库的数据 |
| | | //获取质押合同数据 |
| | | PledgeContract pledge = this.getPledgeByDepotIdOut(data); |
| | | if (null != pledge && pledge.getStatus().equals(Constant.YN_N)) { |
| | | return BaseResp.error("当前仓库有未解押的质押合同,质押合同=" + pledge.getName()); |
| | | } |
| | | } |
| | | //如果出库通知单类型为监管通知单 |
| | | if ("20".equals(data.getType())) { |
| | | //如果质押通知单 |
| | | if (InoutConstant.NOTICE_IN_TYPE_20.equals(data.getType())) { |
| | | //1.验证银行是否填写,未填写,则不允许保存 |
| | | if (StringUtils.isEmpty(data.getBankId())) { |
| | | return "监督银行不能为空!"; |
| | | |
| | | return BaseResp.error("质押银行不能为空!"); |
| | | } |
| | | //2.验证银行和仓库的对应关系是否正确,不正确则不允许保存 |
| | | //在质押合同找到未解压,且质押仓库包含当前仓库的 银行-仓库(质押合同关系) |
| | | Map<String, PledgeContract> bankDepotMap = new HashMap<>(); |
| | | for (PledgeContract pledgeContract : pledgeContracts) { |
| | | if (pledgeContract.getDepotIds().contains(data.getDepotId())) { |
| | | if (pledgeContract.getStatus().equals(Constant.YN_N)) { |
| | | bankDepotMap.put(pledgeContract.getPledgeBank(), pledgeContract); |
| | | } |
| | | } |
| | | } |
| | | //在map中寻找匹配银行的数据,如果没有匹配的数据,则不允许保存 |
| | | if (!bankDepotMap.containsKey(data.getBankId())) { |
| | | return "未找到对应的质押合同,请检查监督银行或者出库仓库填写是否正确!"; |
| | | |
| | | PledgeContract pledge = this.getPledgeByDepotIdAndBankIdOut(data); |
| | | if (null == pledge) { |
| | | return BaseResp.error("未获取到当前库区、仓库和银行之间的质押信息!"); |
| | | } |
| | | } |
| | | |
| | | if (null == data.getUpdateBy()) { |
| | | data.setUpdateBy(ContextUtil.getLoginUserName()); |
| | | data.setUpdateTime(new Date()); |
| | | data.setCreateBy(ContextUtil.getLoginUserName()); |
| | | data.setCreateTime(new Date()); |
| | | data.setAuditStatus(AuditStatus.STATUS_10.getCode()); |
| | | data.setCompleteStatus(Constant.COMPLETE_STATUS_NONE); |
| | | noticeOutMapper.insert(data); |
| | | return this.saveOutAddStartWork(data); |
| | | } else { |
| | | data.setUpdateBy(ContextUtil.getLoginUserName()); |
| | | data.setUpdateTime(new Date()); |
| | | noticeOutMapper.updateById(data); |
| | | return BaseResp.success(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 更新审核状态 |
| | | * @param id |
| | | * @param status |
| | | */ |
| | | public void updateNoticeOutStatus(String id, String status) { |
| | | UpdateWrapper<InoutNoticeOut> updateWrapper = new UpdateWrapper<>(); |
| | | updateWrapper.eq("id", id).set("audit_status", status); |
| | | |
| | | noticeOutMapper.update(null, updateWrapper); |
| | | } |
| | | |
| | | /** |
| | |
| | | return null; |
| | | } |
| | | |
| | | private BaseResp saveOutAddStartWork(InoutNoticeOut data) { |
| | | //数据保存 |
| | | data.setUpdateBy(ContextUtil.getLoginUserName()); |
| | | data.setUpdateTime(new Date()); |
| | | data.setCreateBy(ContextUtil.getLoginUserName()); |
| | | data.setCreateTime(new Date()); |
| | | data.setAuditStatus(WorkStatus.STATUS_10.getCode()); |
| | | data.setCompleteStatus(Constant.COMPLETE_STATUS_NONE); |
| | | |
| | | //执行流程 |
| | | WorkOrderConf conf = workService.getConfByDeptId(data.getDeptId(), WorkBizType.TYPE_20); |
| | | //流程不启用 |
| | | if (null == conf || Constant.YN_N.equals(conf.getValTag())) { |
| | | data.setAuditStatus(WorkStatus.STATUS_50.getCode()); |
| | | } else { |
| | | BaseResp resp = workService.startByNoticeOut(data, conf); |
| | | log.info("---------启动工单流程------{}", resp); |
| | | } |
| | | |
| | | noticeOutMapper.insert(data); |
| | | |
| | | return BaseResp.success(); |
| | | } |
| | | |
| | | /** |
| | | * 判断当前仓库是否在质押合同中未解押 |
| | | * @param data 当前数据 |
| | | * @return true-在质押合同中未解押,false-在质押合同中已解押 |
| | | */ |
| | | private PledgeContract getPledgeByDepotIdOut(InoutNoticeOut data) { |
| | | IgdsBaseParam param = new IgdsBaseParam(); |
| | | param.setCompanyId(data.getCompanyId()); |
| | | param.setDeptId(data.getDeptId()); |
| | | param.setDepotId(data.getDepotId()); |
| | | return pledgeContractService.getByDepotId(param); |
| | | } |
| | | |
| | | private PledgeContract getPledgeByDepotIdAndBankIdOut(InoutNoticeOut data) { |
| | | IgdsBaseParam param = new IgdsBaseParam(); |
| | | param.setCompanyId(data.getCompanyId()); |
| | | param.setDeptId(data.getDeptId()); |
| | | param.setDepotId(data.getDepotId()); |
| | | param.setBankId(data.getBankId()); |
| | | return pledgeContractService.getByDepotId(param); |
| | | } |
| | | |
| | | /** |
| | | * 根据ID获取通知单信息 |
| | | * @param id |