| | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.common.basic.PageInfo; |
| | | import com.ruoyi.common.core.domain.BaseModel; |
| | | import com.ruoyi.common.core.domain.entity.SysUser; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | import com.ruoyi.system.dto.ClinicOutboundGoodsDto; |
| | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.system.vo.*; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Propagation; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) |
| | | public void warehouseGoods(WarehouseGoodsDto dtos, SysUser user, String supplierClinicId) { |
| | | |
| | | // dtos根据供应商分组 |
| | |
| | | TErpClinicWarehousing tErpClinicWarehousing = new TErpClinicWarehousing(); |
| | | tErpClinicWarehousing.setClinicId(supplierClinicId); |
| | | tErpClinicWarehousing.setCreateId(user.getUserId().toString()); |
| | | tErpClinicWarehousing.setWarehouseNo("G" + DateUtils.dateTimeNow()); |
| | | |
| | | TErpClinicWarehousing last = this.getOne(new LambdaQueryWrapper<TErpClinicWarehousing>().orderByDesc(BaseModel::getCreateTime).last("LIMIT 1")); |
| | | if(last==null){ |
| | | tErpClinicWarehousing.setWarehouseNo("G" + DateUtils.dateTimeNow()+"00001"); |
| | | }else{ |
| | | String lastProcurementCode = last.getWarehouseNo(); |
| | | String datePart = "G" + DateUtils.dateTimeNow(); |
| | | |
| | | // 直接获取后五位数字并+1,不考虑是否同一天 |
| | | try { |
| | | String numberPart = lastProcurementCode.substring(Math.max(0, lastProcurementCode.length() - 5)); |
| | | int number = Integer.parseInt(numberPart); |
| | | if (number < 99999) { |
| | | number++; |
| | | } else { |
| | | number = 2; // 达到99999后重置为00002 |
| | | } |
| | | tErpClinicWarehousing.setWarehouseNo(datePart + String.format("%05d", number)); |
| | | } catch (NumberFormatException e) { |
| | | // 如果解析失败,默认从00001开始 |
| | | tErpClinicWarehousing.setWarehouseNo(datePart + "00001"); |
| | | } |
| | | } |
| | | tErpClinicWarehousing.setCreateTime(LocalDateTime.now()); |
| | | tErpClinicWarehousing.setType(3); |
| | | tErpClinicWarehousing.setStatus(dtos.getStatus()); |
| | | tErpClinicWarehousing.setWarehousingType(2); |
| | | this.save(tErpClinicWarehousing); |
| | | try { |
| | | this.save(tErpClinicWarehousing); |
| | | }catch (Exception e){ |
| | | throw new RuntimeException("网络繁忙,请重试"); |
| | | |
| | | } |
| | | |
| | | |
| | | BigDecimal totalPrice = new BigDecimal(0); |
| | | ArrayList<String> names = new ArrayList<>(); |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void outboundGoods(ClinicOutboundGoodsDto dto, SysUser user, String supplierClinicId) { |
| | | TErpClinicOutbound tErpClinicOutbound = new TErpClinicOutbound(); |
| | | tErpClinicOutbound.setClinicId(supplierClinicId); |
| | | tErpClinicOutbound.setCreateId(user.getUserId().toString()); |
| | | tErpClinicOutbound.setOutboundNumber("G" + DateUtils.dateTimeNow()); |
| | | TErpClinicOutbound last = erpClinicOutboundMapper.selectOne(new LambdaQueryWrapper<TErpClinicOutbound>().orderByDesc(BaseModel::getCreateTime).last("limit 1")); |
| | | if(last==null){ |
| | | tErpClinicOutbound.setOutboundNumber("G" + DateUtils.dateTimeNow()+"00001"); |
| | | }else{ |
| | | String lastProcurementCode = last.getOutboundNumber(); |
| | | String datePart = "G" + DateUtils.dateTimeNow(); |
| | | |
| | | // 直接获取后五位数字并+1,不考虑是否同一天 |
| | | try { |
| | | String numberPart = lastProcurementCode.substring(Math.max(0, lastProcurementCode.length() - 5)); |
| | | int number = Integer.parseInt(numberPart); |
| | | if (number < 99999) { |
| | | number++; |
| | | } else { |
| | | number = 2; // 达到99999后重置为00002 |
| | | } |
| | | tErpClinicOutbound.setOutboundNumber(datePart + String.format("%05d", number)); |
| | | } catch (NumberFormatException e) { |
| | | // 如果解析失败,默认从00001开始 |
| | | tErpClinicOutbound.setOutboundNumber(datePart + "00001"); |
| | | } |
| | | } |
| | | |
| | | tErpClinicOutbound.setCreateTime(LocalDateTime.now()); |
| | | tErpClinicOutbound.setOutboundType(dto.getOutboundType()); |
| | | tErpClinicOutbound.setTotalMoney(dto.getTotalPrice()); |
| | | tErpClinicOutbound.setOutboundReason(dto.getOutboundReason()); |
| | | tErpClinicOutbound.setTypeNum(dto.getTypeNum()); |
| | | erpClinicOutboundMapper.insert(tErpClinicOutbound); |
| | | try { |
| | | erpClinicOutboundMapper.insert(tErpClinicOutbound); |
| | | }catch (Exception e){ |
| | | throw new RuntimeException("网络繁忙,请重试"); |
| | | } |
| | | |
| | | |
| | | List<TErpClinicOutboundGoods> tErpClinicOutboundGoods = new ArrayList<>(); |
| | | for (OutboundGoodsNextDto outboundGoodsNextDto : dto.getOutboundGoodsNextDtos()) { |