新增系统商品

This commit is contained in:
2023-12-22 15:42:07 +08:00
parent a988ba3743
commit f7387bfd4d
10 changed files with 315 additions and 45 deletions
+8 -8
View File
@@ -163,8 +163,8 @@ func (r *OrderService) ReportPreProduct(orderProductId, adminUserId int64) (bool
icdNameStr := strings.Join(icdNameSlice, ";")
// 处理上传数据-药品数据
drugRequests := make([]prescription.DrugRequest, len(orderProductItems))
orderDrugRequests := make([]prescription.OrderDrugRequest, len(orderProductItems))
drugListRequests := make([]prescription.DrugListRequest, len(orderProductItems))
orderDrugListRequests := make([]prescription.OrderDrugListRequest, len(orderProductItems))
for i, o := range orderProductItems {
// 获取商品数据
productDao := dao.ProductDao{}
@@ -179,7 +179,7 @@ func (r *OrderService) ReportPreProduct(orderProductId, adminUserId int64) (bool
}
// 药品数据1
drugRequest := prescription.DrugRequest{
drugRequest := prescription.DrugListRequest{
DrugCode: product.ProductPlatformCode, // 药品编码
ApprovalNumber: product.LicenseNumber, // 批准文号
DrugName: product.ProductName, // 药品名称
@@ -194,10 +194,10 @@ func (r *OrderService) ReportPreProduct(orderProductId, adminUserId int64) (bool
FrequencyName: product.FrequencyUse, // 频次名称
UseDays: useDays, // 使用天数
}
drugRequests[i] = drugRequest
drugListRequests[i] = drugRequest
// 药品数据2
orderDrugRequest := prescription.OrderDrugRequest{
orderDrugRequest := prescription.OrderDrugListRequest{
DrugCode: product.ProductPlatformCode, // 药品编码
ApprovalNumber: product.LicenseNumber, // 批准文号
DrugName: product.ProductName, // 药品名称
@@ -206,7 +206,7 @@ func (r *OrderService) ReportPreProduct(orderProductId, adminUserId int64) (bool
DrugCount: o.Amount, // 药品数量
PackingUnit: product.PackagingUnit, // 药品单位
}
orderDrugRequests[i] = orderDrugRequest
orderDrugListRequests[i] = orderDrugRequest
}
// 处理上传数据-处方数据
@@ -237,8 +237,8 @@ func (r *OrderService) ReportPreProduct(orderProductId, adminUserId int64) (bool
PhysicalExamination: "无",
SupplementaryExamination: "无",
AllergicHistory: orderInquiryCase.AllergyHistory,
DrugList: drugRequests,
OrderDrugList: orderDrugRequests,
DrugList: drugListRequests,
OrderDrugList: orderDrugListRequests,
}
presRequests[0] = presRequest
+111
View File
@@ -4,6 +4,12 @@ import (
"errors"
"hospital-admin-api/api/dao"
"hospital-admin-api/api/dto"
"hospital-admin-api/api/model"
"hospital-admin-api/api/requests"
"hospital-admin-api/extend/prescription"
"hospital-admin-api/global"
"hospital-admin-api/utils"
"strconv"
)
type ProductService struct {
@@ -47,3 +53,108 @@ func (r *ProductService) GetProduct(productId int64) (g *dto.ProductDto, err err
return g, nil
}
// AddProduct 新增商品
func (r *ProductService) AddProduct(userId string, req requests.AddProduct) (bool, error) {
productDao := dao.ProductDao{}
productPlatformAmountDao := dao.ProductPlatformAmountDao{}
productPlatformId, err := strconv.ParseInt(req.ProductPlatformId, 10, 64)
if err != nil {
return false, errors.New("新增失败")
}
// 检测平台商品是否存在
productPlatformDao := dao.ProductPlatformDao{}
productPlatform, err := productPlatformDao.GetProductPlatformById(productPlatformId)
if err != nil || productPlatform == nil {
return false, errors.New("平台商品不存在")
}
// 检测商品是否重复
maps := make(map[string]interface{})
maps["product_platform_id"] = req.ProductPlatformId
products, err := productDao.GetProductList(maps)
if err != nil {
return false, errors.New("商品重复添加")
}
if len(products) != 0 {
return false, errors.New("商品重复添加")
}
// 处理图片
productCoverImg := utils.RemoveOssDomain(req.ProductCoverImg)
// 开始事务
tx := global.Db.Begin()
defer func() {
if r := recover(); r != nil {
tx.Rollback()
}
}()
// 新增商品表
product := &model.Product{
ProductPlatformId: productPlatform.ProductPlatformId,
ProductName: req.ProductName,
CommonName: req.CommonName,
ProductPrice: req.ProductPrice,
MnemonicCode: req.MnemonicCode,
ProductType: *req.ProductType,
ProductPlatformCode: req.ProductPlatformCode,
ProductPharmacyCode: req.ProductPharmacyCode,
ProductCoverImg: productCoverImg,
ProductSpec: req.ProductSpec,
LicenseNumber: req.LicenseNumber,
Manufacturer: req.Manufacturer,
SingleUnit: req.SingleUnit,
SingleUse: req.SingleUse,
PackagingUnit: req.PackagingUnit,
FrequencyUse: req.FrequencyUse,
AvailableDays: req.AvailableDays,
ProductRemarks: req.ProductRemarks,
}
product, err = productDao.AddProduct(tx, product)
if err != nil || product == nil {
tx.Rollback()
return false, errors.New(err.Error())
}
// 获取商品库存
ReportPreRequest := prescription.GetProdStockRequest{
DrugCode: product.ProductPharmacyCode,
}
result, err := ReportPreRequest.GetProdStock()
if err != nil {
tx.Rollback()
return false, errors.New("获取商品库存失败")
}
var quantity int
if result.Quantity != "" {
quantity, err = strconv.Atoi(result.Quantity)
if err != nil {
tx.Rollback()
return false, errors.New("获取商品库存失败")
}
}
// 新增商品库存
productPlatformAmount := &model.ProductPlatformAmount{
ProductPlatformId: product.ProductPlatformId,
ProductPlatformCode: product.ProductPlatformCode,
Stock: uint(quantity),
}
productPlatformAmount, err = productPlatformAmountDao.AddProductPlatformAmount(tx, productPlatformAmount)
if err != nil || productPlatformAmount == nil {
tx.Rollback()
return false, errors.New(err.Error())
}
tx.Commit()
return true, nil
}