|
|
@@ -16,13 +16,33 @@
|
|
|
*/
|
|
|
package org.springblade.salesPart.ship.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import org.springblade.client.feign.ISerialClient;
|
|
|
+import org.springblade.core.secure.utils.AuthUtil;
|
|
|
+import org.springblade.core.tool.api.R;
|
|
|
+import org.springblade.core.tool.utils.BeanUtil;
|
|
|
+import org.springblade.core.tool.utils.Func;
|
|
|
+import org.springblade.core.tool.utils.ObjectUtil;
|
|
|
+import org.springblade.salesPart.entity.PjOrderItems;
|
|
|
import org.springblade.salesPart.entity.PjShip;
|
|
|
+import org.springblade.salesPart.entity.PjShipItems;
|
|
|
+import org.springblade.salesPart.enums.OrderTypeEnum;
|
|
|
+import org.springblade.salesPart.order.mapper.OrderItemsMapper;
|
|
|
+import org.springblade.salesPart.ship.mapper.ShipItemsMapper;
|
|
|
import org.springblade.salesPart.vo.ShipVO;
|
|
|
import org.springblade.salesPart.ship.mapper.ShipMapper;
|
|
|
import org.springblade.salesPart.ship.service.IShipService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
+
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* 配件收发货表 服务实现类
|
|
|
@@ -31,11 +51,154 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
* @since 2023-04-21
|
|
|
*/
|
|
|
@Service
|
|
|
+@AllArgsConstructor
|
|
|
public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements IShipService {
|
|
|
|
|
|
+ /**
|
|
|
+ * 生成系统编号
|
|
|
+ */
|
|
|
+ private ISerialClient serialClient;
|
|
|
+ private OrderItemsMapper orderItemsMapper;
|
|
|
+ private ShipItemsMapper shipItemsMapper;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取收发货订单详情
|
|
|
+ *
|
|
|
+ * @param ship
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public PjShip getMessageById(PjShip ship) {
|
|
|
+ PjShip detail = baseMapper.selectById(ship.getId());
|
|
|
+
|
|
|
+ LambdaQueryWrapper<PjShipItems> itemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ itemsLambdaQueryWrapper.eq(PjShipItems::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(PjShipItems::getIsDeleted, 0)
|
|
|
+ .eq(PjShipItems::getPid, detail.getId());
|
|
|
+ return detail;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<ShipVO> selectShipPage(IPage<ShipVO> page, ShipVO ship) {
|
|
|
return page.setRecords(baseMapper.selectShipPage(page, ship));
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 保存订单信息
|
|
|
+ *
|
|
|
+ * @param ship
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public R saveShipMessage(PjShip ship) {
|
|
|
+ if (ship.getId() == null){
|
|
|
+ // 获取系统编号
|
|
|
+ R billNo = serialClient.getBillNo(ship.getBizTypeName(), ship.getBizTypeName(), ship.getBizTypeName());
|
|
|
+ if (billNo.getCode() != 200) {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ return R.fail(500, "生成系统编号失败");
|
|
|
+ }
|
|
|
+ ship.setBillno((String) billNo.getData());
|
|
|
+ ship.setCreateTime(new Date());
|
|
|
+ ship.setCreateUser(AuthUtil.getUserId());
|
|
|
+ ship.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
|
|
|
+ ship.setTenantId(AuthUtil.getTenantId());
|
|
|
+ baseMapper.insert(ship);
|
|
|
+ }else {
|
|
|
+ ship.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ ship.setUpdateTime(new Date());
|
|
|
+ baseMapper.updateById(ship);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 保存订单明细
|
|
|
+ if (CollectionUtils.isNotEmpty(ship.getShipItemsList())) {
|
|
|
+ ship.getShipItemsList().forEach(item -> {
|
|
|
+ if (item.getId() == null){
|
|
|
+ item.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
|
|
|
+ item.setCreateTime(new Date());
|
|
|
+ item.setCreateUser(AuthUtil.getUserId());
|
|
|
+ item.setPid(ship.getId());
|
|
|
+ item.setTenantId(AuthUtil.getTenantId());
|
|
|
+ shipItemsMapper.insert(item);
|
|
|
+ }else {
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ item.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ item.setPid(ship.getId());
|
|
|
+ shipItemsMapper.updateById(item);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ ship.setShipItemsList(ship.getShipItemsList());
|
|
|
+ ship.setNumberRows(ship.getShipItemsList().size());
|
|
|
+ }
|
|
|
+ return R.data(ship);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成出库工单
|
|
|
+ *
|
|
|
+ * @param ids
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public R outboundWorkOrder(String ids) {
|
|
|
+ List<Long> shipIds = Func.toLongList(ids);
|
|
|
+ for (Long id : shipIds) {
|
|
|
+ //获得出库任务数据
|
|
|
+ PjShip rwShip = baseMapper.selectById(id);
|
|
|
+ if (ObjectUtil.isEmpty(rwShip)) {
|
|
|
+ throw new RuntimeException("数据异常 请联系管理员");
|
|
|
+ }
|
|
|
+
|
|
|
+ //新建出库工单
|
|
|
+ PjShip gdShip = new PjShip();
|
|
|
+ // 获取系统编号
|
|
|
+ R billNo = serialClient.getBillNo(OrderTypeEnum.FHGD.getType(), OrderTypeEnum.FHGD.getType(), OrderTypeEnum.FHGD.getType());
|
|
|
+ if (billNo.getCode() != 200) {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ BeanUtil.copyProperties(rwShip, gdShip);
|
|
|
+
|
|
|
+ gdShip.setId(null);
|
|
|
+ gdShip.setBillno((String) billNo.getData());
|
|
|
+ gdShip.setStatusName(OrderTypeEnum.TOBESHIPPEDOUT.getType());
|
|
|
+ gdShip.setTenantId(AuthUtil.getTenantId());
|
|
|
+ gdShip.setBizTypeName(OrderTypeEnum.FHGD.getType());
|
|
|
+ gdShip.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
|
|
|
+ gdShip.setCreateUser(AuthUtil.getUserId());
|
|
|
+ gdShip.setCreateTime(new Date());
|
|
|
+ baseMapper.insert(gdShip);
|
|
|
+
|
|
|
+ //根据销售id获得销售明细数据
|
|
|
+ List<PjOrderItems> list = orderItemsMapper.selectList(new QueryWrapper<PjOrderItems>()
|
|
|
+ .eq("pid", rwShip.getOrdId())
|
|
|
+ .eq("is_deleted", 0)
|
|
|
+ .eq("tenant_id", AuthUtil.getTenantId()));
|
|
|
+ if (ObjectUtil.isNotEmpty(list)){
|
|
|
+ list.forEach(e -> {
|
|
|
+ //根据销售明细创建入库工单明细
|
|
|
+ PjShipItems shipItems = new PjShipItems();
|
|
|
+ BeanUtil.copyProperties(e, shipItems);
|
|
|
+
|
|
|
+ shipItems.setId(null);
|
|
|
+ shipItems.setPid(gdShip.getId());
|
|
|
+ shipItems.setSrcItemId(e.getId());
|
|
|
+ shipItems.setCreateTime(new Date());
|
|
|
+ shipItems.setCreateUser(AuthUtil.getUserId());
|
|
|
+ shipItems.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
|
|
|
+ shipItems.setSendNum(e.getGoodsNum());
|
|
|
+ shipItemsMapper.insert(shipItems);
|
|
|
+ });
|
|
|
+ gdShip.setNumberRows(list.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ //修改出库任务状态
|
|
|
+ rwShip.setStatusName(OrderTypeEnum.DISPATCHED.getType());
|
|
|
+ baseMapper.updateById(rwShip);
|
|
|
+ }
|
|
|
+
|
|
|
+ return R.success("操作成功");
|
|
|
+ }
|
|
|
+
|
|
|
}
|