use of com.jfinal.aop.Before in project my_curd by qinyou.
the class sysOplogController method exportToExcel.
/**
* 导出Excel
*/
@Before(SearchSql.class)
public void exportToExcel() {
String where = getAttr(Constant.SEARCH_SQL);
List<SysOplog> sysOplogs = SysOplog.dao.findWhere(where);
String[] columns = new String[] { "user_name", "op_content", "ip", "create_time" };
String[] headers = new String[] { "操作人", "日志内容", "IP地址", "操作时间" };
render(PoiRender.me(sysOplogs).fileName(ToolString.toUtf8String("操作日志.xls")).sheetName("操作日志统计").columns(columns).headers(headers).cellWidth(3500).headerRow(1));
}
use of com.jfinal.aop.Before in project my_curd by qinyou.
the class LoginController method action.
/**
* 登录Action
*/
@Before(Tx.class)
public void action() {
String username = getPara("username");
String password = getPara("password");
if (StrKit.isBlank(username)) {
setAttr("errMsg", "请填写用户名。");
render("login.html");
return;
}
if (StrKit.isBlank(password)) {
setAttr("errMsg", "请填写密码。");
render("login.html");
return;
}
SysUser sysUser = SysUser.dao.findByUsername(username);
if (sysUser == null) {
setAttr("errMsg", username + " 用户不存在。");
render("login.html");
return;
}
password = HashKit.sha1(password);
if (!sysUser.getPassword().equals(password)) {
setAttr("username", username);
setAttr("errMsg", " 密码错误。");
render("login.html");
return;
}
if (sysUser.getDisabled().equals("1")) {
setAttr("errMsg", username + " 用户被禁用,请联系管理员。");
render("login.html");
return;
}
String remember = getPara("remember");
// 记住密码 && cookie 不存在
if ("on".equals(remember) && getCookie(usernameKey) == null) {
// 1天
setCookie(usernameKey, username, 60 * 60 * 24 * 1);
setCookie(passwordKey, password, 60 * 60 * 24 * 1);
}
// 登录用户信息
setSessionAttr(Constant.SYSTEM_USER, sysUser);
// 为了 druid session 监控用
setSessionAttr(Constant.SYSTEM_USER_NAME, sysUser.getName());
// 用户角色
SysUserRole sysUserRole = SysUserRole.dao.findRolesByUserId(sysUser.getId());
if (sysUserRole != null) {
// 角色名称(显示用)
setSessionAttr(Constant.SYSTEM_USER_ROLES, sysUserRole.get("roleNames"));
LoginService loginService = Duang.duang(LoginService.class);
List<SysMenu> userMenus = loginService.getUserMenu(sysUserRole.get("roleIds"));
setSessionAttr(Constant.OWN_MENU, userMenus);
}
addOpLog("登录");
redirect("/main");
}
use of com.jfinal.aop.Before in project fruit-manage by liuzhaozhao.
the class ExcelController method getBusinessSendGoodsBilling.
/**
* 订单:生成商家出货单
* <p>
* 避免混乱,行和单元格都按照这个规范
* row对象只创建一次,
* 每次都sheet.createRow(rowCount++)创建获取下一行并指向row引用
* cellName = c + endColumn(start by 1)
* <p>
* excel格式
* 信息展示(没有固定宽度,默认为三列为一个单元,不够就加单元)
* 数据(每一列只占一列)
* 信息展示(没有固定宽度,默认为三列为一个单元,不够就加)
* <p>
* 一般数据会比信息展示需要更多的列,所以大概的按3:1来放置
* <p>
* 信息展示默认以三列为一个单元
*/
@Before(Tx.class)
public void getBusinessSendGoodsBilling() {
try {
int rowCount;
// 创建Excel
XSSFWorkbook wb = new XSSFWorkbook();
Calendar calendar = Calendar.getInstance();
if (calendar.get(Calendar.HOUR_OF_DAY) < 12) {
// 超過11:59:59算明天的訂單
calendar.add(Calendar.DAY_OF_MONTH, -1);
}
String startDateStr = DateTimeKit.formatDateToStyle("yyyy-MM-dd", calendar.getTime()) + " 12:00:00";
calendar.add(Calendar.DAY_OF_MONTH, 1);
String endDateStr = DateTimeKit.formatDateToStyle("yyyy-MM-dd", calendar.getTime()) + " 12:00:00";
String sql = "SELECT " + "o.order_id, " + "bu.`name` AS business_user_name, " + "linfo.buy_phone, " + "linfo.buy_address, " + "linfo.buy_user_name, " + "linfo.delivery_type, " + "au.`name` AS sales_name, " + "au.phone AS sales_phone " + "FROM " + "b_order AS o " + "INNER JOIN b_business_user AS bu ON o.u_id = bu.id " + "INNER JOIN b_business_info AS info ON bu.id = info.u_id " + "INNER JOIN a_user AS au ON bu.a_user_sales_id = au.id " + "INNER JOIN b_logistics_info AS linfo ON linfo.order_id = o.order_id " + "WHERE " + "o.order_status in (15,20,25,30) " + "AND o.create_time BETWEEN ? " + "AND ? ";
List<Order> orders = Order.dao.find(sql, startDateStr, endDateStr);
Date now = new Date();
if (orders.size() < 1) {
renderText("没有订单出货,请稍后操作");
return;
}
for (Order order : orders) {
rowCount = 0;
String orderId = order.get("order_id");
String businessUserName = order.get("business_user_name");
String buyPhone = order.get("buy_phone");
String buyAddress = order.get("buy_address");
String buyUserName = order.get("buy_user_name");
Integer deliveryType = order.get("delivery_type");
String salesName = order.get("sales_name");
String salesPhone = order.get("sales_phone");
// 创建表
XSSFSheet sheet = wb.createSheet(businessUserName + "_商家出货单");
// 去除网格线
sheet.setDisplayGridlines(false);
sheet.setDefaultRowHeight((short) (512));
// 标题样式
XSSFCellStyle styleTitle = ExcelStyle.getStyleTitle(wb, 2);
// 文本样式
XSSFCellStyle styleText = ExcelStyle.getStyleText(wb, 3);
int textHeight = 30;
// 表样式
XSSFCellStyle styleTable = ExcelStyle.getStyleTableByOne(wb, 3);
int tableHeight = 22;
// 规范: 设置为1-3合并 ?-6合并 ?-9合并的单元格名称.
XSSFCell c3;
XSSFCell c6;
XSSFCell c9;
// 1 line
XSSFRow row = sheet.createRow(rowCount++);
row.setHeightInPoints(textHeight);
_mergedRegionNowRow(sheet, row, 1, 9);
c9 = row.createCell(0);
c9.setCellStyle(styleTitle);
c9.setCellValue(DateFormatUtils.format(now, "yyyy-MM-dd") + "广州嘻果出货单" + now.getTime());
// 2 line
row = sheet.createRow(rowCount++);
row.setHeightInPoints(textHeight);
_mergedRegionNowRow(sheet, row, 1, 3);
_mergedRegionNowRow(sheet, row, 4, 6);
_mergedRegionNowRow(sheet, row, 7, 9);
c3 = row.createCell(0);
c6 = row.createCell(3);
c9 = row.createCell(6);
c3.setCellStyle(styleText);
c6.setCellStyle(styleText);
c9.setCellStyle(styleText);
c3.setCellValue("商家名称:" + businessUserName);
c6.setCellValue("联系人:" + buyUserName);
c9.setCellValue("送货电话:" + buyPhone);
// 3 line
row = sheet.createRow(rowCount++);
row.setHeightInPoints(textHeight);
_mergedRegionNowRow(sheet, row, 1, 9);
c9 = row.createCell(0);
c9.setCellStyle(styleText);
c9.setCellValue("商家地址:" + buyAddress);
// 4 line
row = sheet.createRow(rowCount++);
row.setHeightInPoints(textHeight);
_mergedRegionNowRow(sheet, row, 1, 3);
_mergedRegionNowRow(sheet, row, 4, 6);
_mergedRegionNowRow(sheet, row, 7, 9);
c3 = row.createCell(0);
c6 = row.createCell(3);
c9 = row.createCell(6);
c3.setCellStyle(styleText);
c6.setCellStyle(styleText);
c9.setCellStyle(styleText);
c3.setCellValue("发车类型:" + ShipmentConstant.SHIPMENT_TYPE.get(deliveryType));
c6.setCellValue("负责销售:" + salesName);
c9.setCellValue("联系电话:" + salesPhone);
// 5 line
row = sheet.createRow(rowCount++);
row.setHeightInPoints(textHeight);
_mergedRegionNowRow(sheet, row, 1, 9);
c9 = row.createCell(0);
c9.setCellStyle(styleText);
c9.setCellValue("配货点:广州江南市场");
XSSFCell c1;
XSSFCell c2;
XSSFCell c4;
XSSFCell c5;
// data
row = sheet.createRow(rowCount++);
row.setHeightInPoints(textHeight);
c1 = row.createCell(0);
c2 = row.createCell(1);
c3 = row.createCell(2);
c4 = row.createCell(3);
c5 = row.createCell(4);
c6 = row.createCell(5);
c1.setCellStyle(styleTable);
c2.setCellStyle(styleTable);
c3.setCellStyle(styleTable);
c4.setCellStyle(styleTable);
c5.setCellStyle(styleTable);
c6.setCellStyle(styleTable);
c1.setCellValue("商品名称");
c2.setCellValue("规格名称");
c3.setCellValue("重量(斤)");
c4.setCellValue("下单数量");
c5.setCellValue("实发数量");
c6.setCellValue("商品备注");
sql = "SELECT " + "od.product_name, " + "od.product_standard_name, " + "ps.weight_price, " + "od.num, " + "od.actual_send_goods_num, " + "od.buy_remark " + "FROM " + "b_order AS o " + "INNER JOIN b_order_detail AS od ON o.order_id = od.order_id " + "INNER JOIN b_product_standard AS ps ON od.product_standard_id = ps.id " + "WHERE o.order_id = ? ";
List<OrderDetail> orderDetails = OrderDetail.dao.find(sql, orderId);
for (OrderDetail orderDetail : orderDetails) {
row = sheet.createRow(rowCount++);
row.setHeightInPoints(tableHeight);
c1 = row.createCell(0);
c2 = row.createCell(1);
c3 = row.createCell(2);
c4 = row.createCell(3);
c5 = row.createCell(4);
c6 = row.createCell(5);
c1.setCellStyle(styleTable);
c2.setCellStyle(styleTable);
c3.setCellStyle(styleTable);
c4.setCellStyle(styleTable);
c5.setCellStyle(styleTable);
c6.setCellStyle(styleTable);
c1.setCellValue(orderDetail.get("product_name").toString());
c2.setCellValue(orderDetail.get("product_standard_name").toString());
c3.setCellValue(orderDetail.get("weight_price").toString());
c4.setCellValue(orderDetail.get("num").toString());
c5.setCellValue(orderDetail.get("actual_send_goods_num").toString());
c6.setCellValue(orderDetail.get("buy_remark") != null ? orderDetail.get("buy_remark").toString() : null);
c3.setCellType(CellType.NUMERIC);
c4.setCellType(CellType.NUMERIC);
c5.setCellType(CellType.NUMERIC);
}
// 添加三行空行
// sheet.createRow(rowCount++).setRowStyle(styleTable);
// sheet.createRow(rowCount++).setRowStyle(styleTable);
// sheet.createRow(rowCount++).setRowStyle(styleTable);
// bottom 1 line
row = sheet.createRow(rowCount++);
row.setHeightInPoints(textHeight);
_mergedRegionNowRow(sheet, row, 1, 9);
c9 = row.createCell(0);
c9.setCellStyle(styleText);
c9.setCellValue("温馨提示:运费和装车费、三轮车费、包装费、短途费/中转费,均按实际产生费用收取");
// bottom 2 line
row = sheet.createRow(rowCount++);
row.setHeightInPoints(textHeight);
_mergedRegionNowRow(sheet, row, 1, 3);
_mergedRegionNowRow(sheet, row, 4, 6);
_mergedRegionNowRow(sheet, row, 7, 9);
c3 = row.createCell(0);
c6 = row.createCell(3);
c9 = row.createCell(6);
c3.setCellStyle(styleText);
c6.setCellStyle(styleText);
c9.setCellStyle(styleText);
c3.setCellValue("点单:");
c6.setCellValue("核单:");
c9.setCellValue("打泡:");
}
HttpServletResponse response = getResponse();
OutputStream output = response.getOutputStream();
response.reset();
response.setHeader("Content-disposition", "attachment; filename=" + DateFormatUtils.format(now, "yyyy年MM月dd日") + "商家出货单.xls");
response.setContentType("application/excel");
wb.write(output);
output.close();
} catch (Exception e) {
renderErrorText("导出失败,出现未知异常,请联系技术,时间为:" + DateFormatUtils.format(new Date(), "yyyy-MM-dd hh:ss:mm"));
e.printStackTrace();
}
}
use of com.jfinal.aop.Before in project fruit-manage by liuzhaozhao.
the class ExcelController method getBusinessCollectionBilling.
/**
* 订单:生成商家收款单
* <p>
* 避免混乱,行和单元格都按照这个规范
* row对象只创建一次,
* 每次都sheet.createRow(rowCount++)创建获取下一行并指向row引用
* cellName = c + endColumn(start by 1)
* <p>
* excel格式
* 信息展示(没有固定宽度,默认为三列为一个单元,不够就加单元)
* 数据(每一列只占一列)
* 信息展示(没有固定宽度,默认为三列为一个单元,不够就加)
* <p>
* 一般数据会比信息展示需要更多的列,所以大概的按3:1来放置
* <p>
* 信息展示默认以三列为一个单元
*/
@Before(Tx.class)
public void getBusinessCollectionBilling() {
int rowCount;
// 创建Excel
XSSFWorkbook wb = new XSSFWorkbook();
Calendar calendar = Calendar.getInstance();
if (calendar.get(Calendar.HOUR_OF_DAY) < 12) {
// 超過11:59:59算明天的訂單
calendar.add(Calendar.DAY_OF_MONTH, -1);
}
String startDateStr = DateTimeKit.formatDateToStyle("yyyy-MM-dd", calendar.getTime()) + " 12:00:00";
calendar.add(Calendar.DAY_OF_MONTH, 1);
String endDateStr = DateTimeKit.formatDateToStyle("yyyy-MM-dd", calendar.getTime()) + " 12:00:00";
String sql = "SELECT " + "o.order_id, " + "bu.`name` AS business_user_name, " + "linfo.buy_phone, " + "linfo.buy_address, " + "linfo.buy_user_name, " + "linfo.delivery_type, " + "au.`name` AS sales_name, " + "au.phone AS sales_phone " + "FROM " + "b_order AS o " + "INNER JOIN b_business_user AS bu ON o.u_id = bu.id " + "INNER JOIN b_business_info AS info ON bu.id = info.u_id " + "INNER JOIN a_user AS au ON bu.a_user_sales_id = au.id " + "INNER JOIN b_logistics_info AS linfo ON linfo.order_id = o.order_id " + "WHERE " + "o.order_status in (15,20,25,30) " + "AND o.create_time BETWEEN ? " + "AND ? ";
System.out.println(sql);
System.out.println(startDateStr);
System.out.println(endDateStr);
List<Order> orders = Order.dao.find(sql, startDateStr, endDateStr);
Date now = new Date();
if (orders.size() < 1) {
renderText("没有订单出货,请稍后操作");
return;
}
for (Order order : orders) {
rowCount = 0;
String orderId = order.get("order_id");
String businessUserName = order.get("business_user_name");
String buyPhone = order.get("buy_phone");
String buyAddress = order.get("buy_address");
String buyUserName = order.get("buy_user_name");
Integer deliveryType = order.get("delivery_type");
String salesName = order.get("sales_name");
String salesPhone = order.get("sales_phone");
// 创建表
XSSFSheet sheet = wb.createSheet(businessUserName + "_商家出货单");
// 去除网格线
sheet.setDisplayGridlines(false);
sheet.setDefaultRowHeight((short) (512));
// 标题样式
XSSFCellStyle styleTitle = ExcelStyle.getStyleTitle(wb, 2);
// 文本样式
XSSFCellStyle styleText = ExcelStyle.getStyleText(wb, 3);
int textHeight = 30;
// 表样式
XSSFCellStyle styleTable = ExcelStyle.getStyleTableByOne(wb, 3);
int tableHeight = 22;
// 规范: 设置为1-3合并 ?-6合并 ?-9合并的单元格名称.
XSSFCell c3;
XSSFCell c6;
XSSFCell c9;
// 1 line
XSSFRow row = sheet.createRow(rowCount++);
row.setHeightInPoints(textHeight);
_mergedRegionNowRow(sheet, row, 1, 9);
c9 = row.createCell(0);
c9.setCellStyle(styleTitle);
c9.setCellValue(DateFormatUtils.format(now, "yyyy-MM-dd") + "广州嘻果出货单" + now.getTime());
// 2 line
row = sheet.createRow(rowCount++);
row.setHeightInPoints(textHeight);
row.setHeightInPoints(textHeight);
_mergedRegionNowRow(sheet, row, 1, 3);
_mergedRegionNowRow(sheet, row, 4, 6);
_mergedRegionNowRow(sheet, row, 7, 9);
c3 = row.createCell(0);
c6 = row.createCell(3);
c9 = row.createCell(6);
c3.setCellStyle(styleText);
c6.setCellStyle(styleText);
c9.setCellStyle(styleText);
c3.setCellValue("商家名称:" + businessUserName);
c6.setCellValue("联系人:" + buyUserName);
c9.setCellValue("送货电话:" + buyPhone);
// 3 line
row = sheet.createRow(rowCount++);
row.setHeightInPoints(textHeight);
_mergedRegionNowRow(sheet, row, 1, 9);
c9 = row.createCell(0);
c9.setCellStyle(styleText);
c9.setCellValue("商家地址:" + buyAddress);
// 4 line
row = sheet.createRow(rowCount++);
row.setHeightInPoints(textHeight);
_mergedRegionNowRow(sheet, row, 1, 3);
_mergedRegionNowRow(sheet, row, 4, 6);
_mergedRegionNowRow(sheet, row, 7, 9);
c3 = row.createCell(0);
c6 = row.createCell(3);
c9 = row.createCell(6);
c3.setCellStyle(styleText);
c6.setCellStyle(styleText);
c9.setCellStyle(styleText);
c3.setCellValue("发车类型:" + ShipmentConstant.SHIPMENT_TYPE.get(deliveryType));
c6.setCellValue("负责销售:" + salesName);
c9.setCellValue("联系电话:" + salesPhone);
// 5 line
row = sheet.createRow(rowCount++);
row.setHeightInPoints(textHeight);
_mergedRegionNowRow(sheet, row, 1, 9);
c9 = row.createCell(0);
c9.setCellStyle(styleText);
c9.setCellValue("配货点:广州江南市场");
XSSFCell c1;
XSSFCell c2;
XSSFCell c4;
XSSFCell c5;
XSSFCell c7;
XSSFCell c8;
// data
row = sheet.createRow(rowCount++);
row.setHeightInPoints(tableHeight);
c1 = row.createCell(0);
c2 = row.createCell(1);
c3 = row.createCell(2);
c4 = row.createCell(3);
c5 = row.createCell(4);
c6 = row.createCell(5);
c7 = row.createCell(6);
c8 = row.createCell(7);
c1.setCellStyle(styleTable);
c2.setCellStyle(styleTable);
c3.setCellStyle(styleTable);
c4.setCellStyle(styleTable);
c5.setCellStyle(styleTable);
c6.setCellStyle(styleTable);
c7.setCellStyle(styleTable);
c8.setCellStyle(styleTable);
c1.setCellValue("商品名称");
c2.setCellValue("规格名称");
c3.setCellValue("重量(斤)");
c4.setCellValue("下单数量");
c5.setCellValue("实发数量");
c6.setCellValue("单价");
c7.setCellValue("总额");
c8.setCellValue("商品备注");
sql = "SELECT " + "od.product_name, " + "od.product_standard_name, " + "ps.weight_price, " + "od.num, " + "od.actual_send_goods_num, " + "od.sell_price, " + "o.pay_reality_need_money, " + "od.buy_remark " + "FROM " + "b_order AS o " + "INNER JOIN b_order_detail AS od ON o.order_id = od.order_id " + "INNER JOIN b_product_standard AS ps ON od.product_standard_id = ps.id " + "WHERE o.order_id = ? ";
List<OrderDetail> orderDetails = OrderDetail.dao.find(sql, orderId);
for (OrderDetail orderDetail : orderDetails) {
row = sheet.createRow(rowCount++);
row.setHeightInPoints(textHeight);
c1 = row.createCell(0);
c2 = row.createCell(1);
c3 = row.createCell(2);
c4 = row.createCell(3);
c5 = row.createCell(4);
c6 = row.createCell(5);
c7 = row.createCell(6);
c8 = row.createCell(7);
c1.setCellStyle(styleTable);
c2.setCellStyle(styleTable);
c3.setCellStyle(styleTable);
c4.setCellStyle(styleTable);
c5.setCellStyle(styleTable);
c6.setCellStyle(styleTable);
c7.setCellStyle(styleTable);
c8.setCellStyle(styleTable);
c1.setCellValue(orderDetail.get("product_name").toString());
c2.setCellValue(orderDetail.get("product_standard_name").toString());
c3.setCellValue(orderDetail.get("weight_price").toString());
c4.setCellValue(orderDetail.get("num").toString());
c5.setCellValue(orderDetail.get("actual_send_goods_num").toString());
c6.setCellValue(orderDetail.get("sell_price").toString());
c7.setCellValue(orderDetail.get("pay_reality_need_money") != null ? orderDetail.get("pay_reality_need_money").toString() : null);
c8.setCellValue(orderDetail.get("buy_remark") != null ? orderDetail.get("buy_remark").toString() : null);
}
}
try {
HttpServletResponse response = getResponse();
OutputStream output = response.getOutputStream();
response.reset();
response.setHeader("Content-disposition", "attachment; filename=" + DateFormatUtils.format(now, "yyyy年MM月dd日") + "商家出货单.xls");
response.setContentType("application/excel");
wb.write(output);
output.close();
} catch (Exception e) {
e.printStackTrace();
}
}
use of com.jfinal.aop.Before in project fruit-manage by liuzhaozhao.
the class OrderController method save.
/**
* 保存添加的新订单
*/
@Before(Tx.class)
public void save() {
Integer uid = getSessionAttr(Constant.SESSION_UID);
Order order = getModel(Order.class, "", true);
String products = getPara("products");
Integer business_user_id = getParaToInt("business_user_id");
List<OrderDetail> orderDetails = JSON.parseArray(products, OrderDetail.class);
BigDecimal payNeedMoney = new BigDecimal(0);
BigDecimal payRealityNeedMoney = new BigDecimal(0);
Date now = new Date();
if (order.getOrderId() != null) {
for (OrderDetail orderDetail : orderDetails) {
Integer num = orderDetail.getNum();
BigDecimal sellPrice = orderDetail.getSellPrice();
BigDecimal totalPay = sellPrice.multiply(new BigDecimal(num));
Integer actualSendGoodsNum = orderDetail.getActualSendGoodsNum();
// 有实际发货的数量,在配货的时候减库存
if (actualSendGoodsNum != null && actualSendGoodsNum != 0) {
// 根据商品规格编号获取商品规格信息
ProductStandard productStandard = ProductStandard.dao.findById(orderDetail.getProductStandardId());
// 判断仓库数量是否小于实发数数量
if (productStandard != null && productStandard.getStock() >= actualSendGoodsNum) {
// 执行出库操作:库存量-发货量
productStandard.setStock(productStandard.getStock() - actualSendGoodsNum);
productStandard.update();
} else {
throw new RuntimeException("");
}
// 实际需要支付金额 = (所有子订单=销售价*实际发货数量)
payRealityNeedMoney = payRealityNeedMoney.add(sellPrice.multiply(new BigDecimal(actualSendGoodsNum)));
}
orderDetail.setTotalPay(totalPay);
payNeedMoney = payNeedMoney.add(totalPay);
if (orderDetail.getId() != null) {
orderDetail.update(UserTypeConstant.A_USER, uid);
} else {
orderDetail.setUId(business_user_id);
orderDetail.setOrderId(order.getOrderId());
orderDetail.setCreateTime(now);
orderDetail.setUpdateTime(now);
orderDetail.save(UserTypeConstant.A_USER, uid);
}
}
order.setPayNeedMoney(payNeedMoney);
// 设置实际支付需要的金额
order.setPayRealityNeedMoney(payRealityNeedMoney);
order.setUpdateTime(now);
order.update();
} else {
// 添加,并校验是否存在相同订单周期的订单
String orderId = IdUtil.createOrderId(business_user_id);
Order nowOrder = Order.dao.getOrder(orderId);
// 区分该订单周期的订单是否已经被创建
if (nowOrder == null) {
order.setOrderId(orderId);
for (OrderDetail orderDetail : orderDetails) {
Integer num = orderDetail.getNum();
BigDecimal sellPrice = orderDetail.getSellPrice();
BigDecimal totalPay = sellPrice.multiply(new BigDecimal(num));
payNeedMoney = payNeedMoney.add(totalPay);
orderDetail.setTotalPay(totalPay);
orderDetail.setCreateTime(now);
orderDetail.setUId(business_user_id);
orderDetail.setOrderId(order.getOrderId());
orderDetail.setUpdateTime(now);
orderDetail.save(UserTypeConstant.A_USER, uid);
}
order.setPayNeedMoney(payNeedMoney);
order.setPayTotalMoney(new BigDecimal(0));
order.setUId(business_user_id);
order.setUpdateTime(now);
order.setCreateTime(now);
order.save();
} else {
// 如果有相同订单周期的订单,就叠加商品.这次添加视为补充商品.因为想修改商品应该去编辑才对,而不是添加.
// 具有完整字段的对象,用于作为更新模板和核对是否叠加
List<OrderDetail> nowOrderDetails = OrderDetail.dao.getOrderDetails(orderId);
// 导入的订单
OrderDetailFor: for (OrderDetail orderDetail : orderDetails) {
BigDecimal sellPrice = orderDetail.getSellPrice();
BigDecimal num = new BigDecimal(orderDetail.getNum());
// 过滤与数据库中的订单匹配的商品
for (OrderDetail nowOrderDetail : nowOrderDetails) {
if (nowOrderDetail.getProductStandardId().equals(orderDetail.getProductStandardId())) {
int nowNum = nowOrderDetail.getNum() + orderDetail.getNum();
BigDecimal totalPrice = sellPrice.multiply(num);
payNeedMoney = payNeedMoney.add(totalPrice);
nowOrderDetail.setNum(nowNum);
nowOrderDetail.setTotalPay(totalPrice);
nowOrderDetail.setUpdateTime(now);
nowOrderDetail.update(UserTypeConstant.A_USER, uid, orderId, nowOrderDetail.getProductId(), nowOrderDetail.getProductStandardId(), nowOrderDetail.getNum(), nowNum);
continue OrderDetailFor;
}
}
// 不和数据库中的订单匹配的新增商品
BigDecimal totalPrice = sellPrice.multiply(num);
payNeedMoney = payNeedMoney.add(totalPrice);
orderDetail.setTotalPay(totalPrice);
orderDetail.setOrderId(orderId);
orderDetail.setUId(business_user_id);
orderDetail.setUpdateTime(now);
orderDetail.setCreateTime(now);
orderDetail.save(UserTypeConstant.A_USER, uid);
}
nowOrder.setPayNeedMoney(payNeedMoney);
nowOrder.setUpdateTime(now);
nowOrder.update();
}
}
// 成功
renderNull();
}
Aggregations