站长信息
jeffery.xu
jeffery.xu

软件工程师

欢迎访问我的个人笔记网站!我是一名热爱技术的开发者,专注于Web开发和技术分享。

811495111@qq.com
18521510875
筛选

个人笔记

7月小结
计划与总结

7月完成了个人网站的初步开发,采用了.net 8.0 + razor + Entityframecore 完成了设计, 前端纯js和 bootstrap完成。不得不说AI非常强力,替我完成90%以上的代码开发。

软考方面有点落后,需要加紧学习跟上。

8月份打算学习一下mysql和java,如果能再学习一门前端技术就好了。而且java的话发布要涉及linux,这一块实在没底,万一再碰docker那就是盲人摸象,一步一步来吧。

 

《明末渊虚之羽》攻略路线推荐 NPC剧情任务路线安排
游戏攻略
第一章-佛源镇

普元寺:走出燃灯洞→普元寺→普元寺二楼:对话玄阳子、对话谯麟→普元寺一楼:对话瑜夏、对话陶青→出门普元寺神龛,左边有几个帐篷→庭院对话老船夫→重生后出门→上坡对话垂髫小童→断桥边对话何有哉→摩崖像

摩崖像:瀑布前对话红衣少女→摩崖像神龛→打唐王宫女,下面洞口出去开宝箱→上面洞口出来,捡到【贵重物品】散落的包袱→含光禅院

含光禅院:神龛旁对话吴刚→竹子院里捡到【穆桂英面人】→打吃人头陀→神龛旁对话吴刚→传送回普元寺,帐篷处对话玄阳子→回含光禅院,用钥匙开门→三步地

三步地:对话年大侠→房子里,穆桂英面人给陶罐小童→右边路尽头洞里对话说书人、熊猫→回年大侠处,另一条路走上阶梯前往蜀王祠

蜀王祠:一楼对话年大侠、女道士、陶青、吴刚→二楼对话老婆婆、白袍老者→三楼BOSS房门口捡到【贵重物品】染血手书,打羽化祭司禄秉璋→不凝血块给年大侠→祭司的断杖给陶青→回普元寺,染血手书给瑜夏,楼上对话年大侠、玄阳子

竹林小院:蜀王祠外隐形桥→竹林小院门板对话:陶青情人、陶罐小童哥哥→开门打通回普元寺捷径→佛源镇

佛源镇:四合院楼上拿到【贵重物品】破损的书信→回竹林小院,破损的书信给陶罐小童哥哥→佛源镇戏台打唱戏怪,得到【杨宗保面人】→推倒树桥回蜀王祠捷径→对话陶青水太凉→回竹林小院,杨宗保面人给陶罐小童哥哥→罗家大院打陆红柳→回蜀王祠,白玉丸子给老婆婆→三清铃给女道士(清醒线),三清铃不给女道士(心魔线)

丹青苑:佛源镇戏台旁下坡过桥→丹青苑里拿【贵重物品】山水图→山水图给陶青

唐王行宫侧门外:蜀王祠二楼树桥出去→下山来到唐王行宫侧门→唐王行宫侧门外马厩对话玄阳子→开门打通回蜀王祠捷径

蜀王祠地下:蜀王祠一楼地下通道→赤炼工坊→盗洞→打噬毒千足大蚰蜒→回蜀王祠,对话陶青→(女道士心魔线)道士令牌给女道士→回普元寺,二楼对话玄阳子

秽柳滩:蜀王祠地下盗洞神龛→乘电梯上来,河边捡到【贵重物品】破损的令牌→对话何有哉,散落的包袱给他→对话白袍老者→陆家旧居→对话红衣少女→弃尸坑,打重生妖树缚魂木→行宫关隘

唐王行宫:行宫关隘→唐王行宫入口对话玄阳子→打开唐王行宫侧门→红色谜题门,故意答错回答羽化蜕皮(想要成就的话就得答羽化飞升),被传送到菜园对话老船夫→观音殿,打唐王宫女→行宫后山→后山凉亭对话素衣侠女→使用佛像机关放干大池塘的水→打锦衣卫指挥使红岚

普元寺:对话玄阳子→下楼对话瑜夏、何有哉→出去庭院对话年大侠→用钥匙开门后再对话年大侠→穿过山洞前往云顶城

快速进入环境变量
编程技巧

按Win + R键,输入sysdm.cpl
选择"高级"选项卡 → "环境变量"

关于基孔肯雅热,你应该知道这些
生活经验
一、什么是基孔肯雅热
基孔肯雅热(Chikungunya fever,CHIK)是由基孔肯雅病毒引起的急性蚊媒传染病,主要流行于东南亚、南亚和非洲等地区,通过伊蚊(埃及伊蚊和白纹伊蚊)叮咬传播,无人传人的证据。人群普遍易感,感染后可获得持久的免疫力。
二、临床症状有哪些?
基孔肯雅热的潜伏期为1~12天,多为3~7天。临床表现类似登革热,但以下症状较为典型:
1.突发高热:突然起病,寒战、发热,体温可达39℃,伴有头痛、恶心、呕吐、食欲减退,淋巴结肿大。
2.严重关节疼痛:多累及手腕、手指、膝盖和脚踝等小关节,可伴有全身性肌痛,疼痛特别剧烈。
3.皮疹:半数以上的患者在发病后2~5天躯干、四肢的伸展侧、手掌和足底出现皮疹。为斑疹、丘疹或紫癜,疹间皮肤多为正常,部分患者伴有瘙痒感。
4.其他症状:肌肉疼痛、头痛、恶心、结膜炎或乏力等。
三、如何预防基孔肯雅热?
预防基孔肯雅热的最佳方法是避免蚊虫叮咬。需要以清理蚊幼虫孳生地为基础,并根据情况合理使用生物、物理和化学方法杀灭蚊虫。
具体措施包括:市民外出活动时做好防蚊准备,着长衣长裤、远离蚊虫孳生场所、科学合理使用驱蚊剂防止蚊虫叮咬。
四、重点场所防护措施
(一)建筑工地:严防聚集性疫情
1.孳生地清零行动。每日清理:废弃容器、轮胎积水须当日清空;储水容器加盖密封,闲置容器倒扣存放。工程区域:排水沟渠每日疏通,洼地用沙土填平,定期投放灭蚊幼剂。
2.工棚防蚊。工棚可安装纱门纱窗,配发蚊帐并确保夜间使用。
3.疫情响应机制。工人出现发热伴关节痛、皮疹,立即隔离并报告属地疾控中心。
(二)旅游景区:阻断游客传播链
1.环境精细化管理。绿化带垃圾、景观水体每日清理,喷泉水池投放灭蚊幼剂。垃圾桶密闭化管理,废弃轮胎钻孔排水或清除处理。
2.游客防护引导。在景区入口、观光车站设置防蚊提示屏,滚动播放防护要点。售票处免费提供驱蚊贴,休息区配备蚊香、电蚊拍。
3.重点区域强化消杀。竹林、绿篱等荫蔽区域增加热烟雾处理;厕所、垃圾桶周边每日喷洒灭蚊药剂。
(三)学校及托幼机构:筑牢校园防护网
1.孳生地动态清除。教室、宿舍全区域安装纱窗,天台积水及时清理完毕。水培植物每3天换水并冲洗根部,花盆托盘投放缓释灭蚊幼颗粒。
2.健康教育全覆盖。开设“防蚊技能实践课”,组织学生参与校园积水巡查,教授学生正确使用驱蚊剂及识别伊蚊孳生地。
(四)医疗机构:严守院感防线
1.病例闭环管理。发热门诊设置防蚊隔离诊室,疑似或确诊病例单人单间收治,病床标配蚊帐。
2.院内无蚊环境创建。每日清理绿化带排水沟、盆栽积水,医疗废弃物存放点周边实施滞留喷洒。急诊、输液室等区域安装灭蚊灯,医护人员着长袖工装并涂抹驱蚊剂。
五、个人防护措施
1.物理防护:在蚊虫活跃时段,如清晨和傍晚,尽量减少户外活动。如需外出,应穿长袖上衣、长裤,选择浅色衣物,减少皮肤暴露。
2.化学防蚊:外出时在暴露皮肤涂抹合格的驱蚊剂,如含避蚊胺、派卡瑞丁、驱蚊酯等成分的驱蚊产品。儿童、孕妇应选择专用产品,并按说明书要求足量、定时补涂。
3.居家防护:室内安装纱门、纱窗,睡觉时使用蚊帐,尤其适合婴幼儿和老人。适时使用蚊香、灭蚊拍、防蚊灯等工具辅助灭蚊。
4.室内积水管理:水培植物如富贵竹应每3—5天彻底换水,同时冲洗容器内壁和植物根部,也可投放灭蚊幼剂或采用物理隔断方式防蚊。定期检查饮水机水槽、冰箱底部水盘等隐蔽处防止积水。
5.天台、阳台及门前屋后积水管理:屋顶反墚、排水槽等应定期疏通,避免堵塞积水。阳台、天台、庭院内的花盆、泡沫箱、废弃瓶罐等容器应及时清理,闲置容器应倒扣放置,储水容器如水缸应加盖,废弃容器彻底清除。竹筒、树洞应进行封堵或改造,莲花池养鱼防蚊。空调冷凝水应及时排净,废弃轮胎在底部打孔或避免露天放置。下水井进行防蚊封堵,有条件的建议将明沟改为暗渠。
6.一旦出现可疑症状,应及时到正规医院就诊,主动告知医务人员2周内的旅居史和蚊虫叮咬史,以便诊治。
六、旅行者应注意的事项有哪些?
暑期是外出旅游的高峰期,也是蚊媒活动的活跃期,要注意预防基孔肯雅热。
1.出发前,提前了解目的地疫情情况。出发前及时查看旅游部门、出入境检验检疫部门的旅游提醒,学习相关预防知识,做好防蚊、灭蚊的防护准备。
2.在基孔肯雅热流行地区旅行时,注意做好防蚊、灭蚊措施。在户外活动时,建议穿长袖长裤预防蚊虫叮咬,也可涂抹驱避剂,避免蚊子叮咬。临时居住场所应配备蚊帐或电蚊香等防护用品。
3.旅行返乡后,注意做好自我健康监测。从境外或其他流行地区旅行返回后,主动做好自我健康监测,如返回2周内出现发热、皮疹、关节疼痛等症状,应立即就医,并主动告知医生旅行史和蚊虫叮咬史,以便诊治。
转自:海口市融媒体中心
来源:海口日报
修改线下订单退单记录罐码
工作笔记
private dynamic ReturnScanOrderSubmit(WebParameterContext webContext)
{
    var response = new ServerContext<dynamic>() { ResponseMessage = new ResponseMessage() { Success = true } };
    ActionReturnResponseMessage = () =>
    {
        TransactionResult<dynamic> transactionResult = new TransactionResult<dynamic>();
        response = VerifyReturnScanData(webContext);
        if (response.ResponseMessage.Success == false)
        {
            return response;
        }
        try
        {
            var result = Dalserver.Base.BatchExecuteForTransaction(() =>
            {
                try
                {

                    LogUtil.DoLog("ReturnOrderSubmit-webContext", JSON.ToJSON(webContext));
                    // 获取请求体中的数据
                    string tank_codes = string.Join(",", webContext.RequestBody.tank_codes.ToArray());
                    string StoreID = webContext?.StoreID.ToString();

                    dynamic Datas = DynamicExtension.EmptyDynamic;

                    Datas = Dalserver.DA.Query("CT_GetOffIDData", new { codes = tank_codes, FK_StoreID = StoreID });
                    if (Datas != null && Datas is IEnumerable<dynamic> list && ((IEnumerable<dynamic>)Datas).ToList().Count > 0)
                    {
                        var returnData = new List<dynamic>();
                        returnData = ((IEnumerable<dynamic>)Datas).ToList();

                        var idList = returnData
                            .Select(x => x.ID)
                            .ToList();

                        foreach (var id in idList)
                        {
                            dynamic updatequery = DynamicExtension.EmptyDynamic;
                            updatequery.ID = id;
                            dynamic updateObj = DynamicExtension.EmptyDynamic;
                            updateObj.Status = 2;
                            Dalserver.Base.DataLogicFactory(new SqlDynamicContext("TBProductTankCode", OperationType.EDITE, updatequery, updateObj));
                        }

                        var orderList = returnData
                            .GroupBy(x => x.OrderID)
                            .Select(g => new
                            {
                                OrderID = g.Key,
                            })
                            .ToList();
                        // 为每个OrderID创建一个单独的ProductReturnCreate
                        Dictionary<string, dynamic> orderReturnMap = new Dictionary<string, dynamic>();

                        foreach (var order in orderList)
                        {
                            string orderNumber = GetOrderNumberByID(order.OrderID?.ToString()); // 假设有这个方法获取订单号
                            dynamic returnID = ProductReturnCreate(webContext.Account.Id.ToString(), 0, webContext.StoreID?.ToString(), orderNumber);
                            orderReturnMap.Add(order.OrderID?.ToString(), returnID);
                        }
                        var detailList = returnData
                            .GroupBy(x => new { DetailID = x.DetailID, OrderID = x.OrderID })
                            .Select(g => new
                            {
                                DetailID = g.Key.DetailID,
                                ProductCount = g.Count(),
                                ProductID = g.First().ProductID,
                                OrderID = g.First().OrderID,
                                OnlinePrice = Convert.ToDecimal(g.First().OnlinePrice),
                                TankCodes = g.Select(x => x.TankCode).Where(tc => !string.IsNullOrEmpty(tc)).Distinct().ToList()
                            })
                            .ToList();


                        foreach (var detail in detailList)
                        {
                            UpdateProductOrderDetail(detail.DetailID, detail.ProductCount);
                            dynamic returnID = orderReturnMap[detail.OrderID?.ToString()];
                            CreateReturnDetail(detail, returnID, webContext.Account.Id.ToString(), 1);
                        }

                        foreach (var order in orderList)
                        {
                            UpdateMainProductOrder(order.OrderID);
                        }

                        foreach (var returnID in orderReturnMap.Values)
                        {
                            UpdateMainReturnProductOrder(returnID);
                        }

                        var ProductList = returnData
                            .GroupBy(x => x.ProductID)
                            .Select(g => new
                            {
                                ProductID = g.Key,
                                TankCodes = g.Select(x => x.TankCode).Where(tc => !string.IsNullOrEmpty(tc)).Distinct().ToList(),
                                TankCodeCount = g.Select(x => x.TankCode).Where(tc => !string.IsNullOrEmpty(tc)).Distinct().ToList().Count
                            })
                            .ToList();
                        foreach (var detail in ProductList)
                        {
                            string Message = ReturnStock(detail.ProductID?.ToString(), webContext.StoreID, (int)detail.TankCodeCount, detail.TankCodes);
                            if (!string.IsNullOrEmpty(Message))
                            {
                                response.ResponseMessage.ErrorMessage = Message;
                                response.ResponseMessage.ErrorCode = 500;
                                response.ResponseMessage.Success = false;
                                response.Status = DynamicExtension.EmptyDynamic;
                                return false;
                            }
                        }
                        response.ResponseMessage.ErrorMessage = "退单成功!";
                        response.ResponseMessage.ErrorCode = 200;
                        response.Status = string.Join(",", orderReturnMap.Values);
                    }
                    else
                    {
                        response.ResponseMessage.ErrorMessage = "未查询到订单!";
                        response.ResponseMessage.ErrorCode = 500;
                        response.ResponseMessage.Success = false;
                        response.Status = DynamicExtension.EmptyDynamic;
                        return false;
                    }

                    return true;
                }
                catch (Exception e)
                {
                    LogUtil.LogExceptionInfo("ReturnOrderSubmit-接口异常", e);
                    response.ResponseMessage.Success = false;
                    response.ResponseMessage.ErrorMessage = e.Message;
                    response.ResponseMessage.ErrorCode = 500;
                    return false;
                }
            }, transactionResult);



            return response;
        }
        catch (Exception ex)
        {
            LogUtil.LogExceptionInfo("ReturnOrderSubmit-接口异常", ex);
            response.ResponseMessage.Success = false;
            response.ResponseMessage.ErrorCode = 500;
            response.ResponseMessage.ErrorMessage = "程序异常!" + ex.Message;
            return response;
        }

    };
    return webContext;
}
private dynamic CreateReturnDetail(dynamic detail, dynamic returnID, dynamic AccountID, int ReturnType)
{
    ServerContext<dynamic> data = new ServerContext<dynamic>();
    dynamic factory = DynamicExtension.EmptyDynamic;
    factory.FK_TBProduct_ID = detail.ProductID?.ToString();
    factory.ProductCode = GetProductCodeByID(detail.ProductID?.ToString());
    factory.ProductName = GetProductNameByID(detail.ProductID?.ToString());
    factory.QuantityNum = detail.ProductCount; // 总数量
    factory.QuantityMoney = (decimal)detail.OnlinePrice * (int)detail.ProductCount;
    factory.FK_TBProductReturn_ID = returnID;
    factory.FK_TBProductOrder_ID = detail.OrderID?.ToString(); // 订单来源(固定线下)
    factory.FK_TBProductOrderDetail_ID = detail.DetailID?.ToString(); // 订单来源(固定线下)
    factory.FK_SystemUser_Create_ID = AccountID;    // 创建人ID
    factory.FK_SystemUser_Modify_ID = AccountID;    // 修改人ID
    factory.IsValid = 1;
    factory.CreateTime = DateTime.Now;
    factory.ModifyTime = DateTime.Now;
    SqlDynamicContext sql = new SqlDynamicContext("TBProductReturnDetail", OperationType.ADD, factory: factory);
    data = Dalserver.Base.DataLogicFactory(sql);//新增
    var detailID = data.Status?.ToString();
    if (ReturnType == 1)
    {
        foreach (var tankCode in detail.TankCodes)
        {
            if (!string.IsNullOrEmpty(tankCode?.ToString()))
            {
                CreateReturnTankCode(tankCode, returnID?.ToString(), detail.ProductID?.ToString(), AccountID, detailID);
            }
        }
    }
    return data.Status;


}
记录一个BUG
工作笔记

<Column isVirtualField="false" field="a_ExpectedInstallationTime" fkField="" title="预计装机时间" titleTooltip="预计装机时间" funcValue="CONVERT(varchar(100), a.ExpectedInstallationTime, 23)" align="left" sortable="false" order="" formatter="" level="2" visible="true" gridPickerShow="true" notExport="false" notImport="false" isBold="false" fontSize="0" /> funcValue里的值写错了,需要牢记

EF 先model生成到数据库
编程技巧
using System;
using Microsoft.EntityFrameworkCore.Migrations;

#nullable disable

namespace WebNote.Migrations
{
    /// <inheritdoc />
    public partial class AddSiteOwnerTable : Migration
    {
        /// <inheritdoc />
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.CreateTable(
                name: "SiteOwners",
                columns: table => new
                {
                    Id = table.Column<int>(type: "int", nullable: false)
                        .Annotation("SqlServer:Identity", "1, 1"),
                    Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false),
                    Title = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true),
                    Bio = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
                    Resume = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    AvatarPath = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true),
                    Email = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true),
                    Mobile = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true),
                    GitHub = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true),
                    QQ = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true),
                    CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
                    UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
                    IsActive = table.Column<bool>(type: "bit", nullable: false)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_SiteOwners", x => x.Id);
                });
        }

        /// <inheritdoc />
        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropTable(
                name: "SiteOwners");
        }
    }
}

Add-Migration AddSiteOwnerTable

Update-Database

APOC修复客户关联关系BUG,修复发票导入空行BUG
工作笔记
if (this.gpCustomer.SelectedValue.ToString() != string.Empty && this.gpSD.SelectedValue.ToString() != string.Empty && this.gpCustomer.SelectedValue.ToString() != "-1" && this.gpSD.SelectedValue.ToString() != "-1")
{
    if (((Enums.PageStatus)Session["Session_PageStatus"]) == SOI.Enums.PageStatus.Create || ((Enums.PageStatus)Session["Session_PageStatus"]) == SOI.Enums.PageStatus.Edit)
    {
        //if ((Enums.PageStatus)Session["Session_PageStatus"] == SOI.Enums.PageStatus.Create)

        Wicresoft.Session.Session session = new Wicresoft.Session.Session();
        string sql = @"select count(*) from SOI_DealerCustomer where  isvalid=1 and FK_CustomerInfo=" + gpCustomer.SelectedValue + "and FK_Dealer=" + gpSD.SelectedValue + " and customerkind='客户'" + ((Enums.PageStatus)Session["Session_PageStatus"] == SOI.Enums.PageStatus.Create ? "" : (" AND PKID!= " + this.PKID));
        int i = Convert.ToInt32(session.SqlHelper.ExecuteScalar(sql, CommandType.Text));
        if (i > 0)
        {
            valiateSDDName.ErrorMessage = "经销商与医院已做过关联";
            args.IsValid = false;
        }
    }
}
更新医院客户关联关系(APOC)
工作笔记

新疆生产建设兵团总医院
新疆生产建设兵团第一师医院
新疆生产建设兵团第六师医院101团分院
新疆生产建设兵团第十三师红星医院
新疆生产建设兵团第十师北屯医院
新疆生产建设兵团第四师六十二团医院
石河子大学医学院第一附属医院
第八师石河子市总医院(石河子市人民医院、石河子大学医学院第三附属医院)
新疆生产建设兵团第三师总医院四十五团分院

Host is not allowed to connect to this MySQL server 解决办法
编程技巧

最近研究mysql,遇到这个问题

解决方法,用navicat加上用户,以及ip