private void OnTriggerExit(Collider other) { if (other.gameObject.CompareTag("Food")) { foodItems.Remove(other.gameObject); MaterialChange mC = other.gameObject.GetComponent <MaterialChange>(); mC.ResetMaterial(); } }
private void OnTriggerEnter(Collider other) { if (other.gameObject.CompareTag("Food")) { foodItems.Add(other.gameObject); MaterialChange mC = other.gameObject.GetComponent <MaterialChange>(); mC.ChangeMaterial(); } }
void Start() { Instance = this; whichMat = 0; for (int i = 0; i < rend.Length; i++) { rend[i].enabled = true; rend[i].sharedMaterial = wood; } }
// Update is called once per frame void Update() { MaterialChange mc = GetComponent <MaterialChange>(); if (Input.GetMouseButtonDown(0) && gameStarted == false && !mc.IsMatZero()) { { rb.isKinematic = false; rb.AddForce(new Vector2(ballForce, ballForce)); transform.SetParent(null); gameStarted = true; } } }
public DataResult PutMaterialLog([FromBody] IEnumerable <MaterialLog> materialLogs) { return(Result.GenError <DataResult>(Error.Fail)); if (materialLogs == null || !materialLogs.Any()) { return(Result.GenError <DataResult>(Error.MaterialLogNotExist)); } if (materialLogs.Any(x => x.Number < 0)) { return(Result.GenError <DataResult>(Error.NumberCannotBeNegative)); } if (materialLogs.GroupBy(x => x.Type).Count() > 1) { return(Result.GenError <DataResult>(Error.MaterialLogTypeDifferent)); } var logIds = materialLogs.Where(x => x.Number == 0).Select(y => y.Id); var billIds = materialLogs.Select(x => x.BillId); var timeLog = ServerConfig.ApiDb.Query <MaterialLog>("SELECT * FROM (SELECT * FROM `material_log` " + $"WHERE BillId IN @billIds{(logIds.Any() ? " AND Id NOT IN @logIds" : "")} AND Number > 0 Order By Time DESC) a GROUP BY Type;", new { billIds, logIds }); var oldLogs = ServerConfig.ApiDb.Query <MaterialLog>("SELECT * FROM `material_log` WHERE Id IN @id;", new { id = materialLogs.Select(x => x.Id) }); if (oldLogs.Count() != materialLogs.Count()) { return(Result.GenError <DataResult>(Error.MaterialLogNotExist)); } var result = new DataResult(); var markedDateTime = DateTime.Now; var newLogs = new List <MaterialLog>(); var newLogChanges = new List <MaterialLogChange>(); var materials = billIds.ToDictionary(x => x, x => { var change = new MaterialChange { BillId = x, Number = 0 }; // 1 入库; 2 出库;3 冲正; var inLog = timeLog.FirstOrDefault(y => y.BillId == x && y.Type == MaterialOp.入库); if (inLog != null) { change.InTime = inLog.Time; } var outLog = timeLog.FirstOrDefault(y => y.BillId == x && y.Type == MaterialOp.出库); if (outLog != null) { change.OutTime = outLog.Time; } return(change); }); foreach (var billId in billIds) { var minId = materialLogs.Where(x => x.BillId == billId).Min().Id; var billLogs = ServerConfig.ApiDb.Query <MaterialLog>("SELECT * FROM `material_log` WHERE Id >= @Id AND BillId = @BillId Order By Time;", new { Id = minId, BillId = billId }); foreach (var billLog in billLogs) { var changeBillLog = ClassExtension.ParentCopyToChild <MaterialLog, MaterialLogChange>(billLog); if (!materials.ContainsKey(billId)) { continue; } var material = materials[billId]; if (!material.Init) { material.Init = true; material.Number = billLog.OldNumber; } var update = materialLogs.FirstOrDefault(x => x.Id == billLog.Id); if (update == null) { billLog.OldNumber = material.Number; } var num = update?.Number ?? billLog.Number; // 1 入库; 2 出库;3 冲正; switch (billLog.Type) { case MaterialOp.入库: billLog.Number = num; billLog.OldNumber = material.Number; material.Number += num; break; case MaterialOp.出库: billLog.Number = num; if (billLog.Number > material.Number) { result.datas.Add(billLog.Name); result.errno = Error.MaterialLogConsumeLaterError; return(result); } billLog.OldNumber = material.Number; material.Number -= num; break; case MaterialOp.冲正: billLog.Number = num; billLog.OldNumber = material.Number; material.Number = num; break; } changeBillLog.ChangeNumber = billLog.Number; changeBillLog.ChangeOldNumber = billLog.OldNumber; newLogs.Add(billLog); newLogChanges.Add(changeBillLog); } } if (newLogChanges.All(x => x.ChangeNumber == x.Number)) { return(Result.GenError <DataResult>(Error.Success)); } var planLogs = newLogChanges.Where(x => x.PlanId != 0 && x.ChangeNumber != x.Number); if (planLogs.Any()) { var existProductionPlanBills = ServerConfig.ApiDb.Query <ProductPlanBill>( "SELECT * FROM `production_plan_bill` WHERE MarkedDelete = 0 AND PlanId IN @PlanId AND BillId IN @BillId;", new { PlanId = planLogs.Select(x => x.PlanId), BillId = planLogs.Select(x => x.BillId), }); foreach (var billLog in newLogChanges.OrderByDescending(x => x.Id)) { if (billLog.PlanId != 0) { var planBill = existProductionPlanBills.FirstOrDefault(x => x.PlanId == billLog.PlanId && x.BillId == billLog.BillId); if (planBill != null) { // 1 退回; 2 领用; switch (billLog.Type) { case MaterialOp.入库: planBill.ActualConsumption += billLog.Number; break; case MaterialOp.出库: planBill.ActualConsumption -= billLog.Number; break; case MaterialOp.冲正: break; } } } } //var productionPlanBills = new List<ProductionPlanBill>(); foreach (var billLog in newLogChanges) { if (billLog.PlanId != 0) { var planBill = existProductionPlanBills.FirstOrDefault(x => x.PlanId == billLog.PlanId && x.BillId == billLog.BillId); if (planBill != null) { // 1 退回; 2 领用; switch (billLog.Type) { case MaterialOp.入库: if (planBill.ActualConsumption < billLog.ChangeNumber) { result.datas.Add(billLog.Name); result.errno = Error.ProductionPlanBillActualConsumeLess; return(result); } planBill.ActualConsumption -= billLog.ChangeNumber; break; case MaterialOp.出库: planBill.ActualConsumption += billLog.ChangeNumber; break; case MaterialOp.冲正: break; } } } } ServerConfig.ApiDb.Execute( "UPDATE `production_plan_bill` SET `ActualConsumption` = @ActualConsumption WHERE `Id` = @Id;", existProductionPlanBills); } var purchases = newLogChanges.Where(x => x.ItemId != 0); if (purchases.Any()) { //var erpIds = purchases.Select(x => int.TryParse(x.Purpose.Replace("Erp采购-", ""), out var erpId) ? erpId : 0).Where(y => y != 0); //var pBillIds = purchases.Select(x => x.BillId); var purchaseItemIds = purchases.Select(x => x.ItemId).Where(x => x != 0); var purchaseItems = ServerConfig.ApiDb.Query <MaterialPurchaseItem>( "SELECT a.*, b.ErpId FROM `material_purchase_item` a " + "JOIN `material_purchase` b ON a.PurchaseId = b.Id " + "WHERE a.Id IN @purchaseItemIds AND a.MarkedDelete = 0 AND b.MarkedDelete = 0;", new { purchaseItemIds }); foreach (var purchase in purchases) { var pItem = purchaseItems.FirstOrDefault(x => x.Id == purchase.ItemId); //if (purchase.ChangeNumber < purchase.Number) if (pItem != null) { pItem.Stock += purchase.ChangeNumber - purchase.Number; } } ServerConfig.ApiDb.Execute("UPDATE `material_purchase_item` SET `Stock` = @Stock WHERE `Id` = @Id;", purchaseItems); } if (newLogs.Any()) { ServerConfig.ApiDb.Execute( "UPDATE `material_log` SET `Number` = @Number, `OldNumber` = @OldNumber WHERE `Id` = @Id;", newLogs); ServerConfig.ApiDb.Execute( "UPDATE `material_management` SET " + "`InTime` = IF(ISNULL(`InTime`) OR `InTime` != @InTime, @InTime, `InTime`), " + "`OutTime` = IF(ISNULL(`OutTime`) OR `OutTime` != @OutTime, @OutTime, `OutTime`), " + "`Number` = @Number WHERE `BillId` = @BillId;", materials.Values.Where(x => x.Init)); ServerConfig.ApiDb.Execute( "INSERT INTO `material_log_change` (`NewTime`, `Id`, `Time`, `BillId`, `Code`, `NameId`, `Name`, `SpecificationId`, `Specification`, `Type`, `Mode`, `Purpose`, `PlanId`, `Plan`, `Number`, `OldNumber`, `RelatedPerson`, `Manager`, `ChangeNumber`, `ChangeOldNumber`) " + "VALUES ( @NewTime, @Id, @Time, @BillId, @Code, @NameId, @Name, @SpecificationId, @Specification, @Type, @Mode, @Purpose, @PlanId, @Plan, @Number, @OldNumber, @RelatedPerson, @Manager, @ChangeNumber, @ChangeOldNumber);", newLogChanges.OrderBy(x => x.BillId).ThenBy(y => y.Time).Select(z => { z.NewTime = markedDateTime; return(z); })); //TimerHelper.DayBalance(newLogs.GroupBy(x => x.Time).Where(y => !y.Key.InSameDay(markedDateTime)).Select(z => z.Key)); //TimerHelper.DayBalance(newLogs); } return(Result.GenError <DataResult>(Error.Success)); }