the commit.
master
jevononlie 5 months ago
commit 6ab67daae3

@ -40,4 +40,7 @@ public interface EnterpriserecyclestationService extends IService<Enterpriserecy
void saveOrUpdate(EnterpriserecyclestationForm enterpriserecyclestationForm,String id, boolean isSave) throws Exception;
//根据所属组织查询回收站
List<EnterpriserecyclestationEntity> getListByCompanyId(String company_id);
}

@ -2,9 +2,7 @@ package jnpf.service;
import jnpf.model.stationarea.*;
import jnpf.entity.*;
import java.util.*;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -18,7 +16,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
public interface StationAreaService extends IService<StationAreaEntity> {
List<StationAreaEntity> getList(StationAreaPagination stationAreaPagination);
List<StationAreaEntity> getTypeList(StationAreaPagination stationAreaPagination, String dataType);
List<StationAreaEntity> getTypeList(StationAreaPagination stationAreaPagination,String dataType);
StationAreaEntity getInfo(String id);
@ -30,8 +28,8 @@ public interface StationAreaService extends IService<StationAreaEntity> {
//子表方法
//副表数据方法
String checkForm(StationAreaForm form, int i);
String checkForm(StationAreaForm form,int i);
void saveOrUpdate(StationAreaForm stationAreaForm, String id, boolean isSave) throws Exception;
void saveOrUpdate(StationAreaForm stationAreaForm,String id, boolean isSave) throws Exception;
}

@ -642,4 +642,11 @@ public class EnterpriserecyclestationServiceImpl extends ServiceImpl<Enterpriser
}
}
}
@Override
public List<EnterpriserecyclestationEntity> getListByCompanyId(String enterprise_id) {
QueryWrapper<EnterpriserecyclestationEntity> wrapper = new QueryWrapper<>();
wrapper.eq("enterprise_id", enterprise_id);
return null;
}
}

@ -5,18 +5,26 @@ import jnpf.mapper.StationAreaMapper;
import jnpf.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jnpf.model.stationarea.*;
import java.math.BigDecimal;
import cn.hutool.core.util.ObjectUtil;
import jnpf.permission.model.authorize.AuthorizeConditionModel;
import jnpf.util.GeneraterSwapUtil;
import jnpf.database.model.superQuery.SuperQueryJsonModel;
import jnpf.database.model.superQuery.ConditionJsonModel;
import jnpf.database.model.superQuery.SuperQueryConditionModel;
import java.lang.reflect.Field;
import com.baomidou.mybatisplus.annotation.TableField;
import java.util.regex.Pattern;
import jnpf.model.QueryModel;
import java.util.stream.Collectors;
import jnpf.base.model.ColumnDataModel;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -25,13 +33,17 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.text.SimpleDateFormat;
import jnpf.util.*;
import java.util.*;
import jnpf.base.UserInfo;
import jnpf.permission.entity.UserEntity;
/**
*
*
* V3.5
* https://www.jnpfsoft.com
@ -39,7 +51,7 @@ import jnpf.permission.entity.UserEntity;
* 2024-05-21
*/
@Service
public class StationAreaServiceImpl extends ServiceImpl<StationAreaMapper, StationAreaEntity> implements StationAreaService{
public class StationAreaServiceImpl extends ServiceImpl<StationAreaMapper, StationAreaEntity> implements StationAreaService {
@Autowired
private GeneraterSwapUtil generaterSwapUtil;
@ -47,298 +59,314 @@ public class StationAreaServiceImpl extends ServiceImpl<StationAreaMapper, Stati
private UserProvider userProvider;
@Override
public List<StationAreaEntity> getList(StationAreaPagination stationAreaPagination){
return getTypeList(stationAreaPagination,stationAreaPagination.getDataType());
public List<StationAreaEntity> getList(StationAreaPagination stationAreaPagination) {
return getTypeList(stationAreaPagination, stationAreaPagination.getDataType());
}
/** 列表查询 */
/**
*
*/
@Override
public List<StationAreaEntity> getTypeList(StationAreaPagination stationAreaPagination,String dataType){
String userId=userProvider.get().getUserId();
List<String> AllIdList =new ArrayList();
List<List<String>> intersectionList =new ArrayList<>();
public List<StationAreaEntity> getTypeList(StationAreaPagination stationAreaPagination, String dataType) {
String userId = userProvider.get().getUserId();
List<String> AllIdList = new ArrayList();
List<List<String>> intersectionList = new ArrayList<>();
boolean isPc = ServletUtil.getHeader("jnpf-origin").equals("pc");
String columnData = !isPc ? StationAreaConstant.getAppColumnData() : StationAreaConstant.getColumnData();
ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(columnData, ColumnDataModel.class);
String ruleJson = !isPc ? JsonUtil.getObjectToString(columnDataModel.getRuleListApp()) : JsonUtil.getObjectToString(columnDataModel.getRuleList());
int total=0;
int stationAreaNum =0;
QueryWrapper<StationAreaEntity> stationAreaQueryWrapper=new QueryWrapper<>();
int total = 0;
int stationAreaNum = 0;
QueryWrapper<StationAreaEntity> stationAreaQueryWrapper = new QueryWrapper<>();
List<String> allSuperIDlist = new ArrayList<>();
String superOp ="";
if (ObjectUtil.isNotEmpty(stationAreaPagination.getSuperQueryJson())){
String superOp = "";
if (ObjectUtil.isNotEmpty(stationAreaPagination.getSuperQueryJson())) {
List<String> allSuperList = new ArrayList<>();
List<List<String>> intersectionSuperList = new ArrayList<>();
List<List<String>> intersectionSuperList = new ArrayList<>();
String queryJson = stationAreaPagination.getSuperQueryJson();
SuperJsonModel superJsonModel = JsonUtil.getJsonToBean(queryJson, SuperJsonModel.class);
int superNum = 0;
QueryWrapper<StationAreaEntity> stationAreaSuperWrapper = new QueryWrapper<>();
stationAreaSuperWrapper = generaterSwapUtil.getCondition(new QueryModel(stationAreaSuperWrapper,StationAreaEntity.class,queryJson,"0"));
stationAreaSuperWrapper = generaterSwapUtil.getCondition(new QueryModel(stationAreaSuperWrapper, StationAreaEntity.class, queryJson, "0"));
int stationAreaNum1 = stationAreaSuperWrapper.getExpression().getNormal().size();
if (stationAreaNum1>0){
List<String> stationAreaList =this.list(stationAreaSuperWrapper).stream().map(StationAreaEntity::getId).collect(Collectors.toList());
if (stationAreaNum1 > 0) {
List<String> stationAreaList = this.list(stationAreaSuperWrapper).stream().map(StationAreaEntity::getId).collect(Collectors.toList());
allSuperList.addAll(stationAreaList);
intersectionSuperList.add(stationAreaList);
superNum++;
}
superOp = superNum > 0 ? superJsonModel.getMatchLogic() : "";
//and or
if(superOp.equalsIgnoreCase("and")){
if (superOp.equalsIgnoreCase("and")) {
allSuperIDlist = generaterSwapUtil.getIntersection(intersectionSuperList);
}else{
} else {
allSuperIDlist = allSuperList;
}
}
List<String> allRuleIDlist = new ArrayList<>();
String ruleOp ="";
if (ObjectUtil.isNotEmpty(ruleJson)){
String ruleOp = "";
if (ObjectUtil.isNotEmpty(ruleJson)) {
List<String> allRuleList = new ArrayList<>();
List<List<String>> intersectionRuleList = new ArrayList<>();
List<List<String>> intersectionRuleList = new ArrayList<>();
SuperJsonModel ruleJsonModel = JsonUtil.getJsonToBean(ruleJson, SuperJsonModel.class);
int ruleNum = 0;
QueryWrapper<StationAreaEntity> stationAreaSuperWrapper = new QueryWrapper<>();
stationAreaSuperWrapper = generaterSwapUtil.getCondition(new QueryModel(stationAreaSuperWrapper,StationAreaEntity.class,ruleJson,"0"));
stationAreaSuperWrapper = generaterSwapUtil.getCondition(new QueryModel(stationAreaSuperWrapper, StationAreaEntity.class, ruleJson, "0"));
int stationAreaNum1 = stationAreaSuperWrapper.getExpression().getNormal().size();
if (stationAreaNum1>0){
List<String> stationAreaList =this.list(stationAreaSuperWrapper).stream().map(StationAreaEntity::getId).collect(Collectors.toList());
if (stationAreaNum1 > 0) {
List<String> stationAreaList = this.list(stationAreaSuperWrapper).stream().map(StationAreaEntity::getId).collect(Collectors.toList());
allRuleList.addAll(stationAreaList);
intersectionRuleList.add(stationAreaList);
ruleNum++;
}
ruleOp = ruleNum > 0 ? ruleJsonModel.getMatchLogic() : "";
//and or
if(ruleOp.equalsIgnoreCase("and")){
if (ruleOp.equalsIgnoreCase("and")) {
allRuleIDlist = generaterSwapUtil.getIntersection(intersectionRuleList);
}else{
} else {
allRuleIDlist = allRuleList;
}
}
boolean pcPermission = false;
boolean appPermission = false;
if(isPc && pcPermission){
if (!userProvider.get().getIsAdministrator()){
Object stationAreaObj=generaterSwapUtil.getAuthorizeCondition(new QueryModel(stationAreaQueryWrapper,StationAreaEntity.class,stationAreaPagination.getMenuId(),"0"));
if (ObjectUtil.isEmpty(stationAreaObj)){
return new ArrayList<>();
} else {
stationAreaQueryWrapper = (QueryWrapper<StationAreaEntity>)stationAreaObj;
if( stationAreaQueryWrapper.getExpression().getNormal().size()>0){
stationAreaNum++;
}
}
}
}
if(!isPc && appPermission){
if (!userProvider.get().getIsAdministrator()){
Object stationAreaObj=generaterSwapUtil.getAuthorizeCondition(new QueryModel(stationAreaQueryWrapper,StationAreaEntity.class,stationAreaPagination.getMenuId(),"0"));
if (ObjectUtil.isEmpty(stationAreaObj)){
return new ArrayList<>();
} else {
stationAreaQueryWrapper = (QueryWrapper<StationAreaEntity>)stationAreaObj;
if( stationAreaQueryWrapper.getExpression().getNormal().size()>0){
stationAreaNum++;
}
boolean pcPermission = false;
boolean appPermission = false;
if (isPc && pcPermission) {
if (!userProvider.get().getIsAdministrator()) {
Object stationAreaObj = generaterSwapUtil.getAuthorizeCondition(new QueryModel(stationAreaQueryWrapper, StationAreaEntity.class, stationAreaPagination.getMenuId(), "0"));
if (ObjectUtil.isEmpty(stationAreaObj)) {
return new ArrayList<>();
} else {
stationAreaQueryWrapper = (QueryWrapper<StationAreaEntity>) stationAreaObj;
if (stationAreaQueryWrapper.getExpression().getNormal().size() > 0) {
stationAreaNum++;
}
}
}
}
if (!isPc && appPermission) {
if (!userProvider.get().getIsAdministrator()) {
Object stationAreaObj = generaterSwapUtil.getAuthorizeCondition(new QueryModel(stationAreaQueryWrapper, StationAreaEntity.class, stationAreaPagination.getMenuId(), "0"));
if (ObjectUtil.isEmpty(stationAreaObj)) {
return new ArrayList<>();
} else {
stationAreaQueryWrapper = (QueryWrapper<StationAreaEntity>) stationAreaObj;
if (stationAreaQueryWrapper.getExpression().getNormal().size() > 0) {
stationAreaNum++;
}
}
}
}
if(isPc){
if(ObjectUtil.isNotEmpty(stationAreaPagination.getAreaName())){
stationAreaNum++;
}
}
if (isPc) {
if (ObjectUtil.isNotEmpty(stationAreaPagination.getAreaName())) {
stationAreaNum++;
String value = stationAreaPagination.getAreaName() instanceof List ?
JsonUtil.getObjectToString(stationAreaPagination.getAreaName()) :
String.valueOf(stationAreaPagination.getAreaName());
stationAreaQueryWrapper.lambda().like(StationAreaEntity::getAreaName,value);
JsonUtil.getObjectToString(stationAreaPagination.getAreaName()) :
String.valueOf(stationAreaPagination.getAreaName());
stationAreaQueryWrapper.lambda().like(StationAreaEntity::getAreaName, value);
}
if(ObjectUtil.isNotEmpty(stationAreaPagination.getAreaType())){
stationAreaNum++;
if (ObjectUtil.isNotEmpty(stationAreaPagination.getAreaType())) {
stationAreaNum++;
List<String> idList = new ArrayList<>();
try {
String[][] areaType = JsonUtil.getJsonToBean(stationAreaPagination.getAreaType(),String[][].class);
for(int i=0;i<areaType.length;i++){
if(areaType[i].length>0){
idList.add(JsonUtil.getObjectToString(Arrays.asList(areaType[i])));
}
}
}catch (Exception e1){
try {
List<String> areaType = JsonUtil.getJsonToList(stationAreaPagination.getAreaType(),String.class);
if(areaType.size()>0){
idList.addAll(areaType);
}
}catch (Exception e2){
idList.add(String.valueOf(stationAreaPagination.getAreaType()));
}
}
stationAreaQueryWrapper.lambda().and(t->{
idList.forEach(tt->{
t.like(StationAreaEntity::getAreaType, tt).or();
});
});
List<String> idList = new ArrayList<>();
try {
String[][] areaType = JsonUtil.getJsonToBean(stationAreaPagination.getAreaType(), String[][].class);
for (int i = 0; i < areaType.length; i++) {
if (areaType[i].length > 0) {
idList.add(JsonUtil.getObjectToString(Arrays.asList(areaType[i])));
}
}
} catch (Exception e1) {
try {
List<String> areaType = JsonUtil.getJsonToList(stationAreaPagination.getAreaType(), String.class);
if (areaType.size() > 0) {
idList.addAll(areaType);
}
} catch (Exception e2) {
idList.add(String.valueOf(stationAreaPagination.getAreaType()));
}
}
stationAreaQueryWrapper.lambda().and(t -> {
idList.forEach(tt -> {
t.like(StationAreaEntity::getAreaType, tt).or();
});
});
}
if(ObjectUtil.isNotEmpty(stationAreaPagination.getStatus())){
stationAreaNum++;
if (ObjectUtil.isNotEmpty(stationAreaPagination.getStatus())) {
stationAreaNum++;
stationAreaQueryWrapper.lambda().eq(StationAreaEntity::getStatus,stationAreaPagination.getStatus());
stationAreaQueryWrapper.lambda().eq(StationAreaEntity::getStatus, stationAreaPagination.getStatus());
}
if(ObjectUtil.isNotEmpty(stationAreaPagination.getCompanyId())){
stationAreaNum++;
if (ObjectUtil.isNotEmpty(stationAreaPagination.getCompanyId())) {
stationAreaNum++;
List<String> idList = new ArrayList<>();
try {
String[][] companyId = JsonUtil.getJsonToBean(stationAreaPagination.getCompanyId(),String[][].class);
for(int i=0;i<companyId.length;i++){
if(companyId[i].length>0){
idList.add(JsonUtil.getObjectToString(Arrays.asList(companyId[i])));
}
}
}catch (Exception e1){
try {
List<String> companyId = JsonUtil.getJsonToList(stationAreaPagination.getCompanyId(),String.class);
if(companyId.size()>0){
idList.add(JsonUtil.getObjectToString(companyId));
}
}catch (Exception e2){
idList.add(String.valueOf(stationAreaPagination.getCompanyId()));
}
}
stationAreaQueryWrapper.lambda().and(t->{
idList.forEach(tt->{
t.like(StationAreaEntity::getCompanyId, tt).or();
});
});
List<String> idList = new ArrayList<>();
try {
String[][] companyId = JsonUtil.getJsonToBean(stationAreaPagination.getCompanyId(), String[][].class);
for (int i = 0; i < companyId.length; i++) {
if (companyId[i].length > 0) {
idList.add(JsonUtil.getObjectToString(Arrays.asList(companyId[i])));
}
}
} catch (Exception e1) {
try {
List<String> companyId = JsonUtil.getJsonToList(stationAreaPagination.getCompanyId(), String.class);
if (companyId.size() > 0) {
idList.add(JsonUtil.getObjectToString(companyId));
}
} catch (Exception e2) {
idList.add(String.valueOf(stationAreaPagination.getCompanyId()));
}
}
stationAreaQueryWrapper.lambda().and(t -> {
idList.forEach(tt -> {
t.like(StationAreaEntity::getCompanyId, tt).or();
});
});
}
}
List<String> intersection = generaterSwapUtil.getIntersection(intersectionList);
if (total>0){
if (intersection.size()==0){
if (total > 0) {
if (intersection.size() == 0) {
intersection.add("jnpfNullList");
}
stationAreaQueryWrapper.lambda().in(StationAreaEntity::getId, intersection);
}
//是否有高级查询
if (StringUtil.isNotEmpty(superOp)){
if (allSuperIDlist.size()==0){
//是否有高级查询
if (StringUtil.isNotEmpty(superOp)) {
if (allSuperIDlist.size() == 0) {
allSuperIDlist.add("jnpfNullList");
}
List<String> finalAllSuperIDlist = allSuperIDlist;
stationAreaQueryWrapper.lambda().and(t->t.in(StationAreaEntity::getId, finalAllSuperIDlist));
stationAreaQueryWrapper.lambda().and(t -> t.in(StationAreaEntity::getId, finalAllSuperIDlist));
}
//是否有数据过滤查询
if (StringUtil.isNotEmpty(ruleOp)){
if (allRuleIDlist.size()==0){
//是否有数据过滤查询
if (StringUtil.isNotEmpty(ruleOp)) {
if (allRuleIDlist.size() == 0) {
allRuleIDlist.add("jnpfNullList");
}
List<String> finalAllRuleIDlist = allRuleIDlist;
stationAreaQueryWrapper.lambda().and(t->t.in(StationAreaEntity::getId, finalAllRuleIDlist));
stationAreaQueryWrapper.lambda().and(t -> t.in(StationAreaEntity::getId, finalAllRuleIDlist));
}
//排序
if(StringUtil.isEmpty(stationAreaPagination.getSidx())){
if (StringUtil.isEmpty(stationAreaPagination.getSidx())) {
stationAreaQueryWrapper.lambda().orderByDesc(StationAreaEntity::getId);
}else{
} else {
try {
String sidx = stationAreaPagination.getSidx();
String[] strs= sidx.split("_name");
String[] strs = sidx.split("_name");
StationAreaEntity stationAreaEntity = new StationAreaEntity();
Field declaredField = stationAreaEntity.getClass().getDeclaredField(strs[0]);
declaredField.setAccessible(true);
String value = declaredField.getAnnotation(TableField.class).value();
stationAreaQueryWrapper="asc".equals(stationAreaPagination.getSort().toLowerCase())?stationAreaQueryWrapper.orderByAsc(value):stationAreaQueryWrapper.orderByDesc(value);
stationAreaQueryWrapper = "asc".equals(stationAreaPagination.getSort().toLowerCase()) ? stationAreaQueryWrapper.orderByAsc(value) : stationAreaQueryWrapper.orderByDesc(value);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
if("0".equals(dataType)){
if((total>0 && AllIdList.size()>0) || total==0){
Page<StationAreaEntity> page=new Page<>(stationAreaPagination.getCurrentPage(), stationAreaPagination.getPageSize());
IPage<StationAreaEntity> userIPage=this.page(page, stationAreaQueryWrapper);
return stationAreaPagination.setData(userIPage.getRecords(),userIPage.getTotal());
}else{
if ("0".equals(dataType)) {
if ((total > 0 && AllIdList.size() > 0) || total == 0) {
Page<StationAreaEntity> page = new Page<>(stationAreaPagination.getCurrentPage(), stationAreaPagination.getPageSize());
IPage<StationAreaEntity> userIPage = this.page(page, stationAreaQueryWrapper);
return stationAreaPagination.setData(userIPage.getRecords(), userIPage.getTotal());
} else {
List<StationAreaEntity> list = new ArrayList();
return stationAreaPagination.setData(list, list.size());
}
}else{
} else {
return this.list(stationAreaQueryWrapper);
}
}
@Override
public StationAreaEntity getInfo(String id){
QueryWrapper<StationAreaEntity> queryWrapper=new QueryWrapper<>();
queryWrapper.lambda().eq(StationAreaEntity::getId,id);
public StationAreaEntity getInfo(String id) {
QueryWrapper<StationAreaEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(StationAreaEntity::getId, id);
return this.getOne(queryWrapper);
}
@Override
public void create(StationAreaEntity entity){
public void create(StationAreaEntity entity) {
this.save(entity);
}
@Override
public boolean update(String id, StationAreaEntity entity){
public boolean update(String id, StationAreaEntity entity) {
return this.updateById(entity);
}
@Override
public void delete(StationAreaEntity entity){
if(entity!=null){
public void delete(StationAreaEntity entity) {
if (entity != null) {
this.removeById(entity.getId());
}
}
/** 验证表单唯一字段,正则,非空 i-0新增-1修改*/
/**
* i-0-1
*/
@Override
public String checkForm(StationAreaForm form,int i) {
boolean isUp =StringUtil.isNotEmpty(form.getId()) && !form.getId().equals("0");
String id="";
public String checkForm(StationAreaForm form, int i) {
boolean isUp = StringUtil.isNotEmpty(form.getId()) && !form.getId().equals("0");
String id = "";
String countRecover = "";
if (isUp){
if (isUp) {
id = form.getId();
}
//主表字段验证
if(StringUtil.isEmpty(form.getAreaName())){
return "区域名称不能为空";
}
if(StringUtil.isEmpty(form.getAreaMapInfo())){
return "地图信息不能为空";
}
if (StringUtil.isEmpty(form.getAreaName())) {
return "区域名称不能为空";
}
if (StringUtil.isEmpty(form.getAreaMapInfo())) {
return "地图信息不能为空";
}
return countRecover;
}
/**
* ()
* @param id
* @param stationAreaForm
* @return
*/
* ()
*
* @param id
* @param stationAreaForm
* @return
*/
@Override
@Transactional
public void saveOrUpdate(StationAreaForm stationAreaForm,String id, boolean isSave) throws Exception{
UserInfo userInfo=userProvider.get();
public void saveOrUpdate(StationAreaForm stationAreaForm, String id, boolean isSave) throws Exception {
UserInfo userInfo = userProvider.get();
UserEntity userEntity = generaterSwapUtil.getUser(userInfo.getUserId());
stationAreaForm = JsonUtil.getJsonToBean(
generaterSwapUtil.swapDatetime(StationAreaConstant.getFormData(),stationAreaForm),StationAreaForm.class);
generaterSwapUtil.swapDatetime(StationAreaConstant.getFormData(), stationAreaForm), StationAreaForm.class);
StationAreaEntity entity = JsonUtil.getJsonToBean(stationAreaForm, StationAreaEntity.class);
if(isSave){
String mainId = RandomUtil.uuId() ;
entity.setCreatorUserId(userInfo.getUserId());
entity.setDeleteTime(DateUtil.getNowDate());
entity.setLastModifyUserId(null);
entity.setLastModifyTime(null);
if (isSave) {
String mainId = RandomUtil.uuId();
entity.setCreatorUserId(userInfo.getUserId());
entity.setCreatorTime(DateUtil.getNowDate());
entity.setOrganizeJsonId(generaterSwapUtil.getCurrentOrgIds(userInfo.getOrganizeId(), "all"));
entity.setLastModifyUserId(userInfo.getUserId());
entity.setLastModifyTime(DateUtil.getNowDate());
entity.setCompanyId(generaterSwapUtil.getCurrentOrgIds(userInfo.getOrganizeId(),"company"));
entity.setId(mainId);
}else{
entity.setCreatorUserId(userInfo.getUserId());
entity.setDeleteTime(DateUtil.getNowDate());
entity.setLastModifyUserId(null);
entity.setLastModifyTime(null);
} else {
entity.setCreatorUserId(userInfo.getUserId());
entity.setCreatorTime(DateUtil.getNowDate());
entity.setOrganizeJsonId(generaterSwapUtil.getCurrentOrgIds(userInfo.getOrganizeId(), "all"));
entity.setLastModifyUserId(null);
entity.setLastModifyTime(null);
entity.setCompanyId(generaterSwapUtil.getCurrentOrgIds(userInfo.getOrganizeId(),"company"));
}
this.saveOrUpdate(entity);

@ -1,33 +1,39 @@
package jnpf.controller;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jnpf.base.ActionResult;
import jnpf.base.vo.PageListVO;
import jnpf.base.vo.PaginationVO;
import jnpf.entity.StationAreaEntity;
import jnpf.model.stationarea.Position;
import jnpf.model.stationarea.StationAreaConstant;
import jnpf.model.stationarea.StationAreaForm;
import jnpf.model.stationarea.StationAreaPagination;
import jnpf.service.EnterpriserecyclestationService;
import jnpf.service.StationAreaService;
import jnpf.util.GeneraterSwapUtil;
import jnpf.util.JsonUtil;
import jnpf.util.StringUtil;
import jnpf.util.UserProvider;
import jnpf.base.UserInfo;
import jnpf.exception.DataException;
import jnpf.permission.entity.UserEntity;
import jnpf.service.*;
import jnpf.entity.*;
import jnpf.util.*;
import jnpf.model.stationarea.*;
import jnpf.utils.AreaUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.*;
import jnpf.annotation.JnpfField;
import jnpf.base.vo.PageListVO;
import jnpf.base.vo.PaginationVO;
import jnpf.base.vo.DownloadVO;
import jnpf.config.ConfigValueUtil;
import jnpf.base.entity.ProvinceEntity;
import java.io.IOException;
import java.util.stream.Collectors;
import jnpf.engine.entity.FlowTaskEntity;
import jnpf.exception.WorkFlowException;
import org.springframework.transaction.annotation.Transactional;
/**
*
@ -51,6 +57,7 @@ public class StationAreaController {
@Autowired
private StationAreaService stationAreaService;
@Autowired
private EnterpriserecyclestationService stationService;
@ -200,7 +207,7 @@ public class StationAreaController {
//判断点所属区域
@Operation(summary = "判断当前位置所属区域")
@PostMapping("")
@PostMapping("/isInArea")
public ActionResult isInArea(@RequestBody Position position) {
//获取所有站点
List<StationAreaEntity> result = new ArrayList<>();
@ -219,8 +226,8 @@ public class StationAreaController {
} else return ActionResult.fail("当前所在位置不在任何区域中!");
}
@Operation(summary = "获取该位置绑定的回收站列表")
@PostMapping("")
@Operation(summary = "获取该位置区域绑定的回收站列表")
@PostMapping("/getBindStation")
public ActionResult getBindStation(@RequestBody Position position) {
//获取
StationAreaEntity stationArea = null;
@ -236,8 +243,9 @@ public class StationAreaController {
}
}
if (stationArea != null) {
// todo 根据组织编号 获取回收站清单
return ActionResult.success(stationArea);
//
List<EnterpriserecyclestationEntity> stations = stationService.getListByCompanyId(stationArea.getCompanyId());
return ActionResult.success(stations);
} else {
return ActionResult.fail("当前所在超出接单范围!");
}

@ -1,9 +1,7 @@
package jnpf.utils;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import jnpf.util.JsonUtil;
import java.math.BigDecimal;
import java.util.*;
@ -96,13 +94,17 @@ public class AreaUtil {
* @return
*/
public static List<Map<String, Object>> parsePolygonFromJson(String json) {
List<Map<String, Object>> list = JsonUtil.getJsonToListMap(json);
Map start = list.get(0);
Map end = list.get(list.size() - 1);
List<HashMap> list = JSON.parseArray(json, HashMap.class);
HashMap start = list.get(0);
HashMap end = list.get(list.size() - 1);
if (!start.equals(end)) {
list.add(start);
}
return list;
List<Map<String, Object>> maps = new ArrayList<>();
for (HashMap map : list) {
maps.add(map);
}
return maps;
}
/**
@ -115,50 +117,36 @@ public class AreaUtil {
List<Map<String, Object>> polygon = parsePolygonFromJson(polygonJson);
boolean isInside = false;
for (int i = 0, j = polygon.size() - 1; i < polygon.size(); i++) {
for (int i = 0, j = polygon.size() - 1; i < polygon.size(); j = i++) {
Map<String, Object> vertex1 = polygon.get(i);
Map<String, Object> vertex2 = polygon.get(j);
// 转换BigDecimal为double进行计算
BigDecimal lat1 = (BigDecimal) vertex1.get("lat");
BigDecimal lng1 = (BigDecimal) vertex1.get("lng");
BigDecimal lat2 = (BigDecimal) vertex2.get("lat");
BigDecimal lng2 = (BigDecimal) vertex2.get("lng");
if (lng1.compareTo(lng) != 0 && lng2.compareTo(lng) != 0 && // 确保测试点的经度不在边段的端点上
lng.compareTo(lng1) * lng.compareTo(lng2) < 0) { // 确保测试点的经度在线段的两端点之间
// 计算交点纬度的估计值
BigDecimal numerator = lat2.subtract(lat1);
BigDecimal denominator = lng2.subtract(lng1);
BigDecimal latCross = lat1.add(numerator.multiply(lng.subtract(lng1)).divide(denominator, 20, BigDecimal.ROUND_HALF_UP));
// 检查测试点的纬度是否在边段的纬度范围内
if (lat.compareTo(latCross) <= 0 && latCross.compareTo(lat1) <= 0 || // 测试点在边段的下方或边段是水平的且测试点在边段上
lat.compareTo(latCross) >= 0 && latCross.compareTo(lat2) >= 0) { // 测试点在边段的上方或边段是水平的且测试点在边段上
// 如果没有交点(即边段是水平的或垂直的)或测试点正好在边段上,我们假设交点存在
// 因为这不会影响边的穿越数
isInside = !isInside;
} else if (lat.compareTo(latCross) < 0 && latCross.compareTo(lat1) > 0 && latCross.compareTo(lat2) < 0) {
// 测试点在边段的左上方
isInside = !isInside;
} else if (lat.compareTo(latCross) > 0 && latCross.compareTo(lat1) < 0 && latCross.compareTo(lat2) > 0) {
// 测试点在边段的右下方
isInside = !isInside;
}
BigDecimal lat1 = new BigDecimal(vertex1.get("lat").toString());
BigDecimal lng1 = new BigDecimal(vertex1.get("lng").toString());
BigDecimal lat2 = new BigDecimal(vertex2.get("lat").toString());
BigDecimal lng2 = new BigDecimal(vertex2.get("lng").toString());
boolean intersect = (lng1.compareTo(lng) > 0) != (lng2.compareTo(lng) > 0) &&
lat.compareTo(lat1.add(lat2.subtract(lat1)
.multiply(lng.subtract(lng1))
.divide(lng2.subtract(lng1), 20, BigDecimal.ROUND_HALF_UP))) < 0;
if (intersect) {
isInside = !isInside;
}
j = i; // 移至下一个顶点
}
return isInside;
}
public static void main(String[] args) {
String json = "[{\"lat\":39.974765162066554,\"lng\":116.3056148240612},{\"lat\":39.97686980052487,\"lng\":116.41753216959114},{\"lat\":39.90896256376373,\"lng\":16.41821877318944},{\"lat\":39.90764586140172,\"lng\":116.31007778559433}]";
BigDecimal testLat = new BigDecimal(39.933711764440616);
BigDecimal testLng = new BigDecimal(116.3959039571746);
String json = "[{\"lat\":39.98423552382614,\"lng\":116.3059581286434},{\"lat\":39.986865947052266,\"lng\":116.3783954344508},{\"lat\":39.94897808062252,\"lng\":116.37942533460955},{\"lat\":39.94818852953558,\"lng\":116.3093911759388},{\"lat\":39.960820297511674,\"lng\":116.30801795711886}]";
BigDecimal testLat = new BigDecimal(39.94397741373967);
BigDecimal testLng = new BigDecimal(116.21807210599582);
BigDecimal testLat2 = new BigDecimal(39.97292354297105);
BigDecimal testLng2 = new BigDecimal(116.34818459585586);
boolean isInside = isInsidePolygon(json, testLat, testLng);
boolean isInside2 = isInsidePolygon(json, testLat2, testLng2);
System.out.println(isInside);
System.out.println(isInside2);
}
}

@ -9,7 +9,7 @@ import java.util.Date;
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-05-21
* @ 2024-05-22
*/
@Data
@TableName("nx_station_area")

@ -10,7 +10,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-05-21
* @ 2024-05-22
*/
@Data
public class StationAreaForm {
@ -38,9 +38,12 @@ public class StationAreaForm {
/** 创建用户 **/
@JsonProperty("creatorUserId")
private String creatorUserId;
/** 删除时间 **/
@JsonProperty("deleteTime")
private String deleteTime;
/** 创建时间 **/
@JsonProperty("creatorTime")
private String creatorTime;
/** 所属组织 **/
@JsonProperty("organizeJsonId")
private Object organizeJsonId;
/** 修改用户 **/
@JsonProperty("lastModifyUserId")
private String lastModifyUserId;

@ -11,7 +11,7 @@ import java.util.List;
* @ V3.5
* @ https://www.jnpfsoft.com
* @ JNPF
* @ 2024-05-21
* @ 2024-05-22
*/
@Data
public class StationAreaPagination extends Pagination {

@ -7,8 +7,13 @@
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
module.exports = {
//测试环境接口配置 3333
APIURl: 'http://222.71.165.187:30000'
//生产环境接口配置 5555
// APIURl: 'http://222.71.165.187:50000'
// 开发环境接口配置
APIURl: 'http://127.0.0.1:30000'
// APIURl: 'http://127.0.0.1:30000'
// 测试环境接口配置
// APIURl: 'http://192.168.0.23:30000'
}

@ -80,26 +80,30 @@
</div>
<el-table :data="dataForm.tableField172" size='mini'>
<el-table-column type="index" width="50" label="序号" align="center" />
<el-table-column prop="productName" label="商品名称">
<el-table-column prop="productName" width="200" label="商品名称">
<template slot-scope="scope">
<p>{{ scope.row.productName }}</p>
</template>
</el-table-column>
<el-table-column prop="productActualWeight" label="废品实际重量">
<el-table-column prop="productActualWeight" width="150" label="废品实际重量">
<template slot-scope="scope">
<p>{{ scope.row.productActualWeight }}</p>
</template>
</el-table-column>
<el-table-column prop="recoveryPrice" label="下单时回收单价">
<el-table-column prop="recoveryPrice" width="150" label="下单时回收单价">
<template slot-scope="scope">
<p>{{ scope.row.recoveryPrice }}</p>
</template>
</el-table-column>
<el-table-column prop="actualRecoveryPrice" label="实际回收单价">
<el-table-column prop="actualRecoveryPrice" width="150" label="实际回收单价">
<template slot-scope="scope">
<p>{{ scope.row.actualRecoveryPrice }}</p>
</template>
</el-table-column>
<el-table-column label="">
<template slot-scope="scope">
</template>
</el-table-column>
</el-table>
</jnpf-form-tip-item>
</el-col>

@ -87,11 +87,12 @@
areaName : '',
areaType : "",
status : "1",
companyId : [],
areaMapInfo : '',
companyId : "",
areaMapInfo : "[{'lat':39.98423552382614,'lng':116.3059581286434},{'lat':39.986865947052266,'lng':116.3783954344508},{'lat':39.94897808062252,'lng':116.37942533460955},{'lat':39.94818852953558,'lng':116.3093911759388},{'lat':39.960820297511674,'lng':116.30801795711886}]",
areaDesc : '',
creatorUserId : "",
deleteTime : "",
creatorTime : "",
organizeJsonId : "",
lastModifyUserId : "",
lastModifyTime : "",
},

File diff suppressed because one or more lines are too long

@ -37,7 +37,7 @@
<el-col :span="24" >
<jnpf-form-tip-item
label="区域名称" tipLabel="围栏区域名称" prop="areaName" >
<JnpfInput v-model="dataForm.areaName" @change="changeData('areaName',-1)"
<JnpfInput v-model="dataForm.areaName" @change="changeData('areaName',-1)"
placeholder="电子围栏名称" clearable :style='{"width":"100%"}'>
</JnpfInput>
</jnpf-form-tip-item>
@ -45,7 +45,7 @@
<el-col :span="24" >
<jnpf-form-tip-item
label="区域类型" tipLabel="请选择围栏类型" prop="areaType" >
<JnpfSelect v-model="dataForm.areaType" @change="changeData('areaType',-1)"
<JnpfSelect v-model="dataForm.areaType" @change="changeData('areaType',-1)"
placeholder="请选择围栏类型" clearable :style='{"width":"100%"}' :options="areaTypeOptions" :props="areaTypeProps" >
</JnpfSelect>
</jnpf-form-tip-item>
@ -53,7 +53,7 @@
<el-col :span="24" >
<jnpf-form-tip-item
label="是否启用" prop="status" >
<JnpfRadio v-model="dataForm.status" @change="changeData('status',-1)"
<JnpfRadio v-model="dataForm.status" @change="changeData('status',-1)"
optionType="default" direction="horizontal" size="small" :options="statusOptions" :props="statusProps" >
</JnpfRadio>
</jnpf-form-tip-item>
@ -61,23 +61,23 @@
<el-col :span="24" >
<jnpf-form-tip-item
label="绑定商户" tipLabel="绑定商户" prop="companyId" >
<JnpfOrganizeSelect v-model="dataForm.companyId" @change="changeData('companyId',-1)"
placeholder="请选择商户" selectType="all" :ableIds="ableAll.companyIdableIds" clearable :style='{"width":"100%"}'>
<JnpfOrganizeSelect v-model="dataForm.companyId" @change="changeData('companyId',-1)"
placeholder="请选择商户" selectType="custom" :ableIds="ableAll.companyIdableIds" clearable :style='{"width":"100%"}'>
</JnpfOrganizeSelect>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item label="电子围栏" tipLabel="在地图上绘制电子围栏" prop="areaMapInfo">
<JnpfInput @focus="handLeArea" placeholder="点击绘制电子围栏"
:maxlength="65539" readonly prefix-icon='el-icon-map-location' :style='{ "width": "100%" }'
show-password>
</JnpfInput>
</jnpf-form-tip-item>
<jnpf-form-tip-item
label="地图信息" tipLabel="在地图上绘制电子围栏" prop="areaMapInfo" >
<JnpfInput v-model="dataForm.areaMapInfo" @change="changeData('areaMapInfo',-1)"
placeholder="绘制电子围栏区域" @focus="handLeArea" readonly :maxlength="65539" clearable prefix-icon='el-icon-map-location' :style='{"width":"100%"}' show-password >
</JnpfInput>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item
label="区域描述" tipLabel="请输入区域描述" prop="areaDesc" >
<JnpfTextarea v-model="dataForm.areaDesc" @change="changeData('areaDesc',-1)"
<JnpfTextarea v-model="dataForm.areaDesc" @change="changeData('areaDesc',-1)"
placeholder="请输入不超过两百字的区域描述" :style='{"width":"100%"}' true type="textarea" :autosize='{"minRows":4,"maxRows":4}' >
</JnpfTextarea>
</jnpf-form-tip-item>
@ -85,7 +85,7 @@
<el-col :span="24" >
<jnpf-form-tip-item
label="修改用户" prop="lastModifyUserId" >
<JnpfInput v-model="dataForm.lastModifyUserId" @change="changeData('lastModifyUserId',-1)"
<JnpfInput v-model="dataForm.lastModifyUserId" @change="changeData('lastModifyUserId',-1)"
placeholder="系统自动生成" readonly :style='{"width":"100%"}'>
</JnpfInput>
</jnpf-form-tip-item>
@ -93,7 +93,7 @@
<el-col :span="24" >
<jnpf-form-tip-item
label="修改时间" prop="lastModifyTime" >
<JnpfInput v-model="dataForm.lastModifyTime" @change="changeData('lastModifyTime',-1)"
<JnpfInput v-model="dataForm.lastModifyTime" @change="changeData('lastModifyTime',-1)"
placeholder="系统自动生成" readonly :style='{"width":"100%"}'>
</JnpfInput>
</jnpf-form-tip-item>
@ -147,7 +147,7 @@
},
//
ableAll:{
},
companyIdableIds: [["@currentOrgAndSubOrg"]], },
tableRows:{
},
Vmodel:"",
@ -156,11 +156,12 @@
areaName : undefined,
areaType : undefined,
status : "1",
companyId : [],
areaMapInfo : undefined,
companyId : undefined,
areaMapInfo : "[{'lat':39.98423552382614,'lng':116.3059581286434},{'lat':39.986865947052266,'lng':116.3783954344508},{'lat':39.94897808062252,'lng':116.37942533460955},{'lat':39.94818852953558,'lng':116.3093911759388},{'lat':39.960820297511674,'lng':116.30801795711886}]",
areaDesc : undefined,
creatorUserId : undefined,
deleteTime : undefined,
creatorTime : undefined,
organizeJsonId : undefined,
lastModifyUserId : undefined,
lastModifyTime : undefined,
},
@ -191,14 +192,14 @@
companyId: [
{
required: true,
message: '请至少选择一个',
message: '请选择商户',
trigger: 'change'
},
],
areaMapInfo: [
{
required: true,
message: '绘制电子围栏区域',
message: '请至少选择一个',
trigger: 'blur'
},
],
@ -217,7 +218,8 @@
areaMapInfo:[] ,
areaDesc:[] ,
creatorUserId:[] ,
deleteTime:[] ,
creatorTime:[] ,
organizeJsonId:[] ,
lastModifyUserId:[] ,
lastModifyTime:[] ,
},

@ -31,10 +31,25 @@
</JnpfSelect>
</el-form-item>
</el-col>
<template v-if="showAll">
<el-col :span="6">
<el-form-item label="绑定商户">
<JnpfOrganizeSelect
selectType="all" v-model="query.companyId" placeholder="请选择商户" clearable
multiple />
</el-form-item>
</el-col>
</template>
<el-col :span="6">
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="search()"></el-button>
<el-button icon="el-icon-refresh-right" @click="reset()"></el-button>
<el-button type="text" icon="el-icon-arrow-down" @click="showAll=true" v-if="!showAll">
展开
</el-button>
<el-button type="text" icon="el-icon-arrow-up" @click="showAll=false" v-else>
收起
</el-button>
</el-form-item>
</el-col>
</el-form>
@ -60,11 +75,6 @@
:span-method="arraySpanMethod"
>
<el-table-column
prop="stationCode"
label="站点编号" align="center"
sortable="custom" >
</el-table-column>
<el-table-column
prop="areaName"
label="区域名称" align="center"
@ -73,6 +83,11 @@
<el-table-column
prop="areaType"
label="区域类型" align="center"
>
</el-table-column>
<el-table-column
prop="companyId"
label="绑定商户" align="left"
>
</el-table-column>
<el-table-column
@ -103,6 +118,11 @@
<el-table-column
prop="lastModifyTime"
label="修改时间" align="center"
>
</el-table-column>
<el-table-column
prop="creatorTime"
label="创建时间" align="left"
>
</el-table-column>
<el-table-column label="操作"
@ -173,6 +193,7 @@
exportList:[],
columnList,
showAll: false,
superQueryVisible: false,
superQueryJson,
uploadBoxVisible: false,
@ -181,6 +202,7 @@
areaName:undefined,
areaType:undefined,
status:undefined,
companyId:undefined,
},
treeProps: {
children: 'children',
@ -209,7 +231,6 @@
statusOptions:[],
statusProps:{"label":"fullName","value":"enCode" },
interfaceRes: {
stationCode:[] ,
},
}
},

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save