package com.glxp.api.controller.purchase; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; import com.glxp.api.annotation.RepeatSubmit; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.Constant; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.entity.purchase.PurApplyDetailEntity; import com.glxp.api.entity.purchase.PurApplyEntity; import com.glxp.api.entity.purchase.PurPlanDetailEntity; import com.glxp.api.entity.purchase.PurPlanEntity; import com.glxp.api.req.purchase.PostPurApplyRequest; import com.glxp.api.req.purchase.PurApplyDetailRequest; import com.glxp.api.req.purchase.PurApplyRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.purchase.PurApplyResponse; import com.glxp.api.res.purchase.PurOrderDetailResponse; import com.glxp.api.service.auth.CustomerService; import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.basic.UdiRlSupService; import com.glxp.api.service.purchase.PurApplyDetailService; import com.glxp.api.service.purchase.PurApplyService; import com.glxp.api.service.purchase.PurPlanDetailService; import com.glxp.api.service.purchase.PurPlanService; import com.glxp.api.util.GennerOrderUtils; import com.glxp.api.util.OrderNoTypeBean; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.constraints.NotEmpty; import java.util.Arrays; import java.util.Date; import java.util.List; /** * pur * * @author anthony.ywj * @date 2022-10-12 */ @Validated @RequiredArgsConstructor @RestController public class PurApplyController { @Resource PurApplyService purApplyService; @Resource PurApplyDetailService purApplyDetailService; @Resource PurPlanService purPlanService; @Resource PurPlanDetailService purPlanDetailService; @Resource CustomerService customerService; @Resource GennerOrderUtils gennerOrderUtils; @Resource UdiRelevanceService udiRelevanceService; @Resource UdiRlSupService udiRlSupService; @Resource IBasicBussinessTypeService basicBussinessTypeService; /** * 新增申购单 */ @RepeatSubmit() @AuthRuleAnnotation("") @PostMapping("/purchase/apply/postOrder") public BaseResponse postOrder(@RequestBody PostPurApplyRequest postPurApplyRequest) { Long userId = customerService.getUserId(); PurApplyEntity purApplyEntity = postPurApplyRequest.getPurApplyEntity(); purApplyEntity.setCreateUser(userId + ""); purApplyEntity.setCreateTime(new Date()); purApplyEntity.setUpdateTime(new Date()); purApplyEntity.setStatus(postPurApplyRequest.getEditStatus()); //草稿状态 if(postPurApplyRequest.getType()!=null){ String billNo = gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.SG_ORDER, "yyyyMMdd")); purApplyEntity.setBillNo(billNo); } if (purApplyEntity.getId() == null) { purApplyService.insert(purApplyEntity); } else { purApplyService.update(purApplyEntity); // if (CollUtil.isNotEmpty(postPurApplyRequest.getSubErpOrders())) { // purApplyDetailService.deleteByOrderId(purApplyEntity.getId() + ""); // } } // if (CollUtil.isNotEmpty(postPurApplyRequest.getSubErpOrders())) { // for (StockOrderDetailEntity stockOrderDetailEntity : postPurApplyRequest.getSubErpOrders()) { // PurApplyDetailEntity purApplyDetailEntity = new PurApplyDetailEntity(); // BeanUtils.copyProperties(stockOrderDetailEntity, purApplyDetailEntity); // purApplyDetailEntity.setCount(stockOrderDetailEntity.getCount()); // purApplyDetailEntity.setOrderIdFk(purApplyEntity.getId() + ""); // purApplyDetailService.insert(purApplyDetailEntity); // } // } return ResultVOUtils.success("提交成功!"); } /** * 查询申购单列表 */ @GetMapping("/purchase/apply/list") public BaseResponse list(PurApplyRequest purApplyRequest) { if (purApplyRequest.getStatus() == null) { purApplyRequest.setStatus(11); //查询未审核和草稿状态 } List purApplyEntities = purApplyService.queryPageList(purApplyRequest); PageInfo pageInfo; pageInfo = new PageInfo<>(purApplyEntities); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(purApplyEntities); return ResultVOUtils.success(pageSimpleResponse); } /** * 查询申购单列表 */ @GetMapping("/purchase/apply/auditList") public BaseResponse auditList(PurApplyRequest purApplyRequest) { if (purApplyRequest.getStatus() == null) { purApplyRequest.setStatus(10); //查询未审核和已审核状态 } List purApplyEntities = purApplyService.queryPageList(purApplyRequest); PageInfo pageInfo; pageInfo = new PageInfo<>(purApplyEntities); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(purApplyEntities); return ResultVOUtils.success(pageSimpleResponse); } /** * 审核申购单 */ @RepeatSubmit() @PostMapping("/purchase/apply/auditOrder") public BaseResponse auditOrder(@RequestBody PurApplyResponse purApplyRequest) { Long userId = customerService.getUserId(); PurApplyEntity purApplyEntity = new PurApplyEntity(); BeanUtils.copyProperties(purApplyRequest, purApplyEntity); purApplyEntity.setUpdateTime(new Date()); purApplyEntity.setAuditTime(new Date()); purApplyEntity.setAuditUser(userId + ""); purApplyService.update(purApplyEntity); //审核通过后转换成采购计划单 if (purApplyEntity.getStatus() == ConstantStatus.APPLY_AUDIT_ED && purApplyRequest.isAudtoPlan()) { PurPlanEntity purPlanEntity = new PurPlanEntity(); String billNo = gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.JH_ORDER, "yyyyMMdd")); purPlanEntity.setBillNo(billNo); purPlanEntity.setBillDate(new Date()); purPlanEntity.setStatus(ConstantStatus.APPLY_DRAFT); purPlanEntity.setBillType("purPlan"); purPlanEntity.setCreateTime(new Date()); purPlanEntity.setUpdateTime(new Date()); purPlanEntity.setApplyBillNo(purApplyEntity.getBillNo()); purPlanEntity.setApplyCreateUser(purApplyEntity.getCreateUser()); purPlanEntity.setApplyRemark(purApplyEntity.getRemark()); purPlanEntity.setApplyAuditUser(purApplyEntity.getAuditUser()); purPlanEntity.setRemark("申购科室:" + purApplyRequest.getTargetInvCode() + ";申购人:" + purApplyRequest.getCreateByName() + ";申购原因:" + purApplyRequest.getRemark()); purApplyEntity.setPlanBillNo(purPlanEntity.getBillNo()); purApplyEntity.setGeneratePlan(true); purApplyService.update(purApplyEntity); purPlanService.insert(purPlanEntity); List purApplyDetailEntities = purApplyDetailService.findByOrderId(purApplyEntity.getId() + ""); if (CollUtil.isNotEmpty(purApplyDetailEntities)) { for (PurApplyDetailEntity purApplyDetailEntity : purApplyDetailEntities) { PurPlanDetailEntity purPlanDetailEntity = new PurPlanDetailEntity(); BeanUtils.copyProperties(purApplyDetailEntity, purPlanDetailEntity); purPlanDetailEntity.setOrderIdFk(purPlanEntity.getId() + ""); purPlanDetailService.insert(purPlanDetailEntity); } } } return ResultVOUtils.success("更新成功!"); } /** * 新增申购单 */ @RepeatSubmit() @PostMapping("/purchase/apply") public BaseResponse add(@RequestBody PurApplyEntity purApplyRequest) { purApplyService.insert(purApplyRequest); return ResultVOUtils.success("新增成功!"); } /** * 修改申购单 */ @RepeatSubmit() @PutMapping("/purchase/apply") public BaseResponse edit(@RequestBody PurApplyEntity purApplyRequest) { purApplyService.update(purApplyRequest); return ResultVOUtils.success("删除成功"); } /** * 删除申购单 * * @param ids 主键串 */ @DeleteMapping("/purchase/apply/{ids}") public BaseResponse remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { List idArray = Arrays.asList(ids); if (CollUtil.isNotEmpty(idArray)) { purApplyService.deleteByIds(idArray); for (Long id : idArray) { purApplyDetailService.deleteByOrderId(id + ""); } } return ResultVOUtils.success("删除成功"); } /** * 查询申购单列表 */ @GetMapping("/purchase/apply/list/detail") public BaseResponse detailList(PurApplyDetailRequest purApplyDetailRequest) { List purApplyDetailEntities = purApplyDetailService.joinQueryList(purApplyDetailRequest); PageInfo pageInfo; pageInfo = new PageInfo<>(purApplyDetailEntities); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(purApplyDetailEntities); return ResultVOUtils.success(pageSimpleResponse); } /** * 新增申购单 */ @RepeatSubmit() @PostMapping("/purchase/apply/detail") public BaseResponse detailAdd(@RequestBody PurApplyDetailEntity purApplyDetailEntity) { purApplyDetailService.insert(purApplyDetailEntity); return ResultVOUtils.success("新增成功"); } /** * 修改申购单 */ @RepeatSubmit() @PostMapping("/purchase/apply/updateDetail") public BaseResponse detailEdit(@RequestBody PurApplyDetailEntity purApplyDetailRequest) { purApplyDetailService.update(purApplyDetailRequest); return ResultVOUtils.success("修改成功"); } /** * 删除申购单 * * @param ids 主键串 */ @DeleteMapping("/purchase/apply/detail/{ids}") public BaseResponse detailRemove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { purApplyDetailService.deleteByIds(Arrays.asList(ids)); return ResultVOUtils.success("删除成功"); } /*** 插入申购单详情 */ /** * 新增申购单 */ @RepeatSubmit() @PostMapping("/purchase/apply/addDetail") public BaseResponse addDetail(@RequestBody PurApplyDetailEntity purApplyDetailEntity) { purApplyDetailService.insert(purApplyDetailEntity); return ResultVOUtils.success(purApplyDetailEntity.getOrderIdFk()); } /** * 新增申购单 */ @AuthRuleAnnotation("") @PostMapping("/purchase/apply/add") public BaseResponse add() { Long userId = customerService.getUserId(); PurApplyEntity purApplyEntity = new PurApplyEntity(); purApplyEntity.setCreateUser(userId + ""); purApplyEntity.setCreateTime(new Date()); purApplyEntity.setUpdateTime(new Date()); purApplyEntity.setUpdateUser(userId + ""); purApplyService.insert(purApplyEntity); Long id=purApplyEntity.getId(); return ResultVOUtils.success(id); } /** * 新增申购单 */ @AuthRuleAnnotation("") @PostMapping("/purchase/apply/delApplyDetailAll") public BaseResponse delApplyDetailAll(@RequestBody PurApplyEntity purApplyEntity) { if(purApplyEntity.getId()!=null){ purApplyService.deleteById(purApplyEntity.getId()); purApplyDetailService.deleteByOrderId(purApplyEntity.getId() + "" ); }else { return ResultVOUtils.error(999,"参数有误!"); } return ResultVOUtils.success(); } }