You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
305 lines
13 KiB
Java
305 lines
13 KiB
Java
2 years ago
|
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.PurApplyEntity;
|
||
|
import com.glxp.api.entity.purchase.PurArrivalDetailEntity;
|
||
|
import com.glxp.api.entity.purchase.PurArrivalEntity;
|
||
|
import com.glxp.api.req.purchase.PostPurArrivalRequest;
|
||
|
import com.glxp.api.req.purchase.PurArrivalRequest;
|
||
|
import com.glxp.api.req.purchase.PurOrderDetailRequest;
|
||
|
import com.glxp.api.res.PageSimpleResponse;
|
||
|
import com.glxp.api.res.purchase.PurArrivalDetailResponse;
|
||
|
import com.glxp.api.res.purchase.PurArrivalResponse;
|
||
|
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.PurArrivalDetailService;
|
||
|
import com.glxp.api.service.purchase.PurArrivalService;
|
||
|
import com.glxp.api.util.CustomUtil;
|
||
|
import com.glxp.api.util.GennerOrderUtils;
|
||
|
import com.glxp.api.util.OrderNoTypeBean;
|
||
|
import lombok.RequiredArgsConstructor;
|
||
|
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.Arrays;
|
||
|
import java.util.Date;
|
||
|
import java.util.List;
|
||
|
import java.util.Map;
|
||
|
import java.util.stream.Collectors;
|
||
|
|
||
|
@Validated
|
||
|
@RequiredArgsConstructor
|
||
|
@RestController
|
||
|
public class PurArrivalController {
|
||
|
|
||
|
|
||
|
@Resource
|
||
|
PurArrivalService purArrivalService;
|
||
|
|
||
|
@Resource
|
||
|
PurArrivalDetailService purArrivalDetailService;
|
||
|
|
||
|
@Resource
|
||
|
CustomerService customerService;
|
||
|
@Resource
|
||
|
GennerOrderUtils gennerOrderUtils;
|
||
|
@Resource
|
||
|
IoOrderService ioOrderService;
|
||
|
@Resource
|
||
|
IoOrderDetailBizService ioOrderDetailBizService;
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 新增到货单
|
||
|
*/
|
||
|
@RepeatSubmit()
|
||
|
@AuthRuleAnnotation("")
|
||
|
@PostMapping("/purchase/arrival/postOrder")
|
||
|
public BaseResponse postOrder(@RequestBody PostPurArrivalRequest purArrivalRequest) {
|
||
|
|
||
|
Long userId = customerService.getUserId();
|
||
|
PurArrivalEntity purArrivalEntity = purArrivalRequest.getPurArrivalEntity();
|
||
|
|
||
|
purArrivalEntity.setCreateUser(userId + "");
|
||
|
purArrivalEntity.setCreateTime(new Date());
|
||
|
purArrivalEntity.setUpdateTime(new Date());
|
||
|
purArrivalEntity.setUpdateUser(userId + "");
|
||
|
purArrivalEntity.setStatus(purArrivalRequest.getEditStatus()); //草稿状态
|
||
|
|
||
|
if (purArrivalRequest.getType() != null) {
|
||
|
String billNo = gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.SH_ORDER, "yyyyMMdd"));
|
||
|
purArrivalEntity.setBillNo(billNo);
|
||
|
}
|
||
|
|
||
|
if (purArrivalEntity.getId() == null) {
|
||
|
purArrivalService.insert(purArrivalEntity);
|
||
|
} else {
|
||
|
purArrivalService.update(purArrivalEntity);
|
||
|
}
|
||
|
|
||
|
return ResultVOUtils.success("提交成功!");
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 查询未审核和草稿状态
|
||
|
*/
|
||
|
@GetMapping("/purchase/arrival/list")
|
||
|
public BaseResponse list(PurArrivalRequest purArrivalRequest) {
|
||
|
|
||
|
if (purArrivalRequest.getStatus() == null) {
|
||
|
purArrivalRequest.setStatus(11); //查询未审核和草稿状态
|
||
|
}
|
||
|
|
||
|
List<PurArrivalResponse> purArrivalResponses = purArrivalService.queryPageList(purArrivalRequest);
|
||
|
PageInfo<PurArrivalResponse> pageInfo;
|
||
|
pageInfo = new PageInfo<>(purArrivalResponses);
|
||
|
PageSimpleResponse<PurArrivalResponse> pageSimpleResponse = new PageSimpleResponse<>();
|
||
|
pageSimpleResponse.setTotal(pageInfo.getTotal());
|
||
|
pageSimpleResponse.setList(purArrivalResponses);
|
||
|
return ResultVOUtils.success(pageSimpleResponse);
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 查询未审核和已审核状态
|
||
|
*/
|
||
|
@GetMapping("/purchase/arrival/auditList")
|
||
|
public BaseResponse auditList(PurArrivalRequest purArrivalRequest) {
|
||
|
|
||
|
if (purArrivalRequest.getStatus() == null) {
|
||
|
purArrivalRequest.setStatus(10); //查询未审核和已审核状态
|
||
|
}
|
||
|
List<PurArrivalResponse> purArrivalResponses = purArrivalService.queryPageList(purArrivalRequest);
|
||
|
PageInfo<PurArrivalResponse> pageInfo;
|
||
|
pageInfo = new PageInfo<>(purArrivalResponses);
|
||
|
PageSimpleResponse<PurArrivalResponse> pageSimpleResponse = new PageSimpleResponse<>();
|
||
|
pageSimpleResponse.setTotal(pageInfo.getTotal());
|
||
|
pageSimpleResponse.setList(purArrivalResponses);
|
||
|
return ResultVOUtils.success(pageSimpleResponse);
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 审核采购订单
|
||
|
*/
|
||
|
@RepeatSubmit()
|
||
|
@PostMapping("/purchase/arrival/auditOrder")
|
||
|
public BaseResponse auditOrder(@RequestBody PostPurArrivalRequest postPurArrivalRequest) {
|
||
|
Long userId = customerService.getUserId();
|
||
|
PurArrivalEntity purArrivalEntity = postPurArrivalRequest.getPurArrivalEntity();
|
||
|
purArrivalEntity.setUpdateTime(new Date());
|
||
|
purArrivalEntity.setAuditUser(userId + "");
|
||
|
purArrivalEntity.setStatus(postPurArrivalRequest.getEditStatus());
|
||
|
purArrivalService.update(purArrivalEntity);
|
||
|
String billNo = "";
|
||
|
List<PurArrivalDetailEntity> purOrderDetailEntities = purArrivalDetailService.findByOrderId(purArrivalEntity.getId() + "");
|
||
|
|
||
|
//对计划单里面的供应商进行分组
|
||
|
Map<String, List<PurArrivalDetailEntity>> map = purOrderDetailEntities.stream().collect(Collectors.groupingBy(PurArrivalDetailEntity::getSupId));
|
||
|
|
||
|
if (postPurArrivalRequest.getEditStatus() == ConstantStatus.APPLY_AUDIT_ED) {
|
||
|
|
||
|
if (CollUtil.isNotEmpty(purOrderDetailEntities) && postPurArrivalRequest.isAutoPurchase() == true
|
||
|
&& StrUtil.isNotEmpty(postPurArrivalRequest.getTargetSubInv()) && StrUtil.isNotEmpty(postPurArrivalRequest.getTargetBillAction())) {
|
||
|
|
||
|
for (Map.Entry<String, List<PurArrivalDetailEntity>> 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(postPurArrivalRequest.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(postPurArrivalRequest.getPurArrivalEntity().getAuditUser());
|
||
|
ioOrderEntity.setUpdateTime(new Date());
|
||
|
ioOrderEntity.setUpdateUser(postPurArrivalRequest.getPurArrivalEntity().getAuditUser());
|
||
|
ioOrderEntity.setCustomerId("110");
|
||
|
ioOrderEntity.setDeptCode(postPurArrivalRequest.getTargetDeptCode());
|
||
|
ioOrderEntity.setInvCode(postPurArrivalRequest.getTargetSubInv());
|
||
|
ioOrderService.insertOrder(ioOrderEntity);
|
||
|
billNo += ioOrderEntity.getBillNo() + ",";
|
||
|
//插入业务单表
|
||
|
for (PurArrivalDetailEntity obj : m.getValue()) {
|
||
|
BasicProductsEntity basicProductsEntity = purArrivalDetailService.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);
|
||
|
}
|
||
|
}
|
||
|
purArrivalEntity.setStockOrderNo(billNo.substring(0, billNo.length() - 1));
|
||
|
purArrivalService.update(purArrivalEntity);
|
||
|
}
|
||
|
}
|
||
|
return ResultVOUtils.success("更新成功!");
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 查询采购订单列表
|
||
|
*/
|
||
|
@GetMapping("/purchase/arrival/list/detail")
|
||
|
public BaseResponse detailList(PurOrderDetailRequest purApplyDetailRequest) {
|
||
|
|
||
|
List<PurArrivalDetailResponse> purOrderDetailResponseList = purArrivalDetailService.joinQueryList(purApplyDetailRequest);
|
||
|
PageInfo<PurArrivalDetailResponse> pageInfo;
|
||
|
pageInfo = new PageInfo<>(purOrderDetailResponseList);
|
||
|
PageSimpleResponse<PurArrivalDetailResponse> pageSimpleResponse = new PageSimpleResponse<>();
|
||
|
pageSimpleResponse.setTotal(pageInfo.getTotal());
|
||
|
pageSimpleResponse.setList(purOrderDetailResponseList);
|
||
|
return ResultVOUtils.success(pageSimpleResponse);
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 添加产品到采购单里面
|
||
|
*/
|
||
|
@PostMapping("/purchase/arrival/addOrderDetail")
|
||
|
public BaseResponse addOrderDetail(@RequestBody PurArrivalDetailEntity purOrderDetailEntity) {
|
||
|
|
||
|
boolean falg = purArrivalDetailService.insert(purOrderDetailEntity);
|
||
|
if (falg) {
|
||
|
return ResultVOUtils.success("添加成功");
|
||
|
} else {
|
||
|
return ResultVOUtils.success("添加失败");
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 新增计划单
|
||
|
*/
|
||
|
@AuthRuleAnnotation("")
|
||
|
@PostMapping("/purchase/arrival/add")
|
||
|
public BaseResponse add() {
|
||
|
Long userId = customerService.getUserId();
|
||
|
PurArrivalEntity purArrivalEntity = new PurArrivalEntity();
|
||
|
purArrivalEntity.setCreateUser(userId + "");
|
||
|
purArrivalEntity.setCreateTime(new Date());
|
||
|
purArrivalEntity.setUpdateTime(new Date());
|
||
|
purArrivalEntity.setUpdateUser(userId + "");
|
||
|
purArrivalService.insert(purArrivalEntity);
|
||
|
Long id = purArrivalEntity.getId();
|
||
|
return ResultVOUtils.success(id);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 删除申购单和详情
|
||
|
*/
|
||
|
@AuthRuleAnnotation("")
|
||
|
@PostMapping("/purchase/arrival/delOrderDetailAll")
|
||
|
public BaseResponse delApplyDetailAll(@RequestBody PurApplyEntity purApplyEntity) {
|
||
|
|
||
|
if (purApplyEntity.getId() != null) {
|
||
|
purArrivalService.deleteById(purApplyEntity.getId());
|
||
|
purArrivalDetailService.deleteByOrderId(purApplyEntity.getId() + "");
|
||
|
} else {
|
||
|
return ResultVOUtils.error(999, "参数有误!");
|
||
|
}
|
||
|
return ResultVOUtils.success();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 修改计划详情单
|
||
|
*/
|
||
|
@RepeatSubmit()
|
||
|
@PostMapping("/purchase/arrival/updateDetail")
|
||
|
public BaseResponse detailEdit(@RequestBody PurArrivalDetailEntity purOrderDetailEntity) {
|
||
|
purArrivalDetailService.update(purOrderDetailEntity);
|
||
|
return ResultVOUtils.success("修改成功");
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 删除采购订单
|
||
|
*
|
||
|
* @param ids 主键串
|
||
|
*/
|
||
|
@DeleteMapping("/purchase/arrival/detail/{ids}")
|
||
|
public BaseResponse detailRemove(@NotEmpty(message = "主键不能为空")
|
||
|
@PathVariable Long[] ids) {
|
||
|
|
||
|
purArrivalDetailService.deleteByIds(Arrays.asList(ids));
|
||
|
return ResultVOUtils.success("删除成功");
|
||
|
}
|
||
|
|
||
|
}
|