设备参数设置错误修改,参数查询名字修改,pos冲正bug修改
diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties
index 4154d02..7760e30 100644
--- a/config/application-devel-pg.properties
+++ b/config/application-devel-pg.properties
@@ -24,4 +24,6 @@
spring.jackson.serialization.fail-on-empty-beans=false
-payapi.url=https://yy.dlsmk.cn/payapi
\ No newline at end of file
+payapi.url=https://yy.dlsmk.cn/payapi
+
+payapi.appid=200001
\ No newline at end of file
diff --git a/src/main/java/com/supwisdom/dlpay/api/bean/PosPayConfirmResp.java b/src/main/java/com/supwisdom/dlpay/api/bean/PosPayConfirmResp.java
index 39f2163..8e8b477 100644
--- a/src/main/java/com/supwisdom/dlpay/api/bean/PosPayConfirmResp.java
+++ b/src/main/java/com/supwisdom/dlpay/api/bean/PosPayConfirmResp.java
@@ -3,8 +3,8 @@
public class PosPayConfirmResp extends APIResp {
private String billno;
private boolean require_query;
- private Double amount;
- private Double extraamt;
+ private Integer amount;
+ private Integer extraamt;
private String userid;
private String username;
private Integer balance;
@@ -33,19 +33,19 @@
this.require_query = require_query;
}
- public Double getAmount() {
+ public Integer getAmount() {
return amount;
}
- public void setAmount(Double amount) {
+ public void setAmount(Integer amount) {
this.amount = amount;
}
- public Double getExtraamt() {
+ public Integer getExtraamt() {
return extraamt;
}
- public void setExtraamt(Double extraamt) {
+ public void setExtraamt(Integer extraamt) {
this.extraamt = extraamt;
}
diff --git a/src/main/java/com/supwisdom/dlpay/api/service/impl/PayApiServiceImpl.java b/src/main/java/com/supwisdom/dlpay/api/service/impl/PayApiServiceImpl.java
index 61addfa..6e4c958 100644
--- a/src/main/java/com/supwisdom/dlpay/api/service/impl/PayApiServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/service/impl/PayApiServiceImpl.java
@@ -1,29 +1,59 @@
package com.supwisdom.dlpay.api.service.impl;
-import com.google.gson.Gson;
import com.supwisdom.dlpay.api.bean.CitizenCardPayfinishParam;
import com.supwisdom.dlpay.api.bean.CitizenCardPayinitParam;
import com.supwisdom.dlpay.api.bean.CitizenPayResponse;
import com.supwisdom.dlpay.api.service.PayApiService;
-import net.minidev.json.JSONObject;
+import com.supwisdom.dlpay.framework.dao.ApiClientDao;
+import com.supwisdom.dlpay.framework.domain.TApiClient;
+import com.supwisdom.dlpay.framework.util.StringUtil;
+import com.supwisdom.dlpay.paysdk.ApiLoginHelper;
+import com.supwisdom.dlpay.paysdk.proxy.ApiLoginProxy;
+import com.supwisdom.dlpay.paysdk.proxy.CitizenCardPayProxy;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Service;
-import org.springframework.web.client.RestTemplate;
-import sun.net.www.http.HttpClient;
+
+@EnableFeignClients(basePackages = "com.supwisdom.dlpay.paysdk")
+@ComponentScan(basePackages = {"com.supwisdom.dlpay.paysdk"})
@Service
public class PayApiServiceImpl implements PayApiService {
@Value("${payapi.url}")
private String payapiurl;
+ @Value("${payapi.appid}")
+ private String appid;
+
+ @Autowired
+ private ApiClientDao apiClientDao;
+
+ @Autowired
+ private ApiLoginProxy apiLoginProxy;
+
+ @Autowired
+ private CitizenCardPayProxy citizenCardPayProxy;
@Override
public CitizenPayResponse citizencardPayinit(CitizenCardPayinitParam param) {
- // String gsonString = new Gson().toJson(param);
-// RestTemplate client=new RestTemplate();
- /* client.postForEntity(payapiurl+"/api/consume/citizencard/payinit")*/
- return null;
+ CitizenPayResponse resp=new CitizenPayResponse();
+ if(StringUtil.isEmpty(appid)){
+ resp.setRetmsg("请在配置文件中配置appid");
+ resp.setRetcode(99);
+ }
+ ApiLoginHelper helper=new ApiLoginHelper(apiLoginProxy);
+ TApiClient client=apiClientDao.findByAppid(appid);
+ if(null==client){
+ resp.setRetmsg("未找到对应客户号");
+ resp.setRetcode(99);
+ }
+ helper.login(appid, client.getSecret());
+ resp = citizenCardPayProxy.citizencardPayinit(param);
+
+ return resp;
}
@Override
diff --git a/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java b/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java
index 320c8bc..5a489e1 100644
--- a/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java
@@ -1,6 +1,7 @@
package com.supwisdom.dlpay.api.service.impl;
import com.supwisdom.dlpay.api.bean.*;
+import com.supwisdom.dlpay.api.service.PayApiService;
import com.supwisdom.dlpay.api.service.PosPayService;
import com.supwisdom.dlpay.framework.dao.BusinessparaDao;
import com.supwisdom.dlpay.framework.domain.TBusinesspara;
@@ -49,6 +50,8 @@
private ShopSettlementService shopSettlementService;
@Autowired
private BusinessparaDao businessparaDao;
+ @Autowired
+ private PayApiService payApiService;
@@ -204,18 +207,14 @@
TTransDtl dtl=transDtlService.saveTransdtl(tTransdtl);
-// CitizenCardPayinitParam param=new CitizenCardPayinitParam();
-// param.setBillno(dtl.getBillno());
-// param.setShopaccno(dtl.getShopid());
-// param.setTransdate(dtl.getTransdate());
-// param.setTranstime(dtl.getTranstime());
-// param.setCardNo(dtl.getCardno());
-// param.setAmount(0);
-// CitizenPayResponse response=payApiService.citizencardPayinit(param);
-// if (response.getRetcode()!=0){
-// dtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_FAIL);
-// }
-
+/* CitizenCardPayinitParam param=new CitizenCardPayinitParam();
+ param.setBillno(dtl.getBillno());
+ param.setShopaccno(dtl.getShopid());
+ param.setTransdate(dtl.getTransdate());
+ param.setTranstime(dtl.getTranstime());
+ param.setCardNo(dtl.getCardno());
+ param.setAmount(0);
+ CitizenPayResponse response=payApiService.citizencardPayinit(param);*/
resp.setBillno(tTransdtl.getBillno());
resp.setRetcode(ErrorCode.ERRIF_OK);
resp.setAnonymous(false);
@@ -223,6 +222,13 @@
resp.setSourcetype("pos");
resp.setUserid(tTransdtl.getCustid());
resp.setUsername(customer.getCustname());
+ /* if (response.getRetcode()!=0){
+ dtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_FAIL);
+ transDtlService.saveTransdtl(dtl);
+ resp.setRetcode(response.getRetcode().toString());
+ resp.setRetmsg(response.getRetmsg());
+ }*/
+
return resp;
}
@@ -262,8 +268,9 @@
resp.setBillno(req.getBillno());
- resp.setAmount(tTransdtl.getAmount()*100);
- resp.setExtraamt(extamount*100.0);
+ Double retAmount=tTransdtl.getAmount()*100;
+ resp.setAmount(retAmount.intValue());
+ resp.setExtraamt(extamount*100);
resp.setUserid(cus.getCustid());
resp.setUsername(cus.getCustname());
if(RestaurantConstant.STATUS_TRANSDTL_WAIT.equals(tTransdtl.getStatus())){
@@ -294,8 +301,11 @@
}
resp.setBillno(tTransdtl.getBillno());
- resp.setAmount(tTransdtl.getAmount()*100);
- resp.setExtraamt(tTransdtl.getManagefee()*100);
+
+ Double retAmount=tTransdtl.getAmount()*100;
+ resp.setAmount(retAmount.intValue());
+ Double retExtamt=tTransdtl.getManagefee()*100;
+ resp.setExtraamt(retExtamt.intValue());
resp.setUserid(cus.getCustid());
resp.setUsername(cus.getCustname());
resp.setRequire_query(true);
@@ -322,13 +332,15 @@
return resp;
}
if (tTransDtl.getRevflag() == 1) {
- resp.setRetcode(ErrorCode.ERRIF_POSDTL_NOTEXIST);
+ resp.setRetcode(ErrorCode.ERRIF_OK);
+ resp.setTermseqno(req.getTermseqno());
resp.setRetmsg("流水" + req.getReversalbillno() + "已冲正");
return resp;
}
try {
+ tTransDtl.setTermsqlno(req.getTermseqno());
transDtlService.revertTransdtl(tTransDtl);
- resp.setTermseqno(tTransDtl.getTermsqlno());
+ resp.setTermseqno(req.getTermseqno());
resp.setRetmsg("冲正成功");
resp.setRetcode(ErrorCode.ERRIF_OK);
return resp;
@@ -546,6 +558,7 @@
transDtl.setAmount(req.getAmount()/100.0);
transDtl.setBillno(systemUtilService.getRefno());
transDtl.setCardno(req.getCardno());
+ transDtl.setRevflag(0);
List<TMealtype> mealtypes = mealTypeDao.findAllByOrderByEndtime();
transDtl.setTermsqlno(req.getTermseqno());
String err="";
@@ -597,7 +610,7 @@
if("true".equals(req.getReversalflag())){
TOfflineTransDtl tTransDtl =
- offlineTransDtlService.getOfflineTransDtlByTermsqlnoAndTermid(req.getTermseqno(),device.getId(),req.getTransdate());
+ offlineTransDtlService.getOfflineTransDtlByTermsqlnoAndTermid(req.getReversaltermseqno(),device.getId(),req.getTransdate());
if (null == tTransDtl) {
err+=("终端参考号" + req.getReversaltermseqno() + "不存在;");
}else{
@@ -615,6 +628,7 @@
}else{
transDtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_INIT);
}
+ transDtl.setAttr1(err);
offlineTransDtlService.revertOfflineTransdtl(tTransDtl);
resp.setTermseqno(tTransDtl.getTermsqlno());
resp.setRetmsg("保存成功");
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java
index 73dbf10..c557714 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java
@@ -1,5 +1,8 @@
package com.supwisdom.dlpay.framework.domain;
+import org.hibernate.annotations.NotFound;
+import org.hibernate.annotations.NotFoundAction;
+
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
diff --git a/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java b/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java
index 6ed5bb6..7a70969 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java
@@ -15,6 +15,7 @@
import java.text.SimpleDateFormat;
import java.util.Date;
+import java.util.Optional;
@Service
public class SystemUtilServiceImpl implements SystemUtilService {
@@ -118,7 +119,12 @@
@Override
public String getAccdate() {
String hostdate = getSysdatetime().getHostdate();
- TSettlectl settlectl = settleCtlDao.getOne(1);
+ Optional<TSettlectl> opt=settleCtlDao.findById(1);
+ TSettlectl settlectl = null;
+ if(opt.isPresent()){
+ settlectl=opt.get();
+ }
+
if (null != settlectl && null != settlectl.getSettledate()) {
if (Integer.valueOf(hostdate) < settlectl.getSettledate().intValue()) {
return settlectl.getSettledate().toString();
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/bean/AmountCountBean.java b/src/main/java/com/supwisdom/dlpay/restaurant/bean/AmountCountBean.java
index 7dd29ce..74d7b8b 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/bean/AmountCountBean.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/bean/AmountCountBean.java
@@ -1,13 +1,15 @@
package com.supwisdom.dlpay.restaurant.bean;
+import java.math.BigInteger;
+
public class AmountCountBean {
private Double totalamt;
- private Long totalcnt;
+ private BigInteger totalcnt;
public AmountCountBean() {
}
- public AmountCountBean(Double totalamt, Long totalcnt) {
+ public AmountCountBean(Double totalamt, BigInteger totalcnt) {
this.totalamt = totalamt;
this.totalcnt = totalcnt;
}
@@ -20,11 +22,11 @@
this.totalamt = totalamt;
}
- public Long getTotalcnt() {
+ public BigInteger getTotalcnt() {
return totalcnt;
}
- public void setTotalcnt(Long totalcnt) {
+ public void setTotalcnt(BigInteger totalcnt) {
this.totalcnt = totalcnt;
}
}
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/controller/CustTypeController.java b/src/main/java/com/supwisdom/dlpay/restaurant/controller/CustTypeController.java
index 3e245e5..39f4109 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/controller/CustTypeController.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/controller/CustTypeController.java
@@ -36,7 +36,7 @@
}
@RequestMapping("/list")
- @PreAuthorize("hasPermission('/custtype/index','')")
+ // @PreAuthorize("hasPermission('/custtype/index','')")
@ResponseBody
public PageResult<TCustType> getDataList(@RequestParam("page") Integer pageNo,
@RequestParam("limit") Integer pageSize,
@@ -57,13 +57,13 @@
@GetMapping("/loadadd")
- @PreAuthorize("hasPermission('/custtype/loadadd','')")
+ // @PreAuthorize("hasPermission('/custtype/loadadd','')")
public String loadadd(Model model) {
return "restaurant/custtype/form";
}
@PostMapping("/add")
- @PreAuthorize("hasPermission('/custtype/add','')")
+ // @PreAuthorize("hasPermission('/custtype/add','')")
@ResponseBody
public JsonResult add(@RequestBody TCustType custType) {
if (custType != null) {
@@ -74,7 +74,7 @@
}
@PostMapping("/delete")
- @PreAuthorize("hasPermission('/custtype/delete','')")
+ // @PreAuthorize("hasPermission('/custtype/delete','')")
@ResponseBody
public JsonResult delfunc(@RequestParam Integer id) {
return custTypeService.deleteCusttype(id);
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/dao/OfflineTransDtlDao.java b/src/main/java/com/supwisdom/dlpay/restaurant/dao/OfflineTransDtlDao.java
index 7e8d538..3c55565 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/dao/OfflineTransDtlDao.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/dao/OfflineTransDtlDao.java
@@ -14,13 +14,12 @@
@Repository
public interface OfflineTransDtlDao extends JpaRepository<TOfflineTransDtl, String>, JpaSpecificationExecutor<TTransDtl> {
-
TOfflineTransDtl getByBillno(String billno);
-
@Query(value = "select max(termsqlno) from tb_offlinetransdtl where termid=?1 and accdate=?2 ", nativeQuery=true)
Integer getMaxSqlnoToday(Integer deviceid, String accdate);
+ @Query(value = "from TOfflineTransDtl where termsqlno=?1 and termid=?2 and accdate=?3 ")
List<TOfflineTransDtl> findByTermsqlnoAndTermidAndAccdate(Integer termsqlno,Integer termid,String accdate);
List<TOfflineTransDtl> findAllByAccdateAndStatusIsNull(String accdate);
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCardver.java b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCardver.java
index 361830a..42d77fb 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCardver.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCardver.java
@@ -73,7 +73,7 @@
public void setAdderflag(Integer adderflag) {
this.adderflag = adderflag;
}
- @Column(name = "status", length = 1)
+ @Column(name = "status", length = 10)
public String getStatus() {
return status;
}
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java
index c691ade..a237010 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java
@@ -133,7 +133,7 @@
this.lastsaved = lastsaved;
}
- @Column(name = "status", length = 1)
+ @Column(name = "status", length = 10)
public String getStatus() {
return status;
}
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java
index a19c528..c76a7c5 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java
@@ -39,427 +39,434 @@
@Service
public class DeviceDiscountRuleServiceImpl implements DeviceDiscountRuleService {
- @Autowired
- private DiscountRuleDao discountRuleDao;
- @Autowired
- private DiscountDevbindDao discountDevbindDao;
- @Autowired
- private DiscountDetailDao discountDetailDao;
- @Autowired
- private SystemUtilService systemUtilService;
- @Autowired
- private CustomerDao customerDao;
- @Autowired
- private DeviceDao deviceDao;
+ @Autowired
+ private DiscountRuleDao discountRuleDao;
+ @Autowired
+ private DiscountDevbindDao discountDevbindDao;
+ @Autowired
+ private DiscountDetailDao discountDetailDao;
+ @Autowired
+ private SystemUtilService systemUtilService;
+ @Autowired
+ private CustomerDao customerDao;
+ @Autowired
+ private DeviceDao deviceDao;
- @PersistenceContext
- private EntityManager entityManager;
+ @PersistenceContext
+ private EntityManager entityManager;
- private PageResult<DiscountRuleShowBean> getDiscountRuleBySearch(String rulename, String ruletype, String status, Pageable pageable) {
- Page<TDiscountRule> page = discountRuleDao.findAll(new Specification<TDiscountRule>() {
- @Override
- public Predicate toPredicate(Root<TDiscountRule> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
- List<Predicate> predicates = new ArrayList<>();
- if (!StringUtil.isEmpty(rulename)) {
- predicates.add(criteriaBuilder.like(root.get("rulename").as(String.class), "%" + rulename.trim() + "%"));
+ private PageResult<DiscountRuleShowBean> getDiscountRuleBySearch(String rulename, String ruletype, String status, Pageable pageable) {
+ Page<TDiscountRule> page = discountRuleDao.findAll(new Specification<TDiscountRule>() {
+ @Override
+ public Predicate toPredicate(Root<TDiscountRule> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
+ List<Predicate> predicates = new ArrayList<>();
+ if (!StringUtil.isEmpty(rulename)) {
+ predicates.add(criteriaBuilder.like(root.get("rulename").as(String.class), "%" + rulename.trim() + "%"));
+ }
+ if (!StringUtil.isEmpty(ruletype)) {
+ predicates.add(criteriaBuilder.equal(root.get("ruletype").as(String.class), ruletype));
+
+ }
+ if (!StringUtil.isEmpty(status)) {
+ predicates.add(criteriaBuilder.equal(root.get("status").as(String.class), status));
+ }
+ return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
+ }
+ }, pageable);
+ List<DiscountRuleShowBean> result = new ArrayList<>(0);
+ if (null != page && page.getTotalElements() > 0) {
+ for (TDiscountRule rule : page.getContent()) {
+ DiscountRuleShowBean bean = new DiscountRuleShowBean();
+ bean.setRuleid(rule.getRuleid());
+ bean.setRulename(rule.getRulename());
+ bean.setRuletype(rule.getRuletype());
+ bean.setAmount(rule.getAmount());
+ bean.setStatus(rule.getStatus());
+ bean.setDetailStatus(rule.getDetailStatus());
+ bean.setLimitcnt(rule.getLimitcnt());
+ bean.setRemark(rule.getRemark());
+ bean.setStarttime(rule.getStarttime().substring(0, 2) + ":" + rule.getStarttime().substring(2));
+ bean.setEndtime(rule.getEndtime().substring(0, 2) + ":" + rule.getEndtime().substring(2));
+ bean.setTimeperiod(bean.getStarttime() + " ~ " + bean.getEndtime());
+ result.add(bean);
+ }
}
- if (!StringUtil.isEmpty(ruletype)) {
- predicates.add(criteriaBuilder.equal(root.get("ruletype").as(String.class), ruletype));
-
- }
- if (!StringUtil.isEmpty(status)) {
- predicates.add(criteriaBuilder.equal(root.get("status").as(String.class), status));
- }
- return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
- }
- }, pageable);
- List<DiscountRuleShowBean> result = new ArrayList<>(0);
- if (null != page && page.getTotalElements() > 0) {
- for (TDiscountRule rule : page.getContent()) {
- DiscountRuleShowBean bean = new DiscountRuleShowBean();
- bean.setRuleid(rule.getRuleid());
- bean.setRulename(rule.getRulename());
- bean.setRuletype(rule.getRuletype());
- bean.setAmount(rule.getAmount());
- bean.setStatus(rule.getStatus());
- bean.setDetailStatus(rule.getDetailStatus());
- bean.setLimitcnt(rule.getLimitcnt());
- bean.setRemark(rule.getRemark());
- bean.setStarttime(rule.getStarttime().substring(0, 2) + ":" + rule.getStarttime().substring(2));
- bean.setEndtime(rule.getEndtime().substring(0, 2) + ":" + rule.getEndtime().substring(2));
- bean.setTimeperiod(bean.getStarttime() + " ~ " + bean.getEndtime());
- result.add(bean);
- }
- }
- return new PageResult<>(page.getTotalElements(), result);
- }
-
- @Override
- public PageResult<DiscountRuleShowBean> getDiscountRuleInfos(String rulename, String ruletype, int pageNo, int pageSize) {
- Pageable pageable = PageRequest.of(pageNo - 1, pageSize, Sort.by("ruleid"));
- return getDiscountRuleBySearch(rulename, ruletype, null, pageable);
- }
-
- @Override
- public boolean deleteDiscountRule(int ruleid) throws WebCheckException {
- TDiscountRule rule = discountRuleDao.findByRuleid(ruleid);
- if (null == rule) {
- throw new WebCheckException("餐补规则不存在!");
- } else if (!RestaurantConstant.STATUS_DISCOUNTRULE_UNCHECK.equals(rule.getStatus()) && !RestaurantConstant.STATUS_DISCOUNTRULE_REJECT.equals(rule.getStatus())) {
- throw new WebCheckException("待审核或驳回的餐补规则才能删除!");
+ return new PageResult<>(page.getTotalElements(), result);
}
- discountDetailDao.deleteRuleDetailsByRuleid(ruleid); //名单
- discountDevbindDao.deleteBindByRuleid(ruleid); //绑定设备
- discountRuleDao.delete(rule);
- return true;
- }
-
- @Override
- public boolean closeDiscountRule(int ruleid) throws WebCheckException {
- TDiscountRule rule = discountRuleDao.findByRuleid(ruleid);
- if (null == rule) {
- throw new WebCheckException("餐补规则不存在!");
- } else if (RestaurantConstant.STATUS_DISCOUNTRULE_CLOSED.equals(rule.getStatus())) {
- throw new WebCheckException("餐补规则已经失效!");
- } else if (!RestaurantConstant.STATUS_DISCOUNTRULE_NORMAL.equals(rule.getStatus())) {
- throw new WebCheckException("餐补规则未审核通过,不能关闭");
+ @Override
+ public PageResult<DiscountRuleShowBean> getDiscountRuleInfos(String rulename, String ruletype, int pageNo, int pageSize) {
+ Pageable pageable = PageRequest.of(pageNo - 1, pageSize, Sort.by("ruleid"));
+ return getDiscountRuleBySearch(rulename, ruletype, null, pageable);
}
+ @Override
+ public boolean deleteDiscountRule(int ruleid) throws WebCheckException {
+ TDiscountRule rule = discountRuleDao.findByRuleid(ruleid);
+ if (null == rule) {
+ throw new WebCheckException("餐补规则不存在!");
+ } else if (!RestaurantConstant.STATUS_DISCOUNTRULE_UNCHECK.equals(rule.getStatus()) && !RestaurantConstant.STATUS_DISCOUNTRULE_REJECT.equals(rule.getStatus())) {
+ throw new WebCheckException("待审核或驳回的餐补规则才能删除!");
+ }
+
+ discountDetailDao.deleteRuleDetailsByRuleid(ruleid); //名单
+ discountDevbindDao.deleteBindByRuleid(ruleid); //绑定设备
+ discountRuleDao.delete(rule);
+ return true;
+ }
+
+ @Override
+ public boolean closeDiscountRule(int ruleid) throws WebCheckException {
+ TDiscountRule rule = discountRuleDao.findByRuleid(ruleid);
+ if (null == rule) {
+ throw new WebCheckException("餐补规则不存在!");
+ } else if (RestaurantConstant.STATUS_DISCOUNTRULE_CLOSED.equals(rule.getStatus())) {
+ throw new WebCheckException("餐补规则已经失效!");
+ } else if (!RestaurantConstant.STATUS_DISCOUNTRULE_NORMAL.equals(rule.getStatus())) {
+ throw new WebCheckException("餐补规则未审核通过,不能关闭");
+ }
+
// if (discountDevbindDao.getBindcntByRuleid(ruleid) > 0) {
// throw new WebCheckException("有设备正在使用该餐补规则,请先解绑设备");
// }
- rule.setStatus(RestaurantConstant.STATUS_DISCOUNTRULE_CLOSED);
- rule.setLastsaved(systemUtilService.getSysdatetime().getHostdatetime());
- discountRuleDao.save(rule);
- return true;
- }
-
- @Override
- public boolean checkDiscountRulenameExist(String rulename, Integer ruleid) {
- if (null == ruleid) {
- if (discountRuleDao.checkRulenameExists(rulename) > 0) {
+ rule.setStatus(RestaurantConstant.STATUS_DISCOUNTRULE_CLOSED);
+ rule.setLastsaved(systemUtilService.getSysdatetime().getHostdatetime());
+ discountRuleDao.save(rule);
return true;
- }
- } else {
- if (discountRuleDao.checkRulenameExists(rulename, ruleid) > 0) {
+ }
+
+ @Override
+ public boolean checkDiscountRulenameExist(String rulename, Integer ruleid) {
+ if (null == ruleid) {
+ if (discountRuleDao.checkRulenameExists(rulename) > 0) {
+ return true;
+ }
+ } else {
+ if (discountRuleDao.checkRulenameExists(rulename, ruleid) > 0) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private TCustomer getCustomerByCardno(String cardno) {
+ if (!StringUtil.isEmpty(cardno)) {
+ List<TCustomer> list = customerDao.findAllByCardno(cardno.trim());
+ if (!StringUtil.isEmpty(list)) {
+ return list.get(0);
+ }
+ }
+ return null;
+ }
+
+ private boolean checkRuleTimeError(String starttime, String endtime, String cardno, String custid) {
+ Query query = entityManager.createNativeQuery("select count(a.id) from tb_discount_detail a, tb_discount_rule b where a.ruleid=b.ruleid and (b.status='uncheck' or b.status='normal') " +
+ "and a.cardno=:cardno and ((b.starttime<:starttime and b.endtime>:starttime) or (b.starttime<:endtime and b.endtime>:endtime)) ");
+ query.setParameter("cardno", cardno);
+ query.setParameter("starttime", starttime);
+ query.setParameter("endtime", endtime);
+ BigInteger cnt = (BigInteger) query.getSingleResult();
+ if (null != cnt && cnt.longValue() > 0) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean saveNewDiscountRule(String rulename, String ruletype, String starttime,
+ String endtime, Double amount, Integer limitcnt, MultipartFile file, TOperator oper) throws Exception {
+ TDiscountRule rule = new TDiscountRule();
+ if (discountRuleDao.checkRulenameExists(rulename) > 0) {
+ throw new WebCheckException("餐补名称已经存在!");
+ }
+ rule.setRulename(rulename);
+ rule.setRuletype(ruletype);
+ rule.setStarttime(starttime);
+ rule.setEndtime(endtime);
+ rule.setAmount(amount);
+ rule.setLimitcnt(limitcnt);
+ rule.setStatus(RestaurantConstant.STATUS_DISCOUNTRULE_UNCHECK);
+ rule.setDetailStatus(1);
+ rule.setCreateOperid(oper.getOperid());
+ String systime = systemUtilService.getSysdatetime().getHostdatetime();
+ rule.setCreatetime(systime);
+ rule.setLastsaved(systime);
+ rule.setVerno(1);
+ rule = discountRuleDao.save(rule);
+
+ String filename = file.getOriginalFilename();
+ if (!filename.endsWith(".xls") && !filename.endsWith(".xlsx")) {
+ throw new WebCheckException("文件格式错误,请选择excel文件");
+ }
+ List<Object[][]> excelData = null;
+ try {
+ if (filename.endsWith(".xls")) {
+ excelData = ImportExcelUtil.getIntegralData(file.getInputStream());//2003版本
+ } else {
+ excelData = ImportExcelUtil.getIntegralData07(file.getInputStream());//2007版本以上
+ }
+ if (null == excelData || excelData.size() < 1) {
+ throw new WebCheckException("excel文件解析错误");
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new WebCheckException("模板格式错误,请重新下载模板");
+ }
+
+
+ int index_cardno = -1;
+ int index_name = -1;
+ Object[] titleRow = excelData.get(0)[0]; //sheet1表头
+ for (int i = 0; i < titleRow.length; i++) {
+ if ("市民卡号".equals(titleRow[i])) {
+ index_cardno = i;
+ continue;
+ } else if ("姓名".equals(titleRow[i])) {
+ index_name = i;
+ continue;
+ }
+ }
+ if (index_cardno == -1 || index_name == -1 || excelData.get(0).length < 2) {
+ throw new WebCheckException("名单模板表头不能修改,且必须包含数据!");
+ }
+
+ List<String> successCardnos = new ArrayList<>(0);
+ List<String> errmsgList = new ArrayList<>(0);
+
+ try {
+ for (int n = 1; n < excelData.get(0).length; n++) {
+ String msg = "";
+ Object[] row = excelData.get(0)[n];
+ String cardno = row[index_cardno] == null ? null : row[index_cardno].toString().trim();
+ String name = row[index_name] == null ? null : row[index_name].toString().trim();
+ if (StringUtil.isEmpty(cardno)) {
+ msg += ",市民卡号为空";
+ }
+ if (StringUtil.isEmpty(name)) {
+ msg += ",姓名为空";
+ }
+ TCustomer customer = getCustomerByCardno(cardno);
+ if (!StringUtil.isEmpty(cardno)) {
+ if (null == customer) {
+ msg += ",市民卡用户不存在";
+ } else if (!customer.getCustname().equals(name)) {
+ msg += ",市民卡号与姓名不匹配!";
+ }
+ }
+ if (!StringUtil.isEmpty(cardno) && successCardnos.contains(cardno)) {
+ msg += ",市民卡号重复!";
+ } else if (null != customer && checkRuleTimeError(starttime, endtime, cardno, customer.getCustid())) {
+ msg += ",市民卡号[" + cardno + "]存在规则时间段冲突!";
+ }
+
+
+ if (!StringUtil.isEmpty(msg)) {
+ errmsgList.add("第" + (n + 1) + "行数据错误" + msg);
+ } else {
+ TDiscountDetail detail = new TDiscountDetail();
+ detail.setRuleid(rule.getRuleid());
+ detail.setCardno(cardno);
+ detail.setUsername(name);
+ detail.setUserid(customer.getCustid() + "");
+ detail.setStatus("uncheck");
+ detail.setLastsaved(systime);
+ discountDetailDao.save(detail); //保存明细
+
+ successCardnos.add(cardno);
+ }
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new WebCheckException("模板格式有误,请确保卡号为文本格式");
+ }
+
+ if (!StringUtil.isEmpty(errmsgList)) {
+ StringBuffer errmsg = new StringBuffer("导入失败,名单存在错误!");
+ for (int j = 0; j < errmsgList.size(); j++) {
+ errmsg.append("<br/>" + errmsgList.get(j));
+ if (j > 10) {
+ errmsg.append("<br/>错误太多,请仔细核对名单后再上传!");
+ }
+ }
+ throw new WebCheckException(errmsg.toString());
+ }
return true;
- }
- }
- return false;
- }
-
- private TCustomer getCustomerByCardno(String cardno) {
- if (!StringUtil.isEmpty(cardno)) {
- List<TCustomer> list = customerDao.findAllByCardno(cardno.trim());
- if (!StringUtil.isEmpty(list)) {
- return list.get(0);
- }
- }
- return null;
- }
-
- private boolean checkRuleTimeError(String starttime, String endtime, String cardno, String custid) {
- Query query = entityManager.createNativeQuery("select count(a.id) from tb_discount_detail a, tb_discount_rule b where a.ruleid=b.ruleid and (b.status='uncheck' or b.status='normal') " +
- "and a.cardno=:cardno and ((b.starttime<:starttime and b.endtime>:starttime) or (b.starttime<:endtime and b.endtime>:endtime)) ");
- query.setParameter("cardno", cardno);
- query.setParameter("starttime", starttime);
- query.setParameter("endtime", endtime);
- BigInteger cnt = (BigInteger) query.getSingleResult();
- if (null != cnt && cnt.longValue() > 0) {
- return true;
- }
- return false;
- }
-
- @Override
- public boolean saveNewDiscountRule(String rulename, String ruletype, String starttime,
- String endtime, Double amount, Integer limitcnt, MultipartFile file, TOperator oper) throws Exception {
- TDiscountRule rule = new TDiscountRule();
- if (discountRuleDao.checkRulenameExists(rulename) > 0) {
- throw new WebCheckException("餐补名称已经存在!");
- }
- rule.setRulename(rulename);
- rule.setRuletype(ruletype);
- rule.setStarttime(starttime);
- rule.setEndtime(endtime);
- rule.setAmount(amount);
- rule.setLimitcnt(limitcnt);
- rule.setStatus(RestaurantConstant.STATUS_DISCOUNTRULE_UNCHECK);
- rule.setDetailStatus(1);
- rule.setCreateOperid(oper.getOperid());
- String systime = systemUtilService.getSysdatetime().getHostdatetime();
- rule.setCreatetime(systime);
- rule.setLastsaved(systime);
- rule.setVerno(1);
- rule = discountRuleDao.save(rule);
-
- String filename = file.getOriginalFilename();
- if (!filename.endsWith(".xls") && !filename.endsWith(".xlsx")) {
- throw new WebCheckException("文件格式错误,请选择excel文件");
- }
- List<Object[][]> excelData = null;
- try{
- if (filename.endsWith(".xls")) {
- excelData = ImportExcelUtil.getIntegralData(file.getInputStream());//2003版本
- } else {
- excelData = ImportExcelUtil.getIntegralData07(file.getInputStream());//2007版本以上
- }
- if (null == excelData || excelData.size() < 1) {
- throw new WebCheckException("excel文件解析错误");
- }
- }catch (Exception e){
- e.printStackTrace();
- throw new WebCheckException("模板格式错误,请重新下载模板");
}
-
- int index_cardno = -1;
- int index_name = -1;
- Object[] titleRow = excelData.get(0)[0]; //sheet1表头
- for (int i = 0; i < titleRow.length; i++) {
- if ("市民卡号".equals(titleRow[i])) {
- index_cardno = i;
- continue;
- } else if ("姓名".equals(titleRow[i])) {
- index_name = i;
- continue;
- }
- }
- if (index_cardno == -1 || index_name == -1 || excelData.get(0).length < 2) {
- throw new WebCheckException("名单模板表头不能修改,且必须包含数据!");
- }
-
- List<String> successCardnos = new ArrayList<>(0);
- List<String> errmsgList = new ArrayList<>(0);
- for (int n = 1; n < excelData.get(0).length; n++) {
- String msg = "";
- Object[] row = excelData.get(0)[n];
- String cardno = row[index_cardno] == null ? null : row[index_cardno].toString().trim();
- String name = row[index_name] == null ? null : row[index_name].toString().trim();
- if (StringUtil.isEmpty(cardno)) {
- msg += ",市民卡号为空";
- }
- if (StringUtil.isEmpty(name)) {
- msg += ",姓名为空";
- }
- TCustomer customer = getCustomerByCardno(cardno);
- if (!StringUtil.isEmpty(cardno)) {
- if (null == customer) {
- msg += ",市民卡用户不存在";
- } else if (!customer.getCustname().equals(name)) {
- msg += ",市民卡号与姓名不匹配!";
+ @Override
+ public PageResult<TDiscountDetail> getDiscountRuleDetails(String searchkey, int ruleid, int pageNo, int pageSize) {
+ StringBuffer querySql = new StringBuffer("from TDiscountDetail t where t.ruleid=:rlid ");
+ StringBuffer countSql = new StringBuffer("select count(t.id) as cnt from TDiscountDetail t where t.ruleid=:rlid ");
+ if (!StringUtil.isEmpty(searchkey)) {
+ querySql.append(" and (t.cardno like :str or t.username like :str) ");
+ countSql.append(" and (t.cardno like :str or t.username like :str) ");
}
- }
- if (!StringUtil.isEmpty(cardno) && successCardnos.contains(cardno)) {
- msg += ",市民卡号重复!";
- } else if (null != customer && checkRuleTimeError(starttime, endtime, cardno, customer.getCustid())) {
- msg += ",市民卡号[" + cardno + "]存在规则时间段冲突!";
- }
-
-
- if (!StringUtil.isEmpty(msg)) {
- errmsgList.add("第" + (n+1) + "行数据错误" + msg);
- } else {
- TDiscountDetail detail = new TDiscountDetail();
- detail.setRuleid(rule.getRuleid());
- detail.setCardno(cardno);
- detail.setUsername(name);
- detail.setUserid(customer.getCustid() + "");
- detail.setStatus("uncheck");
- detail.setLastsaved(systime);
- discountDetailDao.save(detail); //保存明细
-
- successCardnos.add(cardno);
- }
- }
-
- if (!StringUtil.isEmpty(errmsgList)) {
- StringBuffer errmsg = new StringBuffer("导入失败,名单存在错误!");
- for (int j = 0; j < errmsgList.size(); j++) {
- errmsg.append("<br/>" + errmsgList.get(j));
- if (j > 10) {
- errmsg.append("<br/>错误太多,请仔细核对名单后再上传!");
+ querySql.append(" order by t.cardno ");
+ Query query = entityManager.createQuery(querySql.toString());
+ Query countQuery = entityManager.createQuery(countSql.toString());
+ query.setParameter("rlid", ruleid);
+ countQuery.setParameter("rlid", ruleid);
+ if (!StringUtil.isEmpty(searchkey)) {
+ query.setParameter("str", "%" + searchkey.trim() + "%");
+ countQuery.setParameter("str", "%" + searchkey.trim() + "%");
}
- }
- throw new WebCheckException(errmsg.toString());
- }
- return true;
- }
-
- @Override
- public PageResult<TDiscountDetail> getDiscountRuleDetails(String searchkey, int ruleid, int pageNo, int pageSize) {
- StringBuffer querySql = new StringBuffer("from TDiscountDetail t where t.ruleid=:rlid ");
- StringBuffer countSql = new StringBuffer("select count(t.id) as cnt from TDiscountDetail t where t.ruleid=:rlid ");
- if (!StringUtil.isEmpty(searchkey)) {
- querySql.append(" and (t.cardno like :str or t.username like :str) ");
- countSql.append(" and (t.cardno like :str or t.username like :str) ");
- }
- querySql.append(" order by t.cardno ");
- Query query = entityManager.createQuery(querySql.toString());
- Query countQuery = entityManager.createQuery(countSql.toString());
- query.setParameter("rlid", ruleid);
- countQuery.setParameter("rlid", ruleid);
- if (!StringUtil.isEmpty(searchkey)) {
- query.setParameter("str", "%" + searchkey.trim() + "%");
- countQuery.setParameter("str", "%" + searchkey.trim() + "%");
- }
- query.setFirstResult((pageNo - 1) * pageSize);
- query.setMaxResults(pageSize); //分页显示
- List<TDiscountDetail> list = query.getResultList();
- Long count = (Long) countQuery.getSingleResult();
- return new PageResult<>(count.longValue(), list);
- }
-
-
- @Override
- public PageResult<DiscountRuleShowBean> getCheckDiscountRuleInfos(String status, int pageNo, int pageSize) {
- Pageable pageable = PageRequest.of(pageNo - 1, pageSize, Sort.by(Sort.Direction.DESC, "createtime"));
- return getDiscountRuleBySearch(null, null, status, pageable);
- }
-
- @Override
- public boolean doCheckDiscountRule(int ruleid, boolean passflag, String reason, TOperator oper) throws Exception {
- TDiscountRule rule = discountRuleDao.findByRuleid(ruleid);
- if (null == rule) {
- throw new WebCheckException("餐补规则不存在!");
- } else if (!RestaurantConstant.STATUS_DISCOUNTRULE_UNCHECK.equals(rule.getStatus())) {
- throw new WebCheckException("餐补规则非待审核状态");
+ query.setFirstResult((pageNo - 1) * pageSize);
+ query.setMaxResults(pageSize); //分页显示
+ List<TDiscountDetail> list = query.getResultList();
+ Long count = (Long) countQuery.getSingleResult();
+ return new PageResult<>(count.longValue(), list);
}
- rule.setCheckOperid(oper.getOperid());
- rule.setLastsaved(systemUtilService.getSysdatetime().getHostdatetime());
- if (passflag) {
- rule.setStatus(RestaurantConstant.STATUS_DISCOUNTRULE_NORMAL);
- rule.setRemark(null);
- } else {
- rule.setStatus(RestaurantConstant.STATUS_DISCOUNTRULE_REJECT);
- rule.setRemark(reason);
- }
- discountRuleDao.save(rule);
- discountDetailDao.updateRuleDetailStatusByRuleid(rule.getStatus(), rule.getRuleid());
- return true;
- }
- @Override
- public List<DiscountRuleSelectBean> getNormalDiscountRules() {
- List<TDiscountRule> list = discountRuleDao.getDiscountRuleByStatus(RestaurantConstant.STATUS_DISCOUNTRULE_NORMAL);
- if (!StringUtil.isEmpty(list)) {
- List<DiscountRuleSelectBean> result = new ArrayList<>(0);
- for (TDiscountRule rule : list) {
- DiscountRuleSelectBean bean = new DiscountRuleSelectBean();
- bean.setRuleid(rule.getRuleid());
- String period = rule.getStarttime().substring(0, 2) + ":" + rule.getStarttime().substring(2) + " ~ " + rule.getEndtime().substring(0, 2) + ":" + rule.getEndtime().substring(2);
- bean.setRulename(rule.getRulename()+"("+period+")");
- bean.setTimeperiod(period);
- result.add(bean);
- }
- return result;
- }
- return new ArrayList<>(0);
- }
-
- @Override
- public PageResult<DiscountRuleBindShowBean> getDiscountRuleDevBindInfo(String searchkey, int pageNo, int pageSize) {
- StringBuffer querySql = new StringBuffer("select t.id,t.deviceid,b.devicename,b.devphyid,t.ruleid,a.rulename,a.status as rulestatus,t.createtime " +
- " from TB_DISCOUNT_DEVBIND t left join TB_DISCOUNT_RULE a on t.ruleid=a.ruleid left join TB_DEVICE b on t.deviceid=b.id where 1=1 ");
- StringBuffer countSql = new StringBuffer("select count(t.id) as cnt " +
- " from TB_DISCOUNT_DEVBIND t left join TB_DISCOUNT_RULE a on t.ruleid=a.ruleid left join TB_DEVICE b on t.deviceid=b.id where 1=1 ");
- if (!StringUtil.isEmpty(searchkey)) {
- querySql.append(" and (a.rulename like :str or b.devicename like :str or b.devphyid like :str) ");
- countSql.append(" and (a.rulename like :str or b.devicename like :str or b.devphyid like :str) ");
- }
- querySql.append(" order by t.createtime desc ");
- Query query = entityManager.createNativeQuery(querySql.toString());
- Query countQuery = entityManager.createNativeQuery(countSql.toString());
- if (!StringUtil.isEmpty(searchkey)) {
- query.setParameter("str", "%" + searchkey.trim() + "%");
- countQuery.setParameter("str", "%" + searchkey.trim() + "%");
- }
- query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(DiscountRuleBindShowBean.class));
- query.setFirstResult((pageNo - 1) * pageSize);
- query.setMaxResults(pageSize); //分页显示
- List<DiscountRuleBindShowBean> list = query.getResultList();
- BigInteger count = (BigInteger) countQuery.getSingleResult();
- return new PageResult<>(count.longValue(), list);
- }
-
- @Override
- public TDiscountDevbind getDiscountDevbindById(String id) {
- if (!StringUtil.isEmpty(id)) {
- return discountDevbindDao.getDiscountDevbindById(id.trim());
- }
- return null;
- }
-
- @Override
- public boolean deleteDiscountDevbind(TDiscountDevbind bind) {
- if (null != bind) {
- discountDevbindDao.delete(bind);
- return true;
- }
- return false;
- }
-
- @Override
- public PageResult<DevparaBinddevShowBean> searchRuleBindDevices(Integer devgroupid, String searchkey, int ruleid) {
- List<Integer> chirdGroupids = null;
- if (null != devgroupid) {
- Query chirdGroupQuery = entityManager.createNativeQuery(" WITH RECURSIVE r AS ( " +
- " SELECT * FROM tb_devicegroup WHERE devgroupid = :gid " +
- " union ALL " +
- " SELECT a.* FROM tb_devicegroup a, r WHERE a.pid = r.devgroupid ) " +
- " SELECT devgroupid FROM r ORDER BY devgroupid ");
- chirdGroupQuery.setParameter("gid", devgroupid.intValue());
- chirdGroupids = chirdGroupQuery.getResultList(); //递归查询所有的子节点
+ @Override
+ public PageResult<DiscountRuleShowBean> getCheckDiscountRuleInfos(String status, int pageNo, int pageSize) {
+ Pageable pageable = PageRequest.of(pageNo - 1, pageSize, Sort.by(Sort.Direction.DESC, "createtime"));
+ return getDiscountRuleBySearch(null, null, status, pageable);
}
- StringBuffer sql = new StringBuffer("select t.id as deviceid,t.devicename,t.devphyid,t.devgroupid,a.groupname as devgroupname " +
- " from TB_DEVICE t left join TB_DEVICEGROUP a on t.devgroupid=a.devgroupid " +
- " left join TB_DISCOUNT_DEVBIND b on t.id=b.deviceid and b.ruleid=:rlid where b.id is null and t.state=1 ");
- if (!StringUtil.isEmpty(chirdGroupids)) {
- sql.append(" and t.devgroupid in (" + StringUtils.join(chirdGroupids.toArray(), ",") + ") ");
- }
- if (!StringUtil.isEmpty(searchkey)) {
- sql.append(" and (t.devicename like :str or t.devphyid like :str) ");
- }
- sql.append(" order by t.id ");
- Query query = entityManager.createNativeQuery(sql.toString());
- if (!StringUtil.isEmpty(searchkey)) {
- query.setParameter("str", "%" + searchkey.trim() + "%");
- }
- query.setParameter("rlid", ruleid);
- query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(DevparaBinddevShowBean.class));
- List<DevparaBinddevShowBean> list = query.getResultList();
- return new PageResult<>(list);
- }
+ @Override
+ public boolean doCheckDiscountRule(int ruleid, boolean passflag, String reason, TOperator oper) throws Exception {
+ TDiscountRule rule = discountRuleDao.findByRuleid(ruleid);
+ if (null == rule) {
+ throw new WebCheckException("餐补规则不存在!");
+ } else if (!RestaurantConstant.STATUS_DISCOUNTRULE_UNCHECK.equals(rule.getStatus())) {
+ throw new WebCheckException("餐补规则非待审核状态");
+ }
- @Override
- public boolean saveRuleBindDevices(int ruleid, List<Integer> deviceIds, TOperator oper) throws WebCheckException {
- TDiscountRule rule = discountRuleDao.findByRuleid(ruleid);
- if (null == rule) {
- throw new WebCheckException("所选餐补规则不存在");
- } else if (!RestaurantConstant.STATUS_DISCOUNTRULE_NORMAL.equals(rule.getStatus())) {
- throw new WebCheckException("所选餐补规则状态异常");
+ rule.setCheckOperid(oper.getOperid());
+ rule.setLastsaved(systemUtilService.getSysdatetime().getHostdatetime());
+ if (passflag) {
+ rule.setStatus(RestaurantConstant.STATUS_DISCOUNTRULE_NORMAL);
+ rule.setRemark(null);
+ } else {
+ rule.setStatus(RestaurantConstant.STATUS_DISCOUNTRULE_REJECT);
+ rule.setRemark(reason);
+ }
+ discountRuleDao.save(rule);
+ discountDetailDao.updateRuleDetailStatusByRuleid(rule.getStatus(), rule.getRuleid());
+ return true;
}
- for (Integer id : deviceIds) {
- TDevice device = deviceDao.findTDeviceById(id);
- if (null == device) {
- throw new WebCheckException("终端编号为[" + id + "]的设备不存在");
- } else if (1 != device.getState()) {
- throw new WebCheckException("终端编号为[" + id + "]的设备状态异常");
- }
-
- TDiscountDevbind bind = new TDiscountDevbind();
- bind.setRuleid(rule.getRuleid());
- bind.setDeviceid(device.getId());
- bind.setCreateOperid(oper == null ? null : oper.getOperid());
- bind.setCreatetime(systemUtilService.getSysdatetime().getHostdatetime());
- discountDevbindDao.save(bind);
+ @Override
+ public List<DiscountRuleSelectBean> getNormalDiscountRules() {
+ List<TDiscountRule> list = discountRuleDao.getDiscountRuleByStatus(RestaurantConstant.STATUS_DISCOUNTRULE_NORMAL);
+ if (!StringUtil.isEmpty(list)) {
+ List<DiscountRuleSelectBean> result = new ArrayList<>(0);
+ for (TDiscountRule rule : list) {
+ DiscountRuleSelectBean bean = new DiscountRuleSelectBean();
+ bean.setRuleid(rule.getRuleid());
+ String period = rule.getStarttime().substring(0, 2) + ":" + rule.getStarttime().substring(2) + " ~ " + rule.getEndtime().substring(0, 2) + ":" + rule.getEndtime().substring(2);
+ bean.setRulename(rule.getRulename() + "(" + period + ")");
+ bean.setTimeperiod(period);
+ result.add(bean);
+ }
+ return result;
+ }
+ return new ArrayList<>(0);
}
- return true;
- }
+
+ @Override
+ public PageResult<DiscountRuleBindShowBean> getDiscountRuleDevBindInfo(String searchkey, int pageNo, int pageSize) {
+ StringBuffer querySql = new StringBuffer("select t.id,t.deviceid,b.devicename,b.devphyid,t.ruleid,a.rulename,a.status as rulestatus,t.createtime " +
+ " from TB_DISCOUNT_DEVBIND t left join TB_DISCOUNT_RULE a on t.ruleid=a.ruleid left join TB_DEVICE b on t.deviceid=b.id where 1=1 ");
+ StringBuffer countSql = new StringBuffer("select count(t.id) as cnt " +
+ " from TB_DISCOUNT_DEVBIND t left join TB_DISCOUNT_RULE a on t.ruleid=a.ruleid left join TB_DEVICE b on t.deviceid=b.id where 1=1 ");
+ if (!StringUtil.isEmpty(searchkey)) {
+ querySql.append(" and (a.rulename like :str or b.devicename like :str or b.devphyid like :str) ");
+ countSql.append(" and (a.rulename like :str or b.devicename like :str or b.devphyid like :str) ");
+ }
+ querySql.append(" order by t.createtime desc ");
+ Query query = entityManager.createNativeQuery(querySql.toString());
+ Query countQuery = entityManager.createNativeQuery(countSql.toString());
+ if (!StringUtil.isEmpty(searchkey)) {
+ query.setParameter("str", "%" + searchkey.trim() + "%");
+ countQuery.setParameter("str", "%" + searchkey.trim() + "%");
+ }
+ query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(DiscountRuleBindShowBean.class));
+ query.setFirstResult((pageNo - 1) * pageSize);
+ query.setMaxResults(pageSize); //分页显示
+ List<DiscountRuleBindShowBean> list = query.getResultList();
+ BigInteger count = (BigInteger) countQuery.getSingleResult();
+ return new PageResult<>(count.longValue(), list);
+ }
+
+ @Override
+ public TDiscountDevbind getDiscountDevbindById(String id) {
+ if (!StringUtil.isEmpty(id)) {
+ return discountDevbindDao.getDiscountDevbindById(id.trim());
+ }
+ return null;
+ }
+
+ @Override
+ public boolean deleteDiscountDevbind(TDiscountDevbind bind) {
+ if (null != bind) {
+ discountDevbindDao.delete(bind);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public PageResult<DevparaBinddevShowBean> searchRuleBindDevices(Integer devgroupid, String searchkey, int ruleid) {
+ List<Integer> chirdGroupids = null;
+ if (null != devgroupid) {
+ Query chirdGroupQuery = entityManager.createNativeQuery(" WITH RECURSIVE r AS ( " +
+ " SELECT * FROM tb_devicegroup WHERE devgroupid = :gid " +
+ " union ALL " +
+ " SELECT a.* FROM tb_devicegroup a, r WHERE a.pid = r.devgroupid ) " +
+ " SELECT devgroupid FROM r ORDER BY devgroupid ");
+ chirdGroupQuery.setParameter("gid", devgroupid.intValue());
+ chirdGroupids = chirdGroupQuery.getResultList(); //递归查询所有的子节点
+ }
+
+ StringBuffer sql = new StringBuffer("select t.id as deviceid,t.devicename,t.devphyid,t.devgroupid,a.groupname as devgroupname " +
+ " from TB_DEVICE t left join TB_DEVICEGROUP a on t.devgroupid=a.devgroupid " +
+ " left join TB_DISCOUNT_DEVBIND b on t.id=b.deviceid and b.ruleid=:rlid where b.id is null and t.state=1 ");
+ if (!StringUtil.isEmpty(chirdGroupids)) {
+ sql.append(" and t.devgroupid in (" + StringUtils.join(chirdGroupids.toArray(), ",") + ") ");
+ }
+ if (!StringUtil.isEmpty(searchkey)) {
+ sql.append(" and (t.devicename like :str or t.devphyid like :str) ");
+ }
+ sql.append(" order by t.id ");
+ Query query = entityManager.createNativeQuery(sql.toString());
+ if (!StringUtil.isEmpty(searchkey)) {
+ query.setParameter("str", "%" + searchkey.trim() + "%");
+ }
+ query.setParameter("rlid", ruleid);
+ query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(DevparaBinddevShowBean.class));
+ List<DevparaBinddevShowBean> list = query.getResultList();
+ return new PageResult<>(list);
+ }
+
+ @Override
+ public boolean saveRuleBindDevices(int ruleid, List<Integer> deviceIds, TOperator oper) throws WebCheckException {
+ TDiscountRule rule = discountRuleDao.findByRuleid(ruleid);
+ if (null == rule) {
+ throw new WebCheckException("所选餐补规则不存在");
+ } else if (!RestaurantConstant.STATUS_DISCOUNTRULE_NORMAL.equals(rule.getStatus())) {
+ throw new WebCheckException("所选餐补规则状态异常");
+ }
+
+ for (Integer id : deviceIds) {
+ TDevice device = deviceDao.findTDeviceById(id);
+ if (null == device) {
+ throw new WebCheckException("终端编号为[" + id + "]的设备不存在");
+ } else if (1 != device.getState()) {
+ throw new WebCheckException("终端编号为[" + id + "]的设备状态异常");
+ }
+
+ TDiscountDevbind bind = new TDiscountDevbind();
+ bind.setRuleid(rule.getRuleid());
+ bind.setDeviceid(device.getId());
+ bind.setCreateOperid(oper == null ? null : oper.getOperid());
+ bind.setCreatetime(systemUtilService.getSysdatetime().getHostdatetime());
+ discountDevbindDao.save(bind);
+ }
+ return true;
+ }
}
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/OfflineTransDtlServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/OfflineTransDtlServiceImpl.java
index a21021e..4ba2770 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/OfflineTransDtlServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/OfflineTransDtlServiceImpl.java
@@ -86,21 +86,28 @@
transDtlDao.save(dtl);
return null;
}
-
- TOfflineTransDtl targetDtl=transDtlDao.findById(dtl.getBillno()).get();
-
+ TOfflineTransDtl targetDtl=null;
+ Optional<TOfflineTransDtl> odtl=transDtlDao.findById(dtl.getBillno());
+ if(odtl.isPresent()){
+ targetDtl=odtl.get();
+ }else{
+ targetDtl=new TOfflineTransDtl();
+ }
+ Integer osqlno=targetDtl.getTermsqlno();
TOfflineTransDtl revDtl=new TOfflineTransDtl();
BeanUtils.copyProperties(targetDtl,revDtl);
revDtl.setBillno(systemUtilService.getRefno());
revDtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_INIT);
- revDtl.setAccdate(DateUtil.getNow("yyyyMMdd"));
- revDtl.setAcctime(DateUtil.getNow("HHmmss"));
+ revDtl.setTransdate(DateUtil.getNow("yyyyMMdd"));
+ revDtl.setTranstime(DateUtil.getNow("HHmmss"));
revDtl.setRevbillno(dtl.getBillno());
+ revDtl.setTermsqlno(dtl.getTermsqlno());
revDtl.setTranstype(RestaurantConstant.TRANSTYPE_TRANSDTL_REVERT);
revDtl.setAmount(targetDtl.getAmount()*-1.00);
transDtlDao.save(revDtl);
- targetDtl.setRevflag(1);
- transDtlDao.save(targetDtl);
+ TOfflineTransDtl offlineTransDtl=odtl.get();
+ offlineTransDtl.setRevflag(1);
+ transDtlDao.save(offlineTransDtl);
return JsonResult.ok("操作成功");
}
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java
index add5d95..e004451 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java
@@ -33,10 +33,7 @@
import javax.persistence.criteria.Root;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
@Service
public class TransDtlServiceImpl implements TransDtlService {
@@ -158,10 +155,15 @@
@Override
public JsonResult revertTransdtl(TTransDtl dtl) {
- TTransDtl targetDtl=transDtlDao.findById(dtl.getBillno()).get();
+ TTransDtl targetDtl=null;
+ Optional<TTransDtl> odtl=transDtlDao.findById(dtl.getBillno());
+ if(odtl.isPresent()){
+ targetDtl=odtl.get();
+ }
if(null==targetDtl){
return JsonResult.error("未查询到目标流水");
}
+ Integer otermsqlno=targetDtl.getTermsqlno();
TTransDtl revDtl=new TTransDtl();
BeanUtils.copyProperties(targetDtl,revDtl);
revDtl.setBillno(systemUtilService.getRefno());
@@ -175,10 +177,12 @@
revDtl.setRevbillno(dtl.getBillno());
revDtl.setAttr1(dtl.getAttr1());
revDtl.setStatus(dtl.getStatus());
+ revDtl.setTermsqlno(dtl.getTermsqlno());
revDtl.setTranstype(RestaurantConstant.TRANSTYPE_TRANSDTL_REVERT);
revDtl.setAmount(targetDtl.getAmount()*-1.00);
transDtlDao.save(revDtl);
targetDtl.setRevflag(1);
+ targetDtl.setTermsqlno(otermsqlno);
transDtlDao.save(targetDtl);
return JsonResult.ok("操作成功");
}
@@ -207,7 +211,7 @@
if(!StringUtil.isEmpty(list)){
AmountCountBean acb = list.get(0);
ManageFeeAmtBean bean = new ManageFeeAmtBean();
- bean.setManagefeecnt(acb.getTotalcnt());
+ bean.setManagefeecnt(acb.getTotalcnt().longValue());
bean.setManagefeeamt(acb.getTotalamt() == null ? 0 : Math.round(acb.getTotalamt() * 100));
return bean;
}
@@ -228,7 +232,7 @@
if (!StringUtil.isEmpty(list)) {
AmountCountBean acb = list.get(0);
SalesAmtBean bean = new SalesAmtBean();
- bean.setSalescnt(acb.getTotalcnt());
+ bean.setSalescnt(acb.getTotalcnt().longValue());
bean.setSalesamt(acb.getTotalamt() == null ? 0 : Math.round(acb.getTotalamt() * 100));
return bean;
}
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index 2e222d2..c555d6c 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -28,7 +28,7 @@
INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('max_offline_days', 1, '90', '0', '脱机使用最大天数 ([1-90] 单位:天)', '7', 'N');
INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('max_pay_cnt', 1, '999999', '1', '卡最大使用次数 ([1-999999])', '65535', 'N');
INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('min_cardbal', 1, '99999', '0', '最小卡余额 ([0-99999] 单位:分)', '1', 'N');
-INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('offline_flag', 1, NULL, NULL, '脱机消费时限开关 (0-关闭, 1-开启)', '0', 'B');
+INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('offline_flag', 1, NULL, NULL, '脱机消费时限开关 (0-关闭, 1-开启)', '1', 'B');
INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('once_limit_amt', 1, NULL, NULL, '单笔消费限额 ([1-9999] 单位:分)', '1000', 'N');
INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('return_flag', 1, NULL, NULL, '消费撤销开关 (0-关闭, 1-开启)', '1', 'B');
INSERT INTO "tb_devpara" (paraname,groupid,maxval,minval,paradesc,paraval,valtype) VALUES ('timeout', 1, '9999', '10', '超时时间 ([10-9999] 单位:秒)', '90', 'N');
@@ -269,6 +269,17 @@
INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f72009a', 90, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6bff66af016bff683f73009b', 88, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb14005f', 33, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb150061', 39, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb150062', 34, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb150063', 40, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb150064', 37, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb150065', 36, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbc8fa4016cbc91eb150066', 35, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+INSERT INTO "tb_permission"(id,resid,role_func_id,roleid) VALUES ('297e0a7e6cbca060016cbca3a983006a', 27, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
+
+
+
INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (4, '1', 4, '添加功能', '/function/add');
INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (5, '', 4, '添加父功能', '/function/loadadd');
@@ -351,10 +362,10 @@
INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (88, '', 30, '查询', '/transdtlrev/index');
INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (89, '', 30, '加载冲正页面', '/transdtlrev/loadrevert');
INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (90, '', 30, '冲正', '/transdtlrev/revert');
-INSERT INTO "tb_resource"(id,code,function_id,name,uri) VALUES 91, '', 1, '加载添加', '/custtype/loadadd');
-INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (92, '', 1, '添加', '/custtype/add');
-INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (93, '', 1, '修改', '/custtype/update');
-INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (94, '', 1, '删除', '/custtype/delete');
+INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (91, '', 1, '查询', '/custtype/index');
+--INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (92, '', 1, '添加', '/custtype/add');
+--INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (93, '', 1, '修改', '/custtype/update');
+--INSERT INTO "tb_resource" (id,code,function_id,name,uri) VALUES (94, '', 1, '删除', '/custtype/delete');
INSERT INTO "tb_role" (roleid,createtime,editflag,lastsaved,rolecode,roledesc,rolename) VALUES ('d1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '20190101000000', 0, '', 'ROLE_ADMIN', '超级管理员', '超级管理员');
INSERT INTO "tb_role" (roleid,createtime,editflag,lastsaved,rolecode,roledesc,rolename) VALUES ('2c9cab836a8af5d5016a8af6ece20000', '20190506102639', 1, '', 'ROLE_ADMIN', '系统管理员', '系统管理员');
diff --git a/src/main/resources/static/custom/module/admin.js b/src/main/resources/static/custom/module/admin.js
index e15cfdf..7f03260 100755
--- a/src/main/resources/static/custom/module/admin.js
+++ b/src/main/resources/static/custom/module/admin.js
@@ -212,7 +212,7 @@
},
formatDate:function (str) {
if (str == null || str == "") {
- return;
+ return '';
}
switch (str.length) {
case 8:
diff --git a/src/main/resources/templates/restaurant/devpara/devpara.html b/src/main/resources/templates/restaurant/devpara/devpara.html
index 5525d8d..d460615 100644
--- a/src/main/resources/templates/restaurant/devpara/devpara.html
+++ b/src/main/resources/templates/restaurant/devpara/devpara.html
@@ -51,10 +51,7 @@
}},
{
field: 'lastsaved', title: '更新时间', align: 'center', templet: function (d) {
- if(d.lastsaved!=null){
- return admin.formatDate(d.lastsaved);
- }
- return '';
+ return admin.formatDate(d.lastsaved);
}
},
{align: 'center', title: '操作', width: 250, toolbar: '#devparagroup-table-bar', fixed: 'right'}
diff --git a/src/main/resources/templates/restaurant/transdtlrev/index.html b/src/main/resources/templates/restaurant/transdtlrev/index.html
index 6a0dc4b..6b2d2c0 100644
--- a/src/main/resources/templates/restaurant/transdtlrev/index.html
+++ b/src/main/resources/templates/restaurant/transdtlrev/index.html
@@ -143,7 +143,7 @@
});
let showModel = function (data) {
- let title = data ? '修改设备' : '添加设备';
+ let title = data ? '冲正' : '冲正';
admin.putTempData('t_dtl', data);
admin.popupCenter({
title: title,