123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- package api
- import (
- "encoding/json"
- "fmt"
- operationPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/operation"
- "gitee.com/xuyiping_admin/pkg/apierr"
- "gitee.com/xuyiping_admin/pkg/ginutil"
- "gitee.com/xuyiping_admin/pkg/valid"
- "gitee.com/xuyiping_admin/pkg/xerr"
- "github.com/gin-gonic/gin"
- "github.com/jmoiron/sqlx"
- "github.com/pkg/errors"
- "kpt.xdmy/apiserver/model"
- modelHttp "kpt.xdmy/apiserver/model/http"
- "kpt.xdmy/apiserver/service"
- "kpt.xdmy/pkg/app"
- "kpt.xdmy/pkg/e"
- "kpt.xdmy/pkg/log"
- "net/http"
- modernPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/xdmy"
- )
- var svc *service.Service
- func Init(s *service.Service) {
- svc = s
- }
- type nextServiceInfo struct {
- laidType int64
- useType int64
- }
- func NextService(p []map[string]interface{}, tx *sqlx.Tx, vendor int64) error {
- isTransfer := false
- for _, v := range p {
- if v["name"] == nil || v["parammaps"] == nil {
- continue
- }
- sqlname := v["name"].(string)
- if sqlname == "updateBigPartTransfer" {
- isTransfer = true
- } else if sqlname == "insertBigPartUse" {
- pf := v["parammaps"].(map[string]interface{})
- if pf["useType"].(float64) < 5 {
- if _, ok := pf["oddCode"]; !ok {
- return errors.New("oddCode 不能为空 !!!")
- }
- }
- }
- }
- if isTransfer {
- var bigPartTransferid float64
- insertBigPartlaid := false
- for _, v := range p {
- if v["name"] == nil || v["parammaps"] == nil {
- continue
- }
- pf := v["parammaps"].(map[string]interface{})
- sqlname := v["name"].(string)
- if sqlname == "updateBigPartTransfer" {
- bigPartTransferid = pf["id"].(float64)
- } else if sqlname == "insertBigPartlaid" {
- insertBigPartlaid = true
- }
- }
- if bigPartTransferid > 0 && insertBigPartlaid {
- //if laidType == 2 {
- partTransfer := make([]*model.PartTransferStr, 0)
- partsByte, err := service.GetDataList(tx, `select * from parttransfer where bigid = ? `, []interface{}{bigPartTransferid})
- if err != nil {
- return errors.New("无调拨信息!!!")
- }
- if partsByte != nil {
- err := json.Unmarshal(partsByte, &partTransfer)
- if err != nil {
- return errors.New("调拨信息转码出错!!!")
- }
- }
- for _, part := range partTransfer {
- prByte, err := service.MapStr(tx, `select * from part_repertory where id = ? and reportery >= ? `, part.PartRepID, part.Amount)
- if err != nil {
- return errors.New("库存信息出错!!!")
- }
- if prByte != nil {
- data := make(map[string]interface{})
- err := json.Unmarshal(prByte, &data)
- if err != nil {
- return errors.New("库存信息出错!!!")
- }
- if _, ok := data["id"]; !ok {
- return errors.New("库存信息出错!!!")
- }
- } else {
- return errors.New("库存信息出错!!!")
- }
- _, err = tx.Exec(` update part_repertory set reportery = reportery - ? where id = ? `, part.Amount, part.PartRepID)
- if err != nil {
- return errors.New("库存调整出错!!!")
- }
- }
- if vendor == 1 {
- err = service.ManualTransfer(bigPartTransferid, tx)
- if err != nil {
- return err
- }
- }
- }
- } else if vendor == 1 {
- for _, v := range p {
- if v["name"] == nil || v["parammaps"] == nil {
- continue
- }
- pf := v["parammaps"].(map[string]interface{})
- sqlname := v["name"].(string)
- fmt.Println(sqlname)
- switch sqlname {
- case "insertBigPartlaid":
- laidType := pf["laidType"].(float64)
- log.Info(v)
- //b, _ := json.Marshal(p)
- //pnext := new(nextServiceInfo)
- //json.Unmarshal(b, &pnext)
- //switch pnext.laidType {
- //手动出库没有采购单号,所以不能传SAP
- //case 0:
- // 入库-申购、采购(申购、线上、寄售)
- if laidType != 2 {
- pr := new(modelHttp.ProofPartReq)
- pr.LaidCode = pf["laidCode"].(string)
- pr.StorageTime = pf["storageTime"].(string)
- err := svc.LaidProof(pr, tx)
- if err != nil {
- return err
- }
- }
- case "insertBigPartUse":
- //b, _ := json.Marshal(p)
- //pnext := new(nextServiceInfo)
- //json.Unmarshal(b, &pnext)
- log.Info(v)
- pr := new(modelHttp.ProofPartReq)
- pr.UseForm = pf["useForm"].(string)
- pr.StorageTime = pf["receiveTime"].(string)
- err := svc.UseProof(pf, tx)
- if err != nil {
- return err
- }
- //}
- case "updatePartRepertoryTHS":
- log.Info(v)
- // 退货
- err := svc.RefundProof(pf, tx)
- if err != nil {
- return err
- }
- case "insertBigPartquit":
- log.Info(v)
- // 退库
- err := svc.QuitProof(pf, tx)
- if err != nil {
- return err
- }
- }
- }
- }
- return nil
- }
- // SparePartsRequisitions 备件申购-特殊申购
- func SparePartsRequisitions(c *gin.Context) {
- var req modernPb.SparePartsRequisitionsRequest
- if err := ginutil.BindProto(c, &req); err != nil {
- apierr.AbortBadRequest(c, http.StatusBadRequest, err)
- return
- }
- if err := valid.ValidateStruct(&req,
- valid.Field(&req.OrderNumber, valid.Required, valid.Length(1, 100)),
- valid.Field(&req.PastureId, valid.Required),
- valid.Field(&req.DepartmentId, valid.Required),
- valid.Field(&req.EmployeId, valid.Required),
- valid.Field(&req.CreateTime, valid.Required),
- valid.Field(&req.PurchaseType, valid.Required),
- //valid.Field(&req.ProviderName, valid.Required, valid.Length(1, 100)),
- ); err != nil {
- apierr.AbortBadRequest(c, http.StatusBadRequest, err)
- return
- }
- if req.PurchaseType != modernPb.PurchaseType_Advance_Payment {
- if err := valid.ValidateStruct(&req,
- valid.Field(&req.ProviderId, valid.Required),
- ); err != nil {
- apierr.AbortBadRequest(c, http.StatusBadRequest, err)
- return
- }
- }
- if len(req.SpotList) <= 0 {
- apierr.AbortBadRequest(c, http.StatusBadRequest, xerr.Custom("备件列表不能为空"))
- return
- }
- if err := service.CreateSpecialtyPurchase(c, &req); err != nil {
- //apierr.ClassifiedAbort(c, err)
- appG := app.Gin{C: c}
- appG.Response(200, e.ERROR, err.Error())
- return
- }
- ginutil.JSONResp(c, &operationPb.CommonOK{
- Code: http.StatusOK,
- Msg: "ok",
- Data: &operationPb.Success{Success: true},
- })
- }
- func GetDieselTypeList(c *gin.Context) {
- res := &modernPb.DieselTypeListResponse{
- Code: http.StatusOK,
- Msg: "ok",
- Data: &modernPb.DieselTypeList{
- DieselType: make([]*modernPb.DieselTypeEnum, 0),
- },
- }
- res.Data.DieselType = append(res.Data.DieselType, &modernPb.DieselTypeEnum{
- Value: modernPb.DieselType_Zero,
- Label: "0号",
- }, &modernPb.DieselTypeEnum{
- Value: modernPb.DieselType_Ten,
- Label: "10号",
- }, &modernPb.DieselTypeEnum{
- Value: modernPb.DieselType_Twenty,
- Label: "20号",
- }, &modernPb.DieselTypeEnum{
- Value: modernPb.DieselType_Thirty,
- Label: "30号",
- }, &modernPb.DieselTypeEnum{
- Value: modernPb.DieselType_Thirty_Five,
- Label: "35号",
- })
- ginutil.JSONResp(c, res)
- }
|