diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/customer/CustomerValidator.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/customer/CustomerValidator.java index dac45f9..f756c0b 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/customer/CustomerValidator.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/customer/CustomerValidator.java @@ -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,可以在代码生成后删掉这段 diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/supermarket/receiverdistance/SupermarketReceiverDistanceService.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/supermarket/receiverdistance/SupermarketReceiverDistanceService.java index 3091f34..a8b2074 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/supermarket/receiverdistance/SupermarketReceiverDistanceService.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/supermarket/receiverdistance/SupermarketReceiverDistanceService.java @@ -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 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); diff --git a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/transportcompany/TransportCompanyService.java b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/transportcompany/TransportCompanyService.java index 4169f66..820fe07 100644 --- a/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/transportcompany/TransportCompanyService.java +++ b/ssjygl-xsx-common/src/main/java/com/cowr/ssjygl/transportcompany/TransportCompanyService.java @@ -33,7 +33,6 @@ public class TransportCompanyService extends BaseService { List list = TransportCompany.dao.find("select id, price_modulus from transport_company"); if(list == null || list.isEmpty()){ - log.error("initTransCoPriceModulus 失败"); return; } diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/supermarket/receiverdistance/SupermarketReceiverDistanceController.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/supermarket/receiverdistance/SupermarketReceiverDistanceController.java index d1044aa..cea2e75 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/supermarket/receiverdistance/SupermarketReceiverDistanceController.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/supermarket/receiverdistance/SupermarketReceiverDistanceController.java @@ -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))); } } diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/customer/CustomerController.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/customer/CustomerController.java index 68cf3b7..bb5eb9a 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/customer/CustomerController.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/customer/CustomerController.java @@ -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())); } } diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/customer/CustomerSyncService.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/customer/CustomerSyncService.java index e3726d9..15d553c 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/customer/CustomerSyncService.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/customer/CustomerSyncService.java @@ -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, "修改失败"); + } + } + } diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/supermarket/receiverdistance/SupermarketReceiverDistanceController.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/supermarket/receiverdistance/SupermarketReceiverDistanceController.java index 8825f5d..3d5cce7 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/supermarket/receiverdistance/SupermarketReceiverDistanceController.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/supermarket/receiverdistance/SupermarketReceiverDistanceController.java @@ -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))); } } diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/supermarket/receiverdistance/SupermarketReceiverDistanceSyncService.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/supermarket/receiverdistance/SupermarketReceiverDistanceSyncService.java index 8b69098..e4e6a78 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/supermarket/receiverdistance/SupermarketReceiverDistanceSyncService.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/supermarket/receiverdistance/SupermarketReceiverDistanceSyncService.java @@ -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());