lisai17@sina.com 2020-11-02 10:02:58 +08:00
parent 4b565e841f
commit 051be87f3c
15 changed files with 626 additions and 20 deletions

View File

@ -129,4 +129,39 @@ public class ReportExcelStyle {
sheet.getLastRowNum() //end row
);
}
public static void setCommonCellStyle(
Workbook wb,
Sheet sheet,
int datalen,
int end_col
){
// 通用单元格格式
Font font = wb.createFont();
CellStyle cellStyle = wb.createCellStyle();
font.setFontHeight((short) (10 * 20));
font.setFontName("宋体");
cellStyle.setAlignment(HorizontalAlignment.CENTER);//水平居中
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
cellStyle.setFont(font);
Row row;
// 设置通用单元格格式
for (int r = 0; r < datalen + 1; r++) {
row = sheet.getRow(r);
if (row == null) {
row = sheet.createRow(r);
}
for (int c = 0; c < end_col + 1; c++) {
Cell cell = row.getCell(c);
if (cell == null) {
cell = row.createCell(c);
}
cell.setCellStyle(cellStyle);
}
}
}
}

View File

@ -26,10 +26,32 @@ import java.util.List;
public class OrderclusterTruckService extends BaseService {
public static final OrderclusterTruckService me = new OrderclusterTruckService();
public Page<Record> find(PageParam pp) {
String selectsql = "select * ";
String fromsql = "from ordercluster_truck t where 1=1 ";
List<Object> paraList = new ArrayList<>();
public Page<Record> find(PageParam pp, String stm, String etm, String customer_name, String truck_license) {
String selectsql = "select * ";
String fromsql = "from ordercluster_truck t \n" +
" left join ordercluster c on c.id = t.ordercluster_id \n" +
" where 1=1 ";
List<Object> paraList = new ArrayList<>();
if (StrKit.notBlank(stm)) {
fromsql += " and c.cutoff_time >= ? \n";
paraList.add(stm);
}
if (StrKit.notBlank(etm)) {
fromsql += " and c.cutoff_time <= ? \n";
paraList.add(etm);
}
if (StrKit.notBlank(customer_name)) {
fromsql += " and c.customer_name like ? \n";
paraList.add("%" + customer_name.trim() + "%");
}
if (StrKit.notBlank(truck_license)) {
fromsql += " and t.truck_license like ? \n";
paraList.add("%" + truck_license.trim() + "%");
}
String totalRowSql = "select count(*) " + fromsql;
String findSql = selectsql + fromsql;
@ -43,6 +65,8 @@ public class OrderclusterTruckService extends BaseService {
} else {
findSql += " " + Const.ORDER_BY_DESC;
}
} else {
findSql += " order by c.cutoff_time desc";
}
return Db.paginateByFullSql(pp.getPage(), pp.getSize(), totalRowSql, findSql, paraList.toArray());
@ -54,6 +78,7 @@ public class OrderclusterTruckService extends BaseService {
/**
*
*
* @param supermarket_id
* @param truck_license
* @return

View File

@ -5,6 +5,7 @@ import com.cowr.common.utils.DateTimeUtil;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

View File

@ -12,8 +12,10 @@ import com.jfinal.log.Log;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.math.BigDecimal;
import java.util.*;
public class OrderStatService {
@ -285,8 +287,6 @@ public class OrderStatService {
double sum_weight = 0.0;
double sum_price = 0.0;
double sum_distance = 0.0;
double sum_trans_price = 0.0;
double isprepaid_sum_price = 0.0;
int datalen = list.size();
int end_col = sup_name == null ? 11 : 10;
@ -296,8 +296,6 @@ public class OrderStatService {
sum_weight += DataUtil.getDefaultByRecord(order, "weight");
sum_price += DataUtil.getDefaultByRecord(order, "total_price");
sum_distance += DataUtil.getDefaultByRecord(order, "trans_distance");
sum_trans_price += DataUtil.getDefaultByRecord(order, "trans_price");
if (order.getInt("isprepaid") == 1) {
isprepaid_sum_price += DataUtil.getDefaultByRecord(order, "total_price");
@ -306,6 +304,11 @@ public class OrderStatService {
row = sheet.createRow(i + 3);
a = 0;
row.createCell(a++).setCellValue(i + 1);
if (order.get("in_time") == null) {
log.error("有 transport 未同步成功 %s", order.toJson());
}
row.createCell(a++).setCellValue(DateTimeUtil.sdfhms.get().format(order.getDate("in_time")));
row.createCell(a++).setCellValue(order.getStr("sn"));
row.createCell(a++).setCellValue(order.getStr("product_name"));
@ -1441,4 +1444,186 @@ public class OrderStatService {
return wb;
}
public List<Record> yearStatBySup(String year) {
List<Record> list;
if (StrKit.notBlank(year)) {
list = Db.find("select s.name, a.* from supermarket s\n" +
"left join (\n" +
" select t.supermarket_id id, count(t.sn) cnt, sum(t.total_price) total_price, sum(weight) total_weight from order_temp t\n" +
" where t.state = 5\n" +
" and t.create_time like ? \n" +
" group by t.supermarket_id\n" +
") a on s.id = a.id", year + "%");
} else {
list = Db.find("select s.name, a.* from supermarket s\n" +
"left join (\n" +
" select t.supermarket_id id, count(t.sn) cnt, sum(t.total_price) total_price, sum(weight) total_weight from order_temp t\n" +
" where t.state = 5\n" +
" group by t.supermarket_id\n" +
") a on s.id = a.id");
}
Record hj = new Record();
hj.set("id", 0);
hj.set("name", "合计");
hj.set("cnt", 0);
hj.set("total_price", new BigDecimal(0));
hj.set("total_weight", new BigDecimal(0));
for (Record record : list) {
hj.set("cnt", hj.getInt("cnt") + record.getInt("cnt"));
hj.set("total_price", hj.getBigDecimal("total_price").add(record.getBigDecimal("total_price")));
hj.set("total_weight", hj.getBigDecimal("total_weight").add(record.getBigDecimal("total_weight")));
}
list.add(hj);
return list;
}
public Workbook yearStatBySupExport(String year) {
List<Record> list = yearStatBySup(year);
Workbook wb = new XSSFWorkbook();
Sheet sheet;
if (StrKit.notBlank(year)) {
sheet = wb.createSheet(year + "年销售汇总");
} else {
sheet = wb.createSheet("销售汇总");
}
// 表头 start
Row row = sheet.createRow(0);
int a = 0;
row.createCell(a++).setCellValue("名称");
row.createCell(a++).setCellValue("订单量");
row.createCell(a++).setCellValue("总销售吨数");
row.createCell(a++).setCellValue("总销售额");
int end_col = 4;
int datalen = list.size();
for (int i = 0; i < datalen; i++) {
Record order = list.get(i);
row = sheet.createRow(i + 1);
a = 0;
row.createCell(a++).setCellValue(order.getStr("name"));
row.createCell(a++).setCellValue(order.getInt("cnt"));
row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(order, "total_weight"));
row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(order, "total_price"));
}
ReportExcelStyle.setCommonCellStyle(wb, sheet, datalen, end_col);
return wb;
}
public List<Record> yearStatByCustomer(String year) {
List<Record> list;
if (StrKit.notBlank(year)) {
list = Db.find("select ifnull(c.name, '零散') name, a.*, p.surplus total_surplus from (\n" +
" select ifnull(t.customer_id, -1) id, count(t.sn) cnt, sum(t.total_price) total_price, sum(weight) total_weight from order_temp t\n" +
" where t.state = 5\n" +
" and t.create_time like ? \n" +
" group by t.customer_id\n" +
" ) a\n" +
" left join customer c on c.id = a.id\n" +
" left join prepay_customer p on p.customer_id = a.id", year + "%");
} else {
list = Db.find("select ifnull(c.name, '零散') name, a.*, p.surplus total_surplus from (\n" +
" select ifnull(t.customer_id, -1) id, count(t.sn) cnt, sum(t.total_price) total_price, sum(weight) total_weight from order_temp t\n" +
" where t.state = 5\n" +
" group by t.customer_id\n" +
" ) a\n" +
" left join customer c on c.id = a.id\n" +
" left join prepay_customer p on p.customer_id = a.id");
}
Record hj = new Record();
hj.set("id", 0);
hj.set("name", "合计");
hj.set("cnt", 0);
hj.set("total_price", new BigDecimal(0));
hj.set("total_weight", new BigDecimal(0));
hj.set("total_weight", new BigDecimal(0));
hj.set("total_surplus", new BigDecimal(0));
for (Record record : list) {
hj.set("cnt", hj.getInt("cnt") + record.getInt("cnt"));
hj.set("total_price", hj.getBigDecimal("total_price").add(record.getBigDecimal("total_price")));
hj.set("total_weight", hj.getBigDecimal("total_weight").add(record.getBigDecimal("total_weight")));
if (record.get("total_surplus") != null) {
hj.set("total_surplus", hj.getBigDecimal("total_surplus").add(record.getBigDecimal("total_surplus")));
}
}
hj.set("total_account_surplus", hj.getBigDecimal("total_surplus").add(hj.getBigDecimal("total_price")));
list.add(hj);
return list;
}
public Workbook yearStatByCustomerExport(String year) {
List<Record> list = yearStatByCustomer(year);
Workbook wb = new XSSFWorkbook();
Sheet sheet;
if (StrKit.notBlank(year)) {
sheet = wb.createSheet(year + "年销售汇总");
} else {
sheet = wb.createSheet("销售汇总");
}
// 表头 start
Row row = sheet.createRow(0);
int a = 0;
row.createCell(a++).setCellValue("名称");
row.createCell(a++).setCellValue("订单量");
row.createCell(a++).setCellValue("总销售吨数");
row.createCell(a++).setCellValue("总销售额");
row.createCell(a++).setCellValue("客户总余额");
int end_col = 5;
int datalen = list.size();
Record hj = null;
for (int i = 0; i < datalen; i++) {
Record order = list.get(i);
row = sheet.createRow(i + 1);
a = 0;
if (order.getInt("id") == 0) {
hj = order;
}
row.createCell(a++).setCellValue(order.getStr("name"));
row.createCell(a++).setCellValue(order.getInt("cnt"));
row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(order, "total_weight"));
row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(order, "total_price"));
row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(order, "total_surplus"));
}
if (hj != null) {
row = sheet.createRow(datalen + 1);
a = 0;
row.createCell(a++).setCellValue("账户总余额");
row.createCell(a++).setCellValue("");
row.createCell(a++).setCellValue("");
row.createCell(a++).setCellValue(DataUtil.getDefaultByRecord(hj, "total_account_surplus"));
row.createCell(a++).setCellValue("");
}
sheet.addMergedRegion(new CellRangeAddress(datalen + 1, datalen + 1, 3, 4));// 下标从0开始 起始行号,终止行号, 起始列号,终止列号
ReportExcelStyle.setCommonCellStyle(wb, sheet, datalen + 1, end_col);
return wb;
}
}

View File

@ -33,8 +33,12 @@ public class OrderclusterTruckController extends Controller {
* ordercluster_truck -
*/
public void find() {
PageParam pp = getBean(PageParam.class, "", true);
renderJson(Result.object(OrderclusterTruckService.me.find(pp)));
PageParam pp = getBean(PageParam.class, "", true);
String stm = get("stm");
String etm = get("etm");
String customer_name = get("customer_name");
String truck_license = get("truck_license");
renderJson(Result.object(OrderclusterTruckService.me.find(pp, stm, etm, customer_name, truck_license)));
}
/**

View File

@ -4,6 +4,7 @@ import com.cowr.common.base.BaseController;
import com.cowr.common.validator.DayValidator;
import com.cowr.common.validator.MonthValidator;
import com.cowr.common.validator.StartAndEndIntervalValidator;
import com.cowr.common.validator.YearValidator;
import com.cowr.common.view.ExcelRender;
import com.cowr.common.view.Result;
import com.cowr.ssjygl.stat.sale.OrderStatService;
@ -279,4 +280,26 @@ public class OrderStatController extends BaseController {
render(new ExcelRender(stm + "_" + etm + "_砂站" + (isprepaid != null && isprepaid == 1 ? "预付费" : "") + "销售汇总表_" + System.currentTimeMillis() + ".xlsx", wb));
}
}
public void statYearCustomer() {
String tm = get("tm");
int export = getInt("export", 0); // 是否导出为exce 0 不导出1 导出
if (export == 0) {
renderJson(Result.object(OrderStatService.me.yearStatByCustomer(tm)));
} else {
Workbook wb = OrderStatService.me.yearStatByCustomerExport(tm);
render(new ExcelRender("按客户统计总销售汇总表_" + System.currentTimeMillis() + ".xlsx", wb));
}
}
public void statYearBySup() {
String tm = get("tm");
int export = getInt("export", 0); // 是否导出为exce 0 不导出1 导出
if (export == 0) {
renderJson(Result.object(OrderStatService.me.yearStatBySup(tm)));
} else {
Workbook wb = OrderStatService.me.yearStatBySupExport(tm);
render(new ExcelRender("按砂站总销售汇总表_" + System.currentTimeMillis() + ".xlsx", wb));
}
}
}

View File

@ -174,6 +174,13 @@ public class SyncTaskService {
if (ret.length != list.size()) {
return false;
}
for (int i : ret) {
// 必须是每条 sql 修改一条记录
if (i != 1) {
return false;
}
}
}
}
@ -196,6 +203,13 @@ public class SyncTaskService {
if (ret.length != list.size()) {
return false;
}
for (int i : ret) {
// 必须是每条 sql 修改一条记录
if (i != 1) {
return false;
}
}
}
}

View File

@ -221,6 +221,8 @@ public class NettyServer {
.fluentPut("target", Enums.MsgTarget.SYNCRECV)
.fluentPut("id", data.get("id"))
.toJSONString());
} else {
log.debug("数据接收后,入库失败:", msg);
}
} else if (Enums.MsgTarget.SYNCRECV.name().equals(target)) {
SyncTaskService.me.syncComplete(json.getString("id"));

View File

@ -0,0 +1,21 @@
package com.cowr.service.ssjygl.order.ordercluster;
import com.cowr.common.validator.CrudParamValidator;
import com.cowr.common.view.Result;
import com.jfinal.core.Controller;
import com.jfinal.kit.StrKit;
public class EditTempClusterValidator extends CrudParamValidator {
@Override
protected void validate(Controller c) {
validateRequired("id", "id", "id 必填");
validateInteger("id", 1, 2147483647, "id", "id 范围 1~2147483647");
validateBigDecimal("total_weight", new java.math.BigDecimal("0.01"), new java.math.BigDecimal(9.9999999999E10), "total_weight", "total_weight 范围 0.01~9.9999999999E10");
validateString("trucks", 1, 2000, "trucks", "trucks 长度 1~2000");
}
@Override
protected void handleError(Controller c) {
c.renderJson(Result.failed(getErrmsg()));
}
}

View File

@ -94,6 +94,21 @@ public class OrderclusterController extends BaseController {
renderJson(OrderclusterSyncService.me.update(model, tokenuser));
}
@Before(EditTempClusterValidator.class)
public void editTemp() {
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
if (tokenuser == null) {
renderJson(Result.noauth());
return;
}
Ordercluster model = getModel(Ordercluster.class, "", true); // 忽略不在model中的字段
String trucks = get("trucks");
renderJson(OrderclusterSyncService.me.updateTemp(model, trucks, tokenuser));
}
/**
* ordercluster -
*/

View File

@ -245,8 +245,8 @@ public class OrderclusterSyncService extends BaseSyncService {
String trucks,
Sysuser sysuser
) {
String query_cutoff_time = DateTimeUtil.sdf.get().format(cutoff_time);
Supermarket supermarket = SvrCacheData.SUP_CACHE.get(supermarket_id);
String query_cutoff_time = DateTimeUtil.sdf.get().format(cutoff_time);
Supermarket supermarket = SvrCacheData.SUP_CACHE.get(supermarket_id);
if (supermarket == null) {
return Result.failed("砂站信息无效");
}
@ -315,16 +315,20 @@ public class OrderclusterSyncService extends BaseSyncService {
" and t.truck_license in (" + StrKit.join(tsql, ",") + ")", ts.toArray());
if (chkduk != null && !chkduk.isEmpty()) {
ts = new ArrayList<>();
List<String> outerr = new ArrayList<>();
for (Record bl : chkduk) {
ts.add(bl.get("truck_license"));
outerr.add(String.format(
"[%s]已经在[%s]分配给了[%s]",
bl.get("truck_license"),
DateTimeUtil.sdfymd.get().format(bl.get("cutoff_time")),
bl.get("customer_name")
));
}
return Result.failed(StrKit.join(ts, ",") + " 车牌号已经分配给其他客户");
return Result.failed(StrKit.join(outerr, "。"));
}
SyncTask synctask = new SyncTask();
Ordercluster model = new Ordercluster();
model.setCustomerName(customer_name);
@ -511,6 +515,202 @@ public class OrderclusterSyncService extends BaseSyncService {
}
}
public Result updateTemp(Ordercluster model, String trucks, Sysuser sysuser) {
Ordercluster oldobj = model.findByPk();
if (oldobj == null) {
return Result.failed(false, "按主键未找到对应记录");
}
if (oldobj.getState() >= OrderStateEnum.RECEIVED.getStateid()) {
return Result.failed(false, "订单已完成,不能修改");
}
BigDecimal overweight = OrderclusterService.me.getOverWeight(model.getId()); // 集团订单已完成量
if (model.getTotalWeight().compareTo(overweight) < 0) {
return Result.failedstr("总量不能低于已运输量(%.2f", overweight);
} else {
oldobj.setTotalWeight(model.getTotalWeight());
}
String query_cutoff_time = DateTimeUtil.sdf.get().format(oldobj.getCutoffTime());
List<String> chk = new ArrayList<>();
String[] truckarr = trucks.split(",");
List<Object> ts = new ArrayList<>();
List<String> tsql = new ArrayList<>();
// 检查提交上来的车辆字符串是否用重复的
for (String truck_license : truckarr) {
if (chk.contains(truck_license)) {
return Result.failedstr("车牌号 %s 重复", truck_license);
}
chk.add(truck_license);
ts.add(truck_license);
tsql.add("?");
}
// 检查是否还在黑名单中,未被移除
List<Blacklist> list = Blacklist.dao.find(
"select * from blacklist \n" +
" where remove_user_id is null \n" +
" and truck_license in (" + StrKit.join(tsql, ",") + ")", ts.toArray());
if (list != null && !list.isEmpty()) {
List<String> retts = new ArrayList<>();
for (Blacklist bl : list) {
retts.add(bl.getTruckLicense());
}
return Result.failed(StrKit.join(retts, ",") + " 车牌号在黑名单中");
}
ts.add(0, query_cutoff_time + "%");
List<Record> chkduk = Db.find(
"select * from ordercluster_truck t \n" +
" left join ordercluster c on c.id = t.ordercluster_id\n" +
" where c.state < 5 \n" + // OrderStateEnum.RECEIVED.getStateid()
" and t.ordercluster_id <> " + oldobj.getId() +
" and c.cutoff_time like ? \n" +
" and t.truck_license in (" + StrKit.join(tsql, ",") + ")", ts.toArray());
if (chkduk != null && !chkduk.isEmpty()) {
List<String> outerr = new ArrayList<>();
for (Record bl : chkduk) {
outerr.add(String.format(
"[%s]已经在[%s]分配给了[%s]",
bl.get("truck_license"),
DateTimeUtil.sdfymd.get().format(bl.get("cutoff_time")),
bl.get("customer_name")
));
}
return Result.failed(StrKit.join(outerr, "。"));
}
// 查询已有的集团订单分配的车辆
List<OrderclusterTruck> otlist = OrderclusterTruck.dao.find(
"select * from ordercluster_truck \n" +
" where ordercluster_id = ? \n", oldobj.getId());
List<String> dellist = new ArrayList<>();
List<String> chktpsql = new ArrayList<>();
List<String> chkold = new ArrayList<>();
SyncTask synctask = new SyncTask();
// 数据库中,提交上的数据中没有的,要删掉
for (OrderclusterTruck ot : otlist) {
if (!chk.contains(ot.getTruckLicense())) {
dellist.add(ot.getTruckLicense());
chktpsql.add("?");
synctask.addDeleteData(ot);
} else {
chkold.add(ot.getTruckLicense());
}
}
// 要删除的车辆没有结算,不能删除
if (!dellist.isEmpty()) {
List<String> querydel = new ArrayList<>();
querydel.add(oldobj.getSupermarketId().toString());
querydel.add(DateTimeUtil.sdf.get().format(oldobj.getCutoffTime()) + "%");
querydel.addAll(dellist);
List<Transport> chktp = Transport.dao.find("select * from transport t \n" +
" where t.state < 5 \n" +
" and t.supermarket_id = ? \n" +
" and t.in_time like ? \n" +
" and t.truck_license in(" + StrKit.join(chktpsql, ",") + ")", querydel.toArray());
if (!chktp.isEmpty()) {
List<String> outerr = new ArrayList<>();
for (Transport tp : chktp) {
outerr.add(String.format("[%s]已进入[%s]砂站,删除后不能结算", tp.getTruckLicense(), SvrCacheData.SUP_CACHE.get(tp.getSupermarketId()).getName()));
}
return Result.failed(StrKit.join(outerr, "\r\n"));
}
}
List<OrderclusterTruck> savelist = new ArrayList<>();
for (String truck_license : truckarr) {
// 已经在数据库中的,不再重复添加
if (chkold.contains(truck_license)) {
continue;
}
OrderclusterTruck oct = new OrderclusterTruck();
oct.setId(StrKit.getRandomUUID());
oct.setOrderclusterId(oldobj.getId());
oct.setTruckLicense(truck_license);
synctask.addSaveData(oct);
savelist.add(oct);
}
try {
boolean ret = Db.tx(new IAtom() {
@Override
public boolean run() throws SQLException {
try {
if (!dellist.isEmpty()) {
int delret = Db.delete("delete from ordercluster_truck where ordercluster_id = " + oldobj.getId() +
" and truck_license in ('" + StrKit.join(dellist, "','") + "')");
log.debug("删除 ordercluster_truck %d", delret);
if(delret != dellist.size()){
return false;
}
}
if (!savelist.isEmpty()) {
int[] ret = Db.batchSave(savelist, savelist.size());
for (int i : ret) {
// 必须是每条 sql 修改一条记录
if (i != 1) {
return false;
}
}
}
boolean ret = oldobj.update();
if (!ret) {
return false;
}
synctask.addUpdateData(oldobj);
return SyncTaskService.me.save(synctask, oldobj.getSupermarketId())
&& ModifyLogService.me.save(model, null, Enums.DataOpType.UPDATE.getId(), sysuser);
} catch (Exception e) {
log.error(e.getMessage(), e);
return false;
}
}
});
if (ret) {
SyncTaskService.me.send(synctask);
}
return ret ? Result.success(oldobj) : Result.failed("修改失败");
} catch (Exception e) {
log.error(e.getMessage(), e);
return Result.failed("修改失败");
}
}
public Result update(Ordercluster model, Sysuser sysuser) {
Ordercluster oldobj = model.findByPk();
@ -593,6 +793,10 @@ public class OrderclusterSyncService extends BaseSyncService {
}
});
if (ret) {
SyncTaskService.me.send(synctask);
}
return ret ? Result.success(oldobj) : Result.failed("修改失败");
} catch (Exception e) {
log.error(e.getMessage(), e);

View File

@ -70,8 +70,12 @@ public class OrderclusterTruckController extends Controller {
* ordercluster_truck -
*/
public void find() {
PageParam pp = getBean(PageParam.class, "", true);
renderJson(Result.object(OrderclusterTruckService.me.find(pp)));
PageParam pp = getBean(PageParam.class, "", true);
String stm = get("stm");
String etm = get("etm");
String customer_name = get("customer_name");
String truck_license = get("truck_license");
renderJson(Result.object(OrderclusterTruckService.me.find(pp, stm, etm, customer_name, truck_license)));
}
/**

View File

@ -6,6 +6,7 @@ import com.cowr.common.utils.DateTimeUtil;
import com.cowr.common.view.Result;
import com.cowr.model.*;
import com.cowr.service.ssjygl.base.BaseSyncService;
import com.cowr.service.ssjygl.main.SvrCacheData;
import com.cowr.service.ssjygl.synctask.SyncTaskService;
import com.cowr.ssjygl.modifylog.ModifyLogService;
import com.jfinal.kit.StrKit;
@ -91,15 +92,20 @@ public class OrderclusterTruckSyncService extends BaseSyncService {
retts.add(bl.get("truck_license"));
}
return Result.failedstr("%s 已在[%s]分配", StrKit.join(retts, ","), DateTimeUtil.sdfymd.get().format(ordercluster.getCutoffTime()));
return Result.failedstr(
"%s 已在[%s]分配",
StrKit.join(retts, ","),
DateTimeUtil.sdfymd.get().format(ordercluster.getCutoffTime())
);
}
// 查询已有的集团订单
// 查询已有的集团订单分配的车辆
List<OrderclusterTruck> otlist = OrderclusterTruck.dao.find(
"select * from ordercluster_truck \n" +
" where ordercluster_id = ? \n", ordercluster_id);
List<String> dellist = new ArrayList<>();
List<String> chktpsql = new ArrayList<>();
List<String> chkold = new ArrayList<>();
SyncTask synctask = new SyncTask();
@ -107,12 +113,36 @@ public class OrderclusterTruckSyncService extends BaseSyncService {
for (OrderclusterTruck ot : otlist) {
if (!chk.contains(ot.getTruckLicense())) {
dellist.add(ot.getTruckLicense());
chktpsql.add("?");
synctask.addDeleteData(ot);
} else {
chkold.add(ot.getTruckLicense());
}
}
// 要删除的车辆没有结算,不能删除
if(!dellist.isEmpty()){
List<String> querydel = new ArrayList<>();
querydel.add(ordercluster.getSupermarketId().toString());
querydel.add(DateTimeUtil.sdf.get().format(ordercluster.getCutoffTime()) + "%");
querydel.addAll(dellist);
List<Transport> chktp = Transport.dao.find("select * from transport t \n" +
" where t.state < 5 \n" +
" and t.supermarket_id = ? \n" +
" and t.in_time like ? \n" +
" and t.truck_license in(" + StrKit.join(chktpsql, ",") + ")", querydel.toArray());
if(!chktp.isEmpty()){
List<String> outerr = new ArrayList<>();
for(Transport tp : chktp){
outerr.add(String.format("[%s]已进入[%s]砂站,删除后不能结算", tp.getTruckLicense(), SvrCacheData.SUP_CACHE.get(tp.getSupermarketId()).getName()));
}
return Result.failed(StrKit.join(outerr, "\r\n"));
}
}
List<OrderclusterTruck> savelist = new ArrayList<>();
for (String truck_license : truckarr) {
@ -151,6 +181,10 @@ public class OrderclusterTruckSyncService extends BaseSyncService {
" and truck_license in ('" + StrKit.join(dellist, "','") + "')");
log.debug("删除 ordercluster_truck %d", delret);
if(delret != dellist.size()){
return false;
}
}
if (!savelist.isEmpty()) {

View File

@ -5,6 +5,7 @@ import com.cowr.common.enums.UserTypeEnum;
import com.cowr.common.validator.DayValidator;
import com.cowr.common.validator.MonthValidator;
import com.cowr.common.validator.StartAndEndIntervalValidator;
import com.cowr.common.validator.YearValidator;
import com.cowr.common.view.ExcelRender;
import com.cowr.common.view.Result;
import com.cowr.model.Sysuser;
@ -340,4 +341,20 @@ public class OrderStatController extends BaseController {
render(new ExcelRender(stm + "_" + etm + "_砂站" + (isprepaid != null && isprepaid == 1 ? "预付费" : "") + "销售汇总表_" + System.currentTimeMillis() + ".xlsx", wb));
}
}
public void statYearCustomer() {
String tm = get("tm");
int export = getInt("export", 0); // 是否导出为exce 0 不导出1 导出
if (export == 0) {
renderJson(Result.object(OrderStatService.me.yearStatByCustomer(tm)));
}
}
public void statYearBySup() {
String tm = get("tm");
int export = getInt("export", 0); // 是否导出为exce 0 不导出1 导出
if (export == 0) {
renderJson(Result.object(OrderStatService.me.yearStatBySup(tm)));
}
}
}

View File

@ -161,6 +161,7 @@ public class SyncTaskService {
/**
* ID
*
* @param supermarket_id
*/
public void task(int supermarket_id) {
@ -246,6 +247,13 @@ public class SyncTaskService {
if (ret.length != list.size()) {
return false;
}
for (int i : ret) {
// 必须是每条 sql 修改一条记录
if (i != 1) {
return false;
}
}
}
}
@ -267,6 +275,13 @@ public class SyncTaskService {
if (ret.length != list.size()) {
return false;
}
for (int i : ret) {
// 必须是每条 sql 修改一条记录
if (i != 1) {
return false;
}
}
}
}
@ -368,6 +383,13 @@ public class SyncTaskService {
if (ret.length != sts.size()) {
return false;
}
for (int i : ret) {
// 必须是每条 sql 修改一条记录
if (i != 1) {
return false;
}
}
}
}