Commit d7ea73ad by 高晓磊

运输记录增加自增编码(流水号)

parent f0f68f36
package com.xyst.dinas.transport.config;
import com.xyst.dinas.transport.dao.TransportRecordDao;
import com.xyst.dinas.transport.internal.dao.TransportRecordDaoImpl;
import com.xyst.dinas.transport.internal.service.TransportRecordServiceImpl;
import com.xyst.dinas.transport.service.TransportRecordService;
import com.xyst.dinas.transport.web.TransportRecordController;
import org.springframework.context.annotation.Bean;
public class TransportRecordConfiguration {
@Bean
public TransportRecordController transportRecordController() {
return new TransportRecordController();
}
@Bean
public TransportRecordService transportRecordService() {
return new TransportRecordServiceImpl();
}
@Bean
public TransportRecordDao transportRecordDao() {
return new TransportRecordDaoImpl();
}
}
package com.xyst.dinas.transport.constant;
public interface TransportRecordConstant {
/** 运输记录-实体*/
String ENTITY = "com.xyst.dinas.transport.datamodel.TransportRecord";
}
package com.xyst.dinas.transport.dao;
import com.beecode.bap.attachment.common.Page;
import com.beecode.bcp.type.KObject;
import com.beecode.inz.basis.dao.BaseDao;
import java.util.Date;
import java.util.UUID;
/**
* @author scol
*/
public interface TransportRecordDao extends BaseDao {
Page<KObject> recordPage(Integer pageNo, Integer pageSize, UUID vehicleId, Date startDate, Date endDate, Object o, UUID dinasTypeId, String purchaseSandUnitName, String projectName, UUID stationId, UUID productionLineId, String driverUserName, UUID projectId, Integer confirmStatus, UUID regionalCompanyId);
}
package com.xyst.dinas.transport.internal.dao;
import com.beecode.amino.core.Amino;
import com.beecode.bap.attachment.common.Page;
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.util.DateTimeUtils;
import com.xyst.dinas.sales.constant.SalesRecordConstant;
import com.xyst.dinas.transport.constant.TransportRecordConstant;
import com.xyst.dinas.transport.dao.TransportRecordDao;
import org.hibernate.criterion.*;
import org.hibernate.sql.JoinType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate5.HibernateTemplate;
import java.util.*;
/**
* @author scol
*/
public class TransportRecordDaoImpl extends AbstractBaseDao implements TransportRecordDao, TransportRecordConstant {
@Autowired
private HibernateTemplate template;
/**
* 抽象方法,需要实现类提供HibernateTemplate
*
* @return
*/
@Override
protected HibernateTemplate getHibernateTemplate() {
return template;
}
/**
* 抽象方法,需要实现类提供当前ModelName
*
* @return
*/
@Override
protected String getModelName() {
return ENTITY;
}
@Override
public Page<KObject> recordPage(Integer pageNo, Integer pageSize, UUID vehicleId, Date startDate, Date endDate, Object o, UUID dinasTypeId, String purchaseSandUnitName,
String projectName, UUID stationId, UUID productionLineId, String driverUserName, UUID projectId, Integer confirmStatus, UUID regionalCompanyId) {
KClass bean = Amino.getStaticMetadataContext().getBean(ENTITY, KClass.class);
DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName());
detachedCriteria.add(Restrictions.eq("del", false));
detachedCriteria.createAlias("saleRecord","salesRecord");
detachedCriteria.createAlias("driverUser","driverUser", JoinType.LEFT_OUTER_JOIN);
detachedCriteria.createAlias("transportVehicle","transportVehicle", JoinType.LEFT_OUTER_JOIN);
detachedCriteria.createAlias("salesRecord."+SalesRecordConstant.PURCHASESANDCOMPANY,SalesRecordConstant.PURCHASESANDCOMPANY);
detachedCriteria.createAlias("salesRecord."+SalesRecordConstant.DINASTYPE,SalesRecordConstant.DINASTYPE);
detachedCriteria.createAlias("salesRecord."+SalesRecordConstant.PRODUCTIONLINE,SalesRecordConstant.PRODUCTIONLINE);
detachedCriteria.createAlias("salesRecord."+SalesRecordConstant.PROJECT,SalesRecordConstant.PROJECT);
detachedCriteria.createAlias("salesRecord."+SalesRecordConstant.STATION,SalesRecordConstant.STATION);
if(startDate!=null){
detachedCriteria.add(Restrictions.ge("salesRecord."+SalesRecordConstant.DEALTIME, DateTimeUtils.getStartDateTimeOfDay(startDate)));
}
if(endDate!=null){
detachedCriteria.add(Restrictions.lt("salesRecord."+SalesRecordConstant.DEALTIME,DateTimeUtils.getEndDateTimeOfDay(endDate)));
}
if(dinasTypeId!=null){
detachedCriteria.add(Restrictions.eq(SalesRecordConstant.DINASTYPE+".id",dinasTypeId));
}
if(productionLineId!=null){
detachedCriteria.add(Restrictions.eq(SalesRecordConstant.PRODUCTIONLINE+".id",productionLineId));
}
if(stationId!=null){
detachedCriteria.add(Restrictions.eq(SalesRecordConstant.STATION+".id",stationId));
}
if(purchaseSandUnitName!=null){
detachedCriteria.add(Restrictions.like(SalesRecordConstant.PURCHASESANDCOMPANY+".name",purchaseSandUnitName,MatchMode.ANYWHERE));
}
if(projectName!=null){
detachedCriteria.add(Restrictions.like(SalesRecordConstant.PROJECT+".projectName",projectName,MatchMode.ANYWHERE));
}
if(driverUserName!=null){
detachedCriteria.add(Restrictions.like("driverUser.title",driverUserName,MatchMode.ANYWHERE));
}
if(vehicleId!=null){
detachedCriteria.add(Restrictions.eq("transportVehicle.id",vehicleId));
}
if(projectId!=null){
detachedCriteria.add(Restrictions.eq(SalesRecordConstant.PROJECT+".id",projectId));
}
if(regionalCompanyId!=null){
detachedCriteria.add(Restrictions.eq("regionalCompany.id",regionalCompanyId));
}
Page<KObject> page = new Page<>();
page.setPageNo(pageNo);
page.setPageSize(pageSize);
int offset = pageSize * (pageNo - 1);
List<KObject> list = (List<KObject>) template.findByCriteria(detachedCriteria, offset,pageSize);
Long totalCount = (Long) detachedCriteria.setProjection(Projections.rowCount()).getExecutableCriteria(template.getSessionFactory().getCurrentSession()).setFirstResult(0).setMaxResults(1).uniqueResult();
page.setTotal(Math.toIntExact(totalCount));
page.setDatas(list);
return page;
}
}
package com.xyst.dinas.transport.internal.service;
import com.beecode.bap.attachment.common.Page;
import com.beecode.bcp.type.KObject;
import com.beecode.inz.common.BaseConstants;
import com.xyst.dinas.sales.constant.SalesRecordConstant;
import com.xyst.dinas.transport.constant.TransportRecordConstant;
import com.xyst.dinas.transport.dao.TransportRecordDao;
import com.xyst.dinas.transport.dao.VehicleDriverUserDao;
import com.xyst.dinas.transport.service.TransportRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import javax.transaction.Transactional;
import java.math.BigDecimal;
import java.util.*;
/**
* 销售计划
*
* @author scol
* @date 2021年4月33日
*/
@Transactional
public class TransportRecordServiceImpl implements TransportRecordService {
@Autowired
private VehicleDriverUserDao vehicleDriverUserDao;
@Autowired
private TransportRecordDao transportRecordDao;
@Override
public Map<String, Object> loadTransportRecord(UUID id) {
KObject load = vehicleDriverUserDao.load(TransportRecordConstant.ENTITY, id);
if(load==null){
return null;
}
HashMap<String, Object> stringObjectHashMap = new HashMap<>();
setInfo(stringObjectHashMap,load);
return stringObjectHashMap;
}
@Override
public Page<HashMap<String, Object>> recordPage(Integer pageNo, Integer pageSize, UUID vehicleId, Date startDate, Date endDate,
UUID id, UUID dinasTypeId, String purchaseSandUnitName, String projectName,
UUID stationId, UUID productionLineId, String driverUserName, UUID projectId, Integer confirmStatus, UUID regionalCompanyId) {
Page<KObject> kObjectPage = transportRecordDao.recordPage(pageNo, pageSize, vehicleId, startDate, endDate, null,dinasTypeId,purchaseSandUnitName,projectName,stationId,productionLineId,driverUserName,projectId,confirmStatus,regionalCompanyId);
List<KObject> datas = kObjectPage.getDatas();
HashMap<String, Object> stringObjectHashMap = new HashMap<>();
List<HashMap<String, Object>> hashMaps = new ArrayList<>();
for (KObject data : datas) {
stringObjectHashMap = new HashMap<>();
setInfo(stringObjectHashMap,data);
hashMaps.add(stringObjectHashMap);
}
Page<HashMap<String, Object>> listPage = new Page<>();
listPage.setPageNo(kObjectPage.getPageNo());
listPage.setPageSize(kObjectPage.getPageSize());
listPage.setTotal(kObjectPage.getTotal());
listPage.setDatas(hashMaps);
return listPage;
}
private void setInfo(HashMap<String, Object> stringObjectHashMap, KObject data) {
KObject saleRecord = data.get("saleRecord");
KObject transportVehicle = data.get("transportVehicle");
String projectName = saleRecord.get(SalesRecordConstant.PROJECT).getString("projectName");
String dinasTypeName = saleRecord.get(SalesRecordConstant.DINASTYPE).getString("dinasTypeName");
BigDecimal dealAmount = saleRecord.getBigDecimal(SalesRecordConstant.DEALAMOUNT);
BigDecimal price = saleRecord.getBigDecimal(SalesRecordConstant.PRICE);
BigDecimal amount = saleRecord.getBigDecimal(SalesRecordConstant.AMOUNT);
String productionLineName = saleRecord.get(SalesRecordConstant.PRODUCTIONLINE).getString("name");
Date dealTime = saleRecord.getDate(SalesRecordConstant.DEALTIME);
String purchaseSandCompanyName = saleRecord.get(SalesRecordConstant.PURCHASESANDCOMPANY).getString("name");
String contractAddrReceive = saleRecord.get(SalesRecordConstant.CONTRACT).getString("addrReceive");
KObject station = saleRecord.get(SalesRecordConstant.STATION);
String stationName = station.getString("stationName");
String stationAddress = station.getString("stationAddress");
String plateNumber = transportVehicle.getString("plateNumber");
stringObjectHashMap.put("projectName",projectName);
stringObjectHashMap.put(BaseConstants.ID,data.get(BaseConstants.ID));
stringObjectHashMap.put("stationName",stationName);
stringObjectHashMap.put("dinasTypeName",dinasTypeName);
stringObjectHashMap.put("dealAmount",dealAmount);
stringObjectHashMap.put("price",price);
stringObjectHashMap.put("amount",amount);
stringObjectHashMap.put("productionLineName",productionLineName);
stringObjectHashMap.put("purchaseSandCompanyName",purchaseSandCompanyName);
stringObjectHashMap.put("contractAddrReceive",contractAddrReceive);
stringObjectHashMap.put("stationAddress",stationAddress);
stringObjectHashMap.put("dealTime",dealTime);
stringObjectHashMap.put("plateNumber",plateNumber);
stringObjectHashMap.put("receiverName",data.getString("receiverName"));
stringObjectHashMap.put("memo",data.getString("memo"));
stringObjectHashMap.put("contactNumber",data.getString("contactNumber"));
stringObjectHashMap.put("confirmTime",data.getString("confirmTime"));
stringObjectHashMap.put("confirmStatus",data.getInt("confirmStatus"));
}
}
package com.xyst.dinas.transport.service;
import com.beecode.bap.attachment.common.Page;
import org.springframework.lang.NonNull;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
public interface TransportRecordService {
Map<String, Object> loadTransportRecord(@NonNull UUID id);
Page<HashMap<String, Object>> recordPage(Integer pageNo, Integer pageSize, UUID vehicleId, Date startDate, Date endDate, UUID id, UUID dinasTypeId, String purchaseSandUnitName, String projectName, UUID stationId, UUID productionLineId, String driverUserName, UUID projectId, Integer confirmStatus, UUID regionalCompanyId);
}
package com.xyst.dinas.transport.web;
import com.beecode.bap.attachment.common.Page;
import com.beecode.bcp.type.KObject;
import com.beecode.bcp.type.json.JSONObjectUtils;
import com.beecode.inz.basis.context.driver.DriverUserContextHolder;
import com.beecode.inz.basis.pojo.DriverUser;
import com.beecode.inz.basis.service.DriverUserService;
import com.beecode.inz.basis.team.pojo.ResponseObj;
import com.xyst.dinas.transport.service.TransportRecordService;
import com.xyst.dinas.transport.service.VehicleDispatchService;
import com.xyst.dinas.transport.service.VehicleDriverUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
* @author scol
*/
@RestController
@RequestMapping("/transport/record")
public class TransportRecordController {
@Autowired
private VehicleDispatchService vehicleDispatchService;
@Autowired
private VehicleDriverUserService vehicleDriverUserService;
@Autowired
private TransportRecordService transportRecordService;
@Autowired
private DriverUserService driverUserService;
/**
* 根据车辆id分页查询当前车辆的运输记录
*
* @param vehicleId 当前车辆的id
* @param pageNo 页码
* @param pageSize 每页条数
* @param startDate 开始时间 yyyy-MM-dd
* @param endDate 结束时间 yyyy-MM-dd
* @return list 集合
*/
@GetMapping("transportRecord/transportRecordPage")
public ResponseObj transportRecordPage(
@RequestParam(name = "pageNo") Integer pageNo,
@RequestParam(name = "pageSize") Integer pageSize,
@DateTimeFormat(pattern = "yyyy-MM-dd") @RequestParam(name = "startDate", required = false) Date startDate,
@DateTimeFormat(pattern = "yyyy-MM-dd") @RequestParam(name = "endDate", required = false) Date endDate,
@RequestParam(value = "vehicleId", required = false) UUID vehicleId,
@RequestParam(value = "dinasTypeId", required = false) UUID dinasTypeId,
@RequestParam(value = "purchaseSandUnitName", required = false) String purchaseSandUnitName,
@RequestParam(value = "projectName", required = false) String projectName,
@RequestParam(value = "projectId", required = false) UUID projectId,
@RequestParam(value = "stationId", required = false) UUID stationId,
@RequestParam(value = "productionLineId", required = false) UUID productionLineId,
@RequestParam(value = "driverUserName", required = false) String driverUserName,
@RequestParam(value = "confirmStatus", required = false) Integer confirmStatus,
@RequestParam(value = "regionalCompanyId", required = false) UUID regionalCompanyId
) {
boolean a = (startDate == null && endDate != null) || (startDate != null && endDate == null);
if (a) {
return ResponseObj.error("请同时输入开始和结束时间");
}
Page<HashMap<String,Object>> kObject = transportRecordService.recordPage(pageNo, pageSize, vehicleId, startDate, endDate,
null,dinasTypeId,purchaseSandUnitName,projectName,stationId,productionLineId,driverUserName,projectId,confirmStatus,regionalCompanyId);
return ResponseObj.success("查询成功", kObject);
}
@GetMapping("transportRecord/loadById/{id}")
public ResponseObj loadById(@PathVariable UUID id
) {
Map<String,Object> byId = transportRecordService.loadTransportRecord(id);
return ResponseObj.success("查询成功", byId);
}
}
<model>
<header>
<type>bcp.biz.Bill</type>
<package>com.xyst.dinas.transport.bill</package>
<title>运输记录</title>
<name>TransportRecord</name>
<description>运输记录</description>
</header>
<content>
<bill>
<data>
{
"baseData": {
"name": "TransportRecord",
"title": "运输记录",
"billModel": "com.beecode.bap.biztrait.BasicBillBiztrait",
"functionLibrarys": [],
"description": "运输记录",
"dataModel": "com.xyst.dinas.transport.datamodel.TransportRecord"
},
"serial": {
"serialData": [
{
"segment": "literal",
"segmentData": "YS"
},
{
"segment": "sequence",
"segmentData": {
"start-with": 0,
"increment": 1,
"min": 0,
"max": 999999,
"length": 6,
"cycle": true,
"cut-direction": "left",
"pad-string": "0",
"pad-direction": "left",
"cache-size": 10
}
}
],
"buildTime": "add"
},
"formula": [],
"workflow": {
"workflow": "",
"processParamConfig": []
},
"print": [],
"authority": []
}
</data>
</bill>
</content>
</model>
\ No newline at end of file
......@@ -62,6 +62,12 @@
name='length' value='50'>
</annotation>
</attribute>
<attribute id='315e4581-15ba-4fc8-ac4f-6f128d67d62d' name='billCode' columnName='bill_code'
title='编码' type='string' default='' precision='' isArray='false'>
<annotation id='9e523f9f-3878-4233-a43c-25c59b608a19' attributeId='194e6336-3d8c-4d16-b381-ab5a5cba9dc2'
name='length' value='50'>
</annotation>
</attribute>
<attribute id="836fc160-8bc5-45f4-a8fc-42ff9e4fb553" name="confirmTime" columnName='confirm_time' title="确认时间" type="datetime" default="" precision="" isArray="false">
<annotation name="length" value="undefined" id="bb8ff073-8e51-402c-b42f-c80109fd1e9c" attributeId="e71b6738-1d40-47b6-ac6c-bb83c0ff6137"/>
......
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.xyst.dinas.transport.config.VehicleDispatchConfiguration,\
com.xyst.dinas.transport.config.TransportRecordConfiguration,\
com.xyst.dinas.transport.config.VehicleDriverUserConfiguration
\ No newline at end of file
......@@ -43,6 +43,11 @@
</many-to-one>
<property name="billCode" type="nstring" not-null="false">
<column name="bill_code" length="50">
<comment>编码</comment>
</column>
</property>
<property name="receiverName" type="nstring" not-null="false">
<column name="receiver_name" length="50">
<comment>接收人</comment>
......
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