From 4b7640bd5157abaced57ac1488a9f61f2abe4005 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=98=8E=E6=A2=81?= <2429105222@qq.com> Date: Wed, 8 Mar 2023 16:23:30 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E8=B4=AD=E8=AE=A2=E5=8D=95=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=8A=9F=E8=83=BD=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/glxp/api/constant/ConstantStatus.java | 1 + .../purchase/PurOrderController.java | 363 ++++++++++++++++++ .../purchase/PurPlanController.java | 19 + .../glxp/api/dao/purchase/PurOrderDao.java | 8 + .../api/dao/purchase/PurOrderDetailDao.java | 22 ++ .../api/entity/purchase/PurOrderEntity.java | 2 +- .../api/req/purchase/PostPurOrderRequest.java | 26 ++ .../req/purchase/PurOrderDetailRequest.java | 50 +++ .../api/req/purchase/PurOrderRequest.java | 98 +++++ .../api/res/purchase/PurOrderResponse.java | 74 ++++ .../purchase/PurOrderDetailService.java | 37 ++ .../api/service/purchase/PurOrderService.java | 27 ++ .../impl/PurOrderDetailServiceImpl.java | 95 +++++ .../purchase/impl/PurOrderServiceImpl.java | 61 +++ .../mybatis/mapper/purchase/PurOrderDao.xml | 54 +++ .../mapper/purchase/PurOrderDetailDao.xml | 114 ++++++ .../mybatis/mapper/purchase/PurPlanDao.xml | 4 +- 17 files changed, 1053 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/glxp/api/controller/purchase/PurOrderController.java create mode 100644 src/main/java/com/glxp/api/req/purchase/PostPurOrderRequest.java create mode 100644 src/main/java/com/glxp/api/req/purchase/PurOrderDetailRequest.java create mode 100644 src/main/java/com/glxp/api/req/purchase/PurOrderRequest.java create mode 100644 src/main/java/com/glxp/api/res/purchase/PurOrderResponse.java create mode 100644 src/main/java/com/glxp/api/service/purchase/PurOrderDetailService.java create mode 100644 src/main/java/com/glxp/api/service/purchase/PurOrderService.java create mode 100644 src/main/java/com/glxp/api/service/purchase/impl/PurOrderDetailServiceImpl.java create mode 100644 src/main/java/com/glxp/api/service/purchase/impl/PurOrderServiceImpl.java diff --git a/src/main/java/com/glxp/api/constant/ConstantStatus.java b/src/main/java/com/glxp/api/constant/ConstantStatus.java index f5b2c12e8..aebd3df26 100644 --- a/src/main/java/com/glxp/api/constant/ConstantStatus.java +++ b/src/main/java/com/glxp/api/constant/ConstantStatus.java @@ -174,6 +174,7 @@ public class ConstantStatus { public static final int FROM_PLAN = 12; //申购计划转单 public static final int FROM_RECEIVE = 13; //领用单据转单 public static final int FROM_THRORDER = 14; //第三方单据转单 + public static final int FROM_Order = 15; //采购计划转单 //DI类型 diff --git a/src/main/java/com/glxp/api/controller/purchase/PurOrderController.java b/src/main/java/com/glxp/api/controller/purchase/PurOrderController.java new file mode 100644 index 000000000..acfe154d0 --- /dev/null +++ b/src/main/java/com/glxp/api/controller/purchase/PurOrderController.java @@ -0,0 +1,363 @@ +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.constant.ConstantType; +import com.glxp.api.entity.basic.BasicProductsEntity; +import com.glxp.api.entity.inout.IoOrderDetailBizEntity; +import com.glxp.api.entity.inout.IoOrderEntity; +import com.glxp.api.entity.purchase.*; +import com.glxp.api.req.purchase.*; +import com.glxp.api.res.PageSimpleResponse; +import com.glxp.api.res.purchase.PurOrderDetailResponse; +import com.glxp.api.res.purchase.PurOrderResponse; +import com.glxp.api.res.purchase.PurPlanResponse; +import com.glxp.api.service.auth.CustomerService; +import com.glxp.api.service.inout.IoOrderDetailBizService; +import com.glxp.api.service.inout.IoOrderService; +import com.glxp.api.service.purchase.*; +import com.glxp.api.util.CustomUtil; +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.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + + +/** + * pur + * + * @author anthony.ywj + * @date 2022-10-12 + */ +@Validated +@RequiredArgsConstructor +@RestController +public class PurOrderController { + + + @Resource + PurOrderService purOrderService; + + @Resource + PurPlanDetailService purPlanDetailService; + @Resource + PurOrderDetailService purOrderDetailService; + + @Resource + CustomerService customerService; + @Resource + GennerOrderUtils gennerOrderUtils; + @Resource + IoOrderService ioOrderService; + @Resource + IoOrderDetailBizService ioOrderDetailBizService; + + + /** + * 新增采购计划 + */ + @RepeatSubmit() + @AuthRuleAnnotation("") + @PostMapping("/purchase/order/postOrder") + public BaseResponse postOrder(@RequestBody PostPurOrderRequest postPurOrderRequest) { + + Long userId = customerService.getUserId(); + PurOrderEntity purOrderEntity = postPurOrderRequest.getPurOrderEntity(); + + purOrderEntity.setCreateUser(userId + ""); + purOrderEntity.setCreateTime(new Date()); + purOrderEntity.setUpdateTime(new Date()); + purOrderEntity.setUpdateUser(userId + ""); + purOrderEntity.setStatus(postPurOrderRequest.getEditStatus()); //草稿状态 + + if(postPurOrderRequest.getType()!=null){ + String billNo = gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.SG_ORDER, "yyyyMMdd")); + purOrderEntity.setBillNo(billNo); + } + + if (purOrderEntity.getId() == null) { + purOrderService.insert(purOrderEntity); + } else { + purOrderService.update(purOrderEntity); + } + + return ResultVOUtils.success("提交成功!"); + } + + + /** + * 查询采购计划列表 + */ + @GetMapping("/purchase/order/list") + public BaseResponse list(PurOrderRequest purOrderRequest) { + + if (purOrderRequest.getStatus() == null) { + purOrderRequest.setStatus(11); //查询未审核和草稿状态 + } + + List purApplyEntities = purOrderService.queryPageList(purOrderRequest); + PageInfo pageInfo; + pageInfo = new PageInfo<>(purApplyEntities); + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + pageSimpleResponse.setList(purApplyEntities); + return ResultVOUtils.success(pageSimpleResponse); + + } + + + /** + * 查询采购订单列表 + */ + @GetMapping("/purchase/order/auditList") + public BaseResponse auditList(PurOrderRequest purOrderRequest) { + + if (purOrderRequest.getStatus() == null) { + purOrderRequest.setStatus(10); //查询未审核和已审核状态 + } + List purApplyEntities = purOrderService.queryPageList(purOrderRequest); + PageInfo pageInfo; + pageInfo = new PageInfo<>(purApplyEntities); + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + pageSimpleResponse.setList(purApplyEntities); + return ResultVOUtils.success(pageSimpleResponse); + + } + + + /** + * 审核采购订单 + */ + @RepeatSubmit() + @PostMapping("/purchase/order/auditOrder") + public BaseResponse auditOrder(@RequestBody PostPurOrderRequest postPurOrderRequest) { + Long userId = customerService.getUserId(); + PurOrderEntity purOrderEntity = postPurOrderRequest.getPurOrderEntity(); + purOrderEntity.setUpdateTime(new Date()); + purOrderEntity.setAuditUser(userId + ""); + purOrderEntity.setStatus(postPurOrderRequest.getEditStatus()); + purOrderService.update(purOrderEntity); + String billNo=""; + List purOrderDetailEntities = purOrderDetailService.findByOrderId(purOrderEntity.getId() + ""); + + //对计划单里面的供应商进行分组 + Map> map = purOrderDetailEntities.stream().collect(Collectors.groupingBy(PurOrderDetailEntity::getSupId)); + + if (postPurOrderRequest.getEditStatus() == ConstantStatus.APPLY_AUDIT_ED) { + + if (CollUtil.isNotEmpty(purOrderDetailEntities) && postPurOrderRequest.isAutoPurchase()==true + && StrUtil.isNotEmpty(postPurOrderRequest.getTargetSubInv()) && StrUtil.isNotEmpty(postPurOrderRequest.getTargetBillAction()) ) { + + for (Map.Entry> m:map.entrySet()) { + //生产单据表信息 + IoOrderEntity ioOrderEntity=new IoOrderEntity(); + ioOrderEntity.setBillNo(gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER ,"yyyyMMdd"))); + ioOrderEntity.setCorpOrderId(CustomUtil.getDate()); + ioOrderEntity.setMainAction(ConstantType.TYPE_PUT); + ioOrderEntity.setAction(postPurOrderRequest.getTargetBillAction()); + ioOrderEntity.setFromCorp(m.getKey()); + ioOrderEntity.setFromType(ConstantStatus.FROM_Order); + ioOrderEntity.setStatus(1); + ioOrderEntity.setDealStatus(1); + ioOrderEntity.setOrderType(1); + ioOrderEntity.setCreateTime(new Date()); + ioOrderEntity.setCreateUser(postPurOrderRequest.getPurOrderEntity().getAuditUser()); + ioOrderEntity.setUpdateTime(new Date()); + ioOrderEntity.setUpdateUser(postPurOrderRequest.getPurOrderEntity().getAuditUser()); + ioOrderEntity.setCustomerId("110"); + ioOrderEntity.setDeptCode(postPurOrderRequest.getTargetDeptCode()); + ioOrderEntity.setInvCode(postPurOrderRequest.getTargetSubInv()); + ioOrderService.insertOrder(ioOrderEntity); + billNo+=ioOrderEntity.getBillNo()+","; + //插入业务单表 + for (PurOrderDetailEntity obj:m.getValue()) { + BasicProductsEntity basicProductsEntity = purOrderDetailService.selectIoOrderDetailBiz(obj.getId()); + IoOrderDetailBizEntity ioOrderDetailBizEntity = new IoOrderDetailBizEntity(); + ioOrderDetailBizEntity.setOrderIdFk(ioOrderEntity.getBillNo()); + ioOrderDetailBizEntity.setBindRlFk(Long.valueOf(obj.getProductId())); + ioOrderDetailBizEntity.setCount(obj.getCount()); + ioOrderDetailBizEntity.setUuidFk(basicProductsEntity.getUuid()); + ioOrderDetailBizEntity.setNameCode(basicProductsEntity.getNameCode()); + ioOrderDetailBizEntity.setCoName(basicProductsEntity.getCpmctymc()); + ioOrderDetailBizEntity.setCertCode(basicProductsEntity.getZczbhhzbapzbh()); + ioOrderDetailBizEntity.setYlqxzcrbarmc(basicProductsEntity.getYlqxzcrbarmc()); + ioOrderDetailBizEntity.setManufacturer(basicProductsEntity.getManufactory()); + ioOrderDetailBizEntity.setMeasname(basicProductsEntity.getMeasname()); + ioOrderDetailBizEntity.setSpec(basicProductsEntity.getGgxh()); + if (basicProductsEntity.getPrice() != null) { + ioOrderDetailBizEntity.setPrice(BigDecimal.valueOf(basicProductsEntity.getPrice())); + } + ioOrderDetailBizEntity.setSupId(obj.getSupId()); + ioOrderDetailBizService.insert(ioOrderDetailBizEntity); + } + } + purOrderEntity.setStockOrderNo(billNo.substring(0,billNo.length()-1)); + purOrderService.update(purOrderEntity); + } + } + return ResultVOUtils.success("更新成功!"); + } + + + /** + * 查询采购订单列表 + */ + @GetMapping("/purchase/order/list/detail") + public BaseResponse detailList(PurOrderDetailRequest purApplyDetailRequest) { + + List purOrderDetailResponseList = purOrderDetailService.joinQueryList(purApplyDetailRequest); + PageInfo pageInfo; + pageInfo = new PageInfo<>(purOrderDetailResponseList); + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + pageSimpleResponse.setList(purOrderDetailResponseList); + return ResultVOUtils.success(pageSimpleResponse); + + } + + /** + * 添加申购单到采购单里面 + */ + @PostMapping("/purchase/order/addPlanDetailAndOrder") + public BaseResponse addPlanDetailAndOrder(@RequestBody PurOrderRequest purOrderRequest) { + + if (purOrderRequest.getApplyId() == null || purOrderRequest.getId() == null) { + return ResultVOUtils.error(999,"参数错误!"); + } + + //查询申购单详情 + PurPlanDetailRequest purPlanDetailRequest=new PurPlanDetailRequest(); + purPlanDetailRequest.setOrderIdFk(purOrderRequest.getApplyId()+""); + List purApplyDetailEntityList=purPlanDetailService.getPurPlanDetailEntityList(purPlanDetailRequest); + //使用stream拷贝list + List purOrderDetailEntityList = purApplyDetailEntityList.stream() + .map(e-> { + PurOrderDetailEntity d = new PurOrderDetailEntity(); + BeanUtils.copyProperties(e, d); + return d; + }) + .collect(Collectors.toList()); + + for (PurOrderDetailEntity obj:purOrderDetailEntityList){ + obj.setOrderIdFk(purOrderRequest.getId()+""); + } + //获取详情表信息 + PurOrderDetailRequest PurOrderDetailRequest=new PurOrderDetailRequest(); + PurOrderDetailRequest.setOrderIdFk(purOrderRequest.getId() + ""); + List purOrderDetailEntities=purOrderDetailService.getPurOrderDetailEntityList(PurOrderDetailRequest); + + + List ids=new ArrayList<>(); + for (PurOrderDetailEntity obj:purOrderDetailEntities){ + for (PurOrderDetailEntity obj1:purOrderDetailEntityList){ + if(obj.getProductId().equals(obj1.getProductId())){ + //获取存在在详情表和申购单里面一样的产品 + ids.add(obj.getId().longValue()); + break; + } + } + } + //删除存在的产品 + if(ids.size()>0){ + purOrderDetailService.deleteByIds(ids); + } + + boolean falg= purOrderDetailService.insertPurOrderDetailEntity(purOrderDetailEntityList); + if(falg){ + //查询申购单 + return ResultVOUtils.success("添加成功"); + + }else{ + return ResultVOUtils.success("添加失败"); + } + } + + + /** + * 添加产品到采购单里面 + */ + @PostMapping("/purchase/order/addOrderDetail") + public BaseResponse addOrderDetail(@RequestBody PurOrderDetailEntity purOrderDetailEntity) { + + boolean falg=purOrderDetailService.insert(purOrderDetailEntity); + if(falg){ + return ResultVOUtils.success("添加成功"); + }else { + return ResultVOUtils.success("添加失败"); + } + + } + + + /** + * 新增计划单 + */ + @AuthRuleAnnotation("") + @PostMapping("/purchase/order/add") + public BaseResponse add() { + Long userId = customerService.getUserId(); + PurOrderEntity purOrderEntity= new PurOrderEntity(); + purOrderEntity.setCreateUser(userId + ""); + purOrderEntity.setCreateTime(new Date()); + purOrderEntity.setUpdateTime(new Date()); + purOrderEntity.setUpdateUser(userId + ""); + purOrderService.insert(purOrderEntity); + Long id=purOrderEntity.getId(); + return ResultVOUtils.success(id); + } + + /** + * 删除申购单和详情 + */ + @AuthRuleAnnotation("") + @PostMapping("/purchase/order/delOrderDetailAll") + public BaseResponse delApplyDetailAll(@RequestBody PurApplyEntity purApplyEntity) { + + if(purApplyEntity.getId()!=null){ + purOrderService.deleteById(purApplyEntity.getId()); + purOrderDetailService.deleteByOrderId(purApplyEntity.getId() + "" ); + }else { + return ResultVOUtils.error(999,"参数有误!"); + } + return ResultVOUtils.success(); + } + + /** + * 修改计划详情单 + */ + @RepeatSubmit() + @PostMapping("/purchase/order/updateDetail") + public BaseResponse detailEdit(@RequestBody PurOrderDetailEntity purOrderDetailEntity) { + purOrderDetailService.update(purOrderDetailEntity); + return ResultVOUtils.success("修改成功"); + } + /** + * 删除采购订单 + * + * @param ids 主键串 + */ + @DeleteMapping("/purchase/order/detail/{ids}") + public BaseResponse detailRemove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + + purOrderDetailService.deleteByIds(Arrays.asList(ids)); + return ResultVOUtils.success("删除成功"); + } + +} diff --git a/src/main/java/com/glxp/api/controller/purchase/PurPlanController.java b/src/main/java/com/glxp/api/controller/purchase/PurPlanController.java index cacb3d302..6e427b495 100644 --- a/src/main/java/com/glxp/api/controller/purchase/PurPlanController.java +++ b/src/main/java/com/glxp/api/controller/purchase/PurPlanController.java @@ -155,6 +155,25 @@ public class PurPlanController { } + /** + * 查询采购计划列表 + */ + @GetMapping("/purchase/plan/selectApprovedList") + public BaseResponse selectApprovedList(PurPlanRequest purApplyRequest) { + + if (purApplyRequest.getStatus() == null) { + purApplyRequest.setStatus(12); //查询已审核状态 + } + List purApplyEntities = purPlanService.queryPageList(purApplyRequest); + PageInfo pageInfo; + pageInfo = new PageInfo<>(purApplyEntities); + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + pageSimpleResponse.setList(purApplyEntities); + return ResultVOUtils.success(pageSimpleResponse); + + } + /** * 审核采购计划 diff --git a/src/main/java/com/glxp/api/dao/purchase/PurOrderDao.java b/src/main/java/com/glxp/api/dao/purchase/PurOrderDao.java index 057f0018b..76001694e 100644 --- a/src/main/java/com/glxp/api/dao/purchase/PurOrderDao.java +++ b/src/main/java/com/glxp/api/dao/purchase/PurOrderDao.java @@ -2,6 +2,14 @@ package com.glxp.api.dao.purchase; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.purchase.PurOrderEntity; +import com.glxp.api.req.purchase.PurOrderRequest; +import com.glxp.api.req.purchase.PurPlanRequest; +import com.glxp.api.res.purchase.PurOrderResponse; +import com.glxp.api.res.purchase.PurPlanResponse; + +import java.util.List; public interface PurOrderDao extends BaseMapper { + + List queryPageList(PurOrderRequest purPlanRequest); } \ No newline at end of file diff --git a/src/main/java/com/glxp/api/dao/purchase/PurOrderDetailDao.java b/src/main/java/com/glxp/api/dao/purchase/PurOrderDetailDao.java index 9fb555f8e..af60ca523 100644 --- a/src/main/java/com/glxp/api/dao/purchase/PurOrderDetailDao.java +++ b/src/main/java/com/glxp/api/dao/purchase/PurOrderDetailDao.java @@ -1,7 +1,29 @@ package com.glxp.api.dao.purchase; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.glxp.api.entity.basic.BasicProductsEntity; import com.glxp.api.entity.purchase.PurOrderDetailEntity; +import com.glxp.api.entity.purchase.PurPlanDetailEntity; +import com.glxp.api.req.purchase.PurOrderDetailRequest; +import com.glxp.api.req.purchase.PurPlanDetailRequest; +import com.glxp.api.res.purchase.PurOrderDetailResponse; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface PurOrderDetailDao extends BaseMapper { + + List queryPageList(PurOrderDetailRequest purOrderDetailRequest); + + List joinQueryList(PurOrderDetailRequest purOrderDetailRequest); + + Boolean update(PurOrderDetailEntity purOrderDetailEntity); + + Boolean deleteByIds(@Param("ids") List ids); + + Boolean deleteByOrderId(@Param("orderIdFk") String orderIdFk); + + boolean insertPurOrderDetailEntity(@Param("datas") List purOrderDetailEntityList); + + BasicProductsEntity selectIoOrderDetailBiz(@Param("id") long id); } \ No newline at end of file diff --git a/src/main/java/com/glxp/api/entity/purchase/PurOrderEntity.java b/src/main/java/com/glxp/api/entity/purchase/PurOrderEntity.java index d3f1a0ab1..14ed1551e 100644 --- a/src/main/java/com/glxp/api/entity/purchase/PurOrderEntity.java +++ b/src/main/java/com/glxp/api/entity/purchase/PurOrderEntity.java @@ -29,7 +29,7 @@ public class PurOrderEntity { * 状态(1.草稿,2.未审核,3.已审核) */ @TableField(value = "`status`") - private Byte status; + private Integer status; /** * 订单类型 diff --git a/src/main/java/com/glxp/api/req/purchase/PostPurOrderRequest.java b/src/main/java/com/glxp/api/req/purchase/PostPurOrderRequest.java new file mode 100644 index 000000000..170118cd4 --- /dev/null +++ b/src/main/java/com/glxp/api/req/purchase/PostPurOrderRequest.java @@ -0,0 +1,26 @@ +package com.glxp.api.req.purchase; + + +import com.glxp.api.entity.purchase.PurOrderDetailEntity; +import com.glxp.api.entity.purchase.PurOrderEntity; +import com.glxp.api.entity.purchase.PurPlanDetailEntity; +import com.glxp.api.entity.purchase.PurPlanEntity; +import lombok.Data; + +import java.util.List; + +@Data +public class PostPurOrderRequest { + + int editStatus; + PurOrderEntity purOrderEntity; + List purOrderDetailEntityList; +// List subErpOrders; + Integer type; + boolean autoPurchase; + String targetSubInv; + String targetBillAction; + String targetDeptCode; + + +} diff --git a/src/main/java/com/glxp/api/req/purchase/PurOrderDetailRequest.java b/src/main/java/com/glxp/api/req/purchase/PurOrderDetailRequest.java new file mode 100644 index 000000000..6d4bc6da5 --- /dev/null +++ b/src/main/java/com/glxp/api/req/purchase/PurOrderDetailRequest.java @@ -0,0 +1,50 @@ +package com.glxp.api.req.purchase; + + +import com.glxp.api.util.page.ListPageRequest; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +public class PurOrderDetailRequest extends ListPageRequest { + + /** + * + */ + @NotNull(message = "不能为空") + private Long id; + + /** + * 订单外键 + */ + @NotBlank(message = "订单外键不能为空") + private String orderIdFk; + + /** + * 产品ID + */ + @NotNull(message = "产品ID不能为空") + private Long productId; + + /** + * 产品名称 + */ + @NotBlank(message = "产品名称不能为空") + private String productName; + + /** + * 数量 + */ + @NotNull(message = "数量不能为空") + private Long count; + + /** + * 供应商ID + */ + @NotBlank(message = "供应商ID不能为空") + private String supId; + + +} diff --git a/src/main/java/com/glxp/api/req/purchase/PurOrderRequest.java b/src/main/java/com/glxp/api/req/purchase/PurOrderRequest.java new file mode 100644 index 000000000..1800d685a --- /dev/null +++ b/src/main/java/com/glxp/api/req/purchase/PurOrderRequest.java @@ -0,0 +1,98 @@ +package com.glxp.api.req.purchase; + + +import com.glxp.api.util.page.ListPageRequest; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.Date; + +/** + * pur业务对象 pur_plan + * + * @author anthony.ywj + * @date 2022-10-12 + */ + + +@Data +public class PurOrderRequest extends ListPageRequest { + + + /** + * + */ + @NotNull(message = "不能为空") + private Long id; + + /** + * 单据号 + */ + @NotBlank(message = "单据号不能为空") + private String billNo; + + /** + * 单据日期 + */ + @NotNull(message = "单据日期不能为空") + private Date billDate; + + /** + * 状态(1.草稿,2.未审核,3.已审核) + */ + @NotNull(message = "状态(1.草稿,2.未审核,3.已审核)不能为空") + private Integer status; + + /** + * 申购类型 + */ + @NotNull(message = "申购类型不能为空") + private Long billType; + + /** + * 申购说明 + */ + @NotBlank(message = "申购说明不能为空") + private String remark; + + /** + * 当前仓库 + */ + @NotBlank(message = "当前仓库不能为空") + private String invCode; + + /** + * 所属部门 + */ + @NotBlank(message = "所属部门不能为空") + private String deptCode; + + /** + * 审核人 + */ + @NotBlank(message = "审核人不能为空") + private String auditUser; + + /** + * 审核时间 + */ + @NotNull(message = "审核时间不能为空") + private Date auditTime; + + private String createUser; + + /** + * 创建时间 + */ + private Date createTime; + + private String startDate; + private String endDate; + + private Long applyId; + + + + +} diff --git a/src/main/java/com/glxp/api/res/purchase/PurOrderResponse.java b/src/main/java/com/glxp/api/res/purchase/PurOrderResponse.java new file mode 100644 index 000000000..0969060c5 --- /dev/null +++ b/src/main/java/com/glxp/api/res/purchase/PurOrderResponse.java @@ -0,0 +1,74 @@ +package com.glxp.api.res.purchase; + +import lombok.Data; + +import java.util.Date; + +@Data +public class PurOrderResponse { + + /** + * + */ + private Integer id; + /** + * 单据号 + */ + private String billNo; + /** + * 单据日期 + */ + private Date billDate; + /** + * 状态(1.草稿,2.未审核,3.已审核) + */ + private Integer status; + /** + * 申购类型 + */ + private String billType; + /** + * 申购说明 + */ + private String remark; + private String invCode; + /** + * 所属部门 + */ + private String deptCode; + /** + * 审核人 + */ + private String auditBy; + /** + * 审核时间 + */ + private Date auditTime; + + private String createBy; + + /** + * 创建时间 + */ + private Date createTime; + + private Date updateTime; + + private String invName; + private String subInvName; + private String deptName; + private String auditRemark; + + private String applyCreateBy; //申购人 + private String applyAuditBy; //申购审核人 + private String applyRemark; //申购说明 + private String applyBillNo; //申购单据号,多单以逗号隔开 + + private String stockOrderNo; + + private String createUser; + private String updateUser; + + private String createUserName; + private String auditUserName; +} diff --git a/src/main/java/com/glxp/api/service/purchase/PurOrderDetailService.java b/src/main/java/com/glxp/api/service/purchase/PurOrderDetailService.java new file mode 100644 index 000000000..55da67817 --- /dev/null +++ b/src/main/java/com/glxp/api/service/purchase/PurOrderDetailService.java @@ -0,0 +1,37 @@ +package com.glxp.api.service.purchase; + + + +import com.glxp.api.entity.basic.BasicProductsEntity; +import com.glxp.api.entity.purchase.PurOrderDetailEntity; +import com.glxp.api.entity.purchase.PurPlanDetailEntity; +import com.glxp.api.req.purchase.PurOrderDetailRequest; +import com.glxp.api.req.purchase.PurPlanDetailRequest; +import com.glxp.api.res.purchase.PurOrderDetailResponse; + +import java.util.List; + +public interface PurOrderDetailService { + + List joinQueryList(PurOrderDetailRequest purOrderDetailRequest); + + + List findByOrderId(String orderId); + + List queryPageList(PurOrderDetailRequest purOrderDetailRequest); + + List getPurOrderDetailEntityList(PurOrderDetailRequest purOrderDetailRequest); + + Boolean insert(PurOrderDetailEntity purOrderDetailEntity); + + Boolean update(PurOrderDetailEntity purOrderDetailEntity); + + Boolean deleteByIds(List ids); + + Boolean deleteByOrderId(String orderIdfK); + + boolean insertPurOrderDetailEntity(List purOrderDetailEntityList); + + BasicProductsEntity selectIoOrderDetailBiz(long id); + +} diff --git a/src/main/java/com/glxp/api/service/purchase/PurOrderService.java b/src/main/java/com/glxp/api/service/purchase/PurOrderService.java new file mode 100644 index 000000000..214698ca5 --- /dev/null +++ b/src/main/java/com/glxp/api/service/purchase/PurOrderService.java @@ -0,0 +1,27 @@ +package com.glxp.api.service.purchase; + + + +import com.glxp.api.entity.purchase.PurOrderEntity; +import com.glxp.api.entity.purchase.PurPlanEntity; +import com.glxp.api.req.purchase.PurOrderRequest; +import com.glxp.api.req.purchase.PurPlanRequest; +import com.glxp.api.res.purchase.PurOrderResponse; +import com.glxp.api.res.purchase.PurPlanResponse; + +import java.util.List; + +public interface PurOrderService { + + List queryPageList(PurOrderRequest purOrderRequest); + + Boolean insert(PurOrderEntity purOrderEntity); + + Boolean update(PurOrderEntity purOrderEntity); + + Boolean deleteByIds(List ids); + + Boolean deleteById(long id); + + +} diff --git a/src/main/java/com/glxp/api/service/purchase/impl/PurOrderDetailServiceImpl.java b/src/main/java/com/glxp/api/service/purchase/impl/PurOrderDetailServiceImpl.java new file mode 100644 index 000000000..c1368bff8 --- /dev/null +++ b/src/main/java/com/glxp/api/service/purchase/impl/PurOrderDetailServiceImpl.java @@ -0,0 +1,95 @@ +package com.glxp.api.service.purchase.impl; + +import com.github.pagehelper.PageHelper; +import com.glxp.api.dao.purchase.PurOrderDetailDao; +import com.glxp.api.dao.purchase.PurPlanDetailDao; +import com.glxp.api.entity.basic.BasicProductsEntity; +import com.glxp.api.entity.purchase.PurOrderDetailEntity; +import com.glxp.api.entity.purchase.PurPlanDetailEntity; +import com.glxp.api.req.purchase.PurOrderDetailRequest; +import com.glxp.api.req.purchase.PurPlanDetailRequest; +import com.glxp.api.res.purchase.PurOrderDetailResponse; +import com.glxp.api.service.purchase.PurOrderDetailService; +import com.glxp.api.service.purchase.PurPlanDetailService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +@Service +public class PurOrderDetailServiceImpl implements PurOrderDetailService { + + @Resource + PurOrderDetailDao purOrderDetailDao; + + @Override + public List joinQueryList(PurOrderDetailRequest purOrderDetailRequest) { + if (purOrderDetailRequest == null) { + return Collections.emptyList(); + } + if (purOrderDetailRequest.getPage() != null) { + int offset = (purOrderDetailRequest.getPage() - 1) * purOrderDetailRequest.getLimit(); + PageHelper.offsetPage(offset, purOrderDetailRequest.getLimit()); + } + List data = purOrderDetailDao.joinQueryList(purOrderDetailRequest); + return data; + } + + @Override + public List findByOrderId(String orderId) { + PurOrderDetailRequest purOrderDetailRequest = new PurOrderDetailRequest(); + purOrderDetailRequest.setOrderIdFk(orderId); + List data = purOrderDetailDao.queryPageList(purOrderDetailRequest); + return data; + } + + @Override + public List queryPageList(PurOrderDetailRequest purOrderDetailRequest) { + if (purOrderDetailRequest == null) { + return Collections.emptyList(); + } + if (purOrderDetailRequest.getPage() != null) { + int offset = (purOrderDetailRequest.getPage() - 1) * purOrderDetailRequest.getLimit(); + PageHelper.offsetPage(offset, purOrderDetailRequest.getLimit()); + } + List data = purOrderDetailDao.queryPageList(purOrderDetailRequest); + return data; + } + + @Override + public List getPurOrderDetailEntityList(PurOrderDetailRequest purOrderDetailRequest) { + return purOrderDetailDao.queryPageList(purOrderDetailRequest); + } + + @Override + public Boolean insert(PurOrderDetailEntity purOrderDetailEntity) { + return purOrderDetailDao.insert(purOrderDetailEntity)>0 ? true:false; + } + + @Override + public Boolean update(PurOrderDetailEntity purOrderDetailEntity) { + return purOrderDetailDao.update(purOrderDetailEntity); + } + + @Override + public Boolean deleteByIds(List ids) { + return purOrderDetailDao.deleteByIds(ids); + } + + @Override + public Boolean deleteByOrderId(String orderIdfK) { + return purOrderDetailDao.deleteByOrderId(orderIdfK); + + } + + @Override + public boolean insertPurOrderDetailEntity(List purOrderDetailEntityList) { + return purOrderDetailDao.insertPurOrderDetailEntity(purOrderDetailEntityList); + } + + @Override + public BasicProductsEntity selectIoOrderDetailBiz(long id) { + return purOrderDetailDao.selectIoOrderDetailBiz(id); + } +} diff --git a/src/main/java/com/glxp/api/service/purchase/impl/PurOrderServiceImpl.java b/src/main/java/com/glxp/api/service/purchase/impl/PurOrderServiceImpl.java new file mode 100644 index 000000000..ad9919dac --- /dev/null +++ b/src/main/java/com/glxp/api/service/purchase/impl/PurOrderServiceImpl.java @@ -0,0 +1,61 @@ +package com.glxp.api.service.purchase.impl; + +import com.github.pagehelper.PageHelper; +import com.glxp.api.dao.purchase.PurOrderDao; +import com.glxp.api.dao.purchase.PurPlanDao; +import com.glxp.api.entity.purchase.PurOrderEntity; +import com.glxp.api.entity.purchase.PurPlanEntity; +import com.glxp.api.req.purchase.PurOrderRequest; +import com.glxp.api.req.purchase.PurPlanRequest; +import com.glxp.api.res.purchase.PurOrderResponse; +import com.glxp.api.res.purchase.PurPlanResponse; +import com.glxp.api.service.purchase.PurOrderService; +import com.glxp.api.service.purchase.PurPlanService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +@Service +public class PurOrderServiceImpl implements PurOrderService { + + @Resource + PurPlanDao purPlanDao; + + @Resource + PurOrderDao purOrderDao; + + @Override + public List queryPageList(PurOrderRequest purOrderRequest) { + if (purOrderRequest == null) { + return Collections.emptyList(); + } + if (purOrderRequest.getPage() != null) { + int offset = (purOrderRequest.getPage() - 1) * purOrderRequest.getLimit(); + PageHelper.offsetPage(offset, purOrderRequest.getLimit()); + } + List data = purOrderDao.queryPageList(purOrderRequest); + return data; + } + + @Override + public Boolean insert(PurOrderEntity purOrderEntity) { + return purOrderDao.insert(purOrderEntity)>0 ? true:false; + } + + @Override + public Boolean update(PurOrderEntity purOrderEntity) { + return purOrderDao.updateById(purOrderEntity)>0 ? true:false; + } + + @Override + public Boolean deleteByIds(List ids) { + return purOrderDao.deleteBatchIds(ids)>0 ? true:false; + } + + @Override + public Boolean deleteById(long id) { + return purOrderDao.deleteById(id)>0 ? true:false; + } +} diff --git a/src/main/resources/mybatis/mapper/purchase/PurOrderDao.xml b/src/main/resources/mybatis/mapper/purchase/PurOrderDao.xml index 5d6369403..fdb2d6440 100644 --- a/src/main/resources/mybatis/mapper/purchase/PurOrderDao.xml +++ b/src/main/resources/mybatis/mapper/purchase/PurOrderDao.xml @@ -31,4 +31,58 @@ createTime, auditUser, auditTime, auditRemark, updateTime, updateUser, applyCreateUser, applyAuditUser, applyRemark, applyBillNo, stockOrderNo + + + + + \ No newline at end of file diff --git a/src/main/resources/mybatis/mapper/purchase/PurOrderDetailDao.xml b/src/main/resources/mybatis/mapper/purchase/PurOrderDetailDao.xml index fa075ea5e..4bc2e3d03 100644 --- a/src/main/resources/mybatis/mapper/purchase/PurOrderDetailDao.xml +++ b/src/main/resources/mybatis/mapper/purchase/PurOrderDetailDao.xml @@ -16,4 +16,118 @@ id, orderIdFk, productId, productName, `count`, supId, zczbhhzbapzbh + + + + + + + + + + + DELETE FROM pur_order_detail WHERE id in + + #{item} + + + + + + + + DELETE + FROM pur_order_detail + WHERE orderIdFk = #{orderIdFk} + + + + UPDATE pur_order_detail + + orderIdFk=#{orderIdFk}, + productId=#{productId}, + productName=#{productName}, + `count`=#{count}, + supId=#{supId}, + zczbhhzbapzbh=#{zczbhhzbapzbh}, + + WHERE id = #{id} + + + + + REPLACE INTO pur_order_detail + ( orderIdFk,productId,productName,count,supId,zczbhhzbapzbh) values + + + ( + #{item.orderIdFk}, + #{item.productId}, + #{item.productName}, + #{item.count}, + #{item.supId}, + #{item.zczbhhzbapzbh} + ) + + + + + \ No newline at end of file diff --git a/src/main/resources/mybatis/mapper/purchase/PurPlanDao.xml b/src/main/resources/mybatis/mapper/purchase/PurPlanDao.xml index 3c2a129f7..e3ba63592 100644 --- a/src/main/resources/mybatis/mapper/purchase/PurPlanDao.xml +++ b/src/main/resources/mybatis/mapper/purchase/PurPlanDao.xml @@ -37,7 +37,9 @@ and ( pur_plan.status = 1 or pur_plan.status=2 or pur_plan.status=4) - + + and (pur_plan.status=3) + AND deptCode = #{deptCode}