| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- package com.dk.mdm.service.pur;
- import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
- import com.dk.common.exception.BaseBusinessException;
- import com.dk.common.infrastructure.annotaiton.Pagination;
- import com.dk.common.infrastructure.constant.Constant;
- import com.dk.common.infrastructure.enums.ErrorCodeEnum;
- import com.dk.common.model.pojo.PageList;
- import com.dk.common.response.ResponseCodeEnum;
- import com.dk.common.response.ResponseResultUtil;
- import com.dk.common.response.ResponseResultVO;
- import com.dk.mdm.infrastructure.convert.pur.PurChaseConvert;
- import com.dk.mdm.infrastructure.convert.pur.PurChaseItemConvert;
- import com.dk.mdm.mapper.common.CommonMapper;
- import com.dk.mdm.mapper.pur.PurchaseItemMapper;
- import com.dk.mdm.model.pojo.mst.Staff;
- import com.dk.mdm.model.pojo.pur.Purchase;
- import com.dk.mdm.mapper.pur.PurchaseMapper;
- import com.dk.common.service.BaseService;
- import com.dk.common.mapper.BaseMapper;
- import com.dk.mdm.model.pojo.pur.PurchaseItem;
- import com.dk.mdm.model.query.pur.PurchaseItemQuery;
- import com.dk.mdm.model.query.pur.PurchaseQuery;
- import com.dk.mdm.model.response.pur.PurchaseItemResponse;
- import com.dk.mdm.model.response.pur.PurchaseResponse;
- import com.dk.mdm.model.vo.mst.StaffVO;
- import com.dk.mdm.model.vo.pur.PurchaseItemVO;
- import com.dk.mdm.model.vo.pur.PurchaseVO;
- import com.dk.mdm.service.common.CommonService;
- import org.springframework.stereotype.Service;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.web.bind.annotation.PathVariable;
- import org.springframework.web.bind.annotation.PostMapping;
- import java.math.BigDecimal;
- import java.time.LocalDateTime;
- import java.util.List;
- import java.util.Map;
- import java.util.UUID;
- import java.util.stream.Collectors;
- @Service
- @Transactional
- public class PurchaseService extends BaseService<Purchase> {
- @Override
- public BaseMapper<Purchase> getRepository() {
- return purchaseMapper;
- }
- @Autowired
- private PurchaseMapper purchaseMapper;
- @Autowired
- private PurChaseConvert purChaseConvert;
- @Autowired
- private PurChaseItemConvert purchaseItemConvert;
- @Autowired
- private PurchaseItemMapper purchaseItemMapper;
- @Autowired
- private CommonMapper commonMapper;
- @Autowired
- private CommonService commonService;
- @Autowired
- private PurchaseItemService purchaseItemService;
- /**
- * @desc : 条件查询
- * @author : 常皓宁
- * @date : 2024/2/28 9:47
- */
- @Pagination
- public ResponseResultVO<PageList<PurchaseResponse>> selectByCond(PurchaseQuery purchaseQuery) {
- return super.mergeListWithCount(purchaseQuery, purchaseMapper.selectByCond(purchaseQuery), purchaseMapper.countByCond(purchaseQuery));
- }
- /**
- * @desc : 新建
- * @author : 常皓宁
- * @date : 2024/2/28 9:42
- */
- @Transactional(rollbackFor = {Exception.class})
- public ResponseResultVO<Boolean> insert(PurchaseVO purchasevo) {
- //region 组织结构不能为空
- if (purchasevo.getOrgId() == null) {
- throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORGANIZATION_CANNOT_BE_EMPTY.getMessage());
- }
- //endregion
- //region 员工不能为空
- if (purchasevo.getStaffId() == null) {
- throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.STAFF_CANNOT_BE_EMPTY.getMessage());
- }
- //endregion
- //region 供应商不能为空
- if (purchasevo.getSupId() == null) {
- throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.SUPLIER_CANNOT_BE_EMPTY.getMessage());
- }
- //endregion
- //region 设置采购订单总单信息并新建
- // 制单时间
- purchasevo.setMakeTime(LocalDateTime.now());
- // 单据类型
- purchasevo.setPurType(Constant.DocumentType.PUR_CHASE.getName());
- // 入库状态
- purchasevo.setIntoStatus(Constant.IntoStatus.DAIRUKU.getName());
- // 订单状态
- purchasevo.setPurStatus(Constant.OrderStatus.STATUS_DEAL.getName());
- // 获取单号
- Map<String , Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.PURCHASE.getName(),false);
- purchasevo.setPurId(codeMap.get("outId").toString());
- purchasevo.setPurNo(codeMap.get("outNote").toString());
- Purchase purchase = purChaseConvert.convertToPo(purchasevo);
- purchaseMapper.insert(purchase);
- //endregion
- //region 设置采购订单明细信息并新建
- List<PurchaseItemVO> purchaseItemVOList = purchasevo.getPurchaseItemVOList().stream().filter(it -> it.getItemId() == null).collect(Collectors.toList());
- // 商品顺序
- for (PurchaseItemVO purchaseItemVO : purchaseItemVOList) {
- PurchaseItem purchaseItem = purchaseItemConvert.convertToPo(purchaseItemVO);
- purchaseItem.setPurId(purchase.getPurId());
- purchaseItem.setItemIndex(purchaseItemVO.getItemIndex());
- purchaseItem.setIntoStatus(Constant.IntoStatus.DAIRUKU.getName());
- purchaseItem.setCpId(purchase.getCpId());
- purchaseItemMapper.insert(purchaseItem);
- }
- //endregion
- return ResponseResultUtil.success();
- }
- /**
- * @desc : 根据总单id查询
- * @author : 常皓宁
- * @date : 2024/2/29 9:56
- */
- public ResponseResultVO selectById(String purId) {
- //根据id查询
- PurchaseResponse purchaseResponse = purchaseMapper.selectById(purId);
- //不存在
- if (purchaseResponse == null) {
- return ResponseResultUtil.error(ErrorCodeEnum.PURCHASE_CANNOT_BE_EMPTY.getCode(),
- ErrorCodeEnum.PURCHASE_CANNOT_BE_EMPTY.getMessage());
- }
- //查询明细
- List<PurchaseItemResponse> purchaseItemResponses = purchaseItemMapper.selectByCond(new PurchaseItemQuery().setPurId(purId));
- purchaseResponse.setPurchaseItemResponseList(purchaseItemResponses);
- return ResponseResultUtil.success(purchaseResponse);
- }
- /**
- * @desc : 编辑方法
- * @author : 常皓宁
- * @date : 2024/2/28 10:57
- */
- @Transactional(
- rollbackFor = {Exception.class}
- )
- public ResponseResultVO<Boolean> update(PurchaseVO purchasevo) {
- // 转化实体
- Purchase purchase = purChaseConvert.convertToPo(purchasevo);
- //删除的
- List<PurchaseItemVO> deletePurchaseItemVOList = purchasevo.getDeletePurchaseItemList().stream().filter(it -> it.getItemId() != null).collect(Collectors.toList());
- if(deletePurchaseItemVOList.size() > 0){
- for (PurchaseItemVO purchaseItemVO : deletePurchaseItemVOList) {
- // 非待入库单据不能删除
- if(!Constant.IntoStatus.DAIRUKU.getName().equals(purchaseItemVO.getIntoStatus())){
- throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.NO_WAIT_INTO.getMessage());
- } else {
- purchaseItemMapper.deleteById(purchaseItemVO.getItemId());
- }
- }
- }
- // 编辑的(包括新增的)
- // 新增的
- List<PurchaseItemVO> insertPurchaseItemVOList = purchasevo.getEditPurchaseItemList().stream().filter(it -> it.getItemId() == null).collect(Collectors.toList());
- for (PurchaseItemVO purchaseItemVO : insertPurchaseItemVOList) {
- PurchaseItem purchaseItem = purchaseItemConvert.convertToPo(purchaseItemVO);
- purchaseItem.setPurId(purchase.getPurId());
- purchaseItem.setItemIndex(purchaseItemVO.getItemIndex());
- purchaseItem.setIntoStatus(Constant.IntoStatus.DAIRUKU.getName());
- purchaseItem.setCpId(purchase.getCpId());
- purchaseItemMapper.insert(purchaseItem);
- }
- // 编辑的
- List<PurchaseItemVO> editPurchaseItemVOList = purchasevo.getEditPurchaseItemList().stream().filter(it -> it.getItemId() != null).collect(Collectors.toList());
- for (PurchaseItemVO purchaseItemVO : editPurchaseItemVOList) {
- // 商品数量不能小于入库中数量
- if(purchaseItemVO.getItemQty().compareTo(purchaseItemVO.getIntoQty()) == -1){
- throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ITEMQTY_NO_LESS_INTOQTY.getMessage());
- } else {
- PurchaseItem purchaseItem = purchaseItemConvert.convertToPo(purchaseItemVO);
- purchaseItemService.updataById(purchaseItem);
- }
- }
- return ResponseResultUtil.success(super.update(purchase,new UpdateWrapper<Purchase>().lambda().eq(Purchase::getPurId,
- UUID.fromString(purchase.getPurId())))) ;
- }
- }
|