出库、入库、盘点涉及产品重复性检查调整(从【产品编号】变更为以【产品编号、出库库房编号、入库库房编号】作为唯一标识)
1个文件已修改
27 ■■■■■ 已修改文件
controllers/operation.go 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/operation.go
@@ -9,7 +9,6 @@
    "github.com/shopspring/decimal"
    "github.com/xuri/excelize/v2"
    "gorm.io/gorm"
    "sort"
    "strconv"
    "strings"
    "time"
@@ -180,19 +179,19 @@
    params.DealerType = miniDict.Name
}
// CheckDetailsRepeat 出库、入库、盘点涉及产品重复性检查(以产品编号、出库库房编号、入库库房编号)
// 存在重复值 true; 不存在返回 false
func CheckDetailsRepeat(details []*models.OperationDetails) bool {
    var detailIDs []string
    var tempID string
    for _, v := range details {
        detailIDs = append(detailIDs, v.ProductId)
    if len(details) == 0 {
        return false
    }
    sort.Strings(detailIDs)
    for _, v := range detailIDs {
        if v != tempID {
            tempID = v
        } else {
            return true
        }
    var detailKeyMap = make(map[string]bool)
    for _, v := range details {
        key := fmt.Sprintf("%v%v%v", v.ProductId, v.FromLocationID, v.ToLocationID)
        detailKeyMap[key] = true
    }
    if len(detailKeyMap) != len(details) { // 长度相同,不存在重复值;长度不同存在存在不同
        return true
    }
    return false
}
@@ -379,6 +378,10 @@
    //    }
    //}
    userInfo := middleware.GetUserInfo(c)
    if userInfo == nil {
        util.ResponseFormat(c, code.SetStatusError, "登录用户信息为空,请登录后重试!")
        return
    }
    for _, v := range list {
        v.CreatedBy = userInfo.NickName
        //if err == nil {