处理发现的问题
parent
eec075a81b
commit
e86db3c6a4
|
|
@ -557,4 +557,28 @@ public class OrderclusterService extends BaseService {
|
|||
|
||||
return Db.paginate(pp.getPage(), pp.getSize(), "select * ", fromsql, salePara.toArray());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取集团订单剩余成量
|
||||
* @param ordercluster_id
|
||||
* @return
|
||||
*/
|
||||
public BigDecimal getOverWeight(int ordercluster_id){
|
||||
String sql = "select sum(a.weight) weight from ( \n " +
|
||||
" select t.ordercluster_id, sum(t.weight) weight from order_sale t \n" +
|
||||
" where t.state = ? \n" +
|
||||
" and t.ordercluster_id = ? \n" +
|
||||
" group by t.ordercluster_id \n" +
|
||||
" union \n" +
|
||||
" select t.ordercluster_id, sum(t.weight) weight from order_temp t \n" +
|
||||
" where t.state = ? \n" +
|
||||
" and t.ordercluster_id = ? \n" +
|
||||
" group by t.ordercluster_id \n " +
|
||||
" ) a \n" +
|
||||
" group by a.ordercluster_id ";
|
||||
|
||||
BigDecimal out = Db.queryBigDecimal(sql, OrderStateEnum.RECEIVED.getStateid(), ordercluster_id, OrderStateEnum.RECEIVED.getStateid(), ordercluster_id);
|
||||
|
||||
return out == null ? new BigDecimal(0) : out;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -174,8 +174,10 @@ public class PrepayService {
|
|||
" ,a.paid \n" +
|
||||
" ,a.customer_id \n" +
|
||||
" ,a.customer_name \n" +
|
||||
" ,a.product_id \n" +
|
||||
" ,a.product_name" +
|
||||
" from ( \n" +
|
||||
" select t.sn, t.supermarket_id, t.truck_license, t.weight, t.total_price, t.paid, c.id customer_id, c.name customer_name \n" +
|
||||
" select t.sn, t.supermarket_id, t.truck_license, t.weight, t.total_price, t.paid, c.id customer_id, c.name customer_name, t.product_id, t.product_name \n" +
|
||||
" from order_sale t \n" +
|
||||
" left join customer c on c.id = t.customer_id \n" +
|
||||
" where t.state = ? \n" +
|
||||
|
|
@ -184,7 +186,7 @@ public class PrepayService {
|
|||
" and t.create_time >= ? \n" +
|
||||
" and t.create_time <= ? \n" +
|
||||
" union \n" +
|
||||
" select t.sn, t.supermarket_id, t.truck_license, t.weight, t.total_price, t.paid, c.id customer_id, c.name customer_name \n" +
|
||||
" select t.sn, t.supermarket_id, t.truck_license, t.weight, t.total_price, t.paid, c.id customer_id, c.name customer_name, t.product_id, t.product_name \n" +
|
||||
" from order_temp t \n" +
|
||||
" left join customer c on c.id = t.customer_id \n" +
|
||||
" where t.state = ? \n" +
|
||||
|
|
|
|||
|
|
@ -79,6 +79,8 @@ public class SupermarketCustomerDistanceService extends BaseService {
|
|||
String totalRowSql = "select count(*) " + fromsql;
|
||||
String findSql = selectsql + fromsql;
|
||||
|
||||
findSql += " order by t.id ";
|
||||
|
||||
Page<Record> page = Db.paginateByFullSql(pp.getPage(), pp.getSize(), totalRowSql, findSql, paraList.toArray());
|
||||
List<Record> list = page.getList();
|
||||
|
||||
|
|
|
|||
|
|
@ -118,13 +118,21 @@ public class BaseSyncService extends BaseService {
|
|||
return Result.failed(false, "按主键未找到对应记录");
|
||||
}
|
||||
|
||||
|
||||
BaseModel saveold = (BaseModel) oldobj.clone();
|
||||
// 将修改后的对象返回
|
||||
String[] keys = model._getAttrNames();
|
||||
for (String key : keys) {
|
||||
oldobj.set(key, model.get(key));
|
||||
}
|
||||
|
||||
boolean ret = Db.tx(new IAtom() {
|
||||
@Override
|
||||
public boolean run() {
|
||||
try {
|
||||
return model.update()
|
||||
&& SyncTaskService.me.save(new SyncTask().addUpdateData(model))
|
||||
&& ModifyLogService.me.save(model, oldobj, Enums.DataOpType.UPDATE.getId(), sysuser);
|
||||
return oldobj.update()
|
||||
&& SyncTaskService.me.save(new SyncTask().addUpdateData(oldobj))
|
||||
&& ModifyLogService.me.save(model, saveold, Enums.DataOpType.UPDATE.getId(), sysuser);
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
return false;
|
||||
|
|
@ -132,12 +140,6 @@ public class BaseSyncService extends BaseService {
|
|||
}
|
||||
});
|
||||
|
||||
// 将修改后的对象返回
|
||||
String[] keys = model._getAttrNames();
|
||||
for (String key : keys) {
|
||||
oldobj.set(key, model.get(key));
|
||||
}
|
||||
|
||||
return ret ? Result.object(oldobj) : Result.failed(false, "修改失败");
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import com.cowr.local.ssjygl.main.Config;
|
|||
import com.cowr.local.ssjygl.order.OrderService;
|
||||
import com.cowr.local.ssjygl.order.orderseq.OrderSeqService;
|
||||
import com.cowr.ssjygl.invoice.receive.InvoiceReceiveService;
|
||||
import com.cowr.ssjygl.order.ordercluster.OrderclusterService;
|
||||
import com.cowr.ssjygl.supermarket.product.SupermarketProductService;
|
||||
import com.cowr.local.ssjygl.synctask.SyncTaskService;
|
||||
import com.cowr.local.ssjygl.system.sysuser.SysuserSyncService;
|
||||
|
|
@ -85,7 +86,7 @@ public class OrderTempSyncService {
|
|||
}
|
||||
|
||||
if (transport.getSecondWeight().compareTo(BigDecimal.valueOf(Config.configprop.getInt("weigh.max"))) > 0) {
|
||||
return Result.failedstr("毛重不能超过 %.2f 吨", Config.configprop.getInt("weigh.max"));
|
||||
return Result.failedstr("毛重不能超过 %d 吨", Config.configprop.getInt("weigh.max"));
|
||||
}
|
||||
|
||||
BigDecimal net_weight = transport.getSecondWeight().subtract(transport.getFirstWeight()); // 销售的用第二次减第一次
|
||||
|
|
@ -196,7 +197,7 @@ public class OrderTempSyncService {
|
|||
|
||||
ret = invoiceLog.save();
|
||||
|
||||
if(!ret){
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -300,6 +301,11 @@ public class OrderTempSyncService {
|
|||
}
|
||||
|
||||
BigDecimal net_weight = transport.getSecondWeight().subtract(transport.getFirstWeight()); // 销售的用第二次减第一次
|
||||
BigDecimal overweight = OrderclusterService.me.getOverWeight(ordercluster_id); // 集团订单剩余量
|
||||
// 不能超过集团订单剩余量
|
||||
if (net_weight.compareTo(overweight) <= 0) {
|
||||
return Result.failedstr("净重 %.2f 吨,超过了剩余的 %.2f 余量", net_weight, overweight);
|
||||
}
|
||||
|
||||
if (req_receipt == 1) { // 需要同时开具发票
|
||||
receive = InvoiceReceiveService.me.foremostReceive(transport.getSupermarketId());
|
||||
|
|
@ -396,7 +402,7 @@ public class OrderTempSyncService {
|
|||
return false;
|
||||
}
|
||||
|
||||
if(ordercluster.getState() == OrderStateEnum.INITIAL.getStateid()){
|
||||
if (ordercluster.getState() == OrderStateEnum.INITIAL.getStateid()) {
|
||||
ordercluster.setState(OrderStateEnum.ENTERED.getStateid());
|
||||
|
||||
ret = ordercluster.update();
|
||||
|
|
@ -446,7 +452,7 @@ public class OrderTempSyncService {
|
|||
|
||||
ret = invoiceLog.save();
|
||||
|
||||
if(!ret){
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -531,7 +537,7 @@ public class OrderTempSyncService {
|
|||
}
|
||||
|
||||
if (transport.getSecondWeight().compareTo(BigDecimal.valueOf(Config.configprop.getInt("weigh.max"))) > 0) {
|
||||
return Result.failedstr("毛重不能超过 %.2f 吨", Config.configprop.getInt("weigh.max"));
|
||||
return Result.failedstr("毛重不能超过 %d 吨", Config.configprop.getInt("weigh.max"));
|
||||
}
|
||||
|
||||
BigDecimal net_weight = transport.getSecondWeight().subtract(transport.getFirstWeight()); // 销售的用第二次减第一次
|
||||
|
|
@ -694,7 +700,7 @@ public class OrderTempSyncService {
|
|||
return false;
|
||||
}
|
||||
|
||||
if(ordercluster.getState() == OrderStateEnum.INITIAL.getStateid()){
|
||||
if (ordercluster.getState() == OrderStateEnum.INITIAL.getStateid()) {
|
||||
ordercluster.setState(OrderStateEnum.ENTERED.getStateid());
|
||||
|
||||
ret = ordercluster.update();
|
||||
|
|
@ -744,7 +750,7 @@ public class OrderTempSyncService {
|
|||
|
||||
ret = invoiceLog.save();
|
||||
|
||||
if(!ret){
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -100,6 +100,14 @@ public class TransportSyncService {
|
|||
PostLicenseResult result = new PostLicenseResult(truck_license);
|
||||
|
||||
try {
|
||||
Blacklist bl = BlacklistService.me.truckInBlacklist(truck_license);
|
||||
|
||||
if (bl != null) {
|
||||
log.debug("【" + truck_license + "】在黑名单中");
|
||||
deleteImg(file); // 数据无效时,删除图片
|
||||
return result;
|
||||
}
|
||||
|
||||
if (!Enums.CtrlFlowEnum.isValid(which)) {
|
||||
deleteImg(file); // 数据无效时,删除图片
|
||||
return result;
|
||||
|
|
|
|||
|
|
@ -118,13 +118,20 @@ public class BaseSyncService extends BaseService {
|
|||
return Result.failed(false, "按主键未找到对应记录");
|
||||
}
|
||||
|
||||
BaseModel saveold = (BaseModel) oldobj.clone();
|
||||
// 将修改后的对象返回
|
||||
String[] keys = model._getAttrNames();
|
||||
for (String key : keys) {
|
||||
oldobj.set(key, model.get(key));
|
||||
}
|
||||
|
||||
boolean ret = Db.tx(new IAtom() {
|
||||
@Override
|
||||
public boolean run() {
|
||||
try {
|
||||
return model.update()
|
||||
&& SyncTaskService.me.save(new SyncTask().addUpdateData(model))
|
||||
&& ModifyLogService.me.save(model, oldobj, Enums.DataOpType.UPDATE.getId(), sysuser);
|
||||
return oldobj.update()
|
||||
&& SyncTaskService.me.save(new SyncTask().addUpdateData(oldobj))
|
||||
&& ModifyLogService.me.save(model, saveold, Enums.DataOpType.UPDATE.getId(), sysuser);
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
return false;
|
||||
|
|
@ -132,12 +139,6 @@ public class BaseSyncService extends BaseService {
|
|||
}
|
||||
});
|
||||
|
||||
// 将修改后的对象返回
|
||||
String[] keys = model._getAttrNames();
|
||||
for (String key : keys) {
|
||||
oldobj.set(key, model.get(key));
|
||||
}
|
||||
|
||||
return ret ? Result.object(oldobj) : Result.failed(false, "修改失败");
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
|
|
|
|||
|
|
@ -228,39 +228,6 @@ public class OrderclusterSyncService extends BaseSyncService {
|
|||
return Result.failed("未配置商品单价");
|
||||
}
|
||||
|
||||
SyncTask synctask = new SyncTask();
|
||||
Ordercluster model = new Ordercluster();
|
||||
model.setCustomerName(customer_name);
|
||||
|
||||
// 判断是否需要开具发票
|
||||
if (req_receipt == 1) {
|
||||
model.setCustomerTexpayerNum(customer_texpayer_num);
|
||||
}
|
||||
|
||||
model.setTransDistance(new BigDecimal(0));
|
||||
|
||||
model.setTotalWeight(new BigDecimal(total_weight));
|
||||
model.setCutoffTime(cutoff_time);
|
||||
|
||||
model.setSupermarketId(supermarket_id);
|
||||
model.setTimeInterval(1);
|
||||
model.setMiniTruck(1);
|
||||
|
||||
model.setProductId(product.getId());
|
||||
model.setProductName(product.getName());
|
||||
|
||||
model.setUnitPrice(unitprice); // 后端获取数据库中单价
|
||||
model.setCreateTime(new Date()); // 当前系统时间
|
||||
model.setCreateUserId(sysuser.getId()); // 当前用户id
|
||||
model.setCreateUserName(sysuser.getName());
|
||||
model.setState(OrderStateEnum.INITIAL.getStateid()); // 新增固定为 1
|
||||
|
||||
model.setReqReceipt(req_receipt); // 固定供砂客户肯定是需要发票的,至于是普票还是专票,由客户信息决定
|
||||
model.setPayType(1);
|
||||
model.setUuid(StrKit.getRandomUUID());
|
||||
|
||||
synctask.addSaveData(model);
|
||||
|
||||
List<String> chk = new ArrayList<>();
|
||||
String[] truckarr = trucks.split(",");
|
||||
List<String> ts = new ArrayList<>();
|
||||
|
|
@ -296,6 +263,58 @@ public class OrderclusterSyncService extends BaseSyncService {
|
|||
return Result.failed(StrKit.join(ts, ",") + " 车牌号在黑名单中");
|
||||
}
|
||||
|
||||
ts.add(0, DateTimeUtil.sdf.get().format(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 c.cutoff_time like ? \n" +
|
||||
" and t.truck_license in (" + StrKit.join(tsql, ",") + ")", ts.toArray());
|
||||
|
||||
if (chkduk != null && !chkduk.isEmpty()) {
|
||||
ts = new ArrayList<>();
|
||||
|
||||
for (Record bl : chkduk) {
|
||||
ts.add(bl.get("truck_license"));
|
||||
}
|
||||
|
||||
return Result.failed(StrKit.join(ts, ",") + " 车牌号已经分配给其他客户");
|
||||
}
|
||||
|
||||
|
||||
SyncTask synctask = new SyncTask();
|
||||
Ordercluster model = new Ordercluster();
|
||||
model.setCustomerName(customer_name);
|
||||
|
||||
// 判断是否需要开具发票
|
||||
if (req_receipt == 1) {
|
||||
model.setCustomerTexpayerNum(customer_texpayer_num);
|
||||
}
|
||||
|
||||
model.setTransDistance(new BigDecimal(0));
|
||||
|
||||
model.setTotalWeight(new BigDecimal(total_weight));
|
||||
model.setCutoffTime(cutoff_time);
|
||||
|
||||
model.setSupermarketId(supermarket_id);
|
||||
model.setTimeInterval(1);
|
||||
model.setMiniTruck(1);
|
||||
|
||||
model.setProductId(product.getId());
|
||||
model.setProductName(product.getName());
|
||||
|
||||
model.setUnitPrice(unitprice); // 后端获取数据库中单价
|
||||
model.setCreateTime(new Date()); // 当前系统时间
|
||||
model.setCreateUserId(sysuser.getId()); // 当前用户id
|
||||
model.setCreateUserName(sysuser.getName());
|
||||
model.setState(OrderStateEnum.INITIAL.getStateid()); // 新增固定为 1
|
||||
|
||||
model.setReqReceipt(req_receipt); // 固定供砂客户肯定是需要发票的,至于是普票还是专票,由客户信息决定
|
||||
model.setPayType(1);
|
||||
model.setUuid(StrKit.getRandomUUID());
|
||||
|
||||
synctask.addSaveData(model);
|
||||
|
||||
boolean ret = Db.tx(new IAtom() {
|
||||
@Override
|
||||
public boolean run() {
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ public class OrderclusterTruckSyncService extends BaseSyncService {
|
|||
List<String> ts = new ArrayList<>();
|
||||
List<String> tsql = new ArrayList<>();
|
||||
|
||||
// 检查提交上来的车辆字符串是否用重复的
|
||||
for (String truck_license : truckarr) {
|
||||
if (chk.contains(truck_license)) {
|
||||
return Result.failedstr("车牌号 %s 重复", truck_license);
|
||||
|
|
@ -55,6 +56,7 @@ public class OrderclusterTruckSyncService extends BaseSyncService {
|
|||
tsql.add("?");
|
||||
}
|
||||
|
||||
// 检查是否还在黑名单中,未被移除
|
||||
List<Blacklist> list = Blacklist.dao.find(
|
||||
"select * from blacklist \n" +
|
||||
" where remove_user_id is null \n" +
|
||||
|
|
@ -70,7 +72,24 @@ public class OrderclusterTruckSyncService extends BaseSyncService {
|
|||
return Result.failed(StrKit.join(ts, ",") + " 车牌号在黑名单中");
|
||||
}
|
||||
|
||||
// 查询是否分配给其他集团订单
|
||||
ts.add(0, ordercluster_id + ""); // 加到查询参数里面
|
||||
List<Record> chkduk = Db.find(
|
||||
"select * from ordercluster_truck \n" +
|
||||
" where ordercluster_id <> ? \n" +
|
||||
" and truck_license in (" + StrKit.join(tsql, ",") + ")", ts.toArray());
|
||||
|
||||
if (chkduk != null && !chkduk.isEmpty()) {
|
||||
ts = new ArrayList<>();
|
||||
|
||||
for (Record bl : chkduk) {
|
||||
ts.add(bl.get("truck_license"));
|
||||
}
|
||||
|
||||
return Result.failed(StrKit.join(ts, ",") + " 车牌号已经分配给其他客户");
|
||||
}
|
||||
|
||||
// 查询已有的集团订单
|
||||
List<OrderclusterTruck> otlist = OrderclusterTruck.dao.find(
|
||||
"select * from ordercluster_truck \n" +
|
||||
" where ordercluster_id = ? \n", ordercluster_id);
|
||||
|
|
@ -79,9 +98,9 @@ public class OrderclusterTruckSyncService extends BaseSyncService {
|
|||
List<String> chkold = new ArrayList<>();
|
||||
SyncTask synctask = new SyncTask();
|
||||
|
||||
// 数据库中,提交上的数据中没有的,要删掉
|
||||
for (OrderclusterTruck ot : otlist) {
|
||||
if(!chk.contains(ot.getTruckLicense())){
|
||||
// 数据库中,提交上的数据中没有的,要删掉
|
||||
dellist.add(ot.getTruckLicense());
|
||||
synctask.addDeleteData(ot);
|
||||
}else{
|
||||
|
|
@ -89,12 +108,6 @@ public class OrderclusterTruckSyncService extends BaseSyncService {
|
|||
}
|
||||
}
|
||||
|
||||
List<OrderclusterTruck> oldot = OrderclusterTruck.dao.find("select * from ordercluster_truck where ordercluster_id = ? ", ordercluster_id);
|
||||
|
||||
if (truckarr.length + oldot.size() < ordercluster.getMiniTruck()) {
|
||||
return Result.failedstr("安排车辆总数不能小于 %d", ordercluster.getMiniTruck());
|
||||
}
|
||||
|
||||
List<OrderclusterTruck> savelist = new ArrayList<>();
|
||||
|
||||
for (String truck_license : truckarr) {
|
||||
|
|
@ -116,6 +129,11 @@ public class OrderclusterTruckSyncService extends BaseSyncService {
|
|||
return Result.failed("trucks 参数错误");
|
||||
}
|
||||
|
||||
// 数据库中已有的总数 + 本次添加的 - 本次删掉的 不能小于要求的最小值
|
||||
if (otlist.size() + savelist.size() - dellist.size() < ordercluster.getMiniTruck()) {
|
||||
return Result.failedstr("安排车辆总数不能小于 %d", ordercluster.getMiniTruck());
|
||||
}
|
||||
|
||||
Record logrecord = new Record();
|
||||
logrecord.set("customer_id", ordercluster_id);
|
||||
logrecord.set("truckstr", trucks);
|
||||
|
|
|
|||
Loading…
Reference in New Issue