调整超市到客户距离

dev
lisai17@sina.com 2020-08-21 16:38:09 +08:00
parent c4b6bfadf8
commit 4eb625b0e8
8 changed files with 298 additions and 25 deletions

View File

@ -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可以在代码生成后删掉这段

View File

@ -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);

View File

@ -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;
}

View File

@ -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)));
}
}

View File

@ -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()));
}
}

View File

@ -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, "修改失败");
}
}
}

View File

@ -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)));
}
}

View File

@ -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());