fix: 支持档口入库码同日安全替换 (#304)

This commit is contained in:
chengma
2026-08-26 12:10:33 +08:00
parent fddc97c63f
commit ee3049beac
12 changed files with 392 additions and 24 deletions
+21 -3
View File
@@ -131,8 +131,15 @@ func (h *Handler) InnerCodeImport(c *gin.Context) {
fail(c, http.StatusInternalServerError, "保存临时上传文件失败;没有导入任何数据。")
return
}
result, err := service.ImportInnerCodeExcel(h.db, tmpPath, fileHeader.Filename, currentUser(c).UserID)
options := innerCodeImportOptions(c)
result, err := service.ImportInnerCodeExcelWithOptions(
h.db, tmpPath, fileHeader.Filename, currentUser(c).UserID, options,
)
if err != nil {
if service.IsInnerCodeSnapshotReplaceBlocked(err) {
fail(c, http.StatusConflict, err.Error()+";本次没有删除或导入任何数据。")
return
}
if service.IsInvalidInnerCodeImport(err) {
fail(c, http.StatusBadRequest, err.Error()+";请修正文件后重新导入。")
return
@@ -140,11 +147,22 @@ func (h *Handler) InnerCodeImport(c *gin.Context) {
fail(c, http.StatusInternalServerError, "档口入库码写库失败,本次导入已整体回滚,请稍后重试。")
return
}
message := fmt.Sprintf("导入完成:业务日期 %s,读取 %d 行,新增 %d 条,更新 %d 条,恢复 %d 条,同业务键合并 %d 行。",
result.BusinessDate, result.TotalRows, result.CreatedCount, result.UpdatedCount, result.RestoredCount, result.MergedRows)
replaceSummary := ""
if options.ReplaceDeletedUnprocessedSnapshot {
replaceSummary = fmt.Sprintf(",替换旧数据 %d 条", result.ReplacedCount)
}
message := fmt.Sprintf("导入完成:业务日期 %s,读取 %d 行,新增 %d 条,更新 %d 条,恢复 %d 条,同业务键合并 %d 行%s。",
result.BusinessDate, result.TotalRows, result.CreatedCount, result.UpdatedCount,
result.RestoredCount, result.MergedRows, replaceSummary)
h.innerCodeRedirect(c, result.BusinessDate, "", "", 1, innerCodeFeedbackSuccess, message)
}
func innerCodeImportOptions(c *gin.Context) service.InnerCodeImportOptions {
return service.InnerCodeImportOptions{
ReplaceDeletedUnprocessedSnapshot: c.PostForm("replace_unprocessed_snapshot") == "1",
}
}
// InnerCodeDelete 软删除当前页已选记录;不撤销任何顺运宝远端操作。
func (h *Handler) InnerCodeDelete(c *gin.Context) {
businessDate, status, keyword := c.PostForm("date"), c.PostForm("status"), c.PostForm("q")