Commit f6dccf6a by 王衍超

Merge branch 'develop' of gitlab.beecode.cn:kunlun/xyst_dinas/xyst_dinas_backend into develop

parents e753e230 fb705210
......@@ -1207,7 +1207,7 @@
<m:function-node>
<m:id>d20901ea-e5ca-4ab9-808b-20c7bc108e3f</m:id>
<m:name>drainage_basin_approve</m:name>
<m:title>流域区域审</m:title>
<m:title>流域区域审</m:title>
<m:index>4000</m:index>
<m:license></m:license>
<m:privilege></m:privilege>
......
......@@ -195,7 +195,7 @@ public class DateTimeUtils {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, year);
calendar.set(year, 1,1, 0, 0, 0);
calendar.set(year, Calendar.JANUARY,1, 0, 0, 0);
return calendar.getTime();
}
......@@ -211,7 +211,7 @@ public class DateTimeUtils {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, year);
calendar.set(year, 12,31, 23, 59, 59);
calendar.set(year, Calendar.DECEMBER,31, 23, 59, 59);
return calendar.getTime();
}
......
......@@ -23,4 +23,5 @@ public interface SandMiningAreaDao extends BaseDao {
void modify(KObject kobject);
Object groupByDischarging(List<UUID> regionalCompanyIds);
}
......@@ -65,6 +65,7 @@ public class DinasTypeDaoImpl extends AbstractBaseDao implements DinasTypeDao, D
@Override
public Page<KObject> listDinasTypeInfoPaging(Page<KObject> page) {
KClass bean = Amino.getStaticMetadataContext().getBean(ENTITY, KClass.class);
KClass detailBean = Amino.getStaticMetadataContext().getBean(STATION_DINAS_TYPE_DETAIL_ENTITY, KClass.class);
DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName());
addRegionalCompanyFilter(detachedCriteria);
detachedCriteria.add(Restrictions.eq("del", false));
......@@ -72,17 +73,10 @@ public class DinasTypeDaoImpl extends AbstractBaseDao implements DinasTypeDao, D
page.setTotal(template.findByCriteria(detachedCriteria).size());
int offset = page.getPageSize() * (page.getPageNo() - 1);
List<KObject> list = (List<KObject>) template.findByCriteria(detachedCriteria, offset, page.getPageSize());
List<KObject> details = new ArrayList<>();
for (KObject kObject : list) {
details = new ArrayList<>();
KObject stations = kObject.get("stations");
KObject[] kObjects = stations.toArray();
for (KObject object : kObjects) {
if(!object.getBoolean("del")){
details.add(object);
}
}
kObject.set("stations",details);
KObject kObject1 = detailBean.newInstance();
kObject1.set("dinasType",kObject);
kObject.set("stations",template.findByExample(STATION_DINAS_TYPE_DETAIL_ENTITY,kObject1));
}
page.setDatas(list);
return page;
......
......@@ -7,15 +7,17 @@ import com.beecode.bcp.type.KClass;
import com.beecode.bcp.type.KObject;
import com.beecode.inz.basis.internal.dao.AbstractBaseDao;
import com.beecode.inz.common.BaseConstants;
import com.xyst.dinas.biz.constant.ProductionLineConstant;
import com.xyst.dinas.biz.constant.SandMiningAreaConstant;
import com.xyst.dinas.biz.dao.DinasTypeDao;
import com.xyst.dinas.biz.dao.SandMiningAreaDao;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.hibernate.transform.Transformers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate5.HibernateTemplate;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
......@@ -43,7 +45,7 @@ public class SandMiningAreaDaoImpl extends AbstractBaseDao implements SandMining
if(null!=sandMiningAreaStatus){
detachedCriteria.add(Restrictions.eq("status", sandMiningAreaStatus));
}
dinasTypeDao.addRegionalCompanyFilter(detachedCriteria);
dinasTypeDao.addRegionalCompanyFilter(detachedCriteria);
detachedCriteria.addOrder(Order.desc("sortOrder"));
int offset = page.getPageSize() * (page.getPageNo() - 1);
......@@ -85,6 +87,26 @@ public class SandMiningAreaDaoImpl extends AbstractBaseDao implements SandMining
//生成采区预警设置信息
}
@Override
public Object groupByDischarging(List<UUID> regionalCompanyIds) {
DetachedCriteria detachedCriteria = getDetachedCriteria(regionalCompanyIds);
detachedCriteria.add(Restrictions.eq("del", false));
detachedCriteria.setProjection(Projections.projectionList()
.add(Projections.alias(Projections.sum("sandMiningQuantity"),"sandMiningQuantity"))
.add(Projections.alias(Projections.groupProperty("regionalCompany.id"),"regionalCompany")));
detachedCriteria.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
return template.findByCriteria(detachedCriteria);
}
private DetachedCriteria getDetachedCriteria(List<UUID> regionalCompanyIds) {
KClass bean = Amino.getStaticMetadataContext().getBean(SandMiningAreaConstant.ENTITY, KClass.class);
DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName());
if(!CollectionUtils.isEmpty(regionalCompanyIds)){
detachedCriteria.add(Restrictions.in("regionalCompany.id", regionalCompanyIds));
}
return detachedCriteria;
}
@Override
public UUID create(KObject kObject) {
......
......@@ -12,10 +12,13 @@ import com.xyst.dinas.biz.warn.WarningServiceImpl;
import com.xyst.dinas.biz.warn.service.WarningService;
import org.apache.commons.collections.CollectionUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
......@@ -92,5 +95,59 @@ public class SandMiningAreaServiceImpl implements SandMiningAreaService {
sandMiningAreaDao.deleteById(id);
}
@Override
public Object groupByDischarging(List<UUID> regionalCompanyIds) {
return sandMiningAreaDao.groupByDischarging(regionalCompanyIds);
}
@Override
public List<HashMap<String, Object>> listByRegionalCompanyIds(List<UUID> regionalCompanyIds) {
//查询所有采区
HashMap<String, Object> whereMap = new HashMap<>(1);
whereMap.put("status",2);
whereMap.put("del",false);
List<KObject> kObjects = sandMiningAreaDao.listByAttributes(whereMap);
List<HashMap<String,Object>> regionalCompanyList = new ArrayList<>();
HashMap<String, Object> regionalCompany = new HashMap<>(1);
HashMap<String, Object> temp = new HashMap<>(12);
HashMap<String, Object> area;
ArrayList<HashMap<String, Object>> sandMiningAreas1;
for (KObject kObject : kObjects) {
UUID regionalCompanyId = kObject.get("regionalCompany").getUuid("id");
String regionalCompanyName = kObject.get("regionalCompany").getString("name");
if(!temp.containsKey(regionalCompanyId.toString())){
temp.put(regionalCompanyId.toString(),regionalCompanyId);
regionalCompany = new HashMap<>(4);
regionalCompany.put(regionalCompanyId.toString(),regionalCompanyId);
regionalCompany.put("regionalCompanyName",regionalCompanyName);
regionalCompany.put("regionalCompanyId",regionalCompanyId);
regionalCompanyList.add(regionalCompany);
}
}
for (HashMap<String, Object> stringObjectHashMap : regionalCompanyList) {
for (KObject kObject : kObjects) {
UUID regionalCompanyId = kObject.get("regionalCompany").getUuid("id");
if(stringObjectHashMap.containsKey(regionalCompanyId.toString())){
area= new HashMap<>(3);
area.put("id",kObject.getUuid("id"));
area.put("sandMiningAreaName",kObject.getString("sandMiningAreaName"));
area.put("sandMiningQuantity",kObject.getDouble("sandMiningQuantity"));
Object sandMiningAreas = stringObjectHashMap.get("sandMiningAreas");
if(null!=sandMiningAreas){
sandMiningAreas1= (ArrayList<HashMap<String, Object>>) sandMiningAreas;
sandMiningAreas1.add(area);
}else{
sandMiningAreas1 = new ArrayList<>();
sandMiningAreas1.add(area);
}
stringObjectHashMap.put("sandMiningAreas",sandMiningAreas1);
}
}
}
return regionalCompanyList;
}
}
......@@ -3,6 +3,8 @@ package com.xyst.dinas.biz.service;
import com.beecode.bap.attachment.common.Page;
import com.beecode.bcp.type.KObject;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
public interface SandMiningAreaService {
......@@ -20,4 +22,8 @@ public interface SandMiningAreaService {
void update(KObject kobject);
void deleteById(UUID id);
Object groupByDischarging(List<UUID> regionalCompanyIds);
List<HashMap<String, Object>> listByRegionalCompanyIds(List<UUID> regionalCompanyIds);
}
......@@ -19,6 +19,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.imageio.event.IIOWriteWarningListener;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
/**
......@@ -49,6 +51,21 @@ public class SandMiningAreaController {
return ResponseObj.success("查询成功",sandMiningAreaService.queryByPaging(objectPage,sandMiningAreaStatus));
}
@RequestMapping(value = "list/byRegionalCompanyIds", method = RequestMethod.GET)
public ResponseObj listByRegionalCompanyIds(
@RequestParam(name = "regionalCompanyIds",required = false) List<UUID> regionalCompanyIds
) throws Exception {
List<HashMap<String,Object>> sandMiningAreas= sandMiningAreaService.listByRegionalCompanyIds(regionalCompanyIds);
return ResponseObj.success("查询成功",sandMiningAreas);
}
@RequestMapping(value = "groupByDischarging", method = RequestMethod.GET)
public ResponseObj groupByDischarging(
@RequestParam(name = "regionalCompanyIds",required = false) List<UUID> regionalCompanyIds ){
return ResponseObj.success("查询成功",sandMiningAreaService.groupByDischarging(regionalCompanyIds));
}
/**
* 新建采砂区
......
......@@ -56,10 +56,10 @@
<comment>砂石是否售卖,0不售卖 1还售卖</comment>
</column>
</property>
<bag name="stations" cascade="none" inverse="true" lazy="extra">
<key column="dinas_type_id" not-null="true" />
<one-to-many entity-name="com.xyst.dinas.biz.datamodel.Station$DinasTypeDetail"/>
</bag>
<!-- <bag name="stations" cascade="none" inverse="true" lazy="extra">-->
<!-- <key column="dinas_type_id" not-null="true" />-->
<!-- <one-to-many entity-name="com.xyst.dinas.biz.datamodel.Station$DinasTypeDetail"/>-->
<!-- </bag>-->
<property name="reason" type="nstring" not-null="false">
<column name="reason" length="300" >
<comment>备注</comment>
......
......@@ -21,6 +21,7 @@ dependencies {
compile project(":inz.basis")
compile project(":xyst.dinas.project")
compile project(":xyst.dinas.biz")
compile project(":xyst.dinas.sales")
testCompile lib.amino_boot_web
......
......@@ -11,6 +11,8 @@ import com.xyst.dinas.production.internal.service.SandMiningServiceImpl;
import com.xyst.dinas.production.service.SandMiningService;
import com.xyst.dinas.production.task.SandMiningExpiredSchedule;
import com.xyst.dinas.production.task.SandMiningExpiredTask;
import com.xyst.dinas.production.task.WarehousingStatusExpiredSchedule;
import com.xyst.dinas.production.task.WarehousingTask;
import com.xyst.dinas.production.web.SandMiningController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
......@@ -58,6 +60,17 @@ public class SandMiningConfiguration {
public SandMiningExpiredTask sandMiningExpiredTask() {
return new SandMiningExpiredTask();
}
@Bean
public WarehousingTask warehousingTask() {
return new WarehousingTask();
}
@Bean
public WarehousingStatusExpiredSchedule warehousingStatusExpiredSchedule() {
return new WarehousingStatusExpiredSchedule();
}
@Bean("com.xyst.dinas.production.internal.SandShipWarnSettingProcessor")
public SandShipWarnSettingProcessor sandShipWarnSettingProcessor() {
return new SandShipWarnSettingProcessor();
......
......@@ -5,6 +5,7 @@ import com.beecode.bcp.type.KObject;
import com.beecode.inz.basis.dao.BaseDao;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
......@@ -19,6 +20,8 @@ public interface DischargingDao extends BaseDao {
void deleteById(UUID id);
List<HashMap<String, Object>> groupInfo(List<UUID> regionalCompanyIds, Integer year, Boolean isGroupByMonth, Boolean isGroupByRegionalCompany, Boolean isGroupBySandMiningArea);
List<KObject> getByCodeNum(String name, UUID id);
void modify(KObject kobject);
......@@ -34,4 +37,5 @@ public interface DischargingDao extends BaseDao {
Object groupInfo(UUID transportShipId, Integer type, Date startDate, Date endDate, Integer sandMiningAreaType, List<UUID> stationIds, UUID sandMiningAreaId, UUID sandMiningShipId, UUID parentId);
Double getAllDischargingWeightByYearAndSandAreaId(Date dischargingTime, UUID billId);
}
......@@ -32,4 +32,7 @@ public interface ProductionPlanReportDao extends BaseDao {
UUID creteDetails(KObject insertDetailKobject);
void deleteByStationAndDate(UUID stationId, Date convertStringToDate1);
List<KObject> getNoWareHousing(List<UUID> productionLineIds);
}
......@@ -38,6 +38,7 @@ public class SandWarningExeProcessor implements DataProcessor {
List<RowData> rowDatas = context.getRowDatas();
String sandAreaName="";
String shipName="";
String regionalCompanyName="";
for (RowData row : rowDatas) {
//采区名称 人员
UUID billId = UUID.fromString(row.get("billId").toString());
......@@ -48,15 +49,21 @@ public class SandWarningExeProcessor implements DataProcessor {
KObject byId = sandMiningAreaService.getById(billId);
sandAreaName = byId.getString("sandMiningAreaName");
shipName="-";
regionalCompanyName=byId.get("regionalCompany").getString("name");
row.put("detail", warnSetting.getMax());
}else if(WarnSettingConstant.SAND_SHIP_WARN_BILL_TYPE.equals(billType)){
KObject sandMining = sandMiningService.getById(billId);
sandAreaName= sandMining.get("sandMiningArea").getString("sandMiningAreaName");
shipName=sandMining.get("ship").getString("shipName");
regionalCompanyName=sandMining.get("regionalCompany").getString("name");
row.put("detail", row.get("target").toString());
}
row.put("sandAreaName", sandAreaName);
row.put("sandAreaName", sandAreaName);
row.put("shipName", shipName);
row.put("regionalCompanyName", regionalCompanyName);
String personnel = row.get("personnel") != null ? row.get("personnel").toString() : "";
StringBuilder personnelName = new StringBuilder();
......
......@@ -16,8 +16,11 @@ import com.xyst.dinas.production.enumeration.DischargingTypeEnum;
import org.hibernate.criterion.*;
import org.hibernate.query.Query;
import org.hibernate.transform.Transformers;
import org.hibernate.type.StandardBasicTypes;
import org.hibernate.type.Type;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate5.HibernateTemplate;
import org.springframework.util.CollectionUtils;
import java.util.*;
......@@ -40,7 +43,8 @@ public class DischargingDaoImpl extends AbstractBaseDao implements DischargingDa
@Override
public Page<KObject> listDischargingInfoPaging(Page<KObject> page, UUID transportShipId, Integer type, Date startDate, Date endDate, Integer sandMiningAreaType, List<UUID> stationIds, UUID sandMiningAreaId, UUID shipId, UUID parentId) {
DetachedCriteria detachedCriteria = getDetachedCriteria(type, transportShipId, startDate, endDate, sandMiningAreaType, stationIds, sandMiningAreaId, shipId, parentId);
DetachedCriteria detachedCriteria = getDetachedCriteria(type, transportShipId, startDate, endDate, sandMiningAreaType, stationIds, sandMiningAreaId, shipId, parentId, null);
dinasTypeDao.addRegionalCompanyFilter(detachedCriteria);
detachedCriteria.addOrder(Order.desc("createTime"));
int offset = page.getPageSize() * (page.getPageNo() - 1);
page.setTotal(template.findByCriteria(detachedCriteria).size());
......@@ -52,7 +56,8 @@ public class DischargingDaoImpl extends AbstractBaseDao implements DischargingDa
@Override
public Object groupInfo(UUID transportShipId, Integer type, Date startDate, Date endDate, Integer sandMiningAreaType, List<UUID> stationIds, UUID sandMiningAreaId, UUID sandMiningShipId, UUID parentId) {
DetachedCriteria detachedCriteria = getDetachedCriteria(type, transportShipId, startDate, endDate, sandMiningAreaType, stationIds, sandMiningAreaId, sandMiningShipId, parentId);
DetachedCriteria detachedCriteria = getDetachedCriteria(type, transportShipId, startDate, endDate, sandMiningAreaType, stationIds, sandMiningAreaId, sandMiningShipId, parentId, null);
dinasTypeDao.addRegionalCompanyFilter(detachedCriteria);
//采区数量
detachedCriteria.setProjection(Projections.projectionList().add(Projections.alias(Projections.countDistinct("sandMiningArea"), "sandMiningAreaCount"))
//采砂船数量
......@@ -71,16 +76,45 @@ public class DischargingDaoImpl extends AbstractBaseDao implements DischargingDa
Calendar calendar = Calendar.getInstance();
calendar.setTime(dischargingTime);
int i = calendar.get(Calendar.YEAR);
DetachedCriteria detachedCriteria = getDetachedCriteria(0, null, DateTimeUtils.getYearStart(i), DateTimeUtils.getYearEnd(i), null, null, billId, null, null);
DetachedCriteria detachedCriteria = getDetachedCriteria(null, null, DateTimeUtils.getYearStart(i), DateTimeUtils.getYearEnd(i), null, null, billId, null, null, null);
dinasTypeDao.addRegionalCompanyFilter(detachedCriteria);
detachedCriteria.setProjection(Projections.projectionList().add(Projections.alias(Projections.sum("dischargingWeight"), "sumDischargingWeight")));
detachedCriteria.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List<HashMap<String, Object>> byCriteria = (List<HashMap<String, Object>>)template.findByCriteria(detachedCriteria);
List<HashMap<String, Object>> byCriteria = (List<HashMap<String, Object>>) template.findByCriteria(detachedCriteria);
HashMap<String, Object> stringObjectHashMap = byCriteria.get(0);
Object dischargingWeight = stringObjectHashMap.get("dischargingWeight");
Object dischargingWeight = stringObjectHashMap.get("sumDischargingWeight");
return Double.valueOf(dischargingWeight.toString());
}
@Override
public List<HashMap<String, Object>> groupInfo(List<UUID> regionalCompanyIds, Integer year, Boolean isGroupByMonth, Boolean isGroupByRegionalCompany, Boolean isGroupBySandMiningArea) {
DetachedCriteria detachedCriteria = getDetachedCriteria(null, null, DateTimeUtils.getYearStart(year), DateTimeUtils.getYearEnd(year), null, null, null, null, null, regionalCompanyIds);
ProjectionList add = Projections.projectionList()
.add(Projections.alias(Projections.sum("dischargingWeight"), "sumDischargingWeight"))
.add(Projections.alias(Projections.sqlGroupProjection(" year({alias}.discharging_time) as year", " year({alias}.discharging_time)", new String[]{"year"}, new Type[]{StandardBasicTypes.INTEGER}), "year"));
if (isGroupByMonth) {
add.add(Projections.alias(
Projections.sqlGroupProjection("month({alias}.discharging_time) as month",
"month({alias}.discharging_time)",
new String[]{"month"},
new Type[]{StandardBasicTypes.INTEGER}), "month"));
}
if (isGroupByRegionalCompany) {
add.add(Projections.alias(Projections.groupProperty("regionalCompany.id"), "regionalCompany"));
}
if (isGroupBySandMiningArea) {
add.add(Projections.alias(Projections.groupProperty("sandMiningArea.id"), "sandMiningArea"));
}
detachedCriteria.setProjection(add);
// projL.add(Projections.sqlGroupProjection("day({alias}.dataHoraEnt) as day, month({alias}.dataHoraEnt) as month, year({alias}.dataHoraEnt) as year", "day({alias}.dataHoraEnt), month({alias}.dataHoraEnt), year({alias}.dataHoraEnt)", new String[]{"day","month", "year"}, (org.hibernate.type.Type[]) new Type[]{Hibernate.INTEGER, Hibernate.INTEGER, Hibernate.INTEGER}));
detachedCriteria.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List<HashMap<String, Object>> byCriteria = (List<HashMap<String, Object>>) template.findByCriteria(detachedCriteria);
return byCriteria;
}
/**
* @param type
......@@ -94,7 +128,7 @@ public class DischargingDaoImpl extends AbstractBaseDao implements DischargingDa
* @param parentId
* @return
*/
private DetachedCriteria getDetachedCriteria(Integer type, UUID transportShipId, Date startDate, Date endDate, Integer sandMiningAreaType, List<UUID> stationIds, UUID sandMiningAreaId, UUID shipId, UUID parentId) {
private DetachedCriteria getDetachedCriteria(Integer type, UUID transportShipId, Date startDate, Date endDate, Integer sandMiningAreaType, List<UUID> stationIds, UUID sandMiningAreaId, UUID shipId, UUID parentId, List<UUID> regionalCompanyIds) {
KClass bean = Amino.getStaticMetadataContext().getBean(DischargingConstant.ENTITY, KClass.class);
DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName());
ArrayList<Criterion> criteria = new ArrayList<>();
......@@ -129,10 +163,13 @@ public class DischargingDaoImpl extends AbstractBaseDao implements DischargingDa
} else {
criteria.add(Restrictions.isNull("parentId"));
}
if (!CollectionUtils.isEmpty(regionalCompanyIds)) {
criteria.add(Restrictions.in("regionalCompany.id", regionalCompanyIds));
}
for (Criterion criterion : criteria) {
dis.add(criterion);
}
dinasTypeDao.addRegionalCompanyFilter(detachedCriteria);
detachedCriteria.add(Restrictions.and(dis));
return detachedCriteria;
}
......
......@@ -18,6 +18,7 @@ import org.hibernate.query.Query;
import org.hibernate.transform.Transformers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate5.HibernateTemplate;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
......@@ -56,7 +57,7 @@ public class ProductionPlanReportDaoImpl extends AbstractBaseDao implements Prod
if(null!=endDate){
detachedCriteria.add(Restrictions.le("productionPlanDate", startDate));
}
dinasTypeDao.addRegionalCompanyFilter(detachedCriteria);
dinasTypeDao.addRegionalCompanyFilter(detachedCriteria);
detachedCriteria.addOrder(Order.desc(BaseConstants.CREATE_TIME));
int offset = page.getPageSize() * (page.getPageNo() - 1);
......@@ -193,6 +194,19 @@ public class ProductionPlanReportDaoImpl extends AbstractBaseDao implements Prod
);
}
@Override
public List<KObject> getNoWareHousing(List<UUID> productionLineIds) {
DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(ENTITY);
detachedCriteria.add(Restrictions.eq(BaseConstants.DEL, false));
if(CollectionUtils.isEmpty(productionLineIds)){
detachedCriteria.add(Restrictions.le("productionPlanDate", new Date()));
}else{
detachedCriteria.add(Restrictions.in("id",productionLineIds));
}
detachedCriteria.add(Restrictions.eq("warehousingStatus", false));
return (List<KObject>)template.findByCriteria(detachedCriteria);
}
/**
* 抽象方法,需要实现类提供HibernateTemplate
......
package com.xyst.dinas.production.internal.service;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
......@@ -58,6 +59,12 @@ public class DischargingServiceImpl implements DischargingService {
}
@Override
public List<HashMap<String,Object>> groupInfoByYear(List<UUID> regionalCompanyIds, Integer year, Boolean isGroupByMonth, Boolean isGroupByRegionalCompany, Boolean isGroupBySandMiningArea) {
return dischargingDao.groupInfo(regionalCompanyIds,year,isGroupByMonth,isGroupByRegionalCompany,isGroupBySandMiningArea);
}
@Override
public UUID addDischarging(KObject kObject) {
int type = kObject.getInt("type");
......@@ -152,7 +159,7 @@ public class DischargingServiceImpl implements DischargingService {
kObject.set("sandMiningShip", shipInfoDao.load(sandMiningShip));
KObject sandMiningArea = stationDao.load(SandMiningAreaConstant.ENTITY, sandMiningAreaId);
String sandMiningAreaName = sandMiningArea.getString("sandMiningAreaName");
kObject.set("sandMiningArea", sandMiningAreaName);
kObject.set("sandMiningArea", sandMiningArea);
if (DischargingTypeEnum.NORMAL_DATA.getValue() == type) {
//如果本月有修正数据,将parentId赋值
UUID transportShip = kObject.get("transportShip").getUuid("id");
......
......@@ -15,7 +15,9 @@ import com.xyst.dinas.biz.dao.StationDao;
import com.xyst.dinas.production.constant.ProductionPlanReportConstant;
import com.xyst.dinas.production.dao.ProductionPlanReportDao;
import com.xyst.dinas.production.service.ProductionPlanReportService;
import com.xyst.dinas.sales.service.InventoryService;
import org.apache.commons.collections.CollectionUtils;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
......@@ -31,6 +33,8 @@ public class ProductionPlanReportServiceImpl implements ProductionPlanReportServ
private DinasTypeDao dinasTypeDao;
@Autowired
private ProductionLineDao productionLineDao;
@Autowired
private InventoryService inventoryService;
@Override
public Page<KObject> queryByPaging(Page<KObject> page, UUID stationId, UUID productionLineId, Date startDate, Date endDate) throws Exception {
......@@ -162,6 +166,39 @@ public class ProductionPlanReportServiceImpl implements ProductionPlanReportServ
}
@Override
public void warehousing(List<UUID> productionLineIds) {
//查询本天之前所有未入库的数据
List<KObject> a = productionPlanReportDao.getNoWareHousing(productionLineIds);
JSONObject params = new JSONObject();
// JSONArray regionalCompanyList = params.getJSONArray("datas");
for (KObject kObject : a) {
UUID regionalCompanyId = kObject.get("regionalCompany").getUuid("id");
KObject station = kObject.get("station");
UUID stationId = station.getUuid("id");
String stationName = station.getString("stationName");
KObject[] dinasTypeDetails = kObject.get("dinasTypeDetails").toArray();
params.put("regionalCompanyId",regionalCompanyId.toString());
ArrayList<JSONObject> strings = new ArrayList<>();
JSONObject dinasTypeDetailJson ;
for (KObject dinasTypeDetail : dinasTypeDetails) {
dinasTypeDetailJson=new JSONObject();
dinasTypeDetailJson.put("stationId",stationId.toString());
dinasTypeDetailJson.put("stationName",stationName);
dinasTypeDetailJson.put("dinasTypeId",dinasTypeDetail.getUuid("id").toString());
dinasTypeDetailJson.put("dinasTypeName",dinasTypeDetail.getString("dinasTypeName"));
dinasTypeDetailJson.put("amount",dinasTypeDetail.getDouble("dinasWeight"));
strings.add(dinasTypeDetailJson);
}
params.put("datas",strings);
inventoryService.modifyInventory(params.toString(),false,true);
kObject.set("warehousingStatus",true);
productionLineDao.update(kObject);
}
}
@Override
public List<KObject> listByStationAndDate(UUID stationId, Date date) {
return productionPlanReportDao.listByStationAndDate(stationId,date, null);
}
......
......@@ -13,6 +13,7 @@ import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
......@@ -109,5 +110,20 @@ public class SandMiningServiceImpl implements SandMiningService {
sandMiningDao.updateSandMiningStatus();
}
@Override
public void updateIsEnterWarningArea() {
//获取所有采砂许可证的船只
HashMap<String, Object> stringObjectHashMap = new HashMap<String, Object>();
stringObjectHashMap.put("status",1);
stringObjectHashMap.put("del",false);
List<KObject> kObjects = sandMiningDao.listByAttributes(stringObjectHashMap);
//判断船只是否在工作时间内
for (KObject kObject : kObjects) {
kObject.getDate("");
KObject ship = kObject.get("ship");
}
}
}
......@@ -27,4 +27,5 @@ public interface DischargingService {
Object groupInfo( UUID transportShipId, Integer type, Date startDate, Date endDate, Integer sandMiningAreaType, List<UUID> stationIds, UUID sandMiningAreaId, UUID sandMiningShipId, UUID parentId);
Object groupInfoByYear(List<UUID> regionalCompanyIds, Integer year, Boolean isGroupByMonth, Boolean isGroupByRegionalCompany, Boolean isGroupBySandMiningArea);
}
......@@ -37,4 +37,7 @@ public interface ProductionPlanReportService {
KObject getByStationAndDate(UUID stationId, String date, List<UUID> ids);
void deleteByStationAndDate(UUID stationId, Date convertStringToDate1);
void warehousing(List<UUID> productionLineIds);
}
......@@ -22,4 +22,6 @@ public interface SandMiningService {
void updateSandMiningStatus();
void updateIsEnterWarningArea();
}
......@@ -18,8 +18,18 @@ public class SandMiningExpiredSchedule implements ServiceInitializer {
@Autowired
private ScheduleService scheduleService;
private String SAND_MINING_EXPIRED_TASK = "SandMiningExpiredTask";
/**
* 采砂许可证任务
*/
private final String SAND_MINING_EXPIRED_TASK = "SandMiningExpiredTask";
/**
* 船只进入报警区任务
*/
private final String SAND_SHIP_ENTER_WARNING_AREA_TASK = "SandMiningShipEnterWarningAreaTask";
/**
* 船只非工作时间采砂任务
*/
private final String SAND_SHIP_NO_OPERATING_HOURS_TASK = "SandMiningShipNoOperatingHoursTask";
@Override
public void init(ApplicationMetadataContext applicationMetadataContext) {
......@@ -28,10 +38,31 @@ public class SandMiningExpiredSchedule implements ServiceInitializer {
scheduleService.removeTask(SAND_MINING_EXPIRED_TASK);
}
TaskDetail taskDetail = new TaskDetail(SAND_MINING_EXPIRED_TASK, SandMiningExpiredTask.class.getName());
//避免跑偏 4小时执行一次
//应该每晚一次 避免跑偏 4小时执行一次
scheduleService.scheduleTask(taskDetail, "0 0 0/4 * * ? *");
logger.info("采砂许可证状态任务初始化成功!");
//船只进入非可采区
Optional<ScheduleDetail> sandMiningShipEnterWarningAreaTask = scheduleService.findByName(SAND_SHIP_ENTER_WARNING_AREA_TASK);
if(sandMiningShipEnterWarningAreaTask.isPresent()){
scheduleService.removeTask(SAND_SHIP_ENTER_WARNING_AREA_TASK);
}
TaskDetail sandMiningShipEnterWarningAreaTaskDetail = new TaskDetail(SAND_SHIP_ENTER_WARNING_AREA_TASK, SandMiningExpiredTask.class.getName());
//船只任务,每3分钟一次
scheduleService.scheduleTask(sandMiningShipEnterWarningAreaTaskDetail, "0 0/3 * * * ? *");
logger.info("船只预警任务初始化成功!");
//船只非工作时间
Optional<ScheduleDetail> sandMiningShipNoOperatingHoursTask = scheduleService.findByName(SAND_SHIP_NO_OPERATING_HOURS_TASK);
if(sandMiningShipNoOperatingHoursTask.isPresent()){
scheduleService.removeTask(SAND_SHIP_NO_OPERATING_HOURS_TASK);
}
TaskDetail sandMiningShipNoOperatingHoursTaskDetail = new TaskDetail(SAND_SHIP_NO_OPERATING_HOURS_TASK, SandMiningExpiredTask.class.getName());
//船只采砂任务,每30分钟一次
scheduleService.scheduleTask(sandMiningShipNoOperatingHoursTaskDetail, "0 0/30 * * * ? *");
logger.info("船只非工作时间任务初始化成功!");
}
@PostConstruct
......
package com.xyst.dinas.production.task;
import com.beecode.amino.core.Amino;
import com.beecode.bap.scheduler.core.Task;
import com.beecode.bap.scheduler.core.TaskContext;
import com.beecode.inz.message.service.RemindSettingsInfoService;
import com.xyst.dinas.production.service.SandMiningService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -20,6 +22,10 @@ public class SandMiningExpiredTask implements Task {
public void execute(TaskContext taskContext) {
logger.info("开始修改采砂许可证状态");
if(sandMiningService==null){
sandMiningService = Amino.getApplicationContext().getBean(SandMiningService.class);
}
sandMiningService.updateSandMiningStatus();
logger.info("修改采砂许可证状态结束");
......
package com.xyst.dinas.production.task;
import com.beecode.amino.core.Amino;
import com.beecode.bap.scheduler.core.Task;
import com.beecode.bap.scheduler.core.TaskContext;
import com.xyst.dinas.production.service.SandMiningService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @author scol
*/
public class SandMiningShipEnterWarningAreaTask implements Task {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private SandMiningService sandMiningService;
@Override
public void execute(TaskContext taskContext) {
logger.info("开始判断是否进度非自己的采砂区");
if(sandMiningService==null){
sandMiningService = Amino.getApplicationContext().getBean(SandMiningService.class);
}
sandMiningService.updateIsEnterWarningArea();
logger.info("结束判断是否进度非自己的采砂区");
}
}
package com.xyst.dinas.production.task;
import com.beecode.bap.scheduler.core.Task;
import com.beecode.bap.scheduler.core.TaskContext;
import com.xyst.dinas.production.service.SandMiningService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @author scol
*/
public class SandMiningShipNoOperatingHoursTask implements Task {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private SandMiningService sandMiningService;
@Override
public void execute(TaskContext taskContext) {
logger.info("开始修改采砂许可证状态");
sandMiningService.updateSandMiningStatus();
logger.info("修改采砂许可证状态结束");
}
}
package com.xyst.dinas.production.task;
import com.beecode.amino.metadata.context.ApplicationMetadataContext;
import com.beecode.amino.metadata.runtime.ServiceInitializer;
import com.beecode.bap.scheduler.entity.ScheduleDetail;
import com.beecode.bap.scheduler.entity.TaskDetail;
import com.beecode.bap.scheduler.service.ScheduleService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import javax.annotation.PostConstruct;
import java.util.Optional;
/**
* 每日入库定时
*/
public class WarehousingStatusExpiredSchedule implements ServiceInitializer {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private ScheduleService scheduleService;
/**
* 入库任务
*/
private String WAREHOUSING_TASK = "WarehousingTask";
@Override
public void init(ApplicationMetadataContext applicationMetadataContext) {
Optional<ScheduleDetail> byName = scheduleService.findByName(WAREHOUSING_TASK);
if(byName.isPresent()){
scheduleService.removeTask(WAREHOUSING_TASK);
}
TaskDetail taskDetail = new TaskDetail(WAREHOUSING_TASK, WarehousingTask.class.getName());
//每晚执行一次即可
scheduleService.scheduleTask(taskDetail, "0 6 0 1/1 * ? ");
logger.info("入库任务初始化成功!");
}
@PostConstruct
public void init(){
init(null);
}
}
package com.xyst.dinas.production.task;
import com.beecode.amino.core.Amino;
import com.beecode.bap.scheduler.core.Task;
import com.beecode.bap.scheduler.core.TaskContext;
import com.xyst.dinas.production.service.ProductionPlanReportService;
import com.xyst.dinas.production.service.SandMiningService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
/**
* 入库任务
*/
public class WarehousingTask implements Task {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private ProductionPlanReportService productionPlanReportService;
@Override
public void execute(TaskContext taskContext) {
logger.info("开始入库");
if(productionPlanReportService==null){
productionPlanReportService = Amino.getApplicationContext().getBean(ProductionPlanReportService.class);
}
productionPlanReportService.warehousing(null);
logger.info("结束入库");
}
}
package com.xyst.dinas.production.util;
/**
* 上海玖惜 谷米爱车网设备 GPS
* @author scol
*/
public class GpsDeviceUtil {
}
......@@ -163,14 +163,17 @@ public class DischargingController {
//接驳统计
// @RequestMapping(value = "groupInfoByYear", method = RequestMethod.GET)
// public ResponseObj groupInfo(
// @RequestParam(name = "regionalCompanyIds", required = false) List<UUID> regionalCompanyIds,
// @RequestParam(name = "year", required = false) List<UUID> regionalCompanyIds,
// ) throws Exception {
//
// return ResponseObj.success("查询成功", dischargingService.groupInfo(transportShipId,type,startDate,endDate,sandMiningAreaType,stationIds,sandMiningAreaId,sandMiningShipId,parentId));
// }
@RequestMapping(value = "groupInfoByYear", method = RequestMethod.GET)
public ResponseObj groupInfo(
@RequestParam(name = "regionalCompanyIds") List<UUID> regionalCompanyIds,
@RequestParam(name = "year") Integer year,
@RequestParam(name = "isGroupByMonth" ,defaultValue = "true",required = false) Boolean isGroupByMonth,
@RequestParam(name = "isGroupByRegionalCompany" ,defaultValue = "true",required = false) Boolean isGroupByRegionalCompany,
@RequestParam(name = "isGroupBySandMiningArea" ,defaultValue = "true",required = false) Boolean isGroupBySandMiningArea
) throws Exception {
return ResponseObj.success("查询成功", dischargingService.groupInfoByYear(regionalCompanyIds,year,isGroupByMonth,isGroupByRegionalCompany,isGroupBySandMiningArea));
}
}
\ No newline at end of file
......@@ -57,6 +57,14 @@ public class ProductionPlanReportController {
return ResponseObj.success("查询成功", productionPlanReportService.groupInfo( stationId,productionLineId,startDate,endDate));
}
@RequestMapping(value = "warehousing", method = RequestMethod.GET)
public ResponseObj warehousing(
@RequestParam(name = "productionLineIds", required = false) List<UUID> productionLineIds
) {
productionPlanReportService.warehousing(productionLineIds);
return ResponseObj.success("入库成功");
}
/**
......
......@@ -63,6 +63,15 @@
<m:description></m:description>
<m:default></m:default>
</m:attribute>
<m:attribute>
<m:annotations/>
<m:id>037b2fd4-f140-4389-9fd0-0b0dad9fe59c</m:id>
<m:name>warehousingStatus</m:name>
<m:title>入库情况</m:title>
<m:type>boolean</m:type>
<m:description></m:description>
<m:default></m:default>
</m:attribute>
<m:attribute>
<m:annotations>
......
......@@ -62,6 +62,11 @@
</column>
</property>
<property name="warehousingStatus" type="boolean" not-null="false">
<column name="warehousingStatus">
<comment>是否入库, false未入库 true已入库</comment>
</column>
</property>
<bag name="dinasTypeDetails" lazy="true" fetch="select" inverse="true">
<key column="master_id" not-null="true" />
<one-to-many entity-name="com.xyst.dinas.production.datamodel.ProductionPlanReport$DinasTypeDetails" />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment