调整超市到客户距离
parent
c4b6bfadf8
commit
4eb625b0e8
|
|
@ -1,5 +1,6 @@
|
|||
package com.cowr.ssjygl.customer;
|
||||
|
||||
import com.cowr.common.utils.StrUtil;
|
||||
import com.jfinal.core.Controller;
|
||||
import com.jfinal.kit.StrKit;
|
||||
import com.cowr.common.validator.CrudParamValidator;
|
||||
|
|
@ -41,6 +42,10 @@ public class CustomerValidator extends CrudParamValidator {
|
|||
}
|
||||
validateString("memo", 0, 256, "memo", "memo 长度 0~256");
|
||||
|
||||
validateString("receiver_name", 1, 128, "receiver_name", "receiver_name 长度 1~128");
|
||||
validateString("receiver_address", 1, 256, "receiver_address", "receiver_address 长度 0~256");
|
||||
validateRegex("receiver_phone", StrUtil.regphone, "receiver_phone", "receiver_phone 必须为手机号格式");
|
||||
|
||||
// 使用 model 更新时,model 不能只有主键有值
|
||||
// 这里用 getActionMethodName 写死,判断是 update 时,才做验证
|
||||
// 如果确实是需要将主键外的字段置为 null,可以在代码生成后删掉这段
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.cowr.ssjygl.supermarket.receiverdistance;
|
|||
import com.cowr.common.Const;
|
||||
import com.cowr.common.base.BaseService;
|
||||
import com.cowr.common.view.PageParam;
|
||||
import com.cowr.model.CustomerReceiver;
|
||||
import com.cowr.model.Supermarket;
|
||||
import com.cowr.model.SupermarketReceiverDistance;
|
||||
import com.jfinal.kit.StrKit;
|
||||
|
|
@ -27,6 +28,28 @@ public class SupermarketReceiverDistanceService extends BaseService {
|
|||
public static final SupermarketReceiverDistanceService me = new SupermarketReceiverDistanceService();
|
||||
private static Log log = Log.getLog(SupermarketReceiverDistanceService.class);
|
||||
|
||||
public BigDecimal getDistanceByCustomer(Integer supermarket_id, Integer customer_id) {
|
||||
try {
|
||||
CustomerReceiver cr = CustomerReceiver.dao.findFirst("select * from customer_receiver t where t.customer_id = ? limit 1 ", customer_id);
|
||||
|
||||
if (cr == null) {
|
||||
return new BigDecimal(0);
|
||||
}
|
||||
|
||||
BigDecimal dis = Db.queryBigDecimal("select distance from supermarket_receiver_distance where supermarket_id = ? and customer_receiver_id = ?", supermarket_id, cr.getId());
|
||||
|
||||
if (dis == null) {
|
||||
return new BigDecimal(0);
|
||||
}
|
||||
|
||||
return dis;
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
|
||||
return new BigDecimal(0);
|
||||
}
|
||||
}
|
||||
|
||||
public BigDecimal getDistance(int supermarket_id, int customer_receiver_id) {
|
||||
try {
|
||||
return Db.queryBigDecimal("select distance from supermarket_receiver_distance where supermarket_id = ? and customer_receiver_id = ?", supermarket_id, customer_receiver_id);
|
||||
|
|
@ -113,7 +136,7 @@ public class SupermarketReceiverDistanceService extends BaseService {
|
|||
* @param customer_id
|
||||
* @return
|
||||
*/
|
||||
public Record findAllSupermarket(PageParam pp, Integer customer_receiver_id, Integer customer_id) {
|
||||
public Record findAllSupermarket(PageParam pp, Integer customer_receiver_id, Integer customer_id, String customer_name) {
|
||||
List<Supermarket> cols = Supermarket.dao.find("select id, name, name2 from supermarket where del = 0");
|
||||
String selectsql = "select * ";
|
||||
String fromsql = "from (select \n" +
|
||||
|
|
@ -132,6 +155,11 @@ public class SupermarketReceiverDistanceService extends BaseService {
|
|||
paraList.add(customer_id);
|
||||
}
|
||||
|
||||
if (StrKit.notBlank(customer_name)) {
|
||||
fromsql += " and a.customer_name like ? \n";
|
||||
paraList.add("%" + customer_name + "%");
|
||||
}
|
||||
|
||||
if (customer_receiver_id != null) {
|
||||
fromsql += " and a.customer_receiver_id = ? \n";
|
||||
paraList.add(customer_receiver_id);
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@ public class TransportCompanyService extends BaseService {
|
|||
List<TransportCompany> list = TransportCompany.dao.find("select id, price_modulus from transport_company");
|
||||
|
||||
if(list == null || list.isEmpty()){
|
||||
log.error("initTransCoPriceModulus 失败");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ public class SupermarketReceiverDistanceController extends Controller {
|
|||
PageParam pp = getBean(PageParam.class, "", true);
|
||||
Integer customer_receiver_id = getInt("customer_receiver_id");
|
||||
Integer customer_id = getInt("customer_id");
|
||||
renderJson(Result.object(SupermarketReceiverDistanceService.me.findAllSupermarket(pp, customer_receiver_id, customer_id)));
|
||||
String customer_name = get("customer_name");
|
||||
renderJson(Result.object(SupermarketReceiverDistanceService.me.findAllSupermarket(pp, customer_receiver_id, customer_id, customer_name)));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ public class CustomerController extends Controller {
|
|||
* 不存在 data = false
|
||||
*/
|
||||
@Before(CustomerPKValidator.class)
|
||||
public void checkExistsByPk(){
|
||||
public void checkExistsByPk() {
|
||||
Customer model = getModel(Customer.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(CustomerService.me.checkExistsByPk(model));
|
||||
}
|
||||
|
|
@ -35,7 +35,7 @@ public class CustomerController extends Controller {
|
|||
* 新增 customer 客户
|
||||
*/
|
||||
@Before(CustomerValidator.class)
|
||||
public void save(){
|
||||
public void save() {
|
||||
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
|
||||
|
||||
if (tokenuser == null) {
|
||||
|
|
@ -43,15 +43,19 @@ public class CustomerController extends Controller {
|
|||
return;
|
||||
}
|
||||
|
||||
String receiver_name = get("receiver_name");
|
||||
String receiver_phone = get("receiver_phone");
|
||||
String receiver_address = get("receiver_address");
|
||||
|
||||
Customer model = getModel(Customer.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(CustomerSyncService.me.save(model, tokenuser));
|
||||
renderJson(CustomerSyncService.me.save(model, receiver_name, receiver_phone, receiver_address, tokenuser));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除 customer 客户
|
||||
*/
|
||||
@Before(CustomerPKValidator.class)
|
||||
public void del(){
|
||||
public void del() {
|
||||
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
|
||||
|
||||
if (tokenuser == null) {
|
||||
|
|
@ -67,7 +71,7 @@ public class CustomerController extends Controller {
|
|||
* 恢复 customer 客户
|
||||
*/
|
||||
@Before(CustomerPKValidator.class)
|
||||
public void restore(){
|
||||
public void restore() {
|
||||
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
|
||||
|
||||
if (tokenuser == null) {
|
||||
|
|
@ -83,7 +87,7 @@ public class CustomerController extends Controller {
|
|||
* 修改 customer 客户
|
||||
*/
|
||||
@Before(CustomerValidator.class)
|
||||
public void edit(){
|
||||
public void edit() {
|
||||
Sysuser tokenuser = SysuserSyncService.me.getSysuserByToken(get("token"));
|
||||
|
||||
if (tokenuser == null) {
|
||||
|
|
@ -91,18 +95,22 @@ public class CustomerController extends Controller {
|
|||
return;
|
||||
}
|
||||
|
||||
String receiver_name = get("receiver_name");
|
||||
String receiver_phone = get("receiver_phone");
|
||||
String receiver_address = get("receiver_address");
|
||||
|
||||
Customer model = getModel(Customer.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(CustomerSyncService.me.update(model, tokenuser));
|
||||
renderJson(CustomerSyncService.me.update(model, receiver_name, receiver_phone, receiver_address, tokenuser));
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查找 customer 客户
|
||||
*/
|
||||
public void find(){
|
||||
PageParam pp = getBean(PageParam.class, "", true);
|
||||
public void find() {
|
||||
PageParam pp = getBean(PageParam.class, "", true);
|
||||
String name = get("name");
|
||||
Integer del = getInt("del");
|
||||
Integer type = getInt("type");
|
||||
Integer type = getInt("type");
|
||||
renderJson(Result.object(CustomerService.me.find(pp, name, del, type)));
|
||||
}
|
||||
|
||||
|
|
@ -110,7 +118,7 @@ public class CustomerController extends Controller {
|
|||
* 按主键查找单个对象 customer 客户
|
||||
*/
|
||||
@Before(CustomerPKValidator.class)
|
||||
public void findByPk(){
|
||||
public void findByPk() {
|
||||
Customer model = getModel(Customer.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(CustomerService.me.findByPk(model));
|
||||
}
|
||||
|
|
@ -119,7 +127,7 @@ public class CustomerController extends Controller {
|
|||
* 按主键查找单个对象 customer 客户
|
||||
*/
|
||||
@Before(CustomerPKValidator.class)
|
||||
public void get(){
|
||||
public void get() {
|
||||
Customer model = getModel(Customer.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(CustomerService.me.findByPk(model));
|
||||
}
|
||||
|
|
@ -127,7 +135,7 @@ public class CustomerController extends Controller {
|
|||
/**
|
||||
* 返回所有 customer 客户
|
||||
*/
|
||||
public void list(){
|
||||
public void list() {
|
||||
renderJson(Result.object(CustomerService.me.list()));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,178 @@
|
|||
package com.cowr.service.ssjygl.customer;
|
||||
|
||||
import com.cowr.common.base.BaseModel;
|
||||
import com.cowr.common.enums.Enums;
|
||||
import com.cowr.common.view.Result;
|
||||
import com.cowr.model.Customer;
|
||||
import com.cowr.model.CustomerReceiver;
|
||||
import com.cowr.model.SyncTask;
|
||||
import com.cowr.model.Sysuser;
|
||||
import com.cowr.service.ssjygl.base.BaseSyncService;
|
||||
import com.cowr.service.ssjygl.synctask.SyncTaskService;
|
||||
import com.cowr.ssjygl.modifylog.ModifyLogService;
|
||||
import com.jfinal.log.Log;
|
||||
import com.jfinal.plugin.activerecord.Db;
|
||||
import com.jfinal.plugin.activerecord.IAtom;
|
||||
|
||||
public class CustomerSyncService extends BaseSyncService {
|
||||
public static CustomerSyncService me = new CustomerSyncService();
|
||||
private static Log log = Log.getLog(CustomerSyncService.class);
|
||||
public static CustomerSyncService me = new CustomerSyncService();
|
||||
|
||||
public Result save(Customer model, String receiver_name, String receiver_phone, String receiver_address, Sysuser sysuser) {
|
||||
try {
|
||||
model.remove("id");
|
||||
|
||||
if (model.checkDuplicate("name")) {
|
||||
return Result.failed(false, "名称已存在");
|
||||
}
|
||||
|
||||
if (model.checkDuplicate("texpayer_name")) {
|
||||
return Result.failed(false, "名称已存在");
|
||||
}
|
||||
|
||||
if (model.getTexpayerNum() != null && model.checkDuplicate("texpayer_num")) {
|
||||
return Result.failed(false, "税号已存在");
|
||||
}
|
||||
|
||||
boolean ret = Db.tx(new IAtom() {
|
||||
@Override
|
||||
public boolean run() {
|
||||
try {
|
||||
boolean ret = model.save();
|
||||
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
|
||||
CustomerReceiver receiver = new CustomerReceiver();
|
||||
receiver.setCustomerId(model.getId());
|
||||
receiver.setName(receiver_name);
|
||||
receiver.setPhone(receiver_phone);
|
||||
receiver.setAddress(receiver_address);
|
||||
|
||||
SyncTask synctask = new SyncTask();
|
||||
synctask.addSaveData(model);
|
||||
synctask.addSaveData(receiver);
|
||||
|
||||
return receiver.save()
|
||||
&& SyncTaskService.me.save(synctask)
|
||||
&& ModifyLogService.me.save(model, null, Enums.DataOpType.SAVE.getId(), sysuser)
|
||||
&& ModifyLogService.me.save(receiver, null, Enums.DataOpType.SAVE.getId(), sysuser);
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return ret ? Result.object(model) : Result.failed(false, "新增失败");
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
if (e.getMessage().contains("PRIMARY")) {
|
||||
return Result.failed(false, "主键冲突");
|
||||
} else {
|
||||
return Result.failed(false, e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*
|
||||
* @param model BaseModel
|
||||
* @return Result
|
||||
*/
|
||||
public Result update(Customer model, String receiver_name, String receiver_phone, String receiver_address, Sysuser sysuser) {
|
||||
try {
|
||||
// 注意这里有 !,找到后才做 update 操作
|
||||
Customer oldobj = model.findByPk();
|
||||
|
||||
if (oldobj == null) {
|
||||
return Result.failed(false, "按主键未找到对应记录");
|
||||
}
|
||||
|
||||
if (model.getName() != null) {
|
||||
Customer chk = model.findByColumns("name");
|
||||
|
||||
if (!model.getId().equals(chk.getId())) {
|
||||
return Result.failed("名称已存在");
|
||||
}
|
||||
}
|
||||
|
||||
if (model.getTexpayerName() != null) {
|
||||
Customer chk = model.findByColumns("texpayer_name");
|
||||
|
||||
if (!model.getId().equals(chk.getId())) {
|
||||
return Result.failed("名称已存在");
|
||||
}
|
||||
}
|
||||
|
||||
if (model.getTexpayerNum() != null) {
|
||||
Customer chk = model.findByColumns("texpayer_num");
|
||||
|
||||
if (!model.getId().equals(chk.getId())) {
|
||||
return Result.failed("税号已存在");
|
||||
}
|
||||
}
|
||||
|
||||
boolean ret = Db.tx(new IAtom() {
|
||||
@Override
|
||||
public boolean run() {
|
||||
try {
|
||||
boolean ret = model.update();
|
||||
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
|
||||
CustomerReceiver receiver = CustomerReceiver.dao.findFirst(
|
||||
"select * from customer_receiver t where t.customer_id = ? limit 1", model.getId());
|
||||
|
||||
SyncTask synctask = new SyncTask();
|
||||
synctask.addUpdateData(model);
|
||||
|
||||
if (receiver == null) {
|
||||
receiver = new CustomerReceiver();
|
||||
receiver.setCustomerId(model.getId());
|
||||
receiver.setName(receiver_name);
|
||||
receiver.setPhone(receiver_phone);
|
||||
receiver.setAddress(receiver_address);
|
||||
synctask.addSaveData(receiver);
|
||||
|
||||
ret = receiver.save();
|
||||
} else {
|
||||
receiver.setName(receiver_name);
|
||||
receiver.setPhone(receiver_phone);
|
||||
receiver.setAddress(receiver_address);
|
||||
synctask.addUpdateData(receiver);
|
||||
|
||||
ret = receiver.update();
|
||||
}
|
||||
|
||||
if (!ret) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return SyncTaskService.me.save(new SyncTask().addUpdateData(model))
|
||||
&& ModifyLogService.me.save(model, oldobj, Enums.DataOpType.UPDATE.getId(), sysuser);
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 将修改后的对象返回
|
||||
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);
|
||||
return Result.failed(false, "修改失败");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -131,10 +131,10 @@ public class SupermarketReceiverDistanceController extends Controller {
|
|||
/**
|
||||
* 按主键查找单个对象 supermarket_receiver_distance 客户收获地址到每个超市的距离
|
||||
*/
|
||||
@Before(SupermarketReceiverDistancePKValidator.class)
|
||||
public void get(){
|
||||
SupermarketReceiverDistance model = getModel(SupermarketReceiverDistance.class, "", true); // 忽略不在model中的字段
|
||||
renderJson(SupermarketReceiverDistanceService.me.findByPk(model));
|
||||
Integer supermarket_id = getInt("supermarket_id");
|
||||
Integer customer_id = getInt("customer_id");
|
||||
renderJson(Result.success(SupermarketReceiverDistanceService.me.getDistanceByCustomer(supermarket_id, customer_id)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -151,6 +151,7 @@ public class SupermarketReceiverDistanceController extends Controller {
|
|||
PageParam pp = getBean(PageParam.class, "", true);
|
||||
Integer customer_receiver_id = getInt("customer_receiver_id");
|
||||
Integer customer_id = getInt("customer_id");
|
||||
renderJson(Result.object(SupermarketReceiverDistanceService.me.findAllSupermarket(pp, customer_receiver_id, customer_id)));
|
||||
String customer_name = get("customer_name");
|
||||
renderJson(Result.object(SupermarketReceiverDistanceService.me.findAllSupermarket(pp, customer_receiver_id, customer_id, customer_name)));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,75 @@
|
|||
package com.cowr.service.ssjygl.supermarket.receiverdistance;
|
||||
|
||||
import com.cowr.common.view.Result;
|
||||
import com.cowr.model.CustomerReceiver;
|
||||
import com.cowr.model.Supermarket;
|
||||
import com.cowr.model.SupermarketReceiverDistance;
|
||||
import com.cowr.model.Sysuser;
|
||||
import com.cowr.model.*;
|
||||
import com.cowr.service.ssjygl.base.BaseSyncService;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public class SupermarketReceiverDistanceSyncService extends BaseSyncService {
|
||||
public static SupermarketReceiverDistanceSyncService me = new SupermarketReceiverDistanceSyncService();
|
||||
|
||||
public Result save(int customer_id, int supermarker_id, double distance, Sysuser sysuser){
|
||||
Supermarket supermarket = Supermarket.dao.findById(supermarker_id);
|
||||
|
||||
if(supermarket == null){
|
||||
return Result.failed("未找到对应超市信息");
|
||||
}
|
||||
|
||||
Customer customer = Customer.dao.findById(customer_id);
|
||||
|
||||
if(customer == null){
|
||||
return Result.failed("未找到对应的客户信息");
|
||||
}
|
||||
|
||||
CustomerReceiver cr = CustomerReceiver.dao.findFirst("select * from customer_receiver t where t.customer_id = ? limit 1 ", customer_id);
|
||||
|
||||
if(cr == null){
|
||||
return Result.failed("客户信息不完整");
|
||||
}
|
||||
|
||||
SupermarketReceiverDistance model = new SupermarketReceiverDistance();
|
||||
model.setCustomerReceiverId(cr.getId());
|
||||
model.setSupermarketId(supermarker_id);
|
||||
model.setDistance(new BigDecimal(distance));
|
||||
|
||||
return super.save(model, sysuser);
|
||||
}
|
||||
|
||||
public Result update(int customer_id, int supermarker_id, double distance, Sysuser sysuser){
|
||||
Supermarket supermarket = Supermarket.dao.findById(supermarker_id);
|
||||
|
||||
if(supermarket == null){
|
||||
return Result.failed("未找到对应超市信息");
|
||||
}
|
||||
|
||||
Customer customer = Customer.dao.findById(customer_id);
|
||||
|
||||
if(customer == null){
|
||||
return Result.failed("未找到对应的客户信息");
|
||||
}
|
||||
|
||||
CustomerReceiver cr = CustomerReceiver.dao.findFirst("select * from customer_receiver t where t.customer_id = ? limit 1 ", customer_id);
|
||||
|
||||
if(cr == null){
|
||||
return Result.failed("客户信息不完整");
|
||||
}
|
||||
|
||||
SupermarketReceiverDistance model = SupermarketReceiverDistance.dao.findFirst(
|
||||
"select * from supermarket_receiver_distance t where t.customer_receiver_id = ? and t.supermarket_id = ? limit 1", cr.getId(), supermarker_id);
|
||||
|
||||
if(model == null){
|
||||
model = new SupermarketReceiverDistance();
|
||||
model.setCustomerReceiverId(cr.getId());
|
||||
model.setSupermarketId(supermarker_id);
|
||||
model.setDistance(new BigDecimal(distance));
|
||||
|
||||
return super.save(model, sysuser);
|
||||
}else{
|
||||
return super.update(model, sysuser);
|
||||
}
|
||||
}
|
||||
|
||||
public Result save(SupermarketReceiverDistance model, Sysuser sysuser){
|
||||
Supermarket supermarket = Supermarket.dao.findById(model.getSupermarketId());
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue