| | |
| | | |
| | | |
| | | 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.NoticeDto; |
| | | import com.fzzy.igds.data.NoticeParam; |
| | | import com.fzzy.igds.service.InoutNoticeService; |
| | | import com.fzzy.igds.domain.InoutNoticeIn; |
| | | import com.fzzy.igds.domain.InoutNoticeOut; |
| | | import com.fzzy.igds.service.SysDeptService; |
| | | import com.fzzy.igds.utils.ContextUtil; |
| | | import com.ruoyi.common.core.domain.entity.SysDept; |
| | | import com.ruoyi.common.core.domain.entity.SysUser; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import org.apache.commons.lang3.time.DateFormatUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.data.domain.PageRequest; |
| | | import org.springframework.data.domain.Pageable; |
| | | import org.springframework.data.domain.Sort; |
| | | import org.springframework.data.jpa.domain.Specification; |
| | | import org.springframework.stereotype.Component; |
| | | import javax.annotation.Resource; |
| | | import javax.persistence.criteria.CriteriaBuilder; |
| | | import javax.persistence.criteria.CriteriaQuery; |
| | | import javax.persistence.criteria.Predicate; |
| | | import javax.persistence.criteria.Root; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * @Description 通知单管理 |
| | | * @Author CZT |
| | | * @Date 2024/12/16 10:10 |
| | | * @Date 2025/11/29 16:42 |
| | | */ |
| | | @Component |
| | | public class InoutNoticePR { |
| | | |
| | | @Resource |
| | | private InoutNoticeService inoutNoticeService; |
| | | @Resource |
| | | private SysDeptService sysDeptService; |
| | | |
| | | /** |
| | | * inoutNoticePR#getTitle 根据报表类型,获取默认查询信息,比如表头信息等 |
| | | * |
| | | * @param |
| | | * @return |
| | | */ |
| | | @DataProvider |
| | | public Map<String, Object> getTitle(Map<String, Object> param) { |
| | | Map<String, Object> result = new HashMap<String, Object>(); |
| | | //获取参数中报表类型 |
| | | String type = (String)param.get("type"); |
| | | |
| | | //获取分库编码对应的分库名称 |
| | | String deptName = ""; |
| | | SysDept subDept = sysDeptService.getCacheDept(null, ContextUtil.subDeptId(null)); |
| | | if (null != subDept) { |
| | | deptName = subDept.getDeptName(); |
| | | } |
| | | if ("NOTICE_IN".equals(type)) { |
| | | result.put("title", "入库通知单"); |
| | | if (StringUtils.isNotEmpty(deptName)) { |
| | | result.put("title", deptName + "入库通知单"); |
| | | } |
| | | } |
| | | if ("NOTICE_OUT".equals(type)) { |
| | | result.put("title", "出库通知单"); |
| | | if (StringUtils.isNotEmpty(deptName)) { |
| | | result.put("title", deptName + "出库通知单"); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * inoutNoticePR#getYearQuery 默认年份 |
| | |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * inoutNoticePR#queryNoticeByKey 根据参数查询出入库通知单,用于手动补单时,选择通知单 |
| | | * |
| | | * @param |
| | | * @return |
| | | */ |
| | | @DataProvider |
| | | public List<NoticeDto> queryNoticeByKey(Map<String, Object> param) { |
| | | if (param == null) { |
| | | return null; |
| | | } |
| | | String type = (String) param.get("type"); |
| | | if (StringUtils.isEmpty(type)) { |
| | | return null; |
| | | } |
| | | List<NoticeDto> list = new ArrayList<>(); |
| | | NoticeDto dto; |
| | | if (Constant.TYPE_IN.equals(type)) { |
| | | List<InoutNoticeIn> listIn = this.queryNoticeIn(param); |
| | | if (null != listIn && listIn.size() > 0) { |
| | | for (InoutNoticeIn inoutNoticeIn : listIn) { |
| | | dto = new NoticeDto(); |
| | | BeanUtils.copyProperties(inoutNoticeIn, dto); |
| | | list.add(dto); |
| | | } |
| | | } |
| | | } |
| | | if (Constant.TYPE_OUT.equals(type)) { |
| | | List<InoutNoticeOut> listOut = this.queryNoticeOut(param); |
| | | if (null != listOut && listOut.size() > 0) { |
| | | for (InoutNoticeOut inoutNoticeOut : listOut) { |
| | | dto = new NoticeDto(); |
| | | BeanUtils.copyProperties(inoutNoticeOut, dto); |
| | | list.add(dto); |
| | | } |
| | | } |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | |
| | | /*==================== 入库通知单相关业务 ====================*/ |
| | | |
| | | /** |
| | |
| | | public InoutNoticeIn initAddIn() { |
| | | SysUser user = ContextUtil.getLoginUser(); |
| | | InoutNoticeIn data = new InoutNoticeIn(); |
| | | data.setId("RKTZD_" + ContextUtil.generateId()); |
| | | data.setId(ContextUtil.generateOrderId("RK")); |
| | | data.setName("入库通知单"); |
| | | data.setCompanyId(user.getCompanyId()); |
| | | data.setDeptId(ContextUtil.subDeptId(user)); |
| | | data.setTag(Constant.YN_Y); |
| | | data.setYear(DateFormatUtils.format(new Date(), "yyyy")); |
| | | data.setCreateBy(ContextUtil.getLoginUserName()); |
| | | data.setCreateTime(new Date()); |
| | | return data; |
| | | } |
| | | |
| | |
| | | * @return |
| | | */ |
| | | @DataProvider |
| | | public void pageQueryIn(Page<InoutNoticeIn> page, Map<String, Object> param) { |
| | | if (null == param) { |
| | | param = new HashMap<>(); |
| | | } |
| | | Map<String, Object> finalParam = param; |
| | | public void pageQueryIn(Page<InoutNoticeIn> page, NoticeParam param) { |
| | | com.baomidou.mybatisplus.extension.plugins.pagination.Page<InoutNoticeIn> corePage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPageNo(), page.getPageSize()); |
| | | |
| | | //多参数分页查询 |
| | | Pageable pageable = PageRequest.of(0, 10000, Sort.Direction.ASC, InoutNoticeIn.SORT_PROP); |
| | | Specification<InoutNoticeIn> specification = new Specification<InoutNoticeIn>() { |
| | | private static final long serialVersionUID = 1L; |
| | | inoutNoticeService.pageQueryIn(corePage, param); |
| | | |
| | | public Predicate toPredicate(Root<InoutNoticeIn> root, CriteriaQuery<?> query, CriteriaBuilder cb) { |
| | | List<Predicate> predicates = new ArrayList<Predicate>(); //所有的断言 |
| | | |
| | | Predicate predicate1 = cb.equal(root.get("companyId"), ContextUtil.getCompanyId()); |
| | | predicates.add(predicate1); |
| | | Predicate predicate2 = cb.equal(root.get("deptId"), ContextUtil.subDeptId(null)); |
| | | predicates.add(predicate2); |
| | | |
| | | String key = String.valueOf(finalParam.get("year")); |
| | | if (StringUtils.isBlank(key)) { |
| | | Predicate predicate3 = cb.equal(root.get("year"), key); |
| | | predicates.add(predicate3); |
| | | } |
| | | key = (String) finalParam.get("id"); |
| | | if (StringUtils.isBlank(key)) { |
| | | Predicate predicate4 = cb.equal(root.get("id"), key); |
| | | predicates.add(predicate4); |
| | | } |
| | | key = (String) finalParam.get("customerName"); |
| | | if (StringUtils.isBlank(key)) { |
| | | Predicate predicate5 = cb.like(root.get("customerName"), "%" + key + "%"); |
| | | predicates.add(predicate5); |
| | | } |
| | | key = (String) finalParam.get("completeStatus"); |
| | | if (StringUtils.isBlank(key)) { |
| | | Predicate predicate6 = cb.equal(root.get("completeStatus"), key); |
| | | predicates.add(predicate6); |
| | | } |
| | | key = (String) finalParam.get("foodVariety"); |
| | | if (StringUtils.isBlank(key)) { |
| | | Predicate predicate7 = cb.equal(root.get("foodVariety"), key); |
| | | predicates.add(predicate7); |
| | | } |
| | | return cb.and(predicates.toArray(new Predicate[0])); |
| | | } |
| | | }; |
| | | org.springframework.data.domain.Page<InoutNoticeIn> japPage = inoutNoticeService.queryAllNoticeIn(specification, pageable); |
| | | page.setEntityCount((int) japPage.getTotalElements()); |
| | | page.setEntities(japPage.getContent()); |
| | | // 重新封装 |
| | | page.setEntities(corePage.getRecords()); |
| | | page.setEntityCount(Integer.parseInt(String.valueOf(corePage.getTotal()))); |
| | | } |
| | | |
| | | /** |
| | | * inoutNoticePR#saveIn 更新入库通知单 |
| | | */ |
| | | @Expose |
| | | @DataResolver |
| | | public String saveIn(InoutNoticeIn data) { |
| | | InoutNoticeIn inoutNoticeIn = new InoutNoticeIn(); |
| | | BeanUtils.copyProperties(data, inoutNoticeIn); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 根据不同条件查询 |
| | | * @param param |
| | | * @return |
| | | */ |
| | | public List<InoutNoticeIn> queryNoticeIn(Map<String, Object> param) { |
| | | if (null == param) { |
| | | param = new HashMap<>(); |
| | | } |
| | | Map<String, Object> finalParam = param; |
| | | |
| | | //多参数分页查询 |
| | | Pageable pageable = PageRequest.of(0, 10000, Sort.Direction.ASC, InoutNoticeIn.SORT_PROP); |
| | | Specification<InoutNoticeIn> specification = new Specification<InoutNoticeIn>() { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | public Predicate toPredicate(Root<InoutNoticeIn> root, CriteriaQuery<?> query, CriteriaBuilder cb) { |
| | | List<Predicate> predicates = new ArrayList<Predicate>(); //所有的断言 |
| | | |
| | | Predicate predicate1 = cb.equal(root.get("companyId"), ContextUtil.getCompanyId()); |
| | | predicates.add(predicate1); |
| | | Predicate predicate2 = cb.equal(root.get("deptId"), ContextUtil.subDeptId(null)); |
| | | predicates.add(predicate2); |
| | | Predicate predicate3 = cb.equal(root.get("completeStatus"), "NONE"); |
| | | predicates.add(predicate3); |
| | | |
| | | String key = (String) finalParam.get("customerId"); |
| | | if (StringUtils.isNotEmpty(key)) { |
| | | Predicate predicate4 = cb.equal(root.get("customerId"), key); |
| | | predicates.add(predicate4); |
| | | } |
| | | key = (String) finalParam.get("foodVariety"); |
| | | if (StringUtils.isNotEmpty(key)) { |
| | | Predicate predicate5 = cb.equal(root.get("foodVariety"), key); |
| | | predicates.add(predicate5); |
| | | } |
| | | key = (String) finalParam.get("depotId"); |
| | | if (StringUtils.isNotEmpty(key)) { |
| | | Predicate predicate6 = cb.equal(root.get("depotId"), key); |
| | | predicates.add(predicate6); |
| | | } |
| | | key = (String) finalParam.get("key"); |
| | | if (StringUtils.isNotEmpty(key)) { |
| | | Predicate predicate7 = cb.like(root.get("name"), "%" + key + "%"); |
| | | predicates.add(predicate7); |
| | | } |
| | | return cb.and(predicates.toArray(new Predicate[0])); |
| | | } |
| | | }; |
| | | org.springframework.data.domain.Page<InoutNoticeIn> japPage = inoutNoticeService.queryAllNoticeIn(specification, pageable); |
| | | |
| | | return japPage.getContent(); |
| | | } |
| | | |
| | | /** |
| | | * 重新核算入库通知单完成量 |
| | | * |
| | | * inoutNoticePR#updateSumNoticeIn |
| | |
| | | |
| | | //获取所有未完成状态的入库通知单 |
| | | String companyId = ContextUtil.getCompanyId(); |
| | | String deptId = ContextUtil.subDeptId(null); |
| | | |
| | | List<InoutNoticeIn> noticeInList = inoutNoticeService.getUnComNoticeIn(companyId); |
| | | |
| | |
| | | inoutNoticeService.updateSumNoticeIn(noticeInList); |
| | | return "success"; |
| | | } |
| | | |
| | | |
| | | return "fail"; |
| | | } |
| | | |
| | |
| | | public InoutNoticeOut initAddOut() { |
| | | SysUser user = ContextUtil.getLoginUser(); |
| | | InoutNoticeOut data = new InoutNoticeOut(); |
| | | data.setId("CKTZD_" + ContextUtil.generateId()); |
| | | data.setId(ContextUtil.generateOrderId("CK")); |
| | | data.setName("出库通知单"); |
| | | data.setCompanyId(user.getCompanyId()); |
| | | data.setDeptId(ContextUtil.subDeptId(user)); |
| | | data.setTag(Constant.YN_Y); |
| | | data.setYear(DateFormatUtils.format(new Date(), "yyyy")); |
| | | data.setCreateBy(ContextUtil.getLoginUserName()); |
| | | data.setCreateTime(new Date()); |
| | | return data; |
| | | } |
| | | |
| | |
| | | * @param param |
| | | */ |
| | | @DataProvider |
| | | public void pageQueryOut(Page<InoutNoticeOut> page, Map<String, Object> param) { |
| | | public void pageQueryOut(Page<InoutNoticeOut> page, NoticeParam param) { |
| | | |
| | | if (null == param) { |
| | | param = new HashMap<>(); |
| | | } |
| | | Map<String, Object> finalParam = param; |
| | | com.baomidou.mybatisplus.extension.plugins.pagination.Page<InoutNoticeOut> corePage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPageNo(), page.getPageSize()); |
| | | |
| | | //多参数分页查询 |
| | | Pageable pageable = PageRequest.of(0, 10000, Sort.Direction.ASC, InoutNoticeOut.SORT_PROP); |
| | | Specification<InoutNoticeOut> specification = new Specification<InoutNoticeOut>() { |
| | | private static final long serialVersionUID = 1L; |
| | | inoutNoticeService.pageQueryOut(corePage, param); |
| | | |
| | | public Predicate toPredicate(Root<InoutNoticeOut> root, CriteriaQuery<?> query, CriteriaBuilder cb) { |
| | | List<Predicate> predicates = new ArrayList<Predicate>(); //所有的断言 |
| | | |
| | | Predicate predicate1 = cb.equal(root.get("companyId"), ContextUtil.getCompanyId()); |
| | | predicates.add(predicate1); |
| | | Predicate predicate2 = cb.equal(root.get("deptId"), ContextUtil.subDeptId(null)); |
| | | predicates.add(predicate2); |
| | | |
| | | String key = String.valueOf(finalParam.get("year")); |
| | | if (StringUtils.isNotEmpty(key)) { |
| | | Predicate predicate3 = cb.equal(root.get("year"), key); |
| | | predicates.add(predicate3); |
| | | } |
| | | key = (String) finalParam.get("id"); |
| | | if (StringUtils.isNotEmpty(key)) { |
| | | Predicate predicate4 = cb.equal(root.get("id"), key); |
| | | predicates.add(predicate4); |
| | | } |
| | | key = (String) finalParam.get("customerId"); |
| | | if (StringUtils.isNotEmpty(key)) { |
| | | Predicate predicate5 = cb.equal(root.get("customerId"), key); |
| | | predicates.add(predicate5); |
| | | } |
| | | key = (String) finalParam.get("completeStatus"); |
| | | if (StringUtils.isNotEmpty(key)) { |
| | | Predicate predicate6 = cb.equal(root.get("completeStatus"), key); |
| | | predicates.add(predicate6); |
| | | } |
| | | key = (String) finalParam.get("foodVariety"); |
| | | if (StringUtils.isNotEmpty(key)) { |
| | | Predicate predicate7 = cb.equal(root.get("foodVariety"), key); |
| | | predicates.add(predicate7); |
| | | } |
| | | return cb.and(predicates.toArray(new Predicate[0])); |
| | | } |
| | | }; |
| | | org.springframework.data.domain.Page<InoutNoticeOut> japPage = inoutNoticeService.queryAllNoticeOut(specification, pageable); |
| | | page.setEntityCount((int) japPage.getTotalElements()); |
| | | page.setEntities(japPage.getContent()); |
| | | // 重新封装 |
| | | page.setEntities(corePage.getRecords()); |
| | | page.setEntityCount(Integer.parseInt(String.valueOf(corePage.getTotal()))); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param data |
| | | * @return |
| | | */ |
| | | @Expose |
| | | @DataResolver |
| | | public String saveOut(InoutNoticeOut data) { |
| | | InoutNoticeOut inoutNoticeOut = new InoutNoticeOut(); |
| | | BeanUtils.copyProperties(data, inoutNoticeOut); |
| | |
| | | return inoutNoticeService.delDataOut(inoutNoticeOut); |
| | | } |
| | | |
| | | /** |
| | | * 根据不同条件查询 |
| | | * @param param |
| | | * @return |
| | | */ |
| | | public List<InoutNoticeOut> queryNoticeOut(Map<String, Object> param) { |
| | | if (null == param) { |
| | | param = new HashMap<>(); |
| | | } |
| | | Map<String, Object> finalParam = param; |
| | | |
| | | //多参数分页查询 |
| | | Pageable pageable = PageRequest.of(0, 10000, Sort.Direction.ASC, InoutNoticeOut.SORT_PROP); |
| | | Specification<InoutNoticeOut> specification = new Specification<InoutNoticeOut>() { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | public Predicate toPredicate(Root<InoutNoticeOut> root, CriteriaQuery<?> query, CriteriaBuilder cb) { |
| | | List<Predicate> predicates = new ArrayList<Predicate>(); //所有的断言 |
| | | |
| | | Predicate predicate1 = cb.equal(root.get("companyId"), ContextUtil.getCompanyId()); |
| | | predicates.add(predicate1); |
| | | Predicate predicate2 = cb.equal(root.get("deptId"), ContextUtil.subDeptId(null)); |
| | | predicates.add(predicate2); |
| | | Predicate predicate3 = cb.equal(root.get("completeStatus"), "NONE"); |
| | | predicates.add(predicate3); |
| | | |
| | | String key = (String) finalParam.get("customerId"); |
| | | if (StringUtils.isNotEmpty(key)) { |
| | | Predicate predicate4 = cb.equal(root.get("customerId"), key); |
| | | predicates.add(predicate4); |
| | | } |
| | | key = (String) finalParam.get("foodVariety"); |
| | | if (StringUtils.isNotEmpty(key)) { |
| | | Predicate predicate5 = cb.equal(root.get("foodVariety"), key); |
| | | predicates.add(predicate5); |
| | | } |
| | | key = (String) finalParam.get("depotId"); |
| | | if (StringUtils.isNotEmpty(key)) { |
| | | Predicate predicate6 = cb.equal(root.get("depotId"), key); |
| | | predicates.add(predicate6); |
| | | } |
| | | key = (String) finalParam.get("key"); |
| | | if (StringUtils.isNotEmpty(key)) { |
| | | Predicate predicate7 = cb.like(root.get("name"), "%" + key + "%"); |
| | | predicates.add(predicate7); |
| | | } |
| | | return cb.and(predicates.toArray(new Predicate[0])); |
| | | } |
| | | }; |
| | | org.springframework.data.domain.Page<InoutNoticeOut> japPage = inoutNoticeService.queryAllNoticeOut(specification, pageable); |
| | | |
| | | return japPage.getContent(); |
| | | } |
| | | |
| | | /** |
| | | * 重新核算出库通知单完成量 |
| | |
| | | |
| | | //获取所有未完成状态的入库通知单 |
| | | String companyId = ContextUtil.getCompanyId(); |
| | | String deptId = ContextUtil.subDeptId(null); |
| | | |
| | | List<InoutNoticeOut> noticeOutList = inoutNoticeService.getUnComNoticeOut(companyId); |
| | | |
| | |
| | | return "fail"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * inoutNoticePR#queryNoticeByKey 根据参数查询出入库通知单,用于手动补单时,选择通知单 |
| | | * |
| | | * @param |
| | | * @return |
| | | */ |
| | | @DataProvider |
| | | public List<NoticeDto> queryNoticeByKey(Map<String, Object> param) { |
| | | if (param == null) { |
| | | return null; |
| | | } |
| | | String type = (String)param.get("type"); |
| | | if (StringUtils.isEmpty(type)) { |
| | | return null; |
| | | } |
| | | List<NoticeDto> list = new ArrayList<>(); |
| | | NoticeDto dto; |
| | | |
| | | NoticeParam noticeParam = new NoticeParam(); |
| | | noticeParam.setCompanyId(ContextUtil.getCompanyId()); |
| | | noticeParam.setDeptId(ContextUtil.subDeptId(null)); |
| | | noticeParam.setCompleteStatus(Constant.COMPLETE_STATUS_NONE); |
| | | String key = (String)param.get("key"); |
| | | if (StringUtils.isNotEmpty(key)) { |
| | | noticeParam.setKey(key); |
| | | } |
| | | |
| | | if (Constant.TYPE_IN.equals(type)) { |
| | | List<InoutNoticeIn> listIn = inoutNoticeService.getNoticeIn(noticeParam); |
| | | if (null != listIn && listIn.size() > 0) { |
| | | for (InoutNoticeIn inoutNoticeIn : listIn) { |
| | | dto = new NoticeDto(); |
| | | BeanUtils.copyProperties(inoutNoticeIn, dto); |
| | | list.add(dto); |
| | | } |
| | | } |
| | | } |
| | | if (Constant.TYPE_OUT.equals(type)) { |
| | | List<InoutNoticeOut> listOut = inoutNoticeService.getNoticeOut(noticeParam); |
| | | if (null != listOut && listOut.size() > 0) { |
| | | for (InoutNoticeOut inoutNoticeOut : listOut) { |
| | | dto = new NoticeDto(); |
| | | BeanUtils.copyProperties(inoutNoticeOut, dto); |
| | | list.add(dto); |
| | | } |
| | | } |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | } |