docs(deployment): 更新部署手册和业务架构说明
- 更新MES和WMS服务端口配置说明 - 详细说明产线工位设备配置(扫码枪+拧紧枪) - 明确AGV配送和接驳台的模拟模式与真实对接方案 - 更新WMS中AGV配送默认模拟模式说明 - 完善厂内物流(AGV/接驳台)的业务架构约束 - 修订临时文档为详细的项目问题和解决方案规划
This commit is contained in:
@@ -109,7 +109,7 @@ func createInspectionHandler(ctx *svc.ServiceContext) http.HandlerFunc {
|
||||
SetTargetID(req.TargetId).
|
||||
SetMaterialCode(req.MaterialCode).
|
||||
SetNillableMaterialName(strPtr(materialName)).
|
||||
SetNillableOwnershipType(strPtr(req.OwnershipType)).
|
||||
SetNillableOwnershipType(strPtr(ownershipTypeOrNone(req.OwnershipType))).
|
||||
SetNillableOwnershipNo(strPtr(req.OwnershipNo)).
|
||||
SetNillableRelatedStandard(strPtr(req.RelatedStandard)).
|
||||
SetNillableManufacturer(strPtr(req.Manufacturer)).
|
||||
@@ -231,7 +231,7 @@ func batchFlipInspectionHandler(ctx *svc.ServiceContext) http.HandlerFunc {
|
||||
SetTargetID(t.id).
|
||||
SetMaterialCode(t.material).
|
||||
SetNillableMaterialName(strPtr(matName)).
|
||||
SetNillableOwnershipType(strPtr(req.OwnershipType)).
|
||||
SetNillableOwnershipType(strPtr(ownershipTypeOrNone(req.OwnershipType))).
|
||||
SetNillableOwnershipNo(strPtr(req.OwnershipNo)).
|
||||
SetNillableRelatedStandard(strPtr(req.RelatedStandard)).
|
||||
SetNillableManufacturer(strPtr(req.Manufacturer)).
|
||||
@@ -453,10 +453,10 @@ func materialCodesBySpec(ctx *svc.ServiceContext, spec string) []string {
|
||||
return codes
|
||||
}
|
||||
|
||||
// disposalTypeOrNone 处置方式归一化(客户诉求 L137-145:退货/报废/部分入库)
|
||||
// disposalTypeOrNone 处置方式归一化(需求23:不合格可转退货 / 换修(返修)/ 让步接收 / 报废 / 部分入库)
|
||||
func disposalTypeOrNone(v string) string {
|
||||
switch v {
|
||||
case "RETURN", "SCRAP", "PARTIAL":
|
||||
case "RETURN", "SCRAP", "PARTIAL", "REWORK", "CONCESSION":
|
||||
return v
|
||||
default:
|
||||
return "NONE"
|
||||
@@ -464,12 +464,16 @@ func disposalTypeOrNone(v string) string {
|
||||
}
|
||||
|
||||
// qualityAfterInspection 检验后的库存质量状态:
|
||||
// 合格 → 合格(可出库);不合格且选退货 → 待退(隔离);其余 → 不合格(隔离)。
|
||||
// 合格 → 合格(可出库);让步接收(CONCESSION) → 合格(审批后放行使用);
|
||||
// 退货(RETURN) → 待退(隔离);返修(REWORK)/报废/其余不合格 → 不合格(隔离,禁止上线)。
|
||||
func qualityAfterInspection(status, disposalType string) string {
|
||||
if status == "合格" {
|
||||
return "合格"
|
||||
}
|
||||
if disposalTypeOrNone(disposalType) == "RETURN" {
|
||||
switch disposalTypeOrNone(disposalType) {
|
||||
case "CONCESSION":
|
||||
return "合格"
|
||||
case "RETURN":
|
||||
return "待退"
|
||||
}
|
||||
return "不合格"
|
||||
@@ -545,6 +549,18 @@ func disposeInspectionHandler(ctx *svc.ServiceContext) http.HandlerFunc {
|
||||
fail(w, http.StatusInternalServerError, "更新库存状态失败: "+err.Error())
|
||||
return
|
||||
}
|
||||
case "REWORK":
|
||||
// 换修/返修:隔离为不合格,备注标返修,等待返修后重新报检(不上线、不发货)
|
||||
if _, err = tx.Inventory.UpdateOneID(inv.ID).SetQualityStatus("不合格").Save(ctx0()); err != nil {
|
||||
fail(w, http.StatusInternalServerError, "更新库存状态失败: "+err.Error())
|
||||
return
|
||||
}
|
||||
case "CONCESSION":
|
||||
// 让步接收:不合格但审批后放行使用,质量状态置合格(可出库/上线)
|
||||
if _, err = tx.Inventory.UpdateOneID(inv.ID).SetQualityStatus("合格").Save(ctx0()); err != nil {
|
||||
fail(w, http.StatusInternalServerError, "更新库存状态失败: "+err.Error())
|
||||
return
|
||||
}
|
||||
case "SCRAP":
|
||||
if _, err = tx.Inventory.UpdateOneID(inv.ID).SetQualityStatus("不合格").SetStatus("报废").Save(ctx0()); err != nil {
|
||||
fail(w, http.StatusInternalServerError, "更新库存状态失败: "+err.Error())
|
||||
@@ -601,6 +617,7 @@ func disposeInspectionHandler(ctx *svc.ServiceContext) http.HandlerFunc {
|
||||
func statsInspectionHandler(ctx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
inspectionType := r.URL.Query().Get("inspectionType")
|
||||
materialCode := r.URL.Query().Get("materialCode") // 需求13:统计先选物料,按物料聚焦
|
||||
startDate := r.URL.Query().Get("startDate")
|
||||
endDate := r.URL.Query().Get("endDate")
|
||||
|
||||
@@ -608,6 +625,9 @@ func statsInspectionHandler(ctx *svc.ServiceContext) http.HandlerFunc {
|
||||
if inspectionType != "" {
|
||||
q = q.Where(inspectionrecord.InspectionTypeEQ(inspectionType))
|
||||
}
|
||||
if materialCode != "" {
|
||||
q = q.Where(inspectionrecord.MaterialCodeContainsFold(materialCode))
|
||||
}
|
||||
if startDate != "" {
|
||||
if t, err := time.ParseInLocation("2006-01-02", startDate, time.Local); err == nil {
|
||||
q = q.Where(inspectionrecord.CreatedAtGTE(t.Unix()))
|
||||
|
||||
Reference in New Issue
Block a user