1,新增
use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Validator; use App\Http\Utils\ValidatorMsg; use App\Exceptions\InvalidRequestException;
数据校验
public static function addSignComValidatorHK($requstData){ $validator = Validator::make($requstData, [ 'com_name_hk' => 'required', 'com_addr_hk' => 'required', 'contact_hk' => 'required', ], [], [ 'com_name_hk' => '公司名称繁体', 'com_addr_hk' => '公司地址繁文', 'contact_hk' => '联系人繁体', ]); if ($validator->fails()) { $errors = $validator->errors()->toArray(); $err_msg = ValidatorMsg::getMsg($errors); throw new InvalidRequestException($err_msg); } } public static function addSignComValidator($requstData){ $validator = Validator::make($requstData, [ 'sign_com_type' => 'required', 'com_name' => 'required', ], [], [ 'sign_com_type' => '签约公司分类 1大陆 2香港', 'com_name' => '公司中文名称', if ($validator->fails()) { $errors = $validator->errors()->toArray(); $err_msg = ValidatorMsg::getMsg($errors); throw new InvalidRequestException($err_msg); } }
控制器
public function addSignCom(Request $request){ $requestParams = $request->all(); $signComType = arrayGet($requestParams,"sign_com_type"); self::addSignComValidator($requestParams); if($signComType == SignComsModel::SIGN_COM_TYPE_CH){ // self::addSignComValidatorCh($requestParams); }else{ self::addSignComValidatorHK($requestParams); } SignComService::addSignCom($requestParams); return $this->setSuccess(); } //新增快递物流 public function addShipping(Request $request) { $requestParams = $request->all(); $validator = Validator::make($requestParams, [ 'shipping_code' => 'required', 'shipping_name' => 'required', 'shipping_type' => 'required', ])->setAttributeNames( [ 'shipping_code' => '物流编码', 'shipping_name' => '物流名称', 'shipping_type' => '物流类型', ] ); //验证钩子 $validator->after(function ($validator) use ($requestParams) { // if (!in_array($requestParams["type"], [1, 2])) { // $validator->errors()->add('type', '库存类型参数:调拨/移位错误'); // } }); if ($validator->fails()) { $errors = $validator->errors()->all(); throw new InvalidRequestException($errors[0] ?? "未知错误,请联系技术"); } ShippingService::addShipping($requestParams); return $this->setSuccess(); }
public static function addShippingWarehouse($reqParams=[]){ $shippingId = arrayGet($reqParams, "shipping_id", 0, "intval"); $companyId = arrayGet($reqParams, "company_id", 0, "intval"); $warehouseId = arrayGet($reqParams, "warehouse_id", 0, "intval"); $lieShipMonthBalanceId = arrayGet($reqParams, "ship_month_balance_id", 0, "intval"); $signComId = arrayGet($reqParams, "sign_com_id", 0, "intval"); $remark = arrayGet($reqParams, "remark"); $signcomInfo = SignComsModel::getOneById($signComId); if(empty($signcomInfo)){ throw new InvalidRequestException("没有查询到改签约公司相关信息"); } $shippingInfo = ShippingModel::where("shipping_id",$shippingId)->with(["shipping_mode","shipping_month_balance"])->first(); if (empty($shippingInfo)) { throw new InvalidRequestException("没有查询到快递物流相关信息"); } if ($shippingInfo["status"] == ShippingModel::$STATUS_DISABLE) { throw new InvalidRequestException("快递物流已禁用"); } // $shippingMonthBalance = ShippingMonthBalanceModel::where("shipping_id",$shippingId)->where("id",$lieShipMonthBalanceId)->count(); // if(empty($shippingMonthBalance)){ // throw new InvalidRequestException("没找到物流/月结账号相关信息"); // } $shippingWarehouseModel = new ShippingWarehouseModel(); $isExists = $shippingWarehouseModel->checkShippingWarehouseIsExists([ "company_id"=>$companyId, "warehouse_id"=>$warehouseId, "sign_com_id"=>$signComId, "shipping_id"=>$shippingId, ]); if($isExists){ throw new InvalidRequestException("该仓库快递物流配置已存在"); } try{ \DB::connection("mysql")->beginTransaction(); $shippingWarehouseId = $shippingWarehouseModel->addShippingWarehouse([ "shipping_warehouse_code"=>"", "shipping_id"=>$shippingId, "ship_month_balance_id"=>$lieShipMonthBalanceId, "company_id"=>$companyId, "company_name"=>arrayGet(CommonEnum::$WmsCompanyNameList, $companyId), "warehouse_id"=>$warehouseId, "remark"=>$remark, "sign_com_id"=>$signComId, "sign_com_name"=>$signcomInfo["com_name"]??"", "create_uid"=>getAdminUserId(), "create_name"=>getAdminUserName(), "create_time"=>time(), ]); $shippingWarehouseModel->where("shipping_warehouse_id",$shippingWarehouseId)->update([ "shipping_warehouse_code"=>str_pad((string)$shippingWarehouseId, 4, '0', STR_PAD_LEFT) ]); \DB::connection("mysql")->commit(); }catch (\Throwable $e){ \DB::connection("mysql")->rollBack(); throw new InvalidRequestException(sprintf("新增快递物流配置失败:%s",$e->getMessage())); } }
服务层service
/判断是否存在相同数据 public static function checkIsSameSignCom($comName,$useScope,$exclude=[]){ $query = SignComsModel::where("com_name",$comName)->where("use_scope",$useScope); if(!empty($exclude)){ $query->whereNotIn("sign_com_id",$exclude); } return $query->count(); } //判断是否存在相同数据 public static function checkIsSamePendingProtocolByAddTaxinfo($params,$exclude=[]) { $query = ProtocolModel::where("org_id", $params["org_id"])->where("user_id", $params['user_id']) ->where("tax_title", $params["tax_title"]) ->whereIn("audit_status", [1, 2]) ->where("protocol_type", 7) ->where("status", 1); if(!empty($exclude)){ $query = $query->whereNotIn("id",$exclude); } $count = $query->count(); if ($count > 0) { throw new InvalidRequestException('客户协议已存在审核中的数据,请等待结果后操作'); } } public static function addSignCom($requestParams){ $data["sign_com_type"] = arrayGet($requestParams, "sign_com_type"); $data["com_name"] = arrayGet($requestParams, "com_name"); $data["com_name_hk"] = arrayGet($requestParams, "com_name_hk"); $data["com_name_en"] = arrayGet($requestParams, "com_name_en"); $data["com_website"] = arrayGet($requestParams, "com_website"); $data["create_time"] = time(); $data["create_uid"] = getAdminUserId(); $data["create_name"] = getAdminUserName(); if(self::checkIsSameSignCom($data["com_name"],$data["use_scope"])){ throw new InvalidRequestException(sprintf("公司:%s已存在!",$data["com_name"])); } try{ \DB::connection("mysql")->beginTransaction(); $id = SignComsModel::insertGetId($data); $signComCode = sprintf("QYGS%s",str_pad($id, 4, "0", STR_PAD_LEFT)); SignComsModel::where("sign_com_id",$id)->update([ "sign_com_code"=>$signComCode ]); \DB::connection("mysql")->commit(); }catch (\Throwable $e){ \DB::connection("mysql")->rollBack(); throw new InvalidRequestException(sprintf("新增失败:%s",$e->getMessage())); } ActionLogService::addLog(ActionLogService::TYPE_SIGN_COM_ADD, $id, [ 'message' => '新增了签约公司' ]); return $id; } public static function addShipping($reqParams=[]){ $shippingCode = arrayGet($reqParams, "shipping_code", "", "trim"); $shippingName = arrayGet($reqParams, "shipping_name", "", "trim"); $shippingType = arrayGet($reqParams, "shipping_type", 0, "intval"); $shippingDesc = arrayGet($reqParams, "shipping_desc", "", "trim"); $shippingMonthBalance = arrayGet($reqParams, "shipping_month_balance", "", "trim");//json $shippingMode = arrayGet($reqParams, "shipping_mode", "", "trim");//json $shippingMonthBalance = json_decode($shippingMonthBalance,true); $shippingMode = json_decode($shippingMode,true); try{ $shippingModel = new ShippingModel(); if($shippingModel->checkCodeIsExists($shippingCode)){ throw new InvalidRequestException("物流编码已存在"); } if($shippingModel->checkNameIsExists($shippingName)){ throw new InvalidRequestException("物流名称已存在"); } \DB::connection("mysql")->beginTransaction(); $shippingTypes = self::getShippingTypes("物流类型"); if(!in_array($shippingType,array_keys($shippingTypes))){ throw new InvalidRequestException("物流类型不存在或已禁用"); } $shippingId = $shippingModel->addShipping([ "shipping_code"=>$shippingCode, "shipping_name"=>$shippingName, "shipping_desc"=>truncStr($shippingDesc), "shipping_type"=>$shippingType, "create_uid"=>getAdminUserId(), "create_name"=>getAdminUserName(), "create_time"=>time(), ]); if(!empty($shippingMonthBalance) && is_array($shippingMonthBalance)){ foreach($shippingMonthBalance as $shippingMonthBalanceItem){ $shippingMonthBalanceItem = checkRequestParamsNull($shippingMonthBalanceItem); $isDefault = !empty($shippingMonthBalanceItem["is_default"]) ? intval($shippingMonthBalanceItem["is_default"]) : 0; if(empty($shippingMonthBalanceItem["month_balance_code"])){ continue; } ShippingMonthBalanceModel::insertGetId([ "shipping_id"=>$shippingId, "month_balance_code"=>$shippingMonthBalanceItem["month_balance_code"], "contact"=>$shippingMonthBalanceItem["contact"] ?? "", "contact_tel"=>$shippingMonthBalanceItem["contact_tel"] ?? "", "is_default"=>$isDefault, "remark"=>$shippingMonthBalanceItem["remark"] ?? "", "create_time"=>time(), ]); } } if(!empty($shippingMode) && is_array($shippingMode)){ foreach($shippingMode as $shippingModeItem){ $shippingModeItem = checkRequestParamsNull($shippingModeItem); $isDefault = !empty($shippingModeItem["is_default"]) ? intval($shippingModeItem["is_default"]) : 0; if(empty($shippingModeItem["shipping_mode_name"])){ continue; } ShippingModeModel::insertGetId([ "shipping_id"=>$shippingId, "shipping_mode_code"=>$shippingModeItem["shipping_mode_code"]??"", "shipping_mode_name"=>$shippingModeItem["shipping_mode_name"]??"", "shipping_params"=>$shippingModeItem["shipping_params"] ?? "", "is_default"=>$isDefault, "remark"=>$shippingModeItem["remark"] ?? "", "create_time"=>time(), ]); } } \DB::connection("mysql")->commit(); }catch (\Throwable $e){ \DB::connection("mysql")->rollBack(); throw new InvalidRequestException(sprintf("新增快递物流失败:%s",$e->getMessage())); }
model层
<?php namespace App\Http\Models; use App\Http\Models\BaseModel; class StockInModel extends BaseModel { public $connection = 'mysql'; protected $table = 'lie_stock_in'; protected $primaryKey = 'stock_in_id'; protected $guarded = ['stock_in_id']; //设置字段黑名单 const CREATED_AT = 'create_time'; const UPDATED_AT = 'update_time'; public $timestamps = false; public static $STATUS_ENABLE = 1;//启用 public static $STATUS_DISABLE = 0;//禁用 public static $STATUS_FORMAT = [ 1 => "启用", 0 => "停用", ]; /* * 自动维护更新时间 */ public function fromDateTime($value) { return strtotime(parent::fromDateTime($value)); } public function getCreateTimeAttribute() { if ($this->attributes["create_time"] <= 0) { return ""; } return date("Y-m-d H:i:s", $this->attributes["create_time"]); } public function stock_in_items() { return $this->hasMany(StockInItemModel::class, "stock_in_id", "stock_in_id"); } //关联关系,关联到采购主表 public function purchase_order() { return $this->belongsTo(PurchaseOrderModel::class, 'purchase_id', 'purchase_id'); } /* * 新增 */ public function addStockIn($data) { $data = $this->filterField($data); return static::insertGetId($data); } public static function createInfo($data) { return self::insertGetId($data); } //判断是否存在 public function checkCodeIsExists($shippingCode,$excludeIds=[]){ $query = self::where("shipping_code",$shippingCode); if(!empty($excludeIds)){ $query->whereNotIn("shipping_id",$excludeIds); } return $query->exists(); } public function checkNameIsExists($shippingName,$excludeIds=[]){ $query = self::where("shipping_name",$shippingName); if(!empty($excludeIds)){ $query->whereNotIn("shipping_id",$excludeIds); } return $query->exists(); } public function checkShippingWarehouseIsExists($whereIn=[],$excludeIds=[]){ $query = self::newQuery(); foreach ($whereIn as $key=>$val){ $query->where($key,$val); } if(!empty($excludeIds)){ $query->whereNotIn("shipping_warehouse_id",$excludeIds); } return $query->exists(); } public static function isExistsPurData($purInspectId) { return self::where('pur_inspect_id', $purInspectId)->exists(); } //获取单挑数据 public static function getOneById($id) { $res = self::where('inspection_order_id', $id)->first(); return $res ? $res->toArray() : []; } //获取多条数据 public static function getListByIdArr($ids) { $res = self::whereIn('inspection_order_id', $ids)->get(); return $res ? $res->toArray() : []; } public static function getStockListByidsAndWhere($ids,$where=[]) { return self::whereIn("id", $ids)->where($where)->with("stock_in_items")->get()->toArray(); } public static function getStockInByErpSn($erp_stock_in_sn) { $info = self::where("erp_stock_in_sn", $erp_stock_in_sn)->where("status", "<>", self::STATUS_DISABLE)->with("stock_in_items")->get(); return $info ? $info->toArray() : []; } public static function getListByWhere($where) { $res = self::where($where)->get(); return $res ? $res->toArray() : []; } public static function getPurchaseUsersByPurIds($purchase_id = []) { return static::whereIn("purchase_id", (array)$purchase_id)->pluck("purchase_name", "purchase_id")->toArray(); } public static function getPurchaseId($purchase_sn) { return static::where("purchase_sn", trim($purchase_sn))->rule(self::$ruleViewList)->value("purchase_id"); } public static function getStockInfoAndStockInItemsAndLockInfoById($id) { $res = self::where('id', $id)->with("stock_in_items")->with([ "stock_lock" => function ($q) { $q->where("lock_status", 1); } ])->first(); return $res ? $res->toArray() : []; } public static function getStockInByPurchaseId($purchaseId) { return self::whereIn("stock_in_type", [StockInModel::STOCK_IN_TYPE_PURCHASE, StockInModel::STOCK_IN_TYPE_PLAN, StockInModel::STOCK_IN_TYPE_CONSIGNMENT, StockInModel::STOCK_IN_TYPE_CONSIGNMENT_PURCHASE,]) ->whereHasIn("stock_in_items", function ($query) use ($purchaseId) { //排除作废的明细item_status=3 $query->where("purchase_id", intval($purchaseId))->where("item_status", "!=", StockInItemModel::ITEM_STATUS_DISABLE); })->get()->toArray(); } //修改数据 public static function updateById($id, $data) { return self::where('inspection_order_id', $id)->update($data); } public static function updateByIdArr($idArr, $data) { return self::whereIn('inspection_order_id', $idArr)->update($data); } /* * 作废 */ public function cancelStockIn($stock_in_id) { return static::where("stock_in_id", intval($stock_in_id))->where("status", self::STATUS_NEED_STOCK_IN)->update([ "status" => self::STATUS_DISABLE, "update_time" => time(), ]); } //删除 public static function delStockByIds($isToStockSummaryIds){ return self::whereIn("id",$isToStockSummaryIds)->delete(); } }
2,列表查询
<?php 查询列表 use App\Exceptions\InvalidRequestException; use App\Http\Controllers\Controller; use App\Http\Services\FreezeStockService; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; use Illuminate\Validation\Rule; use App\Http\Utils\ValidatorMsg; //控制器 public function getFreezeStock(Request $request) { $requestParams = $request->all(); list($list, $count) = FreezeStockService::getFreezeStock($requestParams); return $this->setSuccessData([ "list" => $list ?? [], "total" => $count, ]); } //service public static function getFreezeStock($requestParams = []){ $pageInfo["page"] = arrayGet($requestParams, "page", 1, "intval"); $pageInfo["limit"] = arrayGet($requestParams, "limit", static::_LIMIT_, "intval"); $buildEqualQueryData["freeze_stock_sn"] = arrayGet($requestParams, "freeze_stock_sn"); $buildEqualQueryData["status"] = arrayGet($requestParams, "status",null); $buildEqualQueryData["stock_in_batch_sn"] = arrayGet($requestParams, "stock_in_batch_sn"); $buildEqualQueryData["identify_sn"] = arrayGet($requestParams, "identify_sn"); $buildEqualQueryData["erp_stock_lot"] = arrayGet($requestParams, "erp_stock_lot"); $buildEqualQueryData["warehouse_id"] = arrayGet($requestParams, "warehouse_id"); $buildEqualQueryData["sku_id"] = arrayGet($requestParams, "sku_id"); $buildEqualQueryData["goods_sn"] = arrayGet($requestParams, "goods_sn"); $buildLikeQueryData["goods_name"] = arrayGet($requestParams, "goods_name"); $buildTimeQueryData = []; $createTime = arrayGet($requestParams, "create_time"); $freezeTime = arrayGet($requestParams, "freeze_time"); $releaseTime = arrayGet($requestParams, "release_time"); if($createTime){ $createTime = explode("~", $createTime); $buildTimeQueryData["create_time"]["begin_time"] = isset($createTime[0]) ? $createTime[0] : ""; $buildTimeQueryData["create_time"]["end_time"] = isset($createTime[1]) ? $createTime[1] : ""; } if($freezeTime){ $freezeTime = explode("~", $freezeTime); $buildTimeQueryData["freeze_time"]["begin_time"] = isset($freezeTime[0]) ? $freezeTime[0] : ""; $buildTimeQueryData["freeze_time"]["end_time"] = isset($freezeTime[1]) ? $freezeTime[1] : ""; } if($releaseTime){ $releaseTime = explode("~", $releaseTime); $buildTimeQueryData["release_time"]["begin_time"] = isset($releaseTime[0]) ? $releaseTime[0] : ""; $buildTimeQueryData["release_time"]["end_time"] = isset($releaseTime[1]) ? $releaseTime[1] : ""; } $query = FreezeStockModel::select("*")->buildEqualQuery($buildEqualQueryData) ->buildTimeQuery($buildTimeQueryData) ->buildLikeQuery($buildLikeQueryData); //关联表查询 if ($goods_name || $warehouse_receipt_sn) { $query->whereHasIn("consignment_items", function ($q) use ($goods_name, $warehouse_receipt_sn) { if ($goods_name) { $q->where("goods_name", "like", trim($goods_name) . '%'); } if ($warehouse_receipt_sn) { //换行转为逗号 $warehouse_receipt_sn = str_replace(" ", ",", $warehouse_receipt_sn); $warehouseReceiptSn = explode(",", $warehouse_receipt_sn); $q->whereIn("warehouse_receipt_sn", $warehouseReceiptSn); } }); } $list = $query->orderBy("id", "desc")->getList($pageInfo["page"], $pageInfo["limit"]); $list = $list->toArray(); $arr = $list["data"] ?? []; $total = $list["total"] ?? 0; $positionIds = \Arr::pluck($arr,"position_id"); $positionIds = array_filter_unique($positionIds); $positionList = WareHousePositionModel::getAllByIds($positionIds); $positionList = arrayChangeKeyByField($positionList,"position_id"); //查询容器 $containerIds = \Arr::pluck($arr,"container_id"); $containerList = ContainerModel::getAllByIds($containerIds); $containerList = arrayChangeKeyByField($containerList,"id"); foreach ($list["data"] as $k => $item) { $arr[$k]["position_name"] = $positionList[$item["position_id"]]["position_code"] ?? ""; $arr[$k]["container_name"] = $containerList[$item["container_id"]]["container_sn"] ?? ""; $arr[$k]["create_time"] = dateDefault($item["create_time"]); $arr[$k]["freeze_time"] = dateDefault($item["freeze_time"]); $arr[$k]["release_time"] = dateDefault($item["release_time"]); $arr[$k]["status_cn"] = arrayGet(FreezeStockModel::$STATUS_FORMAT, $item["status"]); } return [$arr, $total]; }
本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/p/18753059