站长信息

jeffery.xu
软件工程师
欢迎访问我的个人笔记网站!我是一名热爱技术的开发者,专注于Web开发和技术分享。
筛选
修改线下订单退单记录罐码
工作笔记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里的值写错了,需要牢记
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团分院
新疆生产建设兵团第十三师红星医院
新疆生产建设兵团第十师北屯医院
新疆生产建设兵团第四师六十二团医院
石河子大学医学院第一附属医院
第八师石河子市总医院(石河子市人民医院、石河子大学医学院第三附属医院)
新疆生产建设兵团第三师总医院四十五团分院
运费模板XML
工作笔记小河马启用禁用运费模板js
工作笔记button_custom_submit: function (t) {
var body = t.RequestButton;
switch (body.name) {
case "btn_custom_use"://启用/禁用
var dt = mzServer.selectRow();
if (dt.ResponseMessage.Success) {
if (dt.Stats.length < 1) {
$scope.view.submit.Fn.loading(t.RequestButton.name, false);
mzServer.Msg.error("请选择一条数据");
return;
}
debugger;
$scope.view.submit.Fn.loading(t.RequestButton.name, false);
var state = dt.Stats[0].a_TemplateStatus; var tip = "";
if (state == 1) {
state = 0; tip = "禁用";
} else {
state = 1; tip = "启用";
}
mzServer.confirm('确定' + tip + '吗?').result.then(function (isconfirm) {
debugger;
if (isconfirm) {
var data = {};
var Info = {};
Info.a_ID = dt.Stats[0].a_ID;
Info.a_Status = state;
data.ConfigType = "view";
data.OpType = "query";
data.ConfigName = "TBFreightTemplate";
data.RequestBody = JSON.stringify(Info);
data.SpecialParameter = "ForbidOrUse";
data.url = "gridview/LoadData";
mzServer.postData(data).then(
function (response) {
console.log(response);
if (response.data.ResponseMessage.Success) {
mzServer.Msg.success(tip+"成功!");
angular.element("table[for='TBFreightTemplate']").bootstrapTable('refresh');
} else {
mzServer.Msg.error(response.data.ResponseMessage.ErrorMessage);
}
}, function (error) {
mzServer.Msg.error(error);
});
}
});
}
else {
$scope.view.submit.Fn.loading(t.RequestButton.name, false);
mzServer.Msg.error(dt.ResponseMessage.ErrorMessage);
}
break;
default:
mzServer.Msg.error("无效的事件");
break;
}
},
运费模板requestBody记录
工作笔记jeffery.xu 的简历
徐承杰 - 软件工程师
39 岁 | 汉族
上海
本科 | 软件工程
18521510875
811495111@qq.com
求职意向:软件工程师

教育背景
华东师范大学 软件学院
2009 - 2013软件工程专业 | 本科
工作经历
上海迈志信息科技有限公司
2024.09 - 至今高级软件研发工程师
行业:计算机软件
工作描述:
- 继续负责公司经销商管理系统(雅培 APOC、ADD、EPD 及韩国、印度区域)的日常运维
- 参与小河马商城后台接口开发
- 参与SFA项目的基础信息XML开发
中软国际
2022.08 - 2024.09高级软件研发工程师
行业:计算机软件
工作描述:
- 外派pwc,负责smart项目的IPFilter开发
- 外派pwc,负责smart项目的OPFilter开发
- 外派pwc,负责smart项目的OPCodes开发
- 外派pwc,参与new smart项目的报表开发
上海迈志信息科技有限公司
2017.02 - 2022.08高级软件研发工程师
行业:计算机软件
工作描述:
- 负责公司经销商管理系统(雅培 APOC、ADD、EPD 及韩国、印度区域)的日常运维
- 主导上述系统客户需求变更(CR)的开发与落地
- 协助项目经理完成设计文档与需求文档编写
- 参与公司新系统(SPM、gore 经销商系统)开发
- 指导新入职员工开展项目开发工作
希亚思(上海)信息技术有限公司
2016.08 - 2016.12软件工程师
行业:IT 服务
工作描述:
- 负责 "小会系统" 项目的需求分析与前端网页设计
宏优(上海)信息技术有限公司
2014.01 - 2016.07软件工程师
行业:互联网
工作描述:
- 参与 TDS 车辆远程管理平台开发
- 负责售后零件管理系统开发
上海人行道网络有限公司
2013.01 - 2014.01软件工程师
行业:互联网
工作描述:
- 参与银行客服开卡系统的后台代码开发
- 参与智慧社区项目开发
主要项目经历
经销商管理系统
2017.02 - 至今项目概述:采用 C# .net webform 构建,基于三层架构,数据库为 MSSQL,通过ado.net实现数据连接,集成 reporting service 展示报表。系统围绕进销存核心,覆盖采购、销售、库存等全流程管理。
核心模块:
- 采购管理:采购订单创建、审批、发货与到货确认
- 销售管理:销售订单录入、调整及总部协同管理
- 库存管理:盘点、调整及审批流程
- 报表管理:进销存、订单、发货等数据可视化
- 系统管理:用户、菜单等基础功能配置
- 基础信息管理:经销商、产品、医院等核心数据维护
个人贡献:
- 主导 APOC、ADD 区域经销商管理系统开发,负责 EPD、韩国、印度区域系统运维
- 典型需求落地:
- 开发 APOC 发票识别模块:集成百度 OCR 接口识别发票信息,对接验真接口实现自动化校验
- 系统兼容性升级:从仅支持 IE 兼容模式扩展至支持 Google 浏览器
- 域登录改造:完成 APOC、ADD 等多区域系统的域账号登录适配
- 对接 ADD、韩国 DDI 接口:实现第三方系统采购订单同步
- 开发 ADD 采购预估功能:支持经销商提前预报采购量,每月自动生成订单
- 设计 ADD 订单拆分逻辑:按指定仓库自动拆分订单
其他项目
- 2016.08 - 2016.12:希亚思 "小会系统":负责需求分析与前端网页设计
- 2014.01 - 2016.07:宏优 "TDS 车辆远程管理平台""售后零件管理系统":参与核心功能开发
- 2013.01 - 2014.01:上海人行道网络 "银行客服开卡系统""智慧社区项目":负责后台代码开发
专业技能
- 熟练掌握:C#、webform、SQL、SQL Server、jQuery、CSS、HTML、ado.net
- 熟悉:.net core
- 了解:angular
获得证书
- 英语四六级证书
- PMP 项目管理证书